not to remove a peer_object from the local registry when the sfa service on the remot...
[sfa.git] / sfa / server / sfa-clean-peer-records.py
index 8701f04..fbf3b68 100644 (file)
@@ -10,6 +10,8 @@ from sfa.util.config import Config
 from sfa.trust.hierarchy import Hierarchy
 from sfa.util.report import trace, error
 from sfa.server.registry import Registries
+from sfa.util.xmlrpcprotocol import ServerException
+import socket
 
 def main():
     config = Config()
@@ -38,14 +40,16 @@ def main():
     # get local peer records
     table = GeniTable()
     peer_records = table.find({'~peer_authority': None})
-
-    # get a list of authorities contained in the peer record list
     for peer_record in peer_records:
         peer_auth = peer_record['peer_authority']
         if peer_auth in registries:
-            records = registries[peer_auth].resolve(credential, peer_record['hrn'])
-            if not records:
-                table.remove(peer_record) 
-
+            try:
+                records = registries[peer_auth].resolve(credential, peer_record['hrn'])
+            except ServerException:    
+                # an exception will be thrown if the record doenst exist
+                # if so remove the record from the local registry
+                registries[sfa_api.hrn].remove_peer_object(credential, peer_record)
+            except:    
+               pass
 if __name__ == '__main__':
     main()