From: Loic Baron Date: Wed, 26 Nov 2014 16:39:57 +0000 (+0100) Subject: AccountView: Download sfi_config X-Git-Tag: myslice-1.1~15^2~2 X-Git-Url: http://git.onelab.eu/?p=myslice.git;a=commitdiff_plain;h=979b117cd11dd9d5b7c3f6d5aa74959f9ab60237 AccountView: Download sfi_config --- diff --git a/portal/accountview.py b/portal/accountview.py index 81935424..4d25c611 100644 --- a/portal/accountview.py +++ b/portal/accountview.py @@ -14,6 +14,7 @@ from django.http import HttpResponse, HttpResponseRedirec from django.contrib import messages from django.contrib.auth.decorators import login_required +from myslice.configengine import ConfigEngine from myslice.theme import ThemeView from portal.account import Account, get_expiration @@ -252,6 +253,20 @@ class AccountView(LoginRequiredAutoLogoutView, ThemeView): context.update(prelude_env) return context +@login_required +def get_myslice_platform(request): + platform_query = Query().get('local:platform').select('platform_id','platform','gateway_type','disabled','config').filter_by('platform','==','myslice') + platform_details = execute_query(request, platform_query) + for platform_detail in platform_details: + return platform_detail + +@login_required +def get_myslice_account(request): + platform_myslice = get_myslice_platform(request) + account_query = Query().get('local:account').select('user_id','platform_id','auth_type','config').filter_by('platform_id','==',platform_myslice['platform_id']) + account_details = execute_query(request, account_query) + for account_detail in account_details: + return account_detail @login_required #my_acc form value processing @@ -534,6 +549,40 @@ def account_process(request): messages.error(request, 'Account error: You need an account in myslice platform to perform this action') return HttpResponseRedirect("/portal/account/") + # Download sfi_config + elif 'dl_sfi_config' in request.POST: + platform_detail = get_myslice_platform(request) + platform_config = json.loads(platform_detail['config']) + account_detail = get_myslice_account(request) + account_config = json.loads(account_detail['config']) + + user_hrn = account_config.get('user_hrn','N/A') + t_user_hrn = user_hrn.split('.') + authority_hrn = t_user_hrn[0] + '.' + t_user_hrn[1] + import socket + hostname = socket.gethostbyaddr(socket.gethostname())[0] + registry = platform_config.get('registry','N/A') + admin_user = platform_config.get('user','N/A') + if 'localhost' in registry: + port = registry.split(':')[-1:][0] + registry = "http://" + hostname +':'+ port + manifold_host = ConfigEngine().manifold_url() + if 'localhost' in manifold_host: + manifold_host = manifold_host.replace('localhost',hostname) + sfi_config = '[sfi]\n' + sfi_config += 'auth = '+ authority_hrn +'\n' + sfi_config += 'user = '+ user_hrn +'\n' + sfi_config += 'registry = '+ registry +'\n' + sfi_config += 'sm = http://sfa3.planet-lab.eu:12346/\n\n' + sfi_config += '[myslice]\n' + sfi_config += 'backend = '+ manifold_host +'\n' + sfi_config += 'delegate = '+ admin_user +'\n' + sfi_config += 'platform = myslice\n' + sfi_config += 'username = '+ user_email +'\n' + response = HttpResponse(sfi_config, content_type='text/plain') + response['Content-Disposition'] = 'attachment; filename="sfi_config"' + return response + #clear all creds elif 'clear_cred' in request.POST: try: diff --git a/portal/static/css/account_view.css b/portal/static/css/account_view.css index cfdf4326..bcb29506 100644 --- a/portal/static/css/account_view.css +++ b/portal/static/css/account_view.css @@ -56,14 +56,14 @@ table.profile tr td.value { } table.profile button { - width: 80px; + width: 100px; vertical-align: middle; float: right; margin-right: 15px; } #delete { - width: 80px; + width: 100px; vertical-align: middle; float: right; margin-right: 15px; @@ -71,7 +71,7 @@ table.profile button { } #upload_key { - width: 80px; + width: 100px; vertical-align: middle; float: right; margin-right: 15px; @@ -123,7 +123,7 @@ table.profile form{ #generate_keypair { position:relative; - width: 175px; + width: 215px; float: right; margin-right: 15px; @@ -143,7 +143,7 @@ table.profile form{ } .wide_button { - width: 175px; + width: 215px; } .api_cell { diff --git a/portal/templates/account-view.html b/portal/templates/account-view.html index 2b8a9ca5..2b99be12 100644 --- a/portal/templates/account-view.html +++ b/portal/templates/account-view.html @@ -144,6 +144,14 @@ {%endif%} + + sfi_config + use sfi_config file with sfi.py package (pip install sfa) + + +

Tradeoff: Ease-of-use vs Security.
diff --git a/portal/templates/onelab/onelab_account-view.html b/portal/templates/onelab/onelab_account-view.html index 7ac95782..13da1254 100644 --- a/portal/templates/onelab/onelab_account-view.html +++ b/portal/templates/onelab/onelab_account-view.html @@ -155,6 +155,15 @@ {%endif%} + + sfi_config + use sfi_config file with sfi.py package (pip install sfa) + + + +