- Added support to send the user public key to the LaboraScheduler API on user regist...
authorBruno Soares da Silva <brunosoares.inf@gmail.com>
Tue, 16 Sep 2014 21:39:52 +0000 (18:39 -0300)
committerBruno Soares da Silva <brunosoares.inf@gmail.com>
Tue, 16 Sep 2014 21:39:52 +0000 (18:39 -0300)
- Added parameter "created_by" with default value "myslice" from user registration in Labora Scheduler API.

portal/actions.py
portal/lsapiclient.py

index cea79eb..0a1989a 100644 (file)
@@ -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
index 494adb0..0e6edde 100644 (file)
@@ -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'
         }