[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] [XEND] tweak XendDomainInfo to allow architectures to subclass



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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.