[et-mgmt-tools] [PATCH 04 of 11] Improve virt-convert output

john.levon at sun.com john.levon at sun.com
Mon Jul 7 22:51:34 UTC 2008


# HG changeset patch
# User john.levon at sun.com
# Date 1215470381 25200
# Node ID 6042ba3dce6a57dbe7ee547ae65be93dbef1b0a2
# Parent  fa3aae2098440bb154e4b699c1a352fe6a4f110b
Improve virt-convert output

Print some details before long operations such as disk convert, and add
a --quiet flag to allow skipping them.

Signed-off-by: John Levon <john.levon at sun.com>

diff --git a/man/en/virt-convert.1 b/man/en/virt-convert.1
--- a/man/en/virt-convert.1
+++ b/man/en/virt-convert.1
@@ -178,6 +178,9 @@ Output format. Currently, \f(CW\*(C`virt
 .IP "\-d, \-\-debug" 4
 .IX Item "-d, --debug"
 Print debugging information
+.IP "\-q, \-\-quiet" 4
+.IX Item "-q, --quiet"
+Avoid verbose output.
 .SH "EXAMPLES"
 .IX Header "EXAMPLES"
 Convert a paravirt guest from \f(CW\*(C`image.vmx\*(C'\fR:
diff --git a/man/en/virt-convert.pod b/man/en/virt-convert.pod
--- a/man/en/virt-convert.pod
+++ b/man/en/virt-convert.pod
@@ -62,6 +62,10 @@ Output format. Currently, C<virt-image> 
 
 Print debugging information
 
+=item -q, --quiet
+
+Avoid verbose output.
+
 =back
 
 =head1 EXAMPLES
diff --git a/virt-convert b/virt-convert
--- a/virt-convert
+++ b/virt-convert
@@ -36,6 +36,8 @@ def parse_args():
     opts = OptionParser()
     opts.set_usage("%prog [options] inputdir|input.vmx "
         "[outputdir|output.xml]")
+    opts.add_option("-q", "--quiet", action="store_true", dest="quiet",
+                    help=("Don't be verbose"))
     opts.add_option("-a", "--arch", type="string", dest="arch",
                     default=util.get_default_arch(),
                     help=("Machine Architecture Type (i686/x86_64/ppc)"))
@@ -44,10 +46,10 @@ def parse_args():
     opts.add_option("-d", "--debug", action="store_true", dest="debug",
                     help=("Print debugging information"))
     opts.add_option("-i", "--input-format", action="store",
-                    dest="inputformat", default="vmx",
+                    dest="input_format", default="vmx",
                     help=("Input format, e.g. 'vmx'"))
     opts.add_option("-o", "--output-format", action="store",
-                    dest="outputformat", default="virt-image",
+                    dest="output_format", default="virt-image",
                     help=("Output format, e.g. 'virt-image'"))
     opts.add_option("-v", "--hvm", action="store_true", dest="fullvirt",
                     help=("This guest should be a fully virtualized guest"))
@@ -61,11 +63,11 @@ def parse_args():
         opts.error(("Too many arguments provided"))
     
     # hard-code for now
-    if options.inputformat != "vmx":
-        opts.error(("Unsupported input format \"%s\"" % options.inputformat))
-    if options.outputformat != "virt-image":
+    if options.input_format != "vmx":
+        opts.error(("Unsupported input format \"%s\"" % options.input_format))
+    if options.output_format != "virt-image":
         opts.error(("Unsupported output format \"%s\""
-            % options.outputformat))
+            % options.output_format))
     if os.path.isdir(args[0]):
         vmx_files = [x for x in os.listdir(args[0]) if x.endswith(".vmx") ]
         if (len(vmx_files)) == 0:
@@ -92,6 +94,11 @@ def parse_args():
 
     return options
 
+def verbose(options, msg):
+    """Output a message if --quiet is not set."""
+    if not options.quiet:
+        print msg
+
 def rmrf(path):
     """Remove a directory and all its contents."""
 
@@ -127,17 +134,17 @@ def main():
     cli.setupLogging("virt-convert", options.debug)
 
     try:
-        inp = virtconv.vmconfig.find_parser_by_name(options.inputformat)
+        inp = virtconv.vmconfig.find_parser_by_name(options.input_format)
     except:
         logging.error("No parser of format \"%s\" was found." %
-            options.inputformat)
+            options.input_format)
         sys.exit(1)
  
     try:
-        outp = virtconv.vmconfig.find_parser_by_name(options.outputformat)
+        outp = virtconv.vmconfig.find_parser_by_name(options.output_format)
     except:
         logging.error("No parser of format \"%s\" was found." %
-            options.outputformat)
+            options.output_format)
         sys.exit(1)
 
     vmdef = None
@@ -184,8 +191,13 @@ def main():
     logging.debug("output_file: %s" % options.output_file)
     logging.debug("output_dir: %s" % options.input_dir)
 
+    verbose(options, "Generating output in \"%s\" format to %s/" %
+        (options.output_format, options.output_dir))
+
     try:
         for d in vmdef.disks:
+            verbose(options, "Converting disk \"%s\" to type %s..." %
+                (d.path, vmconfig.qemu_formats[vmconfig.DISK_TYPE_RAW]))
             d.convert(options.input_dir, options.output_dir,
                 vmconfig.DISK_TYPE_RAW)
     except OSError, e:
@@ -199,7 +211,7 @@ def main():
         cleanup("Couldn't export to file \"%s\": %s" %
             (options.output_file, e.message), options, created_dir)
 
-    print "\n\nConversion completed and placed in: %s" % options.output_dir
+    verbose(options, "Done.")
 
 if __name__ == "__main__":
     try:




More information about the et-mgmt-tools mailing list