# HG changeset patch
# User Alastair Tse <atse@xxxxxxxxxxxxx>
# Date 1167924746 0
# Node ID 48c9028e6f8e348eea7635b2bc43a809d5d3fa64
# Parent b82e1ed0870a9a3627e910686dc34d78185d584e
[XEND] Parse as much device SXP as possible.
Fix vtpm device check and xm list --long listing detached block devices.
Signed-off-by: Alastair Tse <atse@xxxxxxxxxxxxx>
---
tools/python/xen/xend/XendConfig.py | 36 +++++++++++++++++++++---------------
1 files changed, 21 insertions(+), 15 deletions(-)
diff -r b82e1ed0870a -r 48c9028e6f8e tools/python/xen/xend/XendConfig.py
--- a/tools/python/xen/xend/XendConfig.py Thu Jan 04 15:08:40 2007 +0000
+++ b/tools/python/xen/xend/XendConfig.py Thu Jan 04 15:32:26 2007 +0000
@@ -508,8 +508,12 @@ class XendConfig(dict):
pci_devs = []
for pci_dev in sxp.children(config, 'dev'):
pci_dev_info = {}
- for opt, val in pci_dev[1:]:
- pci_dev_info[opt] = val
+ for opt_val in pci_dev[1:]:
+ try:
+ opt, val = opt_val
+ pci_dev_info[opt] = val
+ except TypeError:
+ pass
pci_devs.append(pci_dev_info)
cfg['devices'][pci_devs_uuid] = (dev_type,
@@ -572,7 +576,6 @@ class XendConfig(dict):
if 'security' in cfg and isinstance(cfg['security'], str):
cfg['security'] = sxp.from_string(cfg['security'])
- # TODO: get states
old_state = sxp.child_value(sxp_cfg, 'state')
if old_state:
for i in range(len(CONFIG_OLD_DOM_STATES)):
@@ -855,14 +858,15 @@ class XendConfig(dict):
for cls in XendDevices.valid_devices():
found = False
- # figure if there is a device that is running
+ # figure if there is a dev controller is valid and running
if domain:
try:
controller = domain.getDeviceController(cls)
configs = controller.configurations()
for config in configs:
sxpr.append(['device', config])
- found = True
+
+ found = True
except:
log.exception("dumping sxp from device controllers")
pass
@@ -923,11 +927,12 @@ class XendConfig(dict):
dev_type = sxp.name(config)
dev_info = {}
- try:
- for opt, val in config[1:]:
+ for opt_val in config[1:]:
+ try:
+ opt, val = opt_val
dev_info[opt] = val
- except ValueError:
- pass # SXP has no options for this device
+ except (TypeError, ValueError): # unpack error
+ pass
if dev_type == 'vbd':
if dev_info.get('dev', '').startswith('ioemu:'):
@@ -996,7 +1001,7 @@ class XendConfig(dict):
self['vbd_refs'].append(dev_uuid)
return dev_uuid
- elif dev_type in ('vtpm'):
+ elif dev_type == 'vtpm':
if cfg_xenapi.get('type'):
dev_info['type'] = cfg_xenapi.get('type')
@@ -1019,11 +1024,12 @@ class XendConfig(dict):
dev_type = sxp.name(config)
dev_info = {}
- try:
- for opt, val in config[1:]:
- self['devices'][opt] = val
- except ValueError:
- pass # SXP has no options for this device
+ for opt_val in config[1:]:
+ try:
+ opt, val = opt_val
+ self['devices'][dev_uuid][opt] = val
+ except (TypeError, ValueError):
+ pass # no value for this config option
return True
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|