aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>2005-08-11 20:58:08 +0000
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>2005-08-11 20:58:08 +0000
commitab6d52907c8560c825b8a069f1766e02478ed068 (patch)
tree28b2a710cc1746410cc2e7602b9d77a44b645de3
parent2521f14bda9746dd0eba2c038954c3d0780b1dac (diff)
downloadxen-ab6d52907c8560c825b8a069f1766e02478ed068.tar.gz
xen-ab6d52907c8560c825b8a069f1766e02478ed068.tar.bz2
xen-ab6d52907c8560c825b8a069f1766e02478ed068.zip
Fix config file parsing for VMX domains.
If we define "vif" in the config file, image.py will raise error "vmx: missing vbd configuration". The reason is "vif" is dealt with as a "vbd" device. This patch fixes this issue by dealing with "vbd" and "vif " separately, removing "macaddr" arg and parsing mac address from "vif" instead. Also, the vbd doesn't have to be a file anymore, but can be a physical disk partition. Signed-off-by: Yunfeng Zhao <yunfeng.zhao@intel.com> Signed-off-by: Arun Sharma <arun.sharma@intel.com>
-rw-r--r--tools/examples/xmexample.vmx5
-rw-r--r--tools/python/xen/xend/image.py31
2 files changed, 18 insertions, 18 deletions
diff --git a/tools/examples/xmexample.vmx b/tools/examples/xmexample.vmx
index 1c85a02d4c..830fdc11e7 100644
--- a/tools/examples/xmexample.vmx
+++ b/tools/examples/xmexample.vmx
@@ -132,8 +132,3 @@ vnc=1
#-----------------------------------------------------------------------------
# start in full screen
#full-screen=1
-
-#-----------------------------------------------------------------------------
-# set the mac address of the first interface
-#macaddr=
-
diff --git a/tools/python/xen/xend/image.py b/tools/python/xen/xend/image.py
index 608fe55c6b..908299d626 100644
--- a/tools/python/xen/xend/image.py
+++ b/tools/python/xen/xend/image.py
@@ -305,7 +305,7 @@ class VmxImageHandler(ImageHandler):
# xm config file
def parseDeviceModelArgs(self):
dmargs = [ 'cdrom', 'boot', 'fda', 'fdb',
- 'localtime', 'serial', 'macaddr', 'stdvga', 'isa' ]
+ 'localtime', 'serial', 'stdvga', 'isa' ]
ret = []
for a in dmargs:
v = sxp.child_value(self.vm.config, a)
@@ -322,20 +322,25 @@ class VmxImageHandler(ImageHandler):
ret.append("-%s" % a)
ret.append("%s" % v)
- # Handle hd img related options
+ # Handle disk/network related options
devices = sxp.children(self.vm.config, 'device')
for device in devices:
- vbdinfo = sxp.child(device, 'vbd')
- if not vbdinfo:
- raise VmError("vmx: missing vbd configuration")
- uname = sxp.child_value(vbdinfo, 'uname')
- vbddev = sxp.child_value(vbdinfo, 'dev')
- (vbdtype, vbdparam) = string.split(uname, ':', 1)
- vbddev_list = ['hda', 'hdb', 'hdc', 'hdd']
- if vbdtype != 'file' or vbddev not in vbddev_list:
- raise VmError("vmx: for qemu vbd type=file&dev=hda~hdd")
- ret.append("-%s" % vbddev)
- ret.append("%s" % vbdparam)
+ name = sxp.name(sxp.child0(device))
+ if name == 'vbd':
+ vbdinfo = sxp.child(device, 'vbd')
+ uname = sxp.child_value(vbdinfo, 'uname')
+ vbddev = sxp.child_value(vbdinfo, 'dev')
+ (vbdtype, vbdparam) = string.split(uname, ':', 1)
+ vbddev_list = ['hda', 'hdb', 'hdc', 'hdd']
+ if vbddev not in vbddev_list:
+ raise VmError("vmx: for qemu vbd type=file&dev=hda~hdd")
+ ret.append("-%s" % vbddev)
+ ret.append("%s" % vbdparam)
+ if name == 'vif':
+ vifinfo = sxp.child(device, 'vif')
+ mac = sxp.child_value(vifinfo, 'mac')
+ ret.append("-macaddr")
+ ret.append("%s" % mac)
# Handle graphics library related options
vnc = sxp.child_value(self.vm.config, 'vnc')