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