Revision 37ee0098
b/image_creator/dialog_wizard.py | ||
---|---|---|
81 | 81 |
raise NotImplementedError |
82 | 82 |
|
83 | 83 |
|
84 |
class WizardRadioListPage(WizardPage): |
|
85 |
|
|
86 |
def __init__(self, name, message, choices, **kargs): |
|
87 |
self.name = name |
|
88 |
self.message = message |
|
89 |
self.choices = choices |
|
90 |
self.title = kargs['title'] if 'title' in kargs else '' |
|
91 |
self.default = kargs['default'] if 'default' in kargs else 0 |
|
92 |
|
|
93 |
def run(self, session, index, total): |
|
94 |
d = session['dialog'] |
|
95 |
w = session['wizard'] |
|
96 |
|
|
97 |
choices = [] |
|
98 |
for i in range(len(self.choices)): |
|
99 |
default = 1 if i == self.default else 0 |
|
100 |
choices.append((self.choices[i][0], self.choices[i][1], default)) |
|
101 |
|
|
102 |
while True: |
|
103 |
(code, answer) = d.radiolist(self.message, width=PAGE_WIDTH, |
|
104 |
ok_label="Next", cancel="Back", choices=choices, |
|
105 |
title="(%d/%d) %s" % (index + 1, total, self.title)) |
|
106 |
|
|
107 |
if code in (d.DIALOG_CANCEL, d.DIALOG_ESC): |
|
108 |
return self.PREV |
|
109 |
|
|
110 |
for i in range(len(choices)): |
|
111 |
if self.choices[i] == answer: |
|
112 |
self.default = i |
|
113 |
w[name] = i |
|
114 |
break |
|
115 |
|
|
116 |
return self.NEXT |
|
117 |
|
|
118 |
|
|
84 | 119 |
class WizardInputPage(WizardPage): |
85 | 120 |
|
86 | 121 |
def __init__(self, name, message, **kargs): |
... | ... | |
171 | 206 |
|
172 | 207 |
|
173 | 208 |
def extract_image(session): |
209 |
d = session['dialog'] |
|
174 | 210 |
disk = session['disk'] |
175 | 211 |
device = session['device'] |
176 | 212 |
snapshot = session['snapshot'] |
... | ... | |
199 | 235 |
|
200 | 236 |
#MD5 |
201 | 237 |
md5 = MD5(out) |
202 |
checksum = md5.compute(snapshot, size)
|
|
238 |
session['checksum'] = md5.compute(snapshot, size)
|
|
203 | 239 |
|
204 | 240 |
#Metadata |
205 | 241 |
metastring = '\n'.join( |
... | ... | |
224 | 260 |
remote_path="%s.%s" % (name, 'meta')) |
225 | 261 |
out.success('done') |
226 | 262 |
out.output("(4/4) Uploading md5sum file...", False) |
227 |
md5sumstr = '%s %s\n' % (checksum, name)
|
|
263 |
md5sumstr = '%s %s\n' % (session['checksum'], name)
|
|
228 | 264 |
kamaki.upload(StringIO.StringIO(md5sumstr), size=len(md5sumstr), |
229 | 265 |
remote_path="%s.%s" % (name, 'md5sum')) |
230 | 266 |
out.success('done') |
... | ... | |
234 | 270 |
kamaki.register(wizard['ImageName'], pithos_file, metadata) |
235 | 271 |
out.success('done') |
236 | 272 |
out.output() |
273 |
|
|
237 | 274 |
except ClientError as e: |
238 | 275 |
raise FatalError("Pithos client: %d %s" % (e.status, e.message)) |
239 | 276 |
|
277 |
msg = "The image was successfully uploaded and registered to " \ |
|
278 |
"~okeanos. Would you like to keep a local copy of the image?" |
|
279 |
if not d.yesno(msg, width=PAGE_WIDTH): |
|
280 |
getattr(__import__("image_creator.dialog_main", |
|
281 |
fromlist=['image_creator']), "extract_image")(session) |
|
282 |
|
|
283 |
|
|
240 | 284 |
# vim: set sta sts=4 shiftwidth=4 sw=4 et ai : |
Also available in: Unified diff