Jelajahi Sumber

qubes/tools/qvm-create: Add internal --no-root option

And documentation fixes.
Wojtek Porczyk 9 tahun lalu
induk
melakukan
067f033af6
2 mengubah file dengan 38 tambahan dan 21 penghapusan
  1. 17 4
      doc/manpages/qvm-create.rst
  2. 21 17
      qubes/tools/qvm_create.py

+ 17 - 4
doc/manpages/qvm-create.rst

@@ -6,7 +6,7 @@
 Synopsis
 --------
 
-:command:`qvm-create` skel-manpage.py [-h] [--xml *XMLFILE*] [--force-root] [--class *CLS*] [--property *NAME*=*VALUE*] [--template *VALUE*] [--label *VALUE*] [--root-copy-from *FILENAME* | --root-move-from *FILENAME*] *VMNAME*
+:command:`qvm-create` [-h] [--xml *XMLFILE*] [--force-root] [--class *CLS*] [--property *NAME*=*VALUE*] [--template *VALUE*] [--label *VALUE*] [--root-copy-from *FILENAME* | --root-move-from *FILENAME*] *VMNAME*
 
 Options
 -------
@@ -25,7 +25,8 @@ Options
 
 .. option:: --class, -C
 
-   The class of the new domain (default: AppVM).
+   The new domain class name (default: **AppVM** for
+   :py:class:`qubes.vm.appvm.AppVM`).
 
 .. option:: --prop=NAME=VALUE, --property=NAME=VALUE, -p NAME=VALUE
 
@@ -44,11 +45,23 @@ Options
 
 .. option:: --root-copy-from=FILENAME, -r FILENAME
 
-   Use provided root.img instead of default/empty one (file will be *copied*).
+   Use provided :file:`root.img` instead of default/empty one (file will be
+   *copied*). This option is mutually exclusive with :option:`--root-move-from`.
 
 .. option:: --root-move-from=FILENAME, -R FILENAME
 
-   use provided root.img instead of default/empty one (file will be *moved*).
+   Use provided :file:`root.img` instead of default/empty one (file will be
+   *moved*). This option is mutually exclusive with :option:`--root-copy-from`.
+
+Options for internal use
+------------------------
+
+Do not use if you don't know, what you are doing.
+
+.. option:: --no-root
+
+   Do not create :file:`root.img`. This option is mutually exclusive with
+   :option:`--root-copy-from` and :option:`--root-move-from`.
 
 
 Authors

+ 21 - 17
qubes/tools/qvm_create.py

@@ -62,6 +62,9 @@ parser_root.add_argument('--root-copy-from', '-r', metavar='FILENAME',
 parser_root.add_argument('--root-move-from', '-R', metavar='FILENAME',
     help='use provided root.img instead of default/empty one'
         ' (file will be MOVED)')
+parser_root.add_argument('--no-root',
+    action='store_true', default=False,
+    help=argparse.SUPPRESS)
 
 parser.add_argument('name', metavar='VMNAME',
     action=qubes.tools.SinglePropertyAction,
@@ -124,23 +127,24 @@ def main():
 #           if (options.verbose):
 #               print('--> Using default TemplateVM: {0}'.format(template.name))
 
-    try:
-        vm.create_on_disk()
-
-        if args.root_move_from is not None:
-#           if (options.verbose):
-#               print "--> Replacing root.img with provided file"
-            os.unlink(vm.root_img)
-            os.rename(options.root_move_from, vm.root_img)
-        elif args.root_copy_from is not None:
-#           if (options.verbose):
-#               print "--> Replacing root.img with provided file"
-            os.unlink(vm.root_img)
-            # use 'cp' to preserve sparse file
-            subprocess.check_call(['cp', options.root_copy_from, vm.root_img])
-
-    except (IOError, OSError) as err:
-        parser.error(str(err))
+    if not args.no_root:
+        try:
+            vm.create_on_disk()
+
+            if args.root_move_from is not None:
+#               if (options.verbose):
+#                   print "--> Replacing root.img with provided file"
+                os.unlink(vm.root_img)
+                os.rename(options.root_move_from, vm.root_img)
+            elif args.root_copy_from is not None:
+#               if (options.verbose):
+#                   print "--> Replacing root.img with provided file"
+                os.unlink(vm.root_img)
+                # use 'cp' to preserve sparse file
+                subprocess.check_call(['cp', options.root_copy_from, vm.root_img])
+
+        except (IOError, OSError) as err:
+            parser.error(str(err))
 
     app.save()