aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2009-06-04 10:41:13 +0100
committerKeir Fraser <keir.fraser@citrix.com>2009-06-04 10:41:13 +0100
commit7059aee491b106a6ee08d9c10310aaad2093958d (patch)
tree022a568f6772f3e7908925d76fb8678b1d9ec9a4
parenta5582cb100e63dd7b175eed0cfa248169bdc532c (diff)
downloadxen-7059aee491b106a6ee08d9c10310aaad2093958d.tar.gz
xen-7059aee491b106a6ee08d9c10310aaad2093958d.tar.bz2
xen-7059aee491b106a6ee08d9c10310aaad2093958d.zip
xend: xen-api, pass-through: Add create_dpci_from_sxp()
Move some duplicated code into create_dpci_from_sxp() Signed-off-by: Simon Horman <horms@verge.net.au>
-rw-r--r--tools/python/xen/xend/XendConfig.py64
1 files changed, 25 insertions, 39 deletions
diff --git a/tools/python/xen/xend/XendConfig.py b/tools/python/xen/xend/XendConfig.py
index 51cecaf4b8..bc072720ee 100644
--- a/tools/python/xen/xend/XendConfig.py
+++ b/tools/python/xen/xend/XendConfig.py
@@ -1221,7 +1221,29 @@ class XendConfig(dict):
raise XendConfigError('The mac "%s" is already defined' %
dev_mac)
return None
-
+
+ def create_dpci_from_sxp(self, pci_devs):
+ for pci_dev in pci_devs:
+ dpci_uuid = pci_dev.get('uuid')
+ log.debug("create_dpci_from_sxp: %s" % pci_dev)
+ ppci_uuid = XendPPCI.get_by_sbdf(pci_dev['domain'],
+ pci_dev['bus'],
+ pci_dev['slot'],
+ pci_dev['func'])
+ if ppci_uuid is None:
+ continue
+ dpci_record = {
+ 'VM': self['uuid'],
+ 'PPCI': ppci_uuid,
+ 'hotplug_slot': pci_dev.get('vslot', 0)
+ }
+
+ dpci_opts = pci_dev.get('opts')
+ if dpci_opts and len(dpci_opts) > 0:
+ dpci_record['options'] = dpci_opts
+
+ XendDPCI(dpci_uuid, dpci_record)
+
def device_add(self, dev_type, cfg_sxp = None, cfg_xenapi = None,
target = None):
"""Add a device configuration in SXP format or XenAPI struct format.
@@ -1276,25 +1298,7 @@ class XendConfig(dict):
pci_devs = pci_dict['devs']
# create XenAPI DPCI objects.
- for pci_dev in pci_devs:
- dpci_uuid = pci_dev.get('uuid')
- ppci_uuid = XendPPCI.get_by_sbdf(pci_dev['domain'],
- pci_dev['bus'],
- pci_dev['slot'],
- pci_dev['func'])
- if ppci_uuid is None:
- continue
- dpci_record = {
- 'VM': self['uuid'],
- 'PPCI': ppci_uuid,
- 'hotplug_slot': pci_dev.get('vslot', 0)
- }
-
- dpci_opts = pci_dev.get('opts')
- if dpci_opts and len(dpci_opts) > 0:
- dpci_record['options'] = dpci_opts
-
- XendDPCI(dpci_uuid, dpci_record)
+ self.create_dpci_from_sxp(pci_devs)
target['devices'][pci_devs_uuid] = (dev_type,
{'devs': pci_devs,
@@ -1846,25 +1850,7 @@ class XendConfig(dict):
XendAPIStore.deregister(dpci_uuid, "DPCI")
# create XenAPI DPCI objects.
- for pci_dev in pci_devs:
- dpci_uuid = pci_dev.get('uuid')
- ppci_uuid = XendPPCI.get_by_sbdf(pci_dev['domain'],
- pci_dev['bus'],
- pci_dev['slot'],
- pci_dev['func'])
- if ppci_uuid is None:
- continue
- dpci_record = {
- 'VM': self['uuid'],
- 'PPCI': ppci_uuid,
- 'hotplug_slot': pci_dev.get('vslot', 0)
- }
-
- dpci_opts = pci_dev.get('opts')
- if dpci_opts and len(dpci_opts) > 0:
- dpci_record['options'] = dpci_opts
-
- XendDPCI(dpci_uuid, dpci_record)
+ self.create_dpci_from_sxp(pci_devs)
self['devices'][dev_uuid] = (dev_type,
{'devs': pci_devs,