Merge branch 'master' of git://git.qubes-os.org/marmarek/core-admin

This commit is contained in:
Joanna Rutkowska 2013-11-25 22:59:23 +01:00
commit 473491032d

View File

@ -46,8 +46,10 @@ def main():
help="Create NetVM")
parser.add_option ("-s", "--standalone", action="store_true", dest="standalone", default=False,
help="Create standalone VM - independent of template ")
parser.add_option ("-r", "--root", dest="root", default=None,
parser.add_option ("-R", "--root-move-from", dest="root_move", default=None,
help="Use provided root.img instead of default/empty one (file will be MOVED)")
parser.add_option ("-r", "--root-copy-from", dest="root_copy", default=None,
help="Use provided root.img instead of default/empty one (file will be COPIED)")
parser.add_option ("-m", "--mem", dest="mem", default=None,
help="Initial memory size (in MB)")
parser.add_option ("-c", "--vcpus", dest="vcpus", default=None,
@ -89,7 +91,13 @@ def main():
exit (1)
label = QubesVmLabels[options.label]
if not options.standalone and options.root is not None:
if options.hvm and not options.template:
options.standalone = True
if options.hvm_template:
options.standalone = True
if not options.standalone and any([options.root_copy, options.root_move]):
print >> sys.stderr, "root.img can be specified only for standalone VMs"
exit (1)
@ -97,13 +105,15 @@ def main():
print >> sys.stderr, "Template VM cannot be based on another template"
exit (1)
if options.hvm and not options.template:
options.standalone = True
if options.root_copy and options.root_move:
print >> sys.stderr, "Only one of --root-move-from and --root-copy from can be specified"
exit(1)
if options.hvm_template:
options.standalone = True
if options.root_copy is not None and not os.path.exists(options.root_copy):
print >> sys.stderr, "File specified as root.img does not exists"
exit (1)
if options.root is not None and not os.path.exists(options.root):
if options.root_move is not None and not os.path.exists(options.root_move):
print >> sys.stderr, "File specified as root.img does not exists"
exit (1)
@ -170,9 +180,13 @@ def main():
try:
vm.create_on_disk(verbose=options.verbose, source_template=template)
if options.root:
if options.root_move:
os.unlink(vm.root_img)
os.rename(options.root, vm.root_img)
os.rename(options.root_move, vm.root_img)
elif options.root_copy:
os.unlink(vm.root_img)
# use "cp" to preserve sparse file
subprocess.check_call(["cp", options.root_copy, vm.root_img])
except (IOError, OSError) as err:
print >> sys.stderr, "ERROR: {0}".format(err)