diff --git a/lib/backend.py b/lib/backend.py index 75c4bdbdff3319502bf86c60158d23468d8df422..c9e9af5ba8fecce9542c0c1599bffb82ca4bea51 100644 --- a/lib/backend.py +++ b/lib/backend.py @@ -1016,19 +1016,9 @@ def CreateBlockDevice(disk, size, owner, on_primary, info): # be assembled crdev.Open() clist.append(crdev) - try: - device = bdev.FindDevice(disk.dev_type, disk.physical_id, clist) - if device is not None: - logging.info("removing existing device %s", disk) - device.Remove() - except errors.BlockDeviceError, err: - pass - device = bdev.Create(disk.dev_type, disk.physical_id, - clist, size) - if device is None: - raise ValueError("Can't create child device for %s, %s" % - (disk, size)) + device = bdev.Create(disk.dev_type, disk.physical_id, clist, size) + if on_primary or disk.AssembleOnSecondary(): if not device.Assemble(): errorstring = "Can't assemble device after creation" diff --git a/lib/bdev.py b/lib/bdev.py index 282464830ae2e22e735c5c4e7bc1699baba69701..f1ade2eaa0c9bbbe87328de4cc589949626d3d1c 100644 --- a/lib/bdev.py +++ b/lib/bdev.py @@ -275,7 +275,8 @@ class LogicalVolume(BlockDev): """ if not isinstance(unique_id, (tuple, list)) or len(unique_id) != 2: - raise ValueError("Invalid configuration data %s" % str(unique_id)) + raise errors.ProgrammerError("Invalid configuration data %s" % + str(unique_id)) vg_name, lv_name = unique_id pvs_info = cls.GetPVInfo(vg_name) if not pvs_info: @@ -295,8 +296,8 @@ class LogicalVolume(BlockDev): result = utils.RunCmd(["lvcreate", "-L%dm" % size, "-n%s" % lv_name, vg_name] + pvlist) if result.failed: - raise errors.BlockDeviceError("%s - %s" % (result.fail_reason, - result.output)) + raise errors.BlockDeviceError("LV create failed (%s): %s" % + (result.fail_reason, result.output)) return LogicalVolume(unique_id, children) @staticmethod @@ -1646,16 +1647,17 @@ class FileStorage(BlockDev): @return: an instance of FileStorage """ + # TODO: decide whether we should check for existing files and + # abort or not if not isinstance(unique_id, (tuple, list)) or len(unique_id) != 2: raise ValueError("Invalid configuration data %s" % str(unique_id)) dev_path = unique_id[1] try: f = open(dev_path, 'w') - except IOError, err: - raise errors.BlockDeviceError("Could not create '%'" % err) - else: f.truncate(size * 1024 * 1024) f.close() + except IOError, err: + raise errors.BlockDeviceError("Error in file creation: %" % str(err)) return FileStorage(unique_id, children)