upgrade mode was not working; CheckForNewDisks was erroneously taking the disk as...
authorThierry Parmentelat <thierry.parmentelat@inria.fr>
Thu, 25 Jun 2015 11:09:08 +0000 (13:09 +0200)
committerThierry Parmentelat <thierry.parmentelat@inria.fr>
Thu, 25 Jun 2015 11:09:08 +0000 (13:09 +0200)
this is now taken care of by beinf a llittle more conservative in ChekForNewDisks

source/RunlevelAgent.py
source/steps/CheckForNewDisks.py
source/steps/InstallBootstrapFS.py

index 9844648..c1843bd 100755 (executable)
@@ -125,7 +125,7 @@ def start_and_run():
             break
         except:
             print("Retry in 30 seconds: ", os.popen("uptime").read().strip())
-            traceback.print_exc()
+            traceback.print_exc(limit=5)
             time.sleep(30)
 
     try:
index 223c3ae..38d8464 100644 (file)
@@ -78,10 +78,17 @@ def Run(vars, log):
         log.write("Checking device {} to see if it is part " \
                    "of the volume group.\n".format(device))
 
-        # this is the lvm partition, if it exists on that device
-        lvm_partition = InstallPartitionDisks.get_partition_path_from_device(device, vars, log)
-        cmd = "pvdisplay {} | grep -q 'planetlab'".format(lvm_partition)
-        already_added = utils.sysexec_noerr(cmd, log, shell=True)
+        # Thierry - June 2015
+        # when introducing the 'upgrade' verb, we ran into the situation
+        # where 'pvdisplay' at this point displays e.g. /dev/sda, instead
+        # of /dev/sda1
+        # we thus consider that if either of these is known, then
+        # the disk is already part of LVM
+        first_partition = InstallPartitionDisks.get_partition_path_from_device(device, vars, log)
+        probe_first_part = "pvdisplay {} | grep -q planetlab".format(first_partition)
+        probe_device     = "pvdisplay {} | grep -q planetlab".format(device)
+        already_added = utils.sysexec_noerr(probe_first_part, log, shell=True) \
+                     or utils.sysexec_noerr(probe_device, log, shell=True) 
 
         if already_added:
             log.write("It appears {} is part of the volume group, continuing.\n"\
@@ -92,7 +99,7 @@ def Run(vars, log):
         # an lvm partition on it (new disks won't have this, and that is
         # what this code is for, so it should be ok).
         cmd = "parted --script --list {} | grep -q lvm$".format(device)
-        has_lvm = utils.sysexec_noerr(cmd, log)
+        has_lvm = utils.sysexec_noerr(cmd, log, shell=True)
         if has_lvm:
             log.write("It appears {} has lvm already setup on it.\n".format(device))
             paranoid = False
index 70d22a5..1de9d70 100644 (file)
@@ -15,6 +15,7 @@ import time
 
 from Exceptions import *
 import utils
+import systeminfo
 import BootServerRequest
 import BootAPI
 
@@ -245,10 +246,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('-')