X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=source%2Fsteps%2FInstallBootstrapFS.py;h=bea2afda5218499a4c23b073489f661de0f457ab;hb=885b014c1daa6b055a7d2b435126b4263572b599;hp=1de9d70015b0a7fcf3e9351ad479c959bb21dc32;hpb=d86e809b0ea2de1447e144a38f9ca413b6c68806;p=bootmanager.git diff --git a/source/steps/InstallBootstrapFS.py b/source/steps/InstallBootstrapFS.py index 1de9d70..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. @@ -82,10 +82,16 @@ def Run(vars, upgrade, log): # in upgrade mode, since we skip InstallPartitionDisks # we need to run this if upgrade: - log.write("Running vgscan for devices (upgrade mode)\n") + log.write("Upgrade mode init : Scanning for devices\n") systeminfo.get_block_devices_dict(vars, log) - utils.sysexec_noerr("vgscan", 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) @@ -105,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 @@ -226,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 @@ -271,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: