+ # Handle the case when we use only hrn and not name
+ if authority_hrn is None:
+ authority_hrn = wsgi_request.POST.get('org_name', '')
+
+ # Handle project if used
+ project = wsgi_request.POST.get('project', None)
+ if project is not None and project != '':
+ authority_hrn = project
+
+ slice_request = {
+ 'type' : 'slice',
+ 'id' : None,
+ 'user_hrn' : user_hrn,
+ 'email' : user_email,
+ 'timestamp' : time.time(),
+ 'authority_hrn' : authority_hrn,
+ 'organization' : wsgi_request.POST.get('org_name', ''),
+ 'slice_name' : wsgi_request.POST.get('slice_name', ''),
+ 'url' : wsgi_request.POST.get('url', ''),
+ 'purpose' : wsgi_request.POST.get('purpose', ''),
+ 'current_site' : current_site
+ }
+
+ # create slice_hrn based on authority_hrn and slice_name
+ slice_name = slice_request['slice_name']
+ # slice name is unique among all authorities
+ slice_query = Query().get('myslice:slice').select('slice_hrn')
+ slice_details_sfa = execute_admin_query(wsgi_request, slice_query)
+ for _slice in slice_details_sfa:
+ split_list = _slice['slice_hrn'].split('.')
+ sfa_slice_name = split_list[-1]
+ if sfa_slice_name == slice_name:
+ errors.append('Slice already exists. Please use a different slice name.')
+
+
+ # What kind of slice name is valid?
+ if (slice_name is None or slice_name == ''):
+ errors.append('Slice name is mandatory')
+
+ if (re.search(r'^[A-Za-z0-9_]*$', slice_name) == None):
+ errors.append('Slice name may contain only letters, numbers, and underscore.')
+
+ organization = slice_request['organization']
+ if theme.theme == 'fed4fire':
+ if (organization is None or organization == ''):
+ errors.append('Selecting project is mandatory')
+ else:
+ if (organization is None or organization == ''):
+ errors.append('Organization is mandatory')
+
+ slice_length= len(slice_request['slice_name'])
+ if slice_length >19:
+ errors.append('Slice name can be maximum 19 characters long')