From: Bruno Soares da Silva Date: Tue, 16 Sep 2014 21:39:52 +0000 (-0300) Subject: - Added support to send the user public key to the LaboraScheduler API on user regist... X-Git-Url: http://git.onelab.eu/?p=myslice.git;a=commitdiff_plain;h=5c5d6689dc9c7d0fda4fae3ceb14a8c738a7cfa2 - Added support to send the user public key to the LaboraScheduler API on user registration. - Added parameter "created_by" with default value "myslice" from user registration in Labora Scheduler API. --- diff --git a/portal/actions.py b/portal/actions.py index cea79eb1..0a1989a1 100644 --- a/portal/actions.py +++ b/portal/actions.py @@ -577,41 +577,56 @@ def ls_create_user(wsgi_request, request, user_detail): organization = request['username'].split('@')[1] lsClient = LaboraSchedulerClient( organization ) - org_gidnumber = lsClient.get_testbed_info()['gidnumber'] - user_homedirectory = "/home/" + organization + "/" + request['username'].split('@')[0] - user_homedirectory = user_homedirectory.encode('utf-8') + orgGIDNumber = lsClient.get_testbed_info()['gidnumber'] + userHomeDirectory = "/home/" + organization + "/" + request['username'].split('@')[0] + userHomeDirectory = userHomeDirectory.encode('utf-8') - user_data = { + userData = { 'username' : request['username'], 'email' : request['email'].encode('utf-8'), 'password' : request['password'].encode('utf-8'), 'name' : str( request['first_name'].encode('latin1') ) + ' ' + str( request['last_name'].encode('latin1') ), - 'gidnumber' : org_gidnumber, - 'homedirectory' : user_homedirectory + 'gidnumber' : orgGIDNumber, + 'homedirectory' : userHomeDirectory, + 'created_by' : "myslice" } - # Add user in the island: - add_user = lsClient.add_user( user_data ) + # Add user in the island. + addUser = lsClient.add_user( userData ) - return add_user + # User successfully created, upload user public key. + if addUser: + ls_update_public_key( wsgi_request, request, lsClient, addUser ) + + return addUser def ls_validate_user(wsgi_request, request): organization = request['username'].split('@')[1] lsClient = LaboraSchedulerClient( organization ) - user_id = lsClient.get_user_id_by_username( { 'username': str(request['username']) } ) + userId = lsClient.get_user_id_by_username( { 'username': str( request['username'] ) } ) validate = False - if user_id: - user_data = { - 'user_id' : user_id, + if userId: + userData = { + 'user_id' : userId, 'new_user_data' : { 'enable': 'TRUE' } } - validate = lsClient.update_user( user_data ) + validate = lsClient.update_user( userData ) return validate +def ls_update_public_key( wsgi_request, request, lsClient, userId ): + userPbKey = { + 'user_id' : userId, + 'public_key' : request['public_key'] + } + + addUserPublicKey = lsClient.add_user_public_key( userPbKey ) + + return addUserPublicKey + def create_user(wsgi_request, request): # XXX This has to be stored centrally diff --git a/portal/lsapiclient.py b/portal/lsapiclient.py index 494adb0d..0e6edde4 100644 --- a/portal/lsapiclient.py +++ b/portal/lsapiclient.py @@ -13,7 +13,7 @@ class LaboraSchedulerClient: """ direct_calls = [ 'get_testbed_info', 'get_users', 'add_user', 'delete_user', 'update_user', - 'get_user_id_by_username' ] + 'get_user_id_by_username', 'add_user_public_key', 'delete_user_public_key' ] def __init__ ( self, organization ): self.url, self.key = self.getOrganizationConfigs( organization ) @@ -44,13 +44,15 @@ class LaboraSchedulerClient: method_parameters.extend(['filter']) elif actual_name == "update_user": method_parameters.extend(['user_id', 'new_user_data']) - elif actual_name == "delete_user": + elif actual_name == "delete_user" or actual_name == "delete_user_public_key": method_parameters.extend(['user_id']) elif actual_name == "get_user_id_by_username": method_parameters.extend(['username']) elif actual_name == "add_user": method_parameters.extend(['username', 'email', 'password', 'name', 'gidnumber', - 'homedirectory']) + 'homedirectory', 'created_by']) + elif actual_name == "add_user_public_key": + method_parameters.extend(['user_id', 'public_key']) for parameter in args: if isinstance(parameter, (frozenset, list, set, tuple, dict)): @@ -89,8 +91,8 @@ class LaboraSchedulerClient: databaseConfig = { 'dbHost' : '10.128.11.200', - 'dbUser' : '', - 'dbPassword' : '', + 'dbUser' : 'postgres', + 'dbPassword' : '5e6b70f2e9dc', 'dbName' : 'LaboraSchedulerNOC' }