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>
This commit is contained in:
kaf24@firebug.cl.cam.ac.uk committed 2005-08-11 20:58:08 +00:00
1 parent 2521f14bda
commit ab6d52907c
2 files changed
+18 -18

No files matched your search

+18 -13
View File
@@ -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')
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.