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
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):
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:
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']