Add default ONIE upgrade package settings.

This commit is contained in:
Jeffrey Townsend
2016-10-19 21:36:00 +00:00
parent 6a97f85532
commit 23e6922e71
4 changed files with 8 additions and 182 deletions

View File

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

View File

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

View File

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

View File

@@ -19,6 +19,9 @@ installer:
upgrade:
onie:
auto: advisory
package:
dir: /lib/platform-config/current/onl/upgrade/onie
loader:
auto: advisory
versions: /etc/onl/loader/versions.json