From ea947a648cfeff47ec5ddefe91ce4a3ed80c3167 Mon Sep 17 00:00:00 2001
From: Nikos Skalkotos <skalkoto@grnet.gr>
Date: Wed, 27 Jun 2012 18:03:06 +0300
Subject: [PATCH] Populate image properties with task_metadata
Before extracting an image or registring it with cyclades, the image
properties are populated with metadata concerning excluded deployment
tasks.
---
image_creator/dialog_main.py | 30 ++++++++++++++++++++----------
1 file changed, 20 insertions(+), 10 deletions(-)
diff --git a/image_creator/dialog_main.py b/image_creator/dialog_main.py
index 3994d8f..fa5addc 100644
--- a/image_creator/dialog_main.py
+++ b/image_creator/dialog_main.py
@@ -120,6 +120,15 @@ class metadata_monitor(object):
d.msgbox(msg, title="Image Property Changes", width=MSGBOX_WIDTH)
+def extract_metadata_string(session):
+ metadata = ['%s=%s' % (k, v) for (k, v) in session['metadata'].items()]
+
+ if 'task_metadata' in session:
+ metadata.extend("%s=yes" % m for m in session['task_metadata'])
+
+ return '\n'.join(metadata) + '\n'
+
+
def confirm_exit(d, msg=''):
return not d.yesno("%s Do you want to exit?" % msg, width=YESNO_WIDTH)
@@ -204,11 +213,8 @@ def extract_image(session):
# Extract metadata file
out.output("Extracting metadata file...")
- metastring = '\n'.join(
- ['%s=%s' % (k, v) for (k, v) in session['metadata'].items()])
- metastring += '\n'
with open('%s.meta' % path, 'w') as f:
- f.write(metastring)
+ f.write(extract_metadata_string(session))
out.success('done')
# Extract md5sum file
@@ -271,9 +277,7 @@ def upload_image(session):
"Uploading missing blocks")
# Upload metadata file
out.output("Uploading metadata file...")
- metastring = '\n'.join(
- ['%s=%s' % (k, v) for (k, v) in session['metadata'].items()])
- metastring += '\n'
+ metastring = extract_metadata_string(session)
kamaki.upload(StringIO.StringIO(metastring), size=len(metastring),
remote_path="%s.meta" % filename)
out.success("done")
@@ -332,12 +336,18 @@ def register_image(session):
continue
break
+ metadata = {}
+ metadata.update(session['metadata'])
+ if 'task_metadata' in session:
+ for key in session['task_metadata']:
+ metadata[key] = 'yes'
+
out = GaugeOutput(d, "Image Registration", "Registrating image...")
try:
out.output("Registring image to cyclades...")
try:
kamaki = Kamaki(session['account'], session['token'], out)
- kamaki.register(name, session['upload'], session['metadata'])
+ kamaki.register(name, session['upload'], metadata)
out.success('done')
except ClientError as e:
d.msgbox("Error in pithos+ client: %s" % e.message)
@@ -679,7 +689,7 @@ def shrink(session):
if not d.yesno("%s\n\nDo you want to continue?" % msg, width=70,
height=12, title="Image Shrinking"):
with metadata_monitor(session, dev.meta):
- dev.out = InfoBoxOutput(d, "Image Shrinking", height=3)
+ dev.out = InfoBoxOutput(d, "Image Shrinking", height=4)
dev.shrink()
dev.out.finalize()
@@ -806,13 +816,13 @@ def image_creator(d):
snapshot = disk.snapshot()
dev = disk.get_device(snapshot)
- out.output("Collecting image metadata...")
metadata = {}
for (key, value) in dev.meta.items():
metadata[str(key)] = str(value)
dev.mount(readonly=True)
+ out.output("Collecting image metadata...")
cls = os_cls(dev.distro, dev.ostype)
image_os = cls(dev.root, dev.g, out)
dev.umount()
--
GitLab