WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] Move initDomain out of image.py and into XendDomainInfo.

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] Move initDomain out of image.py and into XendDomainInfo. The only thing that
From: Xen patchbot -unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 22 Sep 2005 17:00:11 +0000
Delivery-date: Thu, 22 Sep 2005 16:58:45 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User emellor@ewan
# Node ID f5e33f4d0238cfee9e0b759fe959706b21f179d1
# Parent  4be4126911dcddc8efab7e8076ca4cca95d4f169
Move initDomain out of image.py and into XendDomainInfo.  The only thing that
needed any of the state of image.py was the bootloader code, which says there,
but all the rest was doing something that belonged more properly in
XendDomainInfo, with all the other generic domain initialisation code.

Signed-off-by: Ewan Mellor <ewan@xxxxxxxxxxxxx>

diff -r 4be4126911dc -r f5e33f4d0238 tools/python/xen/xend/XendDomainInfo.py
--- a/tools/python/xen/xend/XendDomainInfo.py   Thu Sep 22 16:50:29 2005
+++ b/tools/python/xen/xend/XendDomainInfo.py   Thu Sep 22 16:52:07 2005
@@ -706,32 +706,14 @@
         """
         # todo - add support for scheduling params?
         try:
-            # Initial domain create.
             if 'image' not in self.info:
                 raise VmError('Missing image in configuration')
 
-            self.image = ImageHandler.create(self, self.info['image'],
+            self.image = ImageHandler.create(self,
+                                             self.info['image'],
                                              self.info['device'])
 
-            log.debug('XendDomainInfo.construct: '
-                      'calling initDomain(%s %s %s %s %s)',
-                      str(self.domid),
-                      str(self.info['memory_KiB']),
-                      str(self.info['ssidref']),
-                      str(self.info['cpu']),
-                      str(self.info['cpu_weight']))
-
-            self.setDomid(self.image.initDomain(self.domid,
-                                                self.info['memory_KiB'],
-                                                self.info['ssidref'],
-                                                self.info['cpu'],
-                                                self.info['cpu_weight'],
-                                                self.info['bootloader']))
-            
-            self.info['start_time'] = time.time()
-
-            log.debug('init_domain> Created domain=%d name=%s memory=%d',
-                      self.domid, self.info['name'], self.info['memory_KiB'])
+            self.initDomain()
 
             # Create domain devices.
             self.construct_image()
@@ -744,6 +726,38 @@
             traceback.print_exc()
             self.destroy()
             raise
+
+
+    def initDomain(self):
+        log.debug('XendDomainInfo.initDomain: %s %s %s %s)',
+                  str(self.domid),
+                  str(self.info['memory_KiB']),
+                  str(self.info['ssidref']),
+                  str(self.info['cpu_weight']))
+
+        self.domid = xc.domain_create(dom = self.domid or 0,
+                                      ssidref = self.info['ssidref'])
+        if self.domid <= 0:
+            raise VmError('Creating domain failed: name=%s' %
+                          self.vm.getName())
+
+        if self.info['bootloader']:
+            self.image.handleBootloading()
+
+        xc.domain_setcpuweight(self.domid, self.info['cpu_weight'])
+        m = self.image.getDomainMemory(self.info['memory_KiB'])
+        xc.domain_setmaxmem(self.domid, m)
+        xc.domain_memory_increase_reservation(self.domid, m, 0, 0)
+
+        cpu = self.info['cpu']
+        if cpu is not None and cpu != -1:
+            xc.domain_pincpu(self.domid, 0, 1 << cpu)
+
+        self.info['start_time'] = time.time()
+
+        log.debug('init_domain> Created domain=%d name=%s memory=%d',
+                  self.domid, self.info['name'], self.info['memory_KiB'])
+
 
     def configure_vcpus(self, vcpus):
         d = {}
diff -r 4be4126911dc -r f5e33f4d0238 tools/python/xen/xend/image.py
--- a/tools/python/xen/xend/image.py    Thu Sep 22 16:50:29 2005
+++ b/tools/python/xen/xend/image.py    Thu Sep 22 16:52:07 2005
@@ -36,9 +36,6 @@
 class ImageHandler:
     """Abstract base class for image handlers.
 
-    initDomain() is called to initialise the domain memory and parse
-    the configuration.
-    
     createImage() is called to configure and build the domain from its
     kernel image and ramdisk etc.
 
@@ -132,6 +129,12 @@
                         ("image/cmdline", self.cmdline),
                         ("image/ramdisk", self.ramdisk))
 
+
+    def handleBootloading():
+        self.unlink(self.kernel)
+        self.unlink(self.ramdisk)
+
+
     def unlink(self, f):
         if not f: return
         try:
@@ -139,37 +142,6 @@
         except OSError, ex:
             log.warning("error removing bootloader file '%s': %s", f, ex)
 
-    def initDomain(self, dom, memory, ssidref, cpu, cpu_weight, bootloading):
-        """Initial domain create.
-
-        @param memory In KiB
-        @return domain id
-        """
-
-        mem_kb = self.getDomainMemory(memory)
-        dom = xc.domain_create(dom = dom or 0, ssidref = ssidref)
-        # if bootloader, unlink here. But should go after buildDomain() ?
-        if bootloading:
-            self.unlink(self.kernel)
-            self.unlink(self.ramdisk)
-        if dom <= 0:
-            raise VmError('Creating domain failed: name=%s' %
-                          self.vm.getName())
-        if cpu is None:
-            cpu = -1;
-        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)
-
-        try:
-            xc.domain_memory_increase_reservation(dom, mem_kb, 0, 0)
-        except:
-            xc.domain_destroy(dom)
-            raise
-
-        if cpu != -1:
-            xc.domain_pincpu(dom, 0, 1<<int(cpu))
-        return dom
 
     def createImage(self):
         """Entry point to create domain memory image.

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] Move initDomain out of image.py and into XendDomainInfo. The only thing that, Xen patchbot -unstable <=