From 6cebf6bbc4b5a94e3530e5f43a61f7191ced7a1b Mon Sep 17 00:00:00 2001 From: Sandrine Avakian Date: Mon, 16 Jan 2012 15:10:40 +0100 Subject: [PATCH] Added GetPeers and get_peer functions. --- sfa/senslab/parsing.py | 9 +++------ sfa/senslab/slabdriver.py | 16 +++++++++++++++- sfa/senslab/slabslices.py | 15 ++++++++------- 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/sfa/senslab/parsing.py b/sfa/senslab/parsing.py index 0a5092a9..c26f865d 100644 --- a/sfa/senslab/parsing.py +++ b/sfa/senslab/parsing.py @@ -33,7 +33,8 @@ def parse_filter(list_to_filter, param_filter, type_of_list, return_fields=None) 'keys':{'int':'key_id'},\ 'site':{'str':'login_base','int':'site_id'},\ 'node':{'str':'hostname','int':'node_id'},\ - 'slice':{'str':'slice_hrn','int':'record_id_slice'}} + 'slice':{'str':'slice_hrn','int':'record_id_slice'},\ + 'peers':{'str':'hrn'}} print>>sys.stderr, " \r\n ___ parse_filter param_filter %s type %s return fields %s " %(param_filter,type_of_list, return_fields) if param_filter is None and return_fields is None: @@ -87,11 +88,7 @@ def parse_filter(list_to_filter, param_filter, type_of_list, return_fields=None) #rif the item matches the filter, returns it founditem = [] check = [ True for k in param_filter.keys() if 'id' in k ] - if check : - dflt= defaultdict(str,param_filter) - - else: - dflt= defaultdict(str,param_filter) + dflt= defaultdict(str,param_filter) diff --git a/sfa/senslab/slabdriver.py b/sfa/senslab/slabdriver.py index bf28eed5..b4c3e971 100644 --- a/sfa/senslab/slabdriver.py +++ b/sfa/senslab/slabdriver.py @@ -329,7 +329,21 @@ class SlabDriver(Driver): return True - + def GetPeers (self,auth = None, peer_filter=None, return_fields=None): + table = SfaTable() + return_records = [] + print>>sys.stderr, " \r\n 1GetPeers " + records_list = table.findObjects({'type':'authority+sa'}) + print>>sys.stderr, " \r\n 2GetPeers peer_filter %s return_fields %s records_list %s "%(peer_filter,return_fields,records_list) + if not peer_filter and not return_fields: + print>>sys.stderr, " \r\n GetPeers pHEYYYYY " + return records_list + + return_records = parse_filter(records_list,peer_filter, 'peers', return_fields) + + return return_records + + def GetPersons(self, person_filter=None, return_fields=None): diff --git a/sfa/senslab/slabslices.py b/sfa/senslab/slabslices.py index 5e7fc956..5853676f 100644 --- a/sfa/senslab/slabslices.py +++ b/sfa/senslab/slabslices.py @@ -144,14 +144,15 @@ class SlabSlices: # get this site's authority (sfa root authority or sub authority) site_authority = get_authority(slice_authority).lower() - print>>sys.stderr, " \r\n \r\n \t slices.py get_peer slice_authority %s site_authority %s" %(slice_authority,site_authority) + # check if we are already peered with this site_authority, if so - #peers = self.api.driver.GetPeers({}, ['peer_id', 'peername', 'shortname', 'hrn_root']) - #for peer_record in peers: - #names = [name.lower() for name in peer_record.values() if isinstance(name, StringTypes)] - #if site_authority in names: - #peer = peer_record - + peers = self.driver.GetPeers({'hrn':site_authority}) + print>>sys.stderr, " \r\n \r\n \t slices.py get_peer slice_authority %s site_authority %s" %(slice_authority,site_authority) + for peer_record in peers: + names = [name.lower() for name in peer_record.values() if isinstance(name, StringTypes)] + if site_authority in names: + peer = peer_record + print>>sys.stderr, " \r\n \r\n \t slices.py get_peer peer %s " %(peer) return peer def get_sfa_peer(self, xrn): -- 2.47.0