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>
This commit is contained in:
Keir Fraser committed 2009-06-04 10:41:13 +01:00
1 parent a5582cb100
commit 7059aee491
1 file changed
+25 -39
+25 -39
View File
@@ -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,
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.