From 03bb6b718d43fe8444373ff6ea2568ddd5bbebce Mon Sep 17 00:00:00 2001 From: Jeffrey Townsend Date: Wed, 19 Oct 2016 21:36:00 +0000 Subject: [PATCH] Add default ONIE upgrade package settings. --- .../src/boot.d/60.upgrade-onie | 3 + .../src/boot.d/61.upgrade-onie | 55 -------- .../src/boot.d/62.upgrade-loader | 129 +----------------- .../src/etc/onl/sysconfig/00-defaults.yml | 4 + 4 files changed, 9 insertions(+), 182 deletions(-) create mode 100755 packages/base/all/vendor-config-onl/src/boot.d/60.upgrade-onie delete mode 100755 packages/base/all/vendor-config-onl/src/boot.d/61.upgrade-onie diff --git a/packages/base/all/vendor-config-onl/src/boot.d/60.upgrade-onie b/packages/base/all/vendor-config-onl/src/boot.d/60.upgrade-onie new file mode 100755 index 00000000..a6daef06 --- /dev/null +++ b/packages/base/all/vendor-config-onl/src/boot.d/60.upgrade-onie @@ -0,0 +1,3 @@ +#!/usr/bin/python +from onl.upgrade.onie import OnieUpgrade +OnieUpgrade().main() diff --git a/packages/base/all/vendor-config-onl/src/boot.d/61.upgrade-onie b/packages/base/all/vendor-config-onl/src/boot.d/61.upgrade-onie deleted file mode 100755 index 5f0e8883..00000000 --- a/packages/base/all/vendor-config-onl/src/boot.d/61.upgrade-onie +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/python -u -from onl.upgrade import ubase - -class ONIE_Upgrade(ubase.BaseOnieUpgrade): - name="onie" - Name="ONIE" - title="ONIE Upgrade Check" - atype="An ONIE" - - current_version_key="Current ONIE Version" - next_version_key="Next ONIE Version" - - def init_versions(self): - - # Get the current platform ONIE version - self.current_version = self.platform.onie_version() - self.next_version = None - self.updater = None - - (udir, um, data) = self.platform.upgrade_manifest("onie") - self.udir = udir - self.data = data - - if data: - self.next_version = data.get('onie-version', None) - - if data: - self.updater = data.get('onie-updater', None) - - if self.updater is None: - self.finish("No ONIE updater available for the current platform.") - - def summarize(self): - self.logger.info("Current ONIE Version: %s" % self.current_version) - self.logger.info(" Next ONIE Version: %s" % self.next_version) - self.logger.info(" Force-Update: %s" % self.data['force-update']) - self.logger.info(" Updater: %s" % self.updater) - self.logger.info("") - - def upgrade_notes(self): - return """ - * The system will reboot into ONIE to complete the update, and then reboot to return to Switch Light -""" - - def do_upgrade(self, forced=False): - self.install_onie_updater(self.udir, self.updater) - self.initiate_onie_update() - - def do_no_upgrade(self): - self.clean_onie_updater() - - -if __name__ == '__main__': - ONIE_Upgrade().main() - diff --git a/packages/base/all/vendor-config-onl/src/boot.d/62.upgrade-loader b/packages/base/all/vendor-config-onl/src/boot.d/62.upgrade-loader index afe514df..02aa6d92 100755 --- a/packages/base/all/vendor-config-onl/src/boot.d/62.upgrade-loader +++ b/packages/base/all/vendor-config-onl/src/boot.d/62.upgrade-loader @@ -1,128 +1,3 @@ #!/usr/bin/python -############################################################ -# -# ONL Loader Upgrade -# -############################################################ -import os -import sys -import fnmatch -from onl.upgrade import ubase -from onl.sysconfig import sysconfig -from onl.mounts import OnlMountManager, OnlMountContextReadOnly, OnlMountContextReadWrite - -class Loader_Upgrade(ubase.BaseUpgrade): - name="loader" - Name="Loader" - title="Loader Upgrade Check" - atype="A Loader" - - current_version_key="Current Loader Version" - next_version_key="Next Loader Version" - - def auto_upgrade_default(self): - return sysconfig.upgrade.loader.auto - - def init_versions(self): - - # - # Current Loader version file. - # If this file doesn't exist then in-place upgrade is not supported. - # - ETC_LOADER_VERSIONS_JSON = sysconfig.upgrade.loader.versions - - # Upgrade Loader Version file. - NEXT_LOADER_VERSIONS_JSON = os.path.join(sysconfig.upgrade.loader.package.dir, "manifest.json") - - - self.current_version = self.load_json(ETC_LOADER_VERSIONS_JSON, - "RELEASE_ID", - None) - - self.next_version = self.load_json(NEXT_LOADER_VERSIONS_JSON, - "version", {}).get('RELEASE_ID', None) - - def summarize(self): - self.logger.info("Current Loader Version: %s" % self.current_version) - self.logger.info(" Next Loader Version: %s" % self.next_version) - self.logger.info("") - - - def upgrade_notes(self): - return """ - * A single reboot will be required to complete this upgrade. -""" - - -class Loader_Upgrade_FIT(Loader_Upgrade): - - def do_upgrade(self, forced=False): - - fit_image = None - for f in sysconfig.upgrade.loader.package.fit: - fp = os.path.join(sysconfig.upgrade.loader.package.dir, f) - if os.path.exists(fp): - fit_image = fp; - break - - if fit_image is None: - self.abort("The FIT upgrade image is missing. Upgrade cannot continue.") - - with OnlMountContextReadWrite("ONL-BOOT", self.logger) as d: - self.copyfile(fit_image, os.path.join(d.directory, "%s.itb" % (self.platform.platform()))) - - self.reboot() - - -class Loader_Upgrade_x86_64(Loader_Upgrade): - - def do_upgrade(self, forced=False): - - X86_64_UPGRADE_DIR=sysconfig.upgrade.loader.package.dir - X86_64_UPGRADE_KERNEL_PATTERNS = [ "kernel-*" ] - - with OnlMountContextReadWrite("ONL-BOOT", self.logger) as d: - for f in os.listdir(X86_64_UPGRADE_DIR): - for pattern in X86_64_UPGRADE_KERNEL_PATTERNS: - if fnmatch.fnmatch(f, pattern): - self.copyfile(os.path.join(X86_64_UPGRADE_DIR, f), os.path.join(d.directory, f)) - - initrd = None - for c in sysconfig.upgrade.loader.package.grub: - initrd = os.path.join(X86_64_UPGRADE_DIR, c) - if os.path.exists(initrd): - break - else: - initrd = None - - if initrd: - self.copyfile(initrd, os.path.join(d.directory, "%s.cpio.gz" % self.platform.platform())) - else: - self.abort("Initrd is missing. Upgrade cannot continue.") - - # Disabled until it can be resolved with the new installer. - #src = "/lib/platform-config/current/onl/boot/grub.cfg" - #dst = os.path.join(d.directory, "grub/grub.cfg") - #if os.path.exists(src): - # self.copyfile(src, dst) - - self.reboot() - - - - -if __name__ == '__main__': - import platform - - arch = platform.machine() - klass = None - - if arch in [ 'ppc', 'armv7l', 'aarch64', 'arm64' ]: - klass = Loader_Upgrade_FIT - elif arch == 'x86_64': - klass = Loader_Upgrade_x86_64 - else: - sys.stderr.write("Loader Upgrade: The current architecture (%s) is not supported for upgrade.\n" % arch) - - if klass: - klass().main() +from onl.upgrade.loader import LoaderUpgrade +LoaderUpgrade().main() diff --git a/packages/base/all/vendor-config-onl/src/etc/onl/sysconfig/00-defaults.yml b/packages/base/all/vendor-config-onl/src/etc/onl/sysconfig/00-defaults.yml index 10278f7e..de61b257 100644 --- a/packages/base/all/vendor-config-onl/src/etc/onl/sysconfig/00-defaults.yml +++ b/packages/base/all/vendor-config-onl/src/etc/onl/sysconfig/00-defaults.yml @@ -19,8 +19,12 @@ installer: upgrade: onie: auto: advisory + package: + dir: /lib/platform-config/current/onl/upgrade/onie + system: auto: advisory + loader: auto: advisory versions: /etc/onl/loader/versions.json