X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=source%2Fsteps%2FCheckForNewDisks.py;h=38d84642c7bdc6b1cb65d0e1c24f41eea1a39ad6;hb=d86e809b0ea2de1447e144a38f9ca413b6c68806;hp=480db270bd96f5c3cc43e9d3bde0aa6a5bcf816e;hpb=f52080486db907ba6557d1047730c638c4562790;p=bootmanager.git diff --git a/source/steps/CheckForNewDisks.py b/source/steps/CheckForNewDisks.py index 480db27..38d8464 100644 --- a/source/steps/CheckForNewDisks.py +++ b/source/steps/CheckForNewDisks.py @@ -50,7 +50,7 @@ def Run(vars, log): except ValueError as var: raise BootManagerException("Variable in vars, shouldn't be: {}\n".format(var)) - all_devices = systeminfo.get_block_device_list(vars, log) + devices_dict = systeminfo.get_block_devices_dict(vars, log) # will contain the new devices to add to the volume group new_devices = [] @@ -58,9 +58,9 @@ def Run(vars, log): # total amount of new space in gb extended_gb_size = 0 - for device in all_devices.keys(): + for device, details in devices_dict.items(): - (major,minor,blocks,gb_size,readonly) = all_devices[device] + (major, minor, blocks, gb_size, readonly) = details if device[:14] == "/dev/planetlab": log.write("Skipping device {} in volume group.\n".format(device)) @@ -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