git://git.onelab.eu
/
sfa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
avoid publishing non-relevant entries in GetVersion
[sfa.git]
/
sfa
/
iotlab
/
iotlabshell.py
diff --git
a/sfa/iotlab/iotlabshell.py
b/sfa/iotlab/iotlabshell.py
index
becdbf5
..
f237dde
100644
(file)
--- a/
sfa/iotlab/iotlabshell.py
+++ b/
sfa/iotlab/iotlabshell.py
@@
-52,7
+52,7
@@
class IotLABShell(object):
nodes_dict[node['network_address']] = node
return nodes_dict
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
"""
Get all LDAP users
:returns: users with LDAP attributes
@@
-79,7
+79,10
@@
class IotLABShell(object):
logger.warning("iotlashell get_users")
users_dict = {}
try:
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}
except HTTPError as err:
logger.warning("iotlashell get_users error %s" % err.reason)
return {'error': err.reason}
@@
-94,6
+97,7
@@
class IotLABShell(object):
"""
# pylint:disable=W0212,R0913,E1123
logger.warning("iotlashell reserve_nodes")
"""
# 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'
exp_file = helpers.FilesDict()
_experiment = experiment._Experiment(exp_name, duration, start_time)
_experiment.type = 'physical'
@@
-109,7
+113,7
@@
class IotLABShell(object):
def get_reserved_nodes(self):
"""
def get_reserved_nodes(self):
"""
- Get all OAR jobs
with state Waiting or Running
.
+ Get all OAR jobs
not terminated
.
:Example:
{"total":"1907",
:Example:
{"total":"1907",
@@
-128,7
+132,9
@@
class IotLABShell(object):
"""
logger.warning("iotlashell get_reserved_nodes")
reserved_nodes_dict = {}
"""
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:
try:
experiments = self.api.method(request)
except HTTPError as err:
@@
-136,11
+142,6
@@
class IotLABShell(object):
err.reason)
return {'error': err.reason}
for exp in experiments['items']:
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
# BUG ASAP jobs without date information
if exp['date'] == "as soon as possible":
exp['date'] = 0
@@
-153,16
+154,22
@@
class IotLABShell(object):
"""
# pylint:disable=E1123
logger.warning("iotlashell add_user")
"""
# 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",
# 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
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:
email = (email.split('@'))[0]
user['firstName'] = email.split('.')[0]
try: