From ac8dfc1d00c33760c5392feecceb4a91d7202103 Mon Sep 17 00:00:00 2001 From: Sandrine Avakian Date: Tue, 10 Jan 2012 14:44:33 +0100 Subject: [PATCH 1/1] Added GetJobs. --- sfa/senslab/slabaggregate.py | 42 +++++++++++----------- sfa/senslab/slabdriver.py | 68 ++++++++++++++++++++++++++++++------ 2 files changed, 78 insertions(+), 32 deletions(-) diff --git a/sfa/senslab/slabaggregate.py b/sfa/senslab/slabaggregate.py index 22663773..2adf474e 100644 --- a/sfa/senslab/slabaggregate.py +++ b/sfa/senslab/slabaggregate.py @@ -65,35 +65,35 @@ class SlabAggregate: slice_urn = hrn_to_urn(slice_xrn, 'slice') slice_hrn, _ = urn_to_hrn(slice_xrn) slice_name = slice_hrn - slices = self.driver.GetSlices(slice_name) + slices = self.driver.GetSlices([slice_name]) if not slices: return (slice, slivers) slice = slices[0] - # sort slivers by node id - for node_id in slice['node_ids']: - sliver = Sliver({'sliver_id': urn_to_sliver_id(slice_urn, slice['slice_id'], node_id), - 'name': slice['hrn'], - 'type': 'slab-vm', - 'tags': []}) - slivers[node_id]= sliver - - # sort sliver attributes by node id - #tags = self.driver.GetSliceTags({'slice_tag_id': slice['slice_tag_ids']}) - #for tag in tags: - ## most likely a default/global sliver attribute (node_id == None) - #if tag['node_id'] not in slivers: - #sliver = Sliver({'sliver_id': urn_to_sliver_id(slice_urn, slice['slice_id'], ""), - #'name': 'slab-vm', - #'tags': []}) - #slivers[tag['node_id']] = sliver - #slivers[tag['node_id']]['tags'].append(tag) + ## sort slivers by node id + #for node_id in slice['node_ids']: + #sliver = Sliver({'sliver_id': urn_to_sliver_id(slice_urn, slice['slice_id'], node_id), + #'name': slice['hrn'], + #'type': 'slab-vm', + #'tags': []}) + #slivers[node_id]= sliver + + ## sort sliver attributes by node id + ##tags = self.driver.GetSliceTags({'slice_tag_id': slice['slice_tag_ids']}) + ##for tag in tags: + ### most likely a default/global sliver attribute (node_id == None) + ##if tag['node_id'] not in slivers: + ##sliver = Sliver({'sliver_id': urn_to_sliver_id(slice_urn, slice['slice_id'], ""), + ##'name': 'slab-vm', + ##'tags': []}) + ##slivers[tag['node_id']] = sliver + ##slivers[tag['node_id']]['tags'].append(tag) return (slice, slivers) - def get_nodes(self): + def get_nodes(self,slice=None,slivers=[], options={}): filtre = {} #tags_filter = {} #if slice and 'node_ids' in slice and slice['node_ids']: @@ -197,7 +197,7 @@ class SlabAggregate: rspec_version = version_manager._get_version(version.type, version.version, 'ad') else: rspec_version = version_manager._get_version(version.type, version.version, 'manifest') - #slice, slivers = self.get_slice_and_slivers(slice_xrn) + slice, slivers = self.get_slice_and_slivers(slice_xrn) rspec = RSpec(version=rspec_version, user_options=options) #if slice and 'expires' in slice: #rspec.xml.set('expires', epochparse(slice['expires'])) diff --git a/sfa/senslab/slabdriver.py b/sfa/senslab/slabdriver.py index f03c9f2f..222b3610 100644 --- a/sfa/senslab/slabdriver.py +++ b/sfa/senslab/slabdriver.py @@ -5,6 +5,10 @@ from sfa.util.sfalogging import logger from sfa.storage.table import SfaTable from sfa.util.defaultdict import defaultdict +from sfa.trust.certificate import * +from sfa.trust.credential import * +from sfa.trust.gid import GID + from sfa.managers.driver import Driver from sfa.rspecs.version_manager import VersionManager from sfa.rspecs.rspec import RSpec @@ -69,7 +73,24 @@ class SlabDriver(Driver): slices = SlabSlices(self) peer = slices.get_peer(slice_hrn) sfa_peer = slices.get_sfa_peer(slice_hrn) - slice_record=None + slice_record=None + #print>>sys.stderr, " \r\n \r\n create_sliver creds %s \r\n \r\n users %s " %(creds,users) + + if not isinstance(creds, list): + creds = [creds] + + #for cred in creds: + #cred_obj=Credential(string=cred) + #print >>sys.stderr," \r\n \r\n create_sliver cred %s " %(cred) + #GIDcall = cred_obj.get_gid_caller() + #GIDobj = cred_obj.get_gid_object() + #print >>sys.stderr," \r\n \r\n create_sliver GIDobj pubkey %s hrn %s " %(GIDobj.get_pubkey().get_pubkey_string(), GIDobj.get_hrn()) + #print >>sys.stderr," \r\n \r\n create_sliver GIDcall pubkey %s hrn %s" %(GIDcall.get_pubkey().get_pubkey_string(),GIDobj.get_hrn()) + + + #tmpcert = GID(string = users[0]['gid']) + #print >>sys.stderr," \r\n \r\n create_sliver tmpcer pubkey %s hrn %s " %(tmpcert.get_pubkey().get_pubkey_string(), tmpcert.get_hrn()) + if users: slice_record = users[0].get('slice_record', {}) @@ -325,7 +346,24 @@ class SlabDriver(Driver): if return_person_list: print>>sys.stderr, " \r\n GetPersons person_filter %s return_fields %s return_person_list %s " %(person_filter,return_fields,return_person_list) return return_person_list - + + + def GetJobs(self,job_id= None, resources=True,return_fields=None): + if job_id and resources is False: + self.oar.parser.SendRequest("GET_jobs_id", job_id) + if job_id and resources: + self.oar.parser.SendRequest("GET_jobs_id_resources", job_id) + + #node_dict = self.oar.parser.GetNodesFromOARParse() + #return_node_list = [] + + #if not (node_filter or return_fields): + #return_node_list = node_dict.values() + #return return_node_list + + #return_node_list= parse_filter(node_dict.values(),node_filter ,'node', return_fields) + #return return_node_list + def GetNodes(self,node_filter= None, return_fields=None): self.oar.parser.SendRequest("GET_resources_full") @@ -354,14 +392,22 @@ class SlabDriver(Driver): def GetSlices(self,slice_filter = None, return_fields=None): return_slice_list =[] - 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) + sliceslist = self.db.find('slice',columns = ['oar_job_id', 'slice_hrn', 'record_id_slice','record_id_user']) + print >>sys.stderr, " \r\n \r\n SLABDRIVER.PY GetSlices slices %s slice_filter %s " %(sliceslist,slice_filter) #slicesdict = sliceslist[0] - if not (slice_filter or return_fields): - return_slice_list = sliceslist - return return_slice_list + + + if not (slice_filter or return_fields) and sliceslist: + for sl in sliceslist: + if sl['oar_job_id'] is not '-1': + self.GetJobs( sl['oar_job_id'],resources=False) + return_slice_list = sliceslist + return return_slice_list return_slice_list = parse_filter(sliceslist, slice_filter,'slice', return_fields) + for sl in return_slice_list: + if sl['oar_job_id'] is not '-1': + self.GetJobs( sl['oar_job_id'],resources=False) print >>sys.stderr, " \r\n \r\n SLABDRIVER.PY GetSlices return_slice_list %s" %(return_slice_list) return return_slice_list @@ -473,10 +519,10 @@ class SlabDriver(Driver): 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) + 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 -- 2.45.2