Arun Sharma
2005-Aug-11 19:24 UTC
[Xen-devel] [PATCH][VT][1/15] Fix config file parsing for VMX domains.
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> diff -r 38c7c25b3cb9 -r 6a87d79f9ee0 tools/examples/xmexample.vmx --- a/tools/examples/xmexample.vmx Tue Aug 9 13:53:15 2005 +++ b/tools/examples/xmexample.vmx Tue Aug 9 19:06:44 2005 @@ -132,8 +132,3 @@ #----------------------------------------------------------------------------- # start in full screen #full-screen=1 - -#----------------------------------------------------------------------------- -# set the mac address of the first interface -#macaddr= - diff -r 38c7c25b3cb9 -r 6a87d79f9ee0 tools/python/xen/xend/image.py --- a/tools/python/xen/xend/image.py Tue Aug 9 13:53:15 2005 +++ b/tools/python/xen/xend/image.py Tue Aug 9 19:06:44 2005 @@ -295,7 +295,7 @@ # 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) @@ -312,20 +312,25 @@ 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'') _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel