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