Dube, Lutz
2009-Oct-21 07:29 UTC
[Xen-devel] xend: bootable flag of VBD not always of type int
xend: bootable flag of VBD not always of type int
1. Calling VDB.set_bootable(True) results in string ''True'' in
managed config file.
After xend restart, conversion int(bootable) in server/blkif.py fails.
2. selection of bootable disks in XendDomainInfo.py requires type(bootable) ==
int not str,
otherwise all disks are taken as bootable.
This patch converts the bootable flag always to int.
Signed-off-by: Lutz.Dube@ts.fujitsu.com
diff -r d7d7f978d704 -r ca56a7da0248 tools/python/xen/xend/XendAPI.py
--- a/tools/python/xen/xend/XendAPI.py Tue Oct 20 14:36:01 2009 +0100
+++ b/tools/python/xen/xend/XendAPI.py Wed Oct 21 09:11:03 2009 +0200
@@ -2091,7 +2091,7 @@ class XendAPI(object):
bootable = bool(bootable)
xd = XendDomain.instance()
vm = xd.get_vm_with_dev_uuid(''vbd'', vbd_ref)
- vm.set_dev_property(''vbd'', vbd_ref,
''bootable'', bootable)
+ vm.set_dev_property(''vbd'', vbd_ref,
''bootable'', int(bootable))
xd.managed_config_save(vm)
return xen_api_success_void()
diff -r d7d7f978d704 -r ca56a7da0248 tools/python/xen/xend/XendConfig.py
--- a/tools/python/xen/xend/XendConfig.py Tue Oct 20 14:36:01 2009 +0100
+++ b/tools/python/xen/xend/XendConfig.py Wed Oct 21 09:11:03 2009 +0200
@@ -1429,9 +1429,14 @@ class XendConfig(dict):
if param not in target:
target[param] = []
if dev_uuid not in target[param]:
- if dev_type == ''vbd'' and
''bootable'' not in dev_info:
- # Compat hack -- mark first disk bootable
- dev_info[''bootable''] = int(not
target[param])
+ if dev_type == ''vbd'':
+ if ''bootable'' not in dev_info:
+ # Compat hack -- mark first disk bootable
+ dev_info[''bootable''] = int(not
target[param])
+ else:
+ # ensure type of bootable is int (on xend restart
+ # it''s of type str)
+ dev_info[''bootable''] =
int(dev_info[''bootable''])
target[param].append(dev_uuid)
elif dev_type == ''tap'' or dev_type ==
''tap2'':
if ''vbd_refs'' not in target:
@@ -1440,6 +1445,10 @@ class XendConfig(dict):
if ''bootable'' not in dev_info:
# Compat hack -- mark first disk bootable
dev_info[''bootable''] = int(not
target[''vbd_refs''])
+ else:
+ # ensure type of bootable is int (on xend restart
it''s
+ # of type str)
+ dev_info[''bootable''] =
int(dev_info[''bootable''])
target[''vbd_refs''].append(dev_uuid)
elif dev_type == ''vfb'':
---
Kind regards
Lutz Dube
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel