[et-mgmt-tools] [PATCH] virtinst - virt-convert vmware output

John Levon levon at movementarian.org
Mon Sep 29 16:27:38 UTC 2008


On Mon, Sep 29, 2008 at 07:19:26AM -0400, Joey Boggs wrote:

> Made all suggested changes and cleaned up the extra whitespace

Cool beans. Some comments:

diff -r 58a909b4f71c virt-convert
--- a/virt-convert	Mon Sep 22 11:32:11 2008 -0400
+++ b/virt-convert	Mon Sep 29 07:17:09 2008 -0400
@@ -48,10 +48,9 @@
     opts.add_option("-d", "--debug", action="store_true", dest="debug",
                     help=("Print debugging information"))
     opts.add_option("-i", "--input-format", action="store",
-                    dest="input_format", help=("Input format, e.g. 'vmx'"))
+                    dest="input_format", help=("Input format, e.g. 'vmx / virt-image'"))
     opts.add_option("-o", "--output-format", action="store",
-                    dest="output_format", default="virt-image",
-                    help=("Output format, e.g. 'virt-image'"))
+                    dest="output_format", help=("Output format, e.g. 'virt-image / vmx'"))

These are just examples, so why list all the formats? The existing ones
should be fine.

diff -r 58a909b4f71c virtconv/parsers/virtimage.py
--- a/virtconv/parsers/virtimage.py	Mon Sep 22 11:32:11 2008 -0400
+++ b/virtconv/parsers/virtimage.py	Mon Sep 29 07:17:09 2008 -0400
@@ -21,10 +21,13 @@
 import virtconv.formats as formats
 import virtconv.vmcfg as vmcfg
 import virtconv.diskcfg as diskcfg
+import virtconv.netdevcfg as netdevcfg
 import virtinst.FullVirtGuest as fv
-
+import virtinst.ImageParser as ImageParser
+from virtinst.cli import fail

Surely this isn't right - this code is "library" code and shouldn't be
using fail() ? It should be re-raising the exception...

+        bus="scsi"

Inconsistent spacing.

+        diskinst = 0

Isn't nr_disks a little more understandable?

+        devid = (bus, diskinst)

This line...

+
+        for d in boot.drives:
+            disk = d.disk
+            format = None
+            if disk.format == ImageParser.Disk.FORMAT_RAW:
+                format = diskcfg.DISK_FORMAT_RAW
+            elif format == ImageParser.DISK_FORMAT_VMDK:
+                format == diskcfg.DISK_FORMAT_VMDK
+            
+            if format is None:
+                raise ValueError("Unable to determine disk format")
+            

... should surely be here?

+            vm.disks[devid] = diskcfg.disk(bus = bus,
+                type = diskcfg.DISK_TYPE_DISK)

No CD-ROM handling?

+        nics = domain.interface
+        nicinst = 0

nr_nics? :)

 
diff -r 58a909b4f71c virtconv/parsers/vmx.py
--- a/virtconv/parsers/vmx.py	Mon Sep 22 11:32:11 2008 -0400
+++ b/virtconv/parsers/vmx.py	Mon Sep 29 07:17:09 2008 -0400
+_VMX_IDE_TEMPLATE = """
+# IDE disk
+ide%(dev)s.present = "TRUE"
+ide%(dev)s.fileName = "%(disk_filename)s"
+ide%(dev)s.mode = "persistent"
+ide%(dev)s.startConnected = "TRUE"
+ide%(dev)s.writeThrough = "TRUE"
+"""

Hmm, above we're importing virt-image as SCSI disks, but exporting as
IDE - can you clarify this?

 
 def parse_netdev_entry(vm, fullkey, value):
     """
@@ -70,14 +123,13 @@
 
     # Does anyone else think it's scary that we're still doing things
     # like this?
+   
     if bus == "ide":
         inst = int(inst) + int(bus_nr) * 2
-
     devid = (bus, inst)
     if not vm.disks.get(devid):
         vm.disks[devid] = diskcfg.disk(bus = bus,
             type = diskcfg.DISK_TYPE_DISK)
-
     if key == "devicetype":
         if lvalue == "atapi-cdrom" or lvalue == "cdrom-raw":
             vm.disks[devid].type = diskcfg.DISK_TYPE_CDROM

I don't see these whitespace changes as improvements...

@@ -180,6 +232,8 @@
 
     @staticmethod
     def export_file(vm, output_file):
+
+

ditto.

@@ -188,7 +242,47 @@
         Raises ValueError if configuration is not suitable, or another
         exception on failure to write the output file.
         """
+        vmx_dict = {
+            "now": time.strftime("%Y-%m-%dT%H:%M:%S %Z", time.localtime()),
+            "progname": os.path.basename(sys.argv[0]),
+            "/image/name": vm.name,
+            "/image/description": vm.description or "None",
+            "/image/label": vm.name,
+            "/image/devices/vcpu" : vm.nr_vcpus,
+            "/image/devices/memory": long(vm.memory)/1024

It's not clear why you used such strange names for the dict's keywords?

regards
john




More information about the et-mgmt-tools mailing list