# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1256113390 -3600
# Node ID 3bbe9ab2202bb6589e6512c86e06e94d24772281
# Parent 87bc0d49137bb1d66758766b39dbaf558aabd043
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 <Lutz.Dube@xxxxxxxxxxxxxx>
---
tools/python/xen/xend/XendAPI.py | 2 +-
tools/python/xen/xend/XendConfig.py | 15 ++++++++++++---
2 files changed, 13 insertions(+), 4 deletions(-)
diff -r 87bc0d49137b -r 3bbe9ab2202b tools/python/xen/xend/XendAPI.py
--- a/tools/python/xen/xend/XendAPI.py Wed Oct 21 09:21:01 2009 +0100
+++ b/tools/python/xen/xend/XendAPI.py Wed Oct 21 09:23:10 2009 +0100
@@ -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 87bc0d49137b -r 3bbe9ab2202b tools/python/xen/xend/XendConfig.py
--- a/tools/python/xen/xend/XendConfig.py Wed Oct 21 09:21:01 2009 +0100
+++ b/tools/python/xen/xend/XendConfig.py Wed Oct 21 09:23:10 2009 +0100
@@ -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':
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|