private_key = json.dumps(private.exportKey())
public = private.publickey()
public_key = json.dumps(public.exportKey(format='OpenSSH'))
- # updating maniolf local:account table
+ # updating manifold local:account table
account_config = json.loads(account_detail['config'])
# preserving user_hrn
user_hrn = account_config.get('user_hrn','N/A')
user_params = { 'config': keypair, 'auth_type':'managed'}
manifold_update_account(request,user_params)
# updating sfa
- #public_key = public_key.replace('"', '');
- #user_pub_key = {'keys': public_key}
- #sfa_update_user(request, user_hrn, user_pub_key)
+ public_key = public_key.replace('"', '');
+ user_pub_key = {'keys': public_key}
+ sfa_update_user(request, user_hrn, user_pub_key)
messages.success(request, 'Sucess: New Keypair Generated! Delegation of your credentials will be automatic.')
return HttpResponseRedirect("/portal/account/")
else:
#update manifold local:account table
user_params = { 'config': file_content, 'auth_type':'user'}
manifold_update_account(request,user_params)
+ # updating sfa
+ user_pub_key = {'keys': file_content}
+ sfa_update_user(request, user_hrn, user_pub_key)
messages.success(request, 'Publickey uploaded! Please delegate your credentials using SFA: http://trac.myslice.info/wiki/DelegatingCredentials')
return HttpResponseRedirect("/portal/account/")
else:
# SFA add record (user, slice)
def sfa_add_user(request, user_params):
+ if 'email' in user_params:
+ params['user_email'] = params['email']
query = Query.create('user').set(user_params).select('user_hrn')
results = execute_query(request, query)
if not results:
def sfa_update_user(request, user_hrn, user_params):
# user_params: keys [public_key]
+ if 'email' in user_params:
+ params['user_email'] = params['email']
query = Query.update('user').filter_by('user_hrn', '==', user_hrn).set(user_params).select('user_hrn')
results = execute_query(request,query)
return results
return results
def sfa_add_user_to_slice(request, user_hrn, slice_params):
+# UPDATE myslice:slice SET researcher=['ple.upmc.jordan_auge','ple.inria.thierry_parmentelat','ple.upmc.loic_baron','ple.upmc.ciro_scognamiglio','ple.upmc.mohammed-yasin_rahman','ple.upmc.azerty'] where slice_hrn=='ple.upmc.myslicedemo'
+ query_current_users = Query.get('slice').select('user').filter_by('slice_hrn','==',slice_params['hrn'])
+ results_current_users = execute_query(request, query_current_users)
+ slice_params['researcher'] = slice_params['researcher'] | results_current_users
query = Query.update('slice').filter_by('user_hrn', '==', user_hrn).set(slice_params).select('slice_hrn')
results = execute_query(request, query)
+# Also possible but not supported yet
+# UPDATE myslice:user SET slice=['ple.upmc.agent','ple.upmc.myslicedemo','ple.upmc.tophat'] where user_hrn=='ple.upmc.azerty'
if not results:
raise Exception, "Could not create %s. Already exists ?" % slice_params['hrn']
return results
request = {}
request['type'] = 'slice'
request['id'] = slice.id
- request['user_email'] = slice.user_email
+ request['user_hrn'] = slice.user_hrn
request['timestamp'] = slice.created
request['authority_hrn'] = slice.authority_hrn
request['slice_name'] = slice.slice_name
'email' : request['email'],
#'slices' : None,
#'researcher': None,
- #'pi' : None,
+ 'pi' : request['pi'],
'enabled' : True
}
# ignored in request: id, timestamp, password
request_status['SFA user'] = {'status': False, 'description': str(e)}
user_params = {'status':2}
- manifold_update_user(request, request['email'],user_params)
+ manifold_update_user(request, request['email'], user_params)
# MANIFOLD user should be added beforehand, during registration
#try:
# XXX tmp sfa dependency
from sfa.util.xrn import Xrn
urn = Xrn(hrn, request['type']).get_urn()
-
+
+ # Add User to Slice if we have the user_hrn in pendingslice table
+ if 'user_hrn' in request:
+ user_hrn = request['user_hrn']
+ print "Slice %s will be created for %s" % (hrn,request['user_hrn'])
+ else:
+ user_hrn=''
+ print "Slice %s will be created without users %s" % (hrn)
sfa_slice_params = {
'hrn' : hrn,
'urn' : urn,
'type' : request['type'],
#'slices' : None,
- #'researcher': None,
+ 'researcher' : [user_hrn],
#'pi' : None,
'enabled' : True
}
email = reg_email,
password = reg_password,
keypair = account_config,
+ pi = reg_auth,
)
b.save()
keypair = models.TextField()
authority_hrn = models.TextField()
login = models.TextField()
+ pi = models.TextField()
created = models.DateTimeField(auto_now_add = True)
# models.ForeignKey(Institution)
class PendingSlice(models.Model):
slice_name = models.TextField()
- user_email = models.TextField()
+ user_hrn = models.TextField()
authority_hrn = models.TextField(null=True)
number_of_nodes = models.TextField(default=0)
type_of_nodes = models.TextField(default='NA')
email = reg_email,
password = request.POST['password'],
keypair = account_config,
+ pi = '',
)
b.save()
# saves the user to django auth_user table [needed for password reset]
user_email = execute_query(self.request, user_query)
self.user_email = user_email[0].get('email')
+ user_query = Query().get('user').select('user_hrn').filter_by('user_hrn','==','$user_hrn')
+ user_hrn = execute_query(self.request, user_query)
+ self.user_hrn = user_hrn[0].get('user_hrn')
+
page = Page(request)
page.add_css_files ( [ "http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" ] )
number_of_nodes = request.POST.get('number_of_nodes', '')
purpose = request.POST.get('purpose', '')
email = self.user_email
+ user_hrn = self.user_hrn
cc_myself = True
if (authority_hrn is None or authority_hrn == ''):
}
s = PendingSlice(
slice_name = slice_name,
- user_email = email,
+ user_hrn = user_hrn,
authority_hrn = authority_hrn,
number_of_nodes = number_of_nodes,
purpose = purpose
'number_of_nodes': request.POST.get('number_of_nodes', ''),
'purpose': request.POST.get('purpose', ''),
'email': self.user_email,
+ 'user_hrn': self.user_hrn,
'cc_myself': True,
'authorities': authorities,
}