When an instance is committed, the, so far forthcoming, disks will be replaced by the actual ones. This requires AddInstanceDisk to be able to replace existing disks. So add support for this.
Signed-off-by: Klaus Aehlig <[email protected]> --- lib/config/__init__.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/config/__init__.py b/lib/config/__init__.py index 9d0f89b..c8b56c2 100644 --- a/lib/config/__init__.py +++ b/lib/config/__init__.py @@ -329,7 +329,7 @@ class ConfigWriter(object): """ return self._UnlockedGetInstanceDisks(inst_uuid) - def _UnlockedAddDisk(self, disk): + def _UnlockedAddDisk(self, disk, replaces=False): """Add a disk to the config. @type disk: L{objects.Disk} @@ -341,9 +341,12 @@ class ConfigWriter(object): logging.info("Adding disk %s to configuration", disk.uuid) - self._CheckUniqueUUID(disk, include_temporary=False) - disk.serial_no = 1 - disk.ctime = disk.mtime = time.time() + if replaces: + self._CheckUUIDpresent(disk) + else: + self._CheckUniqueUUID(disk, include_temporary=False) + disk.serial_no = 1 + disk.ctime = disk.mtime = time.time() disk.UpgradeConfig() self._ConfigData().disks[disk.uuid] = disk self._ConfigData().cluster.serial_no += 1 @@ -389,14 +392,14 @@ class ConfigWriter(object): instance.mtime = time.time() @ConfigSync() - def AddInstanceDisk(self, inst_uuid, disk, idx=None): + def AddInstanceDisk(self, inst_uuid, disk, idx=None, replaces=False): """Add a disk to the config and attach it to instance. This is a simple wrapper over L{_UnlockedAddDisk} and L{_UnlockedAttachInstanceDisk}. """ - self._UnlockedAddDisk(disk) + self._UnlockedAddDisk(disk, replaces=replaces) self._UnlockedAttachInstanceDisk(inst_uuid, disk.uuid, idx) def _UnlockedDetachInstanceDisk(self, inst_uuid, disk_uuid): -- 2.2.0.rc0.207.ga3a616c
