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-devel

[Xen-devel] [PATCH 2 of 2] Save elfnotes in VM sxpr under image/notes, a

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH 2 of 2] Save elfnotes in VM sxpr under image/notes, and load them on restore
From: Brendan Cully <brendan@xxxxxxxxx>
Date: Sun, 25 Feb 2007 17:36:08 -0800
Delivery-date: Sun, 25 Feb 2007 17:38:23 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <patchbomb.1172453766@xxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Brendan Cully <brendan@xxxxxxxxx>
# Date 1172453755 28800
# Node ID 0942ae7ee6bd4f071e9a60a1a7aa75a03f9bb9b7
# Parent  ea6d1ab3d87507e414bd226fcbf768bf47cffe48
Save elfnotes in VM sxpr under image/notes, and load them on restore.

Signed-off-by: Brendan Cully <brendan@xxxxxxxxx>

diff -r ea6d1ab3d875 -r 0942ae7ee6bd tools/python/xen/xend/XendConfig.py
--- a/tools/python/xen/xend/XendConfig.py       Sun Feb 25 17:35:55 2007 -0800
+++ b/tools/python/xen/xend/XendConfig.py       Sun Feb 25 17:35:55 2007 -0800
@@ -729,6 +729,10 @@ class XendConfig(dict):
                 image['hvm'] = image_hvm
                 image['hvm']['devices'] = image_hvm_devices
 
+            notes = sxp.children(image_sxp, 'notes')
+            if notes:
+                image['notes'] = self.notes_from_sxp(notes[0])
+
             self['image'] = image
 
             for apikey, imgkey in XENAPI_HVM_CFG.items():
@@ -1363,6 +1367,9 @@ class XendConfig(dict):
                             
                     image.append([arg, val])
 
+        if 'notes' in self['image']:
+            image.append(self.notes_sxp(self['image']['notes']))
+
         return image
 
     def update_with_image_sxp(self, image_sxp, bootloader = False):
@@ -1420,6 +1427,10 @@ class XendConfig(dict):
             image['hvm'] = image_hvm
             image['hvm']['devices'] = image_hvm_devices
 
+        notes = sxp.children(image_sxp, 'notes')
+        if notes:
+            image['notes'] = self.notes_from_sxp(notes[0])
+
         self['image'] = image
 
         for apikey, imgkey in XENAPI_HVM_CFG.items():
@@ -1432,7 +1443,28 @@ class XendConfig(dict):
                     self[apikey] = val
         self._hvm_boot_params_from_sxp(image_sxp)
 
-
+    def set_notes(self, notes):
+        'Add parsed elfnotes to image'
+        self['image']['notes'] = notes
+
+    def get_notes(self):
+        try:
+            return self['image']['notes'] or {}
+        except KeyError:
+            return {}
+
+    def notes_from_sxp(self, nsxp):
+        notes = {}
+        for note in sxp.children(nsxp):
+            notes[note[0]] = note[1]
+        return notes
+
+    def notes_sxp(self, notes):
+        nsxp = ['notes']
+        for k, v in notes.iteritems():
+            nsxp.append([k, str(v)])
+        return nsxp
+        
     def _hvm_boot_params_from_sxp(self, image_sxp):
         boot = sxp.child_value(image_sxp, 'boot', None)
         if boot is not None:
diff -r ea6d1ab3d875 -r 0942ae7ee6bd tools/python/xen/xend/XendDomainInfo.py
--- a/tools/python/xen/xend/XendDomainInfo.py   Sun Feb 25 17:35:55 2007 -0800
+++ b/tools/python/xen/xend/XendDomainInfo.py   Sun Feb 25 17:35:55 2007 -0800
@@ -356,7 +356,6 @@ class XendDomainInfo:
         self.store_mfn = None
         self.console_port = None
         self.console_mfn = None
-        self.notes = {}
 
         self.vmWatch = None
         self.shutdownWatch = None
@@ -790,7 +789,7 @@ class XendDomainInfo:
         f('store/ring-ref',   self.store_mfn)
 
         # elfnotes
-        for n, v in self.notes.iteritems():
+        for n, v in self.info.get_notes().iteritems():
             n = n.lower().replace('_', '-')
             if n == 'features':
                 for v in v.split('|'):
@@ -1482,7 +1481,7 @@ class XendDomainInfo:
             if 'console_mfn' in channel_details:
                 self.console_mfn = channel_details['console_mfn']
             if 'notes' in channel_details:
-                self.notes = channel_details['notes']
+                self.info.set_notes(channel_details['notes'])
 
             self._introduceDomain()
 

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

<Prev in Thread] Current Thread [Next in Thread>