X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=source%2Fsteps%2FInstallBootstrapFS.py;h=bea2afda5218499a4c23b073489f661de0f457ab;hb=885b014c1daa6b055a7d2b435126b4263572b599;hp=24ea4bfd96c7620783c6d91a7a16b77955fd72d3;hpb=099b149838e51d6b04bb73073738bf1e4a5e67ad;p=bootmanager.git diff --git a/source/steps/InstallBootstrapFS.py b/source/steps/InstallBootstrapFS.py index 24ea4bf..bea2afd 100644 --- a/source/steps/InstallBootstrapFS.py +++ b/source/steps/InstallBootstrapFS.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 # # Copyright (c) 2003 Intel Corporation # All rights reserved. @@ -15,6 +15,7 @@ import time from Exceptions import * import utils +import systeminfo import BootServerRequest import BootAPI @@ -78,6 +79,19 @@ def Run(vars, upgrade, log): bs_request = BootServerRequest.BootServerRequest(vars) + # in upgrade mode, since we skip InstallPartitionDisks + # we need to run this + if upgrade: + log.write("Upgrade mode init : Scanning for devices\n") + systeminfo.get_block_devices_dict(vars, log) + utils.sysexec_noerr("vgscan --mknodes", log) + utils.sysexec_noerr("vgchange -ay", log) + + # debugging info - show in either mode + utils.display_disks_status(PARTITIONS, "In InstallBootstrapFS", log) + + utils.breakpoint("we need to make /dev/mapper/* appear") + log.write("turning on swap space\n") utils.sysexec("swapon {}".format(PARTITIONS["swap"]), log) @@ -97,11 +111,11 @@ def Run(vars, upgrade, log): utils.sysexec("mount -t {} {} {}/vservers"\ .format(fstype, PARTITIONS["vservers"], SYSIMG_PATH), log) - if vars['virt']=='lxc': + #if vars['virt']=='lxc': # NOTE: btrfs quota is supported from version: >= btrfs-progs-0.20 (f18+) # older versions will not recongize the 'quota' command. - log.write("Enabling btrfs quota on {}/vservers\n".format(SYSIMG_PATH)) - utils.sysexec_noerr("btrfs quota enable {}/vservers".format(SYSIMG_PATH)) + #log.write("Enabling btrfs quota on {}/vservers\n".format(SYSIMG_PATH)) + #utils.sysexec_noerr("btrfs quota enable {}/vservers".format(SYSIMG_PATH)) vars['ROOT_MOUNTED'] = 1 @@ -218,9 +232,13 @@ def Run(vars, upgrade, log): if (vars['ONE_PARTITION'] != '1'): # Import the GPG key into the RPM database so that RPMS can be verified utils.makedirs(SYSIMG_PATH + "/etc/pki/rpm-gpg") - utils.sysexec("gpg --homedir=/root --export --armor" - " --no-default-keyring --keyring {}/usr/boot/pubring.gpg" - " > {}/etc/pki/rpm-gpg/RPM-GPG-KEY-planetlab".format(SYSIMG_PATH, SYSIMG_PATH), log) + # see also myplc/plc.d/gpg + utils.sysexec( + "type -p gpg1 >& /dev/null && GPG=gpg1 || GPG=gpg; " + "$GPG --homedir=/root --export --armor" + " --no-default-keyring --keyring {}/usr/boot/pubring.gpg" + " > {}/etc/pki/rpm-gpg/RPM-GPG-KEY-planetlab" + .format(SYSIMG_PATH, SYSIMG_PATH), log, shell=True) utils.sysexec_chroot(SYSIMG_PATH, "rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-planetlab", log) # keep a log on the installed hdd @@ -238,10 +256,12 @@ def Run(vars, upgrade, log): def CleanupSysimgBeforeUpgrade(sysimg, target_nodefamily, log): areas_to_cleanup = [ - '/usr/lib', + '/boot', + '/usr', '/var', '/etc', - '/boot', + '/run', + '/vsys', ] target_pldistro, target_fcdistro, target_arch = target_nodefamily.split('-') @@ -261,13 +281,17 @@ def CleanupSysimgBeforeUpgrade(sysimg, target_nodefamily, log): with open("{}/etc/planetlab/virt".format(sysimg)) as infile: installed_virt = infile.read().strip() except Exception as e: - print_exc() + traceback.print_exc() raise BootManagerException("Could not retrieve data about previous installation - cannot upgrade") # moving from vservers to lxc also means another filesystem # so plain reinstall is the only option if installed_virt != 'lxc': - raise BootManagerException("Can only upgrade nodes running lxc containers (vservers not supported)") + message = """Can only upgrade nodes already running lxc containers +a node running vservers has its /vservers/ partition formatted as ext3 +and we need btrfs to move to containers +your only option here is reinstall""" + raise BootManagerException(message) # changing arch is not reasonable either if target_arch != installed_arch: