On 12/02/2014 03:32 PM, 'Klaus Aehlig' via ganeti-devel wrote:
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):


LGTM

--
Niklas Hambüchen
Google Germany GmbH, Dienerstr. 12, 80331 Muenchen
Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg
Geschaeftsfuehrer: Graham Law, Christine Elizabeth Flores

Reply via email to