From: Nikos Skalkotos Date: Thu, 26 Jul 2012 15:52:01 +0000 (+0300) Subject: Read ~okeanos account/token from kamaki X-Git-Tag: v0.1~46 X-Git-Url: https://code.grnet.gr/git/snf-image-creator/commitdiff_plain/cf4f52b67e6eddc54c15f7a97b78bb45d820184c Read ~okeanos account/token from kamaki If present in the kamaki configuration file, the user will read the ~okeanos credentials using the kamaki config interface. Whenever the user changes the ~okeanos credentians, the changes are pushed back to kamaki. --- diff --git a/image_creator/dialog_main.py b/image_creator/dialog_main.py index 48401a4..52b463f 100644 --- a/image_creator/dialog_main.py +++ b/image_creator/dialog_main.py @@ -265,10 +265,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 +364,8 @@ def register_image(session): def kamaki_menu(session): d = session['dialog'] default_item = "Account" + + (session['account'], session['token']) = Kamaki.saved_credentials() while 1: account = session["account"] if "account" in session else "" token = session["token"] if "token" in session else "" @@ -395,6 +397,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 +411,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): @@ -855,15 +859,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.distro, dev.ostype)) + + 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 d.yesno(msg, width=YESNO_WIDTH): - main_menu(session) - else: - wizard(session) + exit_msg = "You have not selected if you want to run " \ + "snf-image-creator in wizard or expert mode." + if confirm_exit(d, exit_msg): + break d.infobox("Thank you for using snf-image-creator. Bye", width=53) finally: diff --git a/image_creator/kamaki_wrapper.py b/image_creator/kamaki_wrapper.py index 6b05142..768e6b3 100644 --- a/image_creator/kamaki_wrapper.py +++ b/image_creator/kamaki_wrapper.py @@ -44,6 +44,27 @@ CONTAINER = "images" class Kamaki(object): + + @staticmethod + def saved_credentials(): + config = Config() + account = config.get('storage', 'account') + token = config.get('global', 'token') + + return (account, token) + + @staticmethod + def save_account(account): + config = Config() + config.set('storage', 'account', account) + config.write() + + @staticmethod + def save_token(token): + config = Config() + config.set('global', 'token', token) + config.write() + def __init__(self, account, token, output): self.account = account self.token = token @@ -53,13 +74,11 @@ class Kamaki(object): pithos_url = config.get('storage', 'url') self.container = CONTAINER - self.pithos_client = PithosClient(pithos_url, token, self.account, + self.pithos_client = PithosClient(pithos_url, self.token, self.account, self.container) image_url = config.get('image', 'url') - self.image_client = ImageClient(image_url, token) - - self.uploaded_object = None + self.image_client = ImageClient(image_url, self.token) def upload(self, file_obj, size=None, remote_path=None, hp=None, up=None): """Upload a file to pithos"""