47 lines
2.3 KiB
Diff
47 lines
2.3 KiB
Diff
|
# HG changeset patch
|
||
|
# User Ian Jackson <Ian.Jackson@eu.citrix.com>
|
||
|
# Date 1277219220 -3600
|
||
|
# Node ID 9da3abe88c90bd8ec48963a9ec537a8871e266db
|
||
|
# Parent 2ad890d46cb8a11fc6ea329126d398021307e627
|
||
|
Check "mac" address sooner in device_create function, before doing device_add.
|
||
|
|
||
|
In XendDomainInfo.py device_create function, when device type is
|
||
|
"vif", it has a paragraph to check the validity of "mac"
|
||
|
address. Before checking validity, device_add has been done. But after
|
||
|
checking validity, if the mac address is invlid, it raises VmError and
|
||
|
exits directly without doing clean work like removing the device item
|
||
|
from config info. This will cause that the incorrect mac address is
|
||
|
saved into VM Config file and VM fails to restart. If check "mac"
|
||
|
validity before doing device_add, there will be no problem.
|
||
|
|
||
|
Signed-off-by Chunyan Liu <CYLiu@novell.com>
|
||
|
|
||
|
Index: xen-4.0.0-testing/tools/python/xen/xend/XendDomainInfo.py
|
||
|
===================================================================
|
||
|
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py
|
||
|
+++ xen-4.0.0-testing/tools/python/xen/xend/XendDomainInfo.py
|
||
|
@@ -847,11 +847,6 @@ class XendDomainInfo:
|
||
|
@type dev_config: SXP object (parsed config)
|
||
|
"""
|
||
|
log.debug("XendDomainInfo.device_create: %s" % scrub_password(dev_config))
|
||
|
- dev_type = sxp.name(dev_config)
|
||
|
- dev_uuid = self.info.device_add(dev_type, cfg_sxp = dev_config)
|
||
|
- dev_config_dict = self.info['devices'][dev_uuid][1]
|
||
|
- log.debug("XendDomainInfo.device_create: %s" % scrub_password(dev_config_dict))
|
||
|
-
|
||
|
if dev_type == 'vif':
|
||
|
for x in dev_config:
|
||
|
if x != 'vif' and x[0] == 'mac':
|
||
|
@@ -859,6 +854,11 @@ class XendDomainInfo:
|
||
|
log.error("Virtual network interface creation error - invalid MAC Address entered: %s", x[1])
|
||
|
raise VmError("Cannot create a new virtual network interface - MAC address is not valid!");
|
||
|
|
||
|
+ dev_type = sxp.name(dev_config)
|
||
|
+ dev_uuid = self.info.device_add(dev_type, cfg_sxp = dev_config)
|
||
|
+ dev_config_dict = self.info['devices'][dev_uuid][1]
|
||
|
+ log.debug("XendDomainInfo.device_create: %s" % scrub_password(dev_config_dict))
|
||
|
+
|
||
|
if self.domid is not None:
|
||
|
try:
|
||
|
dev_config_dict['devid'] = devid = \
|