From 6b051c453300f226c82eb4e978bed3f2be8b5046 Mon Sep 17 00:00:00 2001 From: Jeffrey Townsend Date: Fri, 21 Oct 2016 18:12:33 +0000 Subject: [PATCH] Upgrade separation and cleanup. --- .../src/boot.d/60.upgrade-onie | 4 +-- .../src/boot.d/61.upgrade-firmware | 5 ++- .../src/boot.d/62.upgrade-loader | 4 +-- .../src/python/onl/upgrade/loader.py | 3 ++ .../src/python/onl/upgrade/onie.py | 1 - .../src/python/onl/upgrade/ubase.py | 35 ++++++++++++------- .../src/sbin/onl-upgrade-firmware | 3 ++ .../src/sbin/onl-upgrade-loader | 3 ++ .../src/sbin/onl-upgrade-onie | 3 ++ 9 files changed, 39 insertions(+), 22 deletions(-) create mode 100755 packages/base/all/vendor-config-onl/src/sbin/onl-upgrade-firmware create mode 100755 packages/base/all/vendor-config-onl/src/sbin/onl-upgrade-loader create mode 100755 packages/base/all/vendor-config-onl/src/sbin/onl-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 index a6daef06..540e24d3 100755 --- 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 @@ -1,3 +1 @@ -#!/usr/bin/python -from onl.upgrade.onie import OnieUpgrade -OnieUpgrade().main() +/sbin/onl-upgrade-onie diff --git a/packages/base/all/vendor-config-onl/src/boot.d/61.upgrade-firmware b/packages/base/all/vendor-config-onl/src/boot.d/61.upgrade-firmware index aa23c80c..41880e16 100755 --- a/packages/base/all/vendor-config-onl/src/boot.d/61.upgrade-firmware +++ b/packages/base/all/vendor-config-onl/src/boot.d/61.upgrade-firmware @@ -1,3 +1,2 @@ -#!/usr/bin/python -from onl.upgrade.firmware import FirmwareUpgrade -FirmwareUpgrade().main() +/sbin/onl-upgrade-firmware + 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 02aa6d92..f802031a 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,3 +1 @@ -#!/usr/bin/python -from onl.upgrade.loader import LoaderUpgrade -LoaderUpgrade().main() +/sbin/onl-upgrade-loader diff --git a/packages/base/all/vendor-config-onl/src/python/onl/upgrade/loader.py b/packages/base/all/vendor-config-onl/src/python/onl/upgrade/loader.py index 10df045e..6637c9a7 100755 --- a/packages/base/all/vendor-config-onl/src/python/onl/upgrade/loader.py +++ b/packages/base/all/vendor-config-onl/src/python/onl/upgrade/loader.py @@ -43,6 +43,9 @@ class LoaderUpgradeBase(ubase.BaseUpgrade): self.next_version = self.load_json(NEXT_LOADER_VERSIONS_JSON, "version", {}).get('RELEASE_ID', None) + def prepare_upgrade(self): + pass + def summarize(self): self.logger.info("Current Loader Version: %s" % self.current_version) self.logger.info(" Next Loader Version: %s" % self.next_version) diff --git a/packages/base/all/vendor-config-onl/src/python/onl/upgrade/onie.py b/packages/base/all/vendor-config-onl/src/python/onl/upgrade/onie.py index fab08c0d..4cf81016 100755 --- a/packages/base/all/vendor-config-onl/src/python/onl/upgrade/onie.py +++ b/packages/base/all/vendor-config-onl/src/python/onl/upgrade/onie.py @@ -17,7 +17,6 @@ class OnieUpgrade(ubase.BaseOnieUpgrade): 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 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 2b5f6c22..86562b61 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 @@ -41,6 +41,10 @@ class BaseUpgrade(object): self.platform = OnlPlatform() self.init() + self.current_version = None + self.next_version = None + self.init_versions() + def init(self): pass @@ -161,11 +165,16 @@ class BaseUpgrade(object): UPGRADE_STATUS_JSON = "/lib/platform-config/current/onl/upgrade.json" - def update_upgrade_status(self, key, value): + @staticmethod + def upgrade_status_get(): data = {} - if os.path.exists(self.UPGRADE_STATUS_JSON): - with open(self.UPGRADE_STATUS_JSON) as f: + if os.path.exists(BaseUpgrade.UPGRADE_STATUS_JSON): + with open(BaseUpgrade.UPGRADE_STATUS_JSON) as f: data = json.load(f) + return data + + def update_upgrade_status(self, key, value): + data = self.upgrade_status_get() data[key] = value with open(self.UPGRADE_STATUS_JSON, "w") as f: json.dump(data, f) @@ -177,6 +186,8 @@ class BaseUpgrade(object): def init_versions(self): raise Exception("init_versions() must be provided by the deriving class.") + def prepare_upgrade(self): + raise Exception("prepare_versions() must be provided by the deriving class.") # # Perform actual upgrade. Provided by derived class. @@ -192,9 +203,7 @@ class BaseUpgrade(object): def init_upgrade(self): - self.current_version = None - self.next_version = None - self.init_versions() + self.prepare_upgrade() self.update_upgrade_status(self.current_version_key, self.current_version) self.update_upgrade_status(self.next_version_key, self.next_version) @@ -411,20 +420,22 @@ class BaseOnieUpgrade(BaseUpgrade): self.logger.info("Removing previous onie-updater.") os.remove(updater) - def load_manifest(self, path): - self.manifest = self.load_json(path) - + def prepare_upgrade(self): if self.manifest is None: self.finish("No %s updater available for the current platform." % self.Name) - if 'version' not in self.manifest: + if self.next_version is None: self.finish("No %s version in the upgrade manifest." % self.Name) - else: - self.next_version = self.manifest['version'] if 'updater' not in self.manifest: self.finish("No %s updater in the upgrade manifest." % self.Name) + def load_manifest(self, path, required=True): + self.manifest = self.load_json(path) + self.next_version = None + if self.manifest: + self.next_version = self.manifest.get('version', None) + def summarize(self): self.logger.info("Current %s Version: %s" % (self.Name, self.current_version)) self.logger.info(" Next %s Version: %s" % (self.Name, self.manifest.get('version'))) diff --git a/packages/base/all/vendor-config-onl/src/sbin/onl-upgrade-firmware b/packages/base/all/vendor-config-onl/src/sbin/onl-upgrade-firmware new file mode 100755 index 00000000..aa23c80c --- /dev/null +++ b/packages/base/all/vendor-config-onl/src/sbin/onl-upgrade-firmware @@ -0,0 +1,3 @@ +#!/usr/bin/python +from onl.upgrade.firmware import FirmwareUpgrade +FirmwareUpgrade().main() diff --git a/packages/base/all/vendor-config-onl/src/sbin/onl-upgrade-loader b/packages/base/all/vendor-config-onl/src/sbin/onl-upgrade-loader new file mode 100755 index 00000000..02aa6d92 --- /dev/null +++ b/packages/base/all/vendor-config-onl/src/sbin/onl-upgrade-loader @@ -0,0 +1,3 @@ +#!/usr/bin/python +from onl.upgrade.loader import LoaderUpgrade +LoaderUpgrade().main() diff --git a/packages/base/all/vendor-config-onl/src/sbin/onl-upgrade-onie b/packages/base/all/vendor-config-onl/src/sbin/onl-upgrade-onie new file mode 100755 index 00000000..a6daef06 --- /dev/null +++ b/packages/base/all/vendor-config-onl/src/sbin/onl-upgrade-onie @@ -0,0 +1,3 @@ +#!/usr/bin/python +from onl.upgrade.onie import OnieUpgrade +OnieUpgrade().main()