Save elfnotes in VM sxpr under image/notes, and load them on restore.

Signed-off-by: Brendan Cully <brendan@cs.ubc.ca>
This commit is contained in:
kfraser@localhost.localdomain committed 2007-02-26 09:59:56 +00:00
1 parent 41881805d1
commit 4a2a7137e6
2 files changed
+34 -3

No files matched your search

+32
View File
@@ -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:
+2 -3
View File
@@ -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()
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.