Fix instance import net option
[ganeti-local] / scripts / gnt-backup
index 0cb6abf..467b37d 100755 (executable)
@@ -45,7 +45,7 @@ def PrintExportList(opts, args):
   @return: the desired exit code
 
   """
-  exports = GetClient().QueryExports(opts.nodes)
+  exports = GetClient().QueryExports(opts.nodes, False)
   retcode = 0
   for node in exports:
     ToStdout("Node: %s", node)
@@ -102,7 +102,7 @@ def ImportInstance(opts, args):
     except ValueError, err:
       raise errors.OpPrereqError("Invalid NIC index passed: %s" % str(err))
     nics = [{}] * nic_max
-    for nidx, ndict in opts.nics.items():
+    for nidx, ndict in opts.nics:
       nidx = int(nidx)
       nics[nidx] = ndict
   elif opts.no_nics:
@@ -113,13 +113,18 @@ def ImportInstance(opts, args):
     nics = [{}]
 
   if opts.disk_template == constants.DT_DISKLESS:
-    if opts.disks:
+    if opts.disks or opts.sd_size is not None:
       raise errors.OpPrereqError("Diskless instance but disk"
                                  " information passed")
     disks = []
   else:
-    if not opts.disks:
+    if not opts.disks and not opts.sd_size:
       raise errors.OpPrereqError("No disk information specified")
+    if opts.disks and opts.sd_size is not None:
+      raise errors.OpPrereqError("Please use either the '--disk' or"
+                                 " '-s' option")
+    if opts.sd_size is not None:
+      opts.disks = [(0, {"size": opts.sd_size})]
     try:
       disk_max = max(int(didx[0])+1 for didx in opts.disks)
     except ValueError, err:
@@ -136,7 +141,8 @@ def ImportInstance(opts, args):
                                    (didx, err))
       disks[didx] = ddict
 
-  ValidateBeParams(opts.beparams)
+  utils.ForceDictType(opts.beparams, constants.BES_PARAMETER_TYPES)
+  utils.ForceDictType(hvparams, constants.HVS_PARAMETER_TYPES)
 
   op = opcodes.OpCreateInstance(instance_name=instance,
                                 disk_template=opts.disk_template,
@@ -193,6 +199,10 @@ import_opts = [
              default=[], dest="disks",
              action="append",
              type="identkeyval"),
+  cli_option("-s", "--os-size", dest="sd_size", help="Disk size for a"
+             " single-disk configuration, when not using the --disk option,"
+             " in MiB unless a suffix is used",
+             default=None, type="unit", metavar="<size>"),
   ikv_option("--net", help="NIC information",
              default=[], dest="nics",
              action="append",
@@ -208,7 +218,7 @@ import_opts = [
   make_option("--no-ip-check", dest="ip_check", default=True,
               action="store_false", help="Don't check that the instance's IP"
               " is alive"),
-  make_option("--iallocator", metavar="<NAME>",
+  make_option("-I", "--iallocator", metavar="<NAME>",
               help="Select nodes for the instance automatically using the"
               " <NAME> iallocator plugin", default=None, type="string"),
   make_option("--file-storage-dir", dest="file_storage_dir",