Upgrade separation and cleanup.

This commit is contained in:
Jeffrey Townsend
2016-10-21 18:12:33 +00:00
parent b3e2757b31
commit 6b051c4533
9 changed files with 39 additions and 22 deletions

View File

@@ -1,3 +1 @@
#!/usr/bin/python
from onl.upgrade.onie import OnieUpgrade
OnieUpgrade().main()
/sbin/onl-upgrade-onie

View File

@@ -1,3 +1,2 @@
#!/usr/bin/python
from onl.upgrade.firmware import FirmwareUpgrade
FirmwareUpgrade().main()
/sbin/onl-upgrade-firmware

View File

@@ -1,3 +1 @@
#!/usr/bin/python
from onl.upgrade.loader import LoaderUpgrade
LoaderUpgrade().main()
/sbin/onl-upgrade-loader

View File

@@ -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)

View File

@@ -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

View File

@@ -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')))

View File

@@ -0,0 +1,3 @@
#!/usr/bin/python
from onl.upgrade.firmware import FirmwareUpgrade
FirmwareUpgrade().main()

View File

@@ -0,0 +1,3 @@
#!/usr/bin/python
from onl.upgrade.loader import LoaderUpgrade
LoaderUpgrade().main()

View File

@@ -0,0 +1,3 @@
#!/usr/bin/python
from onl.upgrade.onie import OnieUpgrade
OnieUpgrade().main()