[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] Persist all the Xen-API data values for VMs.
# HG changeset patch # User Ewan Mellor <ewan@xxxxxxxxxxxxx> # Date 1166273363 0 # Node ID 63e72c3254da9023ad496276ff8547c2dd74db19 # Parent 7cf33c0856d40596e880391701ddc304ced8b351 Persist all the Xen-API data values for VMs. Signed-off-by: Ewan Mellor <ewan@xxxxxxxxxxxxx> --- tools/python/xen/xend/XendAPI.py | 5 +++- tools/python/xen/xend/XendConfig.py | 35 ++++++++++++++++++++++---------- tools/python/xen/xend/XendDomain.py | 3 +- tools/python/xen/xend/XendDomainInfo.py | 5 ++-- 4 files changed, 34 insertions(+), 14 deletions(-) diff -r 7cf33c0856d4 -r 63e72c3254da tools/python/xen/xend/XendAPI.py --- a/tools/python/xen/xend/XendAPI.py Fri Dec 15 17:19:00 2006 +0000 +++ b/tools/python/xen/xend/XendAPI.py Sat Dec 16 12:49:23 2006 +0000 @@ -663,7 +663,10 @@ class XendAPI: XendDomain.instance().get_vm_by_uuid(vm_ref).info[name]) def VM_set(self, name, session, vm_ref, value): - XendDomain.instance().get_vm_by_uuid(vm_ref).info[name] = value + xd = XendDomain.instance() + dominfo = xd.get_vm_by_uuid(vm_ref) + dominfo.info[name] = value + xd.managed_config_save(dominfo) return xen_api_success_void() # attributes (ro) diff -r 7cf33c0856d4 -r 63e72c3254da tools/python/xen/xend/XendConfig.py --- a/tools/python/xen/xend/XendConfig.py Fri Dec 15 17:19:00 2006 +0000 +++ b/tools/python/xen/xend/XendConfig.py Sat Dec 16 12:49:23 2006 +0000 @@ -430,8 +430,12 @@ class XendConfig(dict): """ cfg = {} - # First step is to convert deprecated options to - # current equivalents. + for key, typ in XENAPI_CFG_TYPES.items(): + val = sxp.child_value(sxp_cfg, key) + if val is not None: + cfg[key] = typ(val) + + # Convert deprecated options to current equivalents. restart = sxp.child_value(sxp_cfg, 'restart') if restart: @@ -576,6 +580,11 @@ class XendConfig(dict): """ cfg = self._parse_sxp(sxp_cfg) + for key, typ in XENAPI_CFG_TYPES.items(): + val = cfg.get(key) + if val is not None: + self[key] = typ(val) + # Convert parameters that can be directly mapped from # the Legacy Config to Xen API Config @@ -590,9 +599,13 @@ class XendConfig(dict): except KeyError: pass - self['PV_bootloader'] = cfg.get('bootloader', '') - self['PV_bootloader_args'] = cfg.get('bootloader_args', '') - + def update_with(n, o): + if not self.get(n): + self[n] = cfg.get(o, '') + + update_with('PV_bootloader', 'bootloader') + update_with('PV_bootloader_args', 'bootloader_args') + image_sxp = sxp.child_value(sxp_cfg, 'image', []) if image_sxp: self.update_with_image_sxp(image_sxp) @@ -760,11 +773,8 @@ class XendConfig(dict): self.validate() - def to_xml(self): - """Return an XML string representing the configuration.""" - pass - - def to_sxp(self, domain = None, ignore_devices = False, ignore = []): + def to_sxp(self, domain = None, ignore_devices = False, ignore = [], + legacy_only = True): """ Get SXP representation of this config object. Incompat: removed store_mfn, console_mfn @@ -784,6 +794,11 @@ class XendConfig(dict): if domain.getDomid() is not None: sxpr.append(['domid', domain.getDomid()]) + + if not legacy_only: + for name in XENAPI_CFG_TYPES.keys(): + if name in self and self[name] not in (None, []): + sxpr.append([name, str(self[name])]) for xenapi, legacy in XENAPI_CFG_TO_LEGACY_CFG.items(): if self.has_key(xenapi) and self[xenapi] not in (None, []): diff -r 7cf33c0856d4 -r 63e72c3254da tools/python/xen/xend/XendDomain.py --- a/tools/python/xen/xend/XendDomain.py Fri Dec 15 17:19:00 2006 +0000 +++ b/tools/python/xen/xend/XendDomain.py Sat Dec 16 12:49:23 2006 +0000 @@ -284,7 +284,8 @@ class XendDomain: fd, fn = tempfile.mkstemp() f = os.fdopen(fd, 'w+b') try: - prettyprint(dominfo.sxpr(), f, width = 78) + prettyprint(dominfo.sxpr(legacy_only = False), f, + width = 78) finally: f.close() try: diff -r 7cf33c0856d4 -r 63e72c3254da tools/python/xen/xend/XendDomainInfo.py --- a/tools/python/xen/xend/XendDomainInfo.py Fri Dec 15 17:19:00 2006 +0000 +++ b/tools/python/xen/xend/XendDomainInfo.py Sat Dec 16 12:49:23 2006 +0000 @@ -1800,9 +1800,10 @@ class XendDomainInfo: log.trace("XendDomainInfo.update done on domain %s: %s", str(self.domid), self.info) - def sxpr(self, ignore_store = False): + def sxpr(self, ignore_store = False, legacy_only = True): result = self.info.to_sxp(domain = self, - ignore_devices = ignore_store) + ignore_devices = ignore_store, + legacy_only = legacy_only) if not ignore_store and self.dompath: vnc_port = self.readDom('console/vnc-port') _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |