diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2009-06-04 10:41:13 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2009-06-04 10:41:13 +0100 |
commit | 7059aee491b106a6ee08d9c10310aaad2093958d (patch) | |
tree | 022a568f6772f3e7908925d76fb8678b1d9ec9a4 | |
parent | a5582cb100e63dd7b175eed0cfa248169bdc532c (diff) | |
download | xen-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.py | 64 |
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, |