Added GetPeers and get_peer functions.
authorSandrine Avakian <sandrine.avakian@inria.fr>
Mon, 16 Jan 2012 14:10:40 +0000 (15:10 +0100)
committerSandrine Avakian <sandrine.avakian@inria.fr>
Mon, 16 Jan 2012 14:10:40 +0000 (15:10 +0100)
sfa/senslab/parsing.py
sfa/senslab/slabdriver.py
sfa/senslab/slabslices.py

index 0a5092a..c26f865 100644 (file)
@@ -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)
                               
                         
                         
index bf28eed..b4c3e97 100644 (file)
@@ -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):
         
index 5e7fc95..5853676 100644 (file)
@@ -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):