[et-mgmt-tools] [PATCH] virt-convert: make VMX parser case insensitive

John Levon levon at movementarian.org
Tue Sep 16 13:47:21 UTC 2008


# HG changeset patch
# User john.levon at sun.com
# Date 1221572750 -3600
# Node ID 8ff0e8ca4eb05063bb9c689ef159f4f601dddd7a
# Parent  15cdf039c358895c192f92a6746836b00c16bb56
virt-convert: make VMX parser case insensitive

VMWare tools apparently don't care, so neither should we.  Some VMX
generators don't use the proper case with keys such as 'fileName'.

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

diff --git a/virtconv/parsers/vmx.py b/virtconv/parsers/vmx.py
--- a/virtconv/parsers/vmx.py
+++ b/virtconv/parsers/vmx.py
@@ -42,13 +42,13 @@
         vm.netdevs[inst] = netdevcfg.netdev(type = netdevcfg.NETDEV_TYPE_UNKNOWN)
 
     # "vlance", "vmxnet", "e1000"
-    if key == "virtualDev":
-        vm.netdevs[inst].driver = lvalue
-    if key == "addressType" and lvalue == "generated":
+    if key == "virtualdev":
+        vm.netdevs[inst].driver = value
+    if key == "addresstype" and lvalue == "generated":
         vm.netdevs[inst].mac = "auto"
     # we ignore .generatedAddress for auto mode
     if key == "address":
-        vm.netdevs[inst].mac = lvalue
+        vm.netdevs[inst].mac = value
 
 def parse_disk_entry(vm, fullkey, value):
     """
@@ -78,19 +78,17 @@
         vm.disks[devid] = diskcfg.disk(bus = bus,
             type = diskcfg.DISK_TYPE_DISK)
 
-    if key == "deviceType":
+    if key == "devicetype":
         if lvalue == "atapi-cdrom" or lvalue == "cdrom-raw":
             vm.disks[devid].type = diskcfg.DISK_TYPE_CDROM
         elif lvalue == "cdrom-image":
             vm.disks[devid].type = diskcfg.DISK_TYPE_ISO
 
-    if key == "fileName":
+    if key == "filename":
         vm.disks[devid].path = value
         vm.disks[devid].format = diskcfg.DISK_FORMAT_RAW
         if lvalue.endswith(".vmdk"):
             vm.disks[devid].format = diskcfg.DISK_FORMAT_VMDK
-
-import re
 
 class vmx_parser(formats.parser):
     """
@@ -147,7 +145,7 @@
         for (line_nr, line) in enumerate(lines):
             try:
                 before_eq, after_eq = line.split("=", 1)
-                key = before_eq.strip()
+                key = before_eq.strip().lower()
                 value = after_eq.strip().strip('"')
                 config[key] = value
 
@@ -164,13 +162,13 @@
                 continue
                 
             # vmx files often have dross left in path for CD entries
-            if (disk.path == "auto detect" or
+            if (disk.path.lower() == "auto detect" or
                 not os.path.exists(disk.path)):
                 vm.disks[devid].path = None
 
-        if not config.get("displayName"):
+        if not config.get("displayname"):
             raise ValueError("No displayName defined in \"%s\"" % input_file)
-        vm.name = config.get("displayName")
+        vm.name = config.get("displayname")
 
         vm.memory = config.get("memsize")
         vm.description = config.get("annotation")




More information about the et-mgmt-tools mailing list