diff options
author | Ewan Mellor <ewan@xensource.com> | 2006-12-15 11:50:04 +0000 |
---|---|---|
committer | Ewan Mellor <ewan@xensource.com> | 2006-12-15 11:50:04 +0000 |
commit | 1c67fc6446a712cc0a1a50e54ec11496f576b93c (patch) | |
tree | 54b934ea827c7c5ddd4230bccc107308d9009651 | |
parent | 14a3d5c056cf1f5f8824c3043a4023304a1042c7 (diff) | |
download | xen-1c67fc6446a712cc0a1a50e54ec11496f576b93c.tar.gz xen-1c67fc6446a712cc0a1a50e54ec11496f576b93c.tar.bz2 xen-1c67fc6446a712cc0a1a50e54ec11496f576b93c.zip |
Fix mem-set, mem-max, and vcpu-set commands when used against inactive domains.
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
-rw-r--r-- | tools/python/xen/xend/XendDomain.py | 6 | ||||
-rw-r--r-- | tools/python/xen/xend/XendDomainInfo.py | 55 | ||||
-rw-r--r-- | tools/python/xen/xend/server/SrvDomain.py | 9 |
3 files changed, 47 insertions, 23 deletions
diff --git a/tools/python/xen/xend/XendDomain.py b/tools/python/xen/xend/XendDomain.py index c263d37be2..4649525198 100644 --- a/tools/python/xen/xend/XendDomain.py +++ b/tools/python/xen/xend/XendDomain.py @@ -1339,11 +1339,7 @@ class XendDomain: dominfo = self.domain_lookup_nr(domid) if not dominfo: raise XendInvalidDomain(str(domid)) - maxmem = int(mem) * 1024 - try: - return xc.domain_setmaxmem(dominfo.getDomid(), maxmem) - except Exception, ex: - raise XendError(str(ex)) + dominfo.setMemoryMaximum(mem) def domain_ioport_range_enable(self, domid, first, last): """Enable access to a range of IO ports for a domain diff --git a/tools/python/xen/xend/XendDomainInfo.py b/tools/python/xen/xend/XendDomainInfo.py index de405c9a94..8b90814db2 100644 --- a/tools/python/xen/xend/XendDomainInfo.py +++ b/tools/python/xen/xend/XendDomainInfo.py @@ -551,8 +551,34 @@ class XendDomainInfo: raise XendError('Invalid memory size') self.info['memory_static_min'] = target - self.storeVm("memory", target) - self.storeDom("memory/target", target << 10) + if self.domid >= 0: + self.storeVm("memory", target) + self.storeDom("memory/target", target << 10) + else: + self.info['memory_dynamic_min'] = target + xen.xend.XendDomain.instance().managed_config_save(self) + + def setMemoryMaximum(self, limit): + """Set the maximum memory limit of this domain + @param limit: In MiB. + """ + log.debug("Setting memory maximum of domain %s (%d) to %d MiB.", + self.info['name_label'], self.domid, limit) + + if limit <= 0: + raise XendError('Invalid memory size') + + self.info['memory_static_max'] = limit + if self.domid >= 0: + maxmem = int(limit) * 1024 + try: + return xc.domain_setmaxmem(self.domid, maxmem) + except Exception, ex: + raise XendError(str(ex)) + else: + self.info['memory_dynamic_max'] = limit + xen.xend.XendDomain.instance().managed_config_save(self) + def getVCPUInfo(self): try: @@ -831,18 +857,23 @@ class XendDomainInfo: def setVCpuCount(self, vcpus): self.info['vcpu_avail'] = (1 << vcpus) - 1 - self.storeVm('vcpu_avail', self.info['vcpu_avail']) - # update dom differently depending on whether we are adjusting - # vcpu number up or down, otherwise _vcpuDomDetails does not - # disable the vcpus - if self.info['vcpus_number'] > vcpus: - # decreasing - self._writeDom(self._vcpuDomDetails()) - self.info['vcpus_number'] = vcpus + if self.domid >= 0: + self.storeVm('vcpu_avail', self.info['vcpu_avail']) + # update dom differently depending on whether we are adjusting + # vcpu number up or down, otherwise _vcpuDomDetails does not + # disable the vcpus + if self.info['vcpus_number'] > vcpus: + # decreasing + self._writeDom(self._vcpuDomDetails()) + self.info['vcpus_number'] = vcpus + else: + # same or increasing + self.info['vcpus_number'] = vcpus + self._writeDom(self._vcpuDomDetails()) else: - # same or increasing self.info['vcpus_number'] = vcpus - self._writeDom(self._vcpuDomDetails()) + self.info['online_vcpus'] = vcpus + xen.xend.XendDomain.instance().managed_config_save(self) def getLabel(self): return security.get_security_info(self.info, 'label') diff --git a/tools/python/xen/xend/server/SrvDomain.py b/tools/python/xen/xend/server/SrvDomain.py index 00c18c9386..559066bd5c 100644 --- a/tools/python/xen/xend/server/SrvDomain.py +++ b/tools/python/xen/xend/server/SrvDomain.py @@ -160,12 +160,9 @@ class SrvDomain(SrvDir): return val def op_maxmem_set(self, _, req): - fn = FormFn(self.xd.domain_maxmem_set, - [['dom', 'int'], - ['memory', 'int']]) - val = fn(req.args, {'dom': self.dom.domid}) - return val - + return self.call(self.dom.setMemoryMaximum, + [['memory', 'int']], + req) def call(self, fn, args, req): return FormFn(fn, args)(req.args) |