[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 2 of 2] Save elfnotes in VM sxpr under image/notes, and load them on restore
# 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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |