Hi, thanks for checking in the earlier patch, Alistair. Do you have any
comments on this one?
It looks like the "import arch" statement isn't needed, at least, since
there's a (stranger) import statement for it later.
--
Hollis Blanchard
IBM Linux Technology Center
On Wed, 2006-09-20 at 14:23 -0500, Hollis Blanchard wrote:
> # 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)..hg/patches/xenddomaininfo-refactor
>
> 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
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|