This file defines the IotlabSlices class by which all the slice checkings
upon lease creation are done.
"""
-from sfa.util.xrn import get_authority, urn_to_hrn
+from sfa.util.xrn import get_authority, urn_to_hrn, hrn_to_urn
from sfa.util.sfalogging import logger
MAXINT = 2L**31-1
"%( start_time))
if start_time in current_nodes_reserved_by_start_time:
+ # JORDAN : if we request the same nodes: do nothing
if requested_nodes_by_start_time[start_time] == \
current_nodes_reserved_by_start_time[start_time]:
continue
job['hostname'],
sfa_slice, int(job['start_time']),
int(job['duration']))
- if job_id is not None:
- new_leases = self.driver.GetLeases(login=
- sfa_slice['login'])
- for new_lease in new_leases:
- leases.append(new_lease)
+
+ # Removed by jordan
+ #if job_id is not None:
+ # new_leases = self.driver.GetLeases(login=
+ # sfa_slice['login'])
+ # for new_lease in new_leases:
+ # leases.append(new_lease)
#Deleted leases are the ones with lease id not declared in the Rspec
if deleted_leases:
job['hostname'],
sfa_slice, int(job['start_time']),
int(job['duration']))
- return leases
+
+ # Added by Jordan: until we find a better solution, always update the list of leases
+ return self.driver.GetLeases(login= sfa_slice['login'])
+ #return leases
def verify_slice_nodes(self, sfa_slice, requested_slivers, peer):
"""Check for wanted and unwanted nodes in the slice.
"""
slicename = slice_hrn
+ sfa_slice = None
+
# check if slice belongs to Iotlab
slices_list = self.driver.GetSlices(slice_filter=slicename,
slice_filter_type='slice_hrn')
- sfa_slice = None
-
if slices_list:
for sl in slices_list:
'node_list': [],
'authority': slice_record['authority'],
'gid': slice_record['gid'],
- 'slice_id': slice_record['record_id'],
- #'reg-researchers': slice_record['reg-researchers'],
+ #'slice_id': slice_record['record_id'],
+ 'reg-researchers': slice_record['reg-researchers'],
+ 'urn': hrn_to_urn(slicename,'slice'),
#'peer_authority': str(sfa_peer)
}
return sfa_slice
- def verify_persons(self, slice_hrn, slice_record, users, options={}):
+ def verify_persons(self, slice_hrn, slice_record, users, options=None):
"""Ensures the users in users list exist and are enabled in LDAP. Adds
person if needed (AddPerson).
"""
+ slice_user = slice_record['user']
+ if options is None: options={}
logger.debug("IOTLABSLICES \tverify_persons \tslice_hrn %s \
\t slice_record %s\r\n users %s \t "
% (slice_hrn, slice_record, users))
#Check user i in LDAP with GetPersons
#Needed because what if the user has been deleted in LDAP but
#is still in SFA?
+ # GetPersons -> LdapFindUser -> _process_ldap_info_for_one_user
+ # XXX LOIC Fix in _process_ldap_info_for_one_user not to update user with hrn=None
existing_users = self.driver.testbed_shell.GetPersons(filter_user)
logger.debug(" \r\n IOTLABSLICES.PY \tverify_person filter_user %s\
existing_users %s "
users_dict[user['email']].update(user)
existing_user_emails.append(
users_dict[user['email']]['email'])
-
+ logger.debug("User is in iotlab LDAP slice_record[user] = %s" % slice_user)
# User from another known trusted federated site. Check
# if a iotlab account matching the email has already been created.
else:
req += users['email']
ldap_reslt = self.driver.testbed_shell.ldap.LdapSearch(req)
-
+ logger.debug("LdapSearch slice_record[user] = %s" % slice_user)
if ldap_reslt:
logger.debug(" IOTLABSLICES.PY \tverify_person users \
USER already in Iotlab \t ldap_reslt %s \
" % (ldap_reslt))
existing_users.append(ldap_reslt[1])
-
+ logger.debug("ldap_reslt slice_record[user] = %s" % slice_user)
else:
#User not existing in LDAP
logger.debug("IOTLABSLICES.PY \tverify_person users \
#self.verify_keys(existing_slice_users, updated_users_list, \
#peer, append)
+ # XXX JORDAN the uid of the user is put in slice_record['login']
added_persons = []
# add new users
#requested_user_email is in existing_user_emails
slice_record['login'] = users_dict[requested_user_emails[0]]['uid']
logger.debug(" IOTLABSLICES \tverify_person QUICK DIRTY %s"
% (slice_record))
+ # XXX JORDAN uid == 'register'
+ # XXX JORDAN i have no added_user_emails
for added_user_email in added_user_emails:
added_user = users_dict[added_user_email]
logger.debug(" IOTLABSLICES \r\n \r\n \t verify_person \
return added_persons
- def verify_keys(self, persons, users, peer, options={}):
+ def verify_keys(self, persons, users, peer, options=None):
"""
.. warning:: unused
"""
+ if options is None: options={}
# existing keys
key_ids = []
for person in persons: