# SlabDriver should be really only about talking to the senslab testbed
## thierry : please avoid wildcard imports :)
-from sfa.senslab.OARrestapi import OARapi
+from sfa.senslab.OARrestapi import OARapi, OARrestapi
from sfa.senslab.LDAPapi import LDAPapi
from sfa.senslab.SenslabImportUsers import SenslabImportUsers
from sfa.senslab.parsing import parse_filter
self.ldap = LDAPapi()
self.users = SenslabImportUsers()
self.time_format = "%Y-%m-%d %H:%M:%S"
+ self.db = SlabDB()
#self.logger=sfa_logger()
return return_site_list
def GetSlices(self,slice_filter = None, return_fields=None):
- db = SlabDB()
+
return_slice_list =[]
- sliceslist = db.find('slice',columns = ['slice_hrn', 'record_id_slice','record_id_user'])
+ sliceslist = self.db.find('slice',columns = ['slice_hrn', 'record_id_slice','record_id_user'])
print >>sys.stderr, " \r\n \r\n SLABDRIVER.PY GetSlices slices %s" %(sliceslist)
#slicesdict = sliceslist[0]
if not (slice_filter or return_fields):
- def AddSliceToNodes(self, slice_name, added_nodes):
+ def AddSliceToNodes(self, slice_name, added_nodes, slice_user=None):
+ print>>sys.stderr, "\r\n \r\n AddSliceToNodes slice_name %s added_nodes %s username %s" %(slice_name,added_nodes,slice_user )
+ site_list = []
+ nodeid_list =[]
+ resource = ""
+ reqdict = {}
+ reqdict['property'] ="network_address in ("
+ for node in added_nodes:
+ #Get the ID of the node : remove the root auth and put the site in a separate list
+ tmp = node.strip(self.root_auth+".")
+ l = tmp.split("_")
+
+ nodeid= (l[len(l)-1])
+ reqdict['property'] += "'"+ nodeid +"', "
+ nodeid_list.append(nodeid)
+ site_list.append( l[0] )
+
+ reqdict['property'] = reqdict['property'][0: len( reqdict['property'])-2] +")"
+ reqdict['resource'] ="network_address="+ str(len(nodeid_list))
+ reqdict['resource']+= ",walltime=" + str(00) + ":" + str(05) + ":" + str(00)
+ reqdict['script_path'] = "/bin/sleep "
+
+ print>>sys.stderr, "\r\n \r\n AddSliceToNodes reqdict %s \r\n site_list %s" %(reqdict,site_list)
+ OAR = OARrestapi()
+ answer = OAR.POSTRequestToOARRestAPI('POST_job',reqdict,slice_user)
+ print>>sys.stderr, "\r\n \r\n AddSliceToNodes jobid %s " %(answer)
+ self.db.update('slice',['oar_job_id'], [answer['id']], 'slice_hrn', slice_name)
return
+
+
+
def DeleteSliceFromNodes(self, slice_name, deleted_nodes):
return
if records['type'] == 'slice':
- db = SlabDB()
+
sfatable = SfaTable()
- recslice = db.find('slice',str(records['hrn']))
+ recslice = self.db.find('slice',str(records['hrn']))
if isinstance(recslice,list) and len(recslice) == 1:
recslice = recslice[0]
recuser = sfatable.find( recslice['record_id_user'], ['hrn'])