Check for the existance of the onie-fwpkg before attempting upgrade and provide a useful error message.

This commit is contained in:
Jeffrey Townsend
2017-04-20 18:06:19 +00:00
parent d07d785f33
commit 9342f86400
3 changed files with 13 additions and 7 deletions

View File

@@ -22,6 +22,10 @@ def _makedirs(d):
if not os.path.exists(d):
os.makedirs(d)
def onie_fwpkg_exists():
with OnlOnieBootContext() as ob:
return os.path.exists(os.path.join(ob.directory, "onie/tools/bin/onie-fwpkg"))
def onie_fwpkg(arguments):
with OnlOnieBootContext() as ob:
# This is necessary if we've upgraded ONIE but haven't booted into it yet...
@@ -35,9 +39,3 @@ def boot_entry_set(index):
def boot_onie():
return boot_entry_set(1)

View File

@@ -29,6 +29,11 @@ class FirmwareUpgrade(ubase.BaseOnieUpgrade):
def do_upgrade(self, forced=False):
if self.manifest.get('fwpkg', False):
if not self.onie_fwpkg_exists():
# An ONIE upgrade is probably required.
print "The firmware cannot be upgraded because the current ONIE version is not correct. Please perform an ONIE upgrade first."
self.abort()
self.onie_fwpkg_add(os.path.join(sysconfig.upgrade.firmware.package.dir,
self.manifest['updater']))
else:
@@ -56,4 +61,3 @@ class FirmwareUpgrade(ubase.BaseOnieUpgrade):
def do_no_upgrade(self):
self.clean_onie_updater()

View File

@@ -391,6 +391,10 @@ class BaseOnieUpgrade(BaseUpgrade):
dst = os.path.join(self.ONIE_UPDATER_PATH, f)
self.copyfile(src, dst)
def onie_fwpkg_exists(self):
import onl.grub
return onl.grub.onie_fwpkg_exists()
def onie_fwpkg_add(self, pkg):
import onl.grub
onl.grub.onie_fwpkg("-f purge")