Added getVCpuCount to XendDomainInfo and use that and getName, getDomain,

getTargetMemory inside image.py to decouple the latter from the internals of
the former.  Move the definition of xc inside image.py to please pylint.

Signed-off-by: Ewan Mellor<ewan@xensource.com>
This commit is contained in:
emellor@ewan committed 2005-09-17 17:34:58 +01:00
1 parent 60ebaf4dca
commit 0fd36627da
2 files changed
+25 -16

No files matched your search

+3
View File
@@ -334,6 +334,9 @@ class XendDomainInfo:
def getName(self):
return self.name
def getVCpuCount(self):
return self.vcpus
def getSsidref(self):
return self.ssidref
+22 -16
View File
@@ -18,7 +18,7 @@
import os, string
import re
import xen.lowlevel.xc; xc = xen.lowlevel.xc.new()
import xen.lowlevel.xc
from xen.xend import sxp
from xen.xend.XendError import VmError
from xen.xend.XendLogging import log
@@ -27,6 +27,10 @@ from xen.xend.xenstore.xstransact import xstransact
from xen.xend.server import channel
xc = xen.lowlevel.xc.new()
MAX_GUEST_CMDLINE = 1024
class ImageHandler:
@@ -155,7 +159,8 @@ class ImageHandler:
self.unlink(self.kernel)
self.unlink(self.ramdisk)
if dom <= 0:
raise VmError('Creating domain failed: name=%s' % self.vm.name)
raise VmError('Creating domain failed: name=%s' %
self.vm.getName())
log.debug("initDomain: cpu=%d mem_kb=%d ssidref=%d dom=%d", cpu, mem_kb, ssidref, dom)
xc.domain_setcpuweight(dom, cpu_weight)
xc.domain_setmaxmem(dom, mem_kb)
@@ -190,14 +195,15 @@ class ImageHandler:
if self.ramdisk and not os.path.isfile(self.ramdisk):
raise VmError('Kernel ramdisk does not exist: %s' % self.ramdisk)
if len(self.cmdline) >= MAX_GUEST_CMDLINE:
log.warning('kernel cmdline too long, domain %d', self.vm.domid)
log.warning('kernel cmdline too long, domain %d',
self.vm.getDomain())
log.info("buildDomain os=%s dom=%d vcpus=%d", self.ostype,
self.vm.domid, self.vm.vcpus)
self.vm.getDomain(), self.vm.getVCpuCount())
err = self.buildDomain()
if err != 0:
raise VmError('Building domain failed: ostype=%s dom=%d err=%d'
% (self.ostype, self.vm.domid, err))
% (self.ostype, self.vm.getDomain(), err))
def getDomainMemory(self, mem_mb):
"""Memory (in KB) the domain will need for mem_mb (in MB)."""
@@ -237,23 +243,23 @@ class LinuxImageHandler(ImageHandler):
else:
console_evtchn = 0
log.debug("dom = %d", self.vm.domid)
log.debug("dom = %d", self.vm.getDomain())
log.debug("image = %s", self.kernel)
log.debug("store_evtchn = %d", store_evtchn)
log.debug("console_evtchn = %d", console_evtchn)
log.debug("cmdline = %s", self.cmdline)
log.debug("ramdisk = %s", self.ramdisk)
log.debug("flags = %d", self.flags)
log.debug("vcpus = %d", self.vm.vcpus)
log.debug("vcpus = %d", self.vm.getVCpuCount())
ret = xc.linux_build(dom = self.vm.domid,
ret = xc.linux_build(dom = self.vm.getDomain(),
image = self.kernel,
store_evtchn = store_evtchn,
console_evtchn = console_evtchn,
cmdline = self.cmdline,
ramdisk = self.ramdisk,
flags = self.flags,
vcpus = self.vm.vcpus)
vcpus = self.vm.getVCpuCount())
if isinstance(ret, dict):
self.set_vminfo(ret)
return 0
@@ -297,22 +303,22 @@ class VmxImageHandler(ImageHandler):
def buildDomain(self):
# Create an event channel
self.device_channel = channel.eventChannel(0, self.vm.domid)
self.device_channel = channel.eventChannel(0, self.vm.getDomain())
log.info("VMX device model port: %d", self.device_channel.port2)
if self.vm.store_channel:
store_evtchn = self.vm.store_channel.port2
else:
store_evtchn = 0
ret = xc.vmx_build(dom = self.vm.domid,
ret = xc.vmx_build(dom = self.vm.getDomain(),
image = self.kernel,
control_evtchn = self.device_channel.port2,
store_evtchn = store_evtchn,
memsize = self.vm.memory,
memsize = self.vm.getTargetMemory(),
memmap = self.memmap_value,
cmdline = self.cmdline,
ramdisk = self.ramdisk,
flags = self.flags,
vcpus = self.vm.vcpus)
vcpus = self.vm.getVCpuCount())
if isinstance(ret, dict):
self.set_vminfo(ret)
return 0
@@ -391,7 +397,7 @@ class VmxImageHandler(ImageHandler):
elif vnc:
ret = ret + ['-vnc', '-k', 'en-us']
if vnc:
vncport = int(self.vm.domid) + 5900
vncport = int(self.vm.getDomain()) + 5900
ret = ret + ['-vncport', '%d' % vncport]
return ret
@@ -405,9 +411,9 @@ class VmxImageHandler(ImageHandler):
vnc = self.vncParams()
if len(vnc):
args = args + vnc
args = args + ([ "-d", "%d" % self.vm.domid,
args = args + ([ "-d", "%d" % self.vm.getDomain(),
"-p", "%d" % self.device_channel.port1,
"-m", "%s" % self.vm.memory ])
"-m", "%s" % self.vm.getTargetMemory() ])
args = args + self.dmargs
env = dict(os.environ)
env['DISPLAY'] = self.display
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.