- Support ONIE firmware upgrade packages.

- Use the new onl.grub interface
This commit is contained in:
Jeffrey Townsend
2016-11-17 19:31:56 +00:00
parent ce2d20f93b
commit 31055e67ce
2 changed files with 14 additions and 11 deletions

View File

@@ -25,8 +25,12 @@ class FirmwareUpgrade(ubase.BaseOnieUpgrade):
self.load_manifest(os.path.join(sysconfig.upgrade.firmware.package.dir, "manifest.json"))
def do_upgrade(self, forced=False):
self.install_onie_updater(sysconfig.upgrade.firmware.package.dir,
self.manifest['updater'])
if self.manifest.get('fwpkg', False):
self.onie_fwpkg_add(os.path.join(sysconfig.upgrade.firmware.package.dir,
self.manifest['updater']))
else:
self.install_onie_updater(sysconfig.upgrade.firmware.package.dir,
self.manifest['updater'])
self.initiate_onie_update()

View File

@@ -391,24 +391,23 @@ class BaseOnieUpgrade(BaseUpgrade):
dst = os.path.join(self.ONIE_UPDATER_PATH, f)
self.copyfile(src, dst)
def onie_fwpkg_add(self, pkg):
import onl.grub
onl.grub.onie_fwpkg("add %s" % pkg)
onl.grub.onie_fwpkg("show")
def initiate_onie_update(self):
self.logger.info("Initiating %s Update." % self.Name)
if self.arch == 'ppc':
# Initiate update
self.fw_setenv('onie_boot_reason', 'update')
self.reboot()
elif self.arch == 'x86_64':
OB = "/mnt/onie-boot"
self.mount(OB, label="ONIE-BOOT")
if os.system("/mnt/onie-boot/onie/tools/bin/onie-boot-mode -o update") != 0:
self.abort("Could not set ONIE Boot Mode to Update. Upgrade cannot continue.")
self.umount(OB)
with OnlMountContextReadWrite("ONL-BOOT", logger=None):
with open("/mnt/onl/boot/grub/grub.cfg", "a") as f:
f.write("set default=ONIE\n")
import onl.grub
onl.grub.onie_boot_mode_set("update")
onl.grub.boot_onie()
self.reboot()
else: