nodes_dict[node['network_address']] = node
return nodes_dict
- def get_users(self):
+ def get_users(self, email=None):
"""
Get all LDAP users
:returns: users with LDAP attributes
logger.warning("iotlashell get_users")
users_dict = {}
try:
- users = self.api.method('admin/users')
+ if email:
+ users = self.api.method('admin/users?email=%s' % email)
+ else:
+ users = self.api.method('admin/users')
except HTTPError as err:
logger.warning("iotlashell get_users error %s" % err.reason)
return {'error': err.reason}
"""
# pylint:disable=W0212,R0913,E1123
logger.warning("iotlashell reserve_nodes")
+ logger.info("login=%s, exp_name=%s, nodes_list=%s, start_time=%s, duration=%s" % (login, exp_name, nodes_list, start_time, duration))
exp_file = helpers.FilesDict()
_experiment = experiment._Experiment(exp_name, duration, start_time)
_experiment.type = 'physical'
files=exp_file)
except HTTPError as err:
logger.warning("iotlashell reserve_nodes error %s" % err.reason)
+ logger.error(err)
return {'error': err.reason}
def get_reserved_nodes(self):
"""
- Get all OAR jobs with state Waiting or Running.
+ Get all OAR jobs not terminated.
:Example:
{"total":"1907",
"""
logger.warning("iotlashell get_reserved_nodes")
reserved_nodes_dict = {}
- request = 'admin/experiments?state=Running,Waiting'
+ request = ('admin/experiments?state='
+ 'Running,Waiting,toAckReservation,'
+ 'toLaunch,Launching')
try:
experiments = self.api.method(request)
except HTTPError as err:
err.reason)
return {'error': err.reason}
for exp in experiments['items']:
- # BUG IN OAR REST API : job with reservation didn't return
- # resources attribute list
- # we use another request for finding job resources
- exp_nodes = self.api.method('admin/experiments/%d' % exp['id'])
- exp['resources'] = exp_nodes['nodes']
+ # BUG ASAP jobs without date information
+ if exp['date'] == "as soon as possible":
+ exp['date'] = 0
reserved_nodes_dict[exp['id']] = exp
return reserved_nodes_dict
"""
# pylint:disable=E1123
logger.warning("iotlashell add_user")
+ logger.warning("slice_user: %s" % slice_user)
+ if 'urn' in slice_user:
+ organization = slice_user['urn']
+ else:
+ organization = "SFA federation"
# single account creation
user = {"type": "SA",
"city": "To be defined",
"country": "To be defined",
- "motivations": "SFA federation"}
+ "motivations": "SFA federation",
+ "organization": organization}
email = slice_user['email']
user['email'] = email
user['sshPublicKey'] = slice_user['keys'][0]
# ex : onelab.inria
- user['structure'] = slice_user['slice_record']['authority']
+ user['structure'] = slice_user['urn'].split('+')[1].replace(':','.')
email = (email.split('@'))[0]
user['firstName'] = email.split('.')[0]
try: