Update version.py and ChangeLog for 0.6.1
[snf-image-creator] / image_creator / dialog_util.py
index fee232a..af5e425 100644 (file)
@@ -39,6 +39,7 @@ snf-image-creator.
 
 import os
 import re
+import json
 from image_creator.output.dialog import GaugeOutput
 from image_creator.util import MD5
 from image_creator.kamaki_wrapper import Kamaki
@@ -84,12 +85,14 @@ class Reset(Exception):
 
 def extract_metadata_string(session):
     """Convert image metadata to text"""
-    metadata = ['%s=%s' % (k, v) for (k, v) in session['metadata'].items()]
-
+    metadata = {}
+    metadata.update(session['metadata'])
     if 'task_metadata' in session:
-        metadata.extend("%s=yes" % m for m in session['task_metadata'])
+        for key in session['task_metadata']:
+            metadata[key] = 'yes'
 
-    return '\n'.join(metadata) + '\n'
+    return unicode(json.dumps({'properties': metadata,
+                               'disk-format': 'diskdump'}, ensure_ascii=False))
 
 
 def extract_image(session):
@@ -177,10 +180,10 @@ def extract_image(session):
 def _check_cloud(session, name, description, url, token):
     """Checks if the provided info for a cloud are valid"""
     d = session['dialog']
-    regexp = re.compile('^[a-zA-Z0-9_]+$')
+    regexp = re.compile('^[~@#$:\-\w]+$')
 
     if not re.match(regexp, name):
-        d.msgbox("Allowed characters for name: [a-zA-Z0-9_]", width=WIDTH)
+        d.msgbox("Allowed characters for name: a-zA-Z0-9_~@#$:-", width=WIDTH)
         return False
 
     if len(url) == 0:
@@ -249,12 +252,10 @@ def edit_cloud(session, name):
     info = Kamaki.get_cloud_by_name(name)
 
     assert info, "Cloud: `%s' does not exist" % name
-    assert 'url' in info, "Cloud: `%s' does not have a url attr" % name
-    assert 'token' in info, "Cloud: `%s' does not have a token attr" % name
 
     description = info['description'] if 'description' in info else ""
-    url = info['url']
-    token = info['token']
+    url = info['url'] if 'url' in info else ""
+    token = info['token'] if 'token' in info else ""
 
     d = session['dialog']