# HG changeset patch
# User Hollis Blanchard <hollisb@xxxxxxxxxx>
# Date 1158780212 18000
# Node ID b46d3d47063ac51343847ec22321276b72a5e591
# Parent f7d90f962967a5a94fce0c04f8fcac449f36344f
[XEND] tweak XendDomainInfo to allow architectures to subclass.
- create findDomainClass(), analogous to findImageHandlerClass() in image.py.
- move initial memory allocation into an allocMem() method (for subclasses to
override).
Signed-off-by: Hollis Blanchard <hollisb@xxxxxxxxxx>
diff -r f7d90f962967 -r b46d3d47063a tools/python/xen/xend/XendDomainInfo.py
--- a/tools/python/xen/xend/XendDomainInfo.py Wed Sep 20 14:20:52 2006 -0500
+++ b/tools/python/xen/xend/XendDomainInfo.py Wed Sep 20 14:23:32 2006 -0500
@@ -35,6 +35,7 @@ from xen.util import asserts
from xen.util import asserts
from xen.util.blkif import blkdev_uname_to_file
from xen.util import security
+import arch
import balloon
import image
import sxp
@@ -189,7 +190,7 @@ def create(config):
log.debug("XendDomainInfo.create(%s)", config)
- vm = XendDomainInfo(parseConfig(config))
+ vm = findDomainClass()(parseConfig(config))
try:
vm.construct()
vm.initDomain()
@@ -239,13 +240,13 @@ def recreate(xeninfo, priv):
'Uuid in store does not match uuid for existing domain %d: '
'%s != %s' % (domid, uuid2_str, xeninfo['uuid']))
- vm = XendDomainInfo(xeninfo, domid, dompath, True, priv)
+ vm = findDomainClass()(xeninfo, domid, dompath, True, priv)
except Exception, exn:
if priv:
log.warn(str(exn))
- vm = XendDomainInfo(xeninfo, domid, dompath, True, priv)
+ vm = findDomainClass()(xeninfo, domid, dompath, True, priv)
vm.recreateDom()
vm.removeVm()
vm.storeVmDetails()
@@ -264,7 +265,7 @@ def restore(config):
log.debug("XendDomainInfo.restore(%s)", config)
- vm = XendDomainInfo(parseConfig(config), None, None, False, False, True)
+ vm = findDomainClass()(parseConfig(config), None, None, False, False, True)
try:
vm.construct()
vm.storeVmDetails()
@@ -1329,8 +1330,7 @@ class XendDomainInfo:
self.info['shadow_memory'] = shadow_cur
# initial memory reservation
- xc.domain_memory_increase_reservation(self.domid, reservation, 0,
- 0)
+ self.allocMem(reservation)
self.createChannels()
@@ -1351,6 +1351,9 @@ class XendDomainInfo:
except RuntimeError, exn:
raise VmError(str(exn))
+
+ def allocMem(self, reservation):
+ xc.domain_memory_increase_reservation(self.domid, reservation, 0, 0)
## public:
@@ -1761,6 +1764,17 @@ class XendDomainInfo:
def infoIsSet(self, name):
return name in self.info and self.info[name] is not None
+domainTypes = {
+ "ia64": XendDomainInfo,
+ "x86": XendDomainInfo,
+}
+
+def findDomainClass():
+ type = arch.type
+ try:
+ return domainTypes[type]
+ except KeyError:
+ raise VmError("Unsupported architecture: " + type)
#============================================================================
# Register device controllers and their device config types.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|