hv_kvm: Original error message, keyword parameter
[ganeti-local] / lib / masterd / instance.py
index e1fc908..d99f4d8 100644 (file)
@@ -33,6 +33,7 @@ from ganeti import compat
 from ganeti import utils
 from ganeti import objects
 from ganeti import netutils
+from ganeti import pathutils
 
 
 class _ImportExportError(Exception):
@@ -1227,7 +1228,7 @@ class ExportInstanceHelper:
         transfers.append(None)
         continue
 
-      path = utils.PathJoin(constants.EXPORT_DIR, "%s.new" % instance.name,
+      path = utils.PathJoin(pathutils.EXPORT_DIR, "%s.new" % instance.name,
                             dev.physical_id[1])
 
       finished_fn = compat.partial(self._TransferFinished, idx)
@@ -1605,3 +1606,35 @@ def ComputeRemoteImportDiskInfo(cds, salt, disk_index, host, port, magic):
   msg = _GetRieDiskInfoMessage(disk_index, host, port, magic)
   hmac_digest = utils.Sha1Hmac(cds, msg, salt=salt)
   return (host, port, magic, hmac_digest, salt)
+
+
+def CalculateGroupIPolicy(cluster, group):
+  """Calculate instance policy for group.
+
+  """
+  return cluster.SimpleFillIPolicy(group.ipolicy)
+
+
+def ComputeDiskSize(disk_template, disks):
+  """Compute disk size requirements according to disk template
+
+  """
+  # Required free disk space as a function of disk and swap space
+  req_size_dict = {
+    constants.DT_DISKLESS: None,
+    constants.DT_PLAIN: sum(d[constants.IDISK_SIZE] for d in disks),
+    # 128 MB are added for drbd metadata for each disk
+    constants.DT_DRBD8:
+      sum(d[constants.IDISK_SIZE] + constants.DRBD_META_SIZE for d in disks),
+    constants.DT_FILE: sum(d[constants.IDISK_SIZE] for d in disks),
+    constants.DT_SHARED_FILE: sum(d[constants.IDISK_SIZE] for d in disks),
+    constants.DT_BLOCK: 0,
+    constants.DT_RBD: sum(d[constants.IDISK_SIZE] for d in disks),
+    constants.DT_EXT: sum(d[constants.IDISK_SIZE] for d in disks),
+  }
+
+  if disk_template not in req_size_dict:
+    raise errors.ProgrammerError("Disk template '%s' size requirement"
+                                 " is unknown" % disk_template)
+
+  return req_size_dict[disk_template]