X-Git-Url: https://code.grnet.gr/git/snf-image-creator/blobdiff_plain/5a0399d8d1e66b8e6ba2f8b510859c88acbd648f..aeb95900f10211f2d3c8ffead154a44121a2d5b5:/image_creator/dialog_main.py diff --git a/image_creator/dialog_main.py b/image_creator/dialog_main.py index 48401a4..3082a1c 100644 --- a/image_creator/dialog_main.py +++ b/image_creator/dialog_main.py @@ -48,6 +48,7 @@ from image_creator.disk import Disk from image_creator.os_type import os_cls from image_creator.kamaki_wrapper import Kamaki, ClientError from image_creator.help import get_help_file +from image_creator.dialog_wizard import wizard MSGBOX_WIDTH = 60 YESNO_WIDTH = 50 @@ -145,7 +146,7 @@ def update_background_title(session): MB = 2 ** 20 - size = (dev.meta['SIZE'] + MB - 1) // MB + size = (dev.size + MB - 1) // MB shrinked = 'shrinked' in session and session['shrinked'] postfix = " (shrinked)" if shrinked else '' @@ -204,7 +205,7 @@ def extract_image(session): try: dev = session['device'] if "checksum" not in session: - size = dev.meta['SIZE'] + size = dev.size md5 = MD5(out) session['checksum'] = md5.compute(session['snapshot'], size) @@ -236,7 +237,7 @@ def extract_image(session): def upload_image(session): d = session["dialog"] - size = session['device'].meta['SIZE'] + size = session['device'].size if "account" not in session: d.msgbox("You need to provide your ~okeanos login username before you " @@ -265,10 +266,10 @@ def upload_image(session): break out = GaugeOutput(d, "Image Upload", "Uploading...") - if 'checksum' not in session: - md5 = MD5(out) - session['checksum'] = md5.compute(session['snapshot'], size) try: + if 'checksum' not in session: + md5 = MD5(out) + session['checksum'] = md5.compute(session['snapshot'], size) kamaki = Kamaki(session['account'], session['token'], out) try: # Upload image file @@ -364,6 +365,15 @@ def register_image(session): def kamaki_menu(session): d = session['dialog'] default_item = "Account" + + account = Kamaki.get_account() + if account: + session['account'] = account + + token = Kamaki.get_token() + if token: + session['token'] = token + while 1: account = session["account"] if "account" in session else "" token = session["token"] if "token" in session else "" @@ -395,6 +405,7 @@ def kamaki_menu(session): del session["account"] else: session["account"] = answer.strip() + Kamaki.save_account(session['account']) default_item = "Token" elif choice == "Token": default_item = "Token" @@ -408,6 +419,7 @@ def kamaki_menu(session): del session["token"] else: session["token"] = answer.strip() + Kamaki.save_token(session['account']) default_item = "Upload" elif choice == "Upload": if upload_image(session): @@ -777,7 +789,7 @@ def select_file(d, media): while 1: if media is not None: if not os.path.exists(media): - d.msgbox("The file you choose does not exist", + d.msgbox("The file `%s' you choose does not exist." % media, width=MSGBOX_WIDTH) else: break @@ -794,10 +806,6 @@ def select_file(d, media): return media -def wizard(session): - pass - - def image_creator(d): usage = "Usage: %prog [options] []" @@ -811,7 +819,7 @@ def image_creator(d): d.setBackgroundTitle('snf-image-creator') if os.geteuid() != 0: - raise FatalError("You must run %s as root" % basename) + raise FatalError("You must run %s as root" % parser.get_prog_name()) media = select_file(d, args[0] if len(args) == 1 else None) @@ -855,15 +863,27 @@ def image_creator(d): "image_os": image_os, "metadata": metadata} - msg = "Would you like to run the snf-image-creator wizard? " \ - "Choose if you want to run a wizards to assists " \ - "you through the image creation process. Choose to run " \ - "the program in expert mode." + msg = "snf-image-creator detected a %s system on the input media. " \ + "Would you like to run a wizards to assists you through the " \ + "image creation process?\n\nChoose to run the wizard, " \ + " to run the snf-image-creator in expert mode or press " \ + "ESC to quit the program." \ + % (dev.ostype if dev.ostype == dev.distro else "%s (%s)" % + (dev.ostype, dev.distro)) - if d.yesno(msg, width=YESNO_WIDTH): - main_menu(session) - else: - wizard(session) + update_background_title(session) + + while True: + code = d.yesno(msg, width=YESNO_WIDTH, height=12) + if code == d.DIALOG_OK: + if wizard(session): + break + elif code == d.DIALOG_CANCEL: + main_menu(session) + break + + if confirm_exit(d): + break d.infobox("Thank you for using snf-image-creator. Bye", width=53) finally: