From 31055e67cea4a36185066367f2b4fcda33c8301d Mon Sep 17 00:00:00 2001 From: Jeffrey Townsend Date: Thu, 17 Nov 2016 19:31:56 +0000 Subject: [PATCH] - Support ONIE firmware upgrade packages. - Use the new onl.grub interface --- .../src/python/onl/upgrade/firmware.py | 8 ++++++-- .../src/python/onl/upgrade/ubase.py | 17 ++++++++--------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/packages/base/all/vendor-config-onl/src/python/onl/upgrade/firmware.py b/packages/base/all/vendor-config-onl/src/python/onl/upgrade/firmware.py index e9a08088..90635fc6 100755 --- a/packages/base/all/vendor-config-onl/src/python/onl/upgrade/firmware.py +++ b/packages/base/all/vendor-config-onl/src/python/onl/upgrade/firmware.py @@ -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() diff --git a/packages/base/all/vendor-config-onl/src/python/onl/upgrade/ubase.py b/packages/base/all/vendor-config-onl/src/python/onl/upgrade/ubase.py index c5978629..90831700 100644 --- a/packages/base/all/vendor-config-onl/src/python/onl/upgrade/ubase.py +++ b/packages/base/all/vendor-config-onl/src/python/onl/upgrade/ubase.py @@ -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: