everything ready to receive foreign slices
[plcapi.git] / PLC / Methods / RefreshPeer.py
index 3657e3b..4a5abd0 100644 (file)
@@ -11,7 +11,7 @@ from PLC.Auth import Auth
 
 from PLC.Peers import Peer, Peers
 from PLC.Persons import Person, Persons
-from PLC.ForeignNodes import ForeignNode, ForeignNodes
+##from PLC.ForeignNodes import ForeignNode, ForeignNodes
 
 
 class RefreshPeer(Method):
@@ -19,7 +19,10 @@ class RefreshPeer(Method):
     Query a peer PLC for its list of nodes, and refreshes
     the local database accordingly
     
-    Returns the number of new nodes from that peer - may be negative
+    Returns a tuple containing
+    (*) the peer name
+    (*) the number of new nodes from that peer - may be negative
+    (*) the number of new slices from that peer - may be negative
     """
     
     roles = ['admin']
@@ -33,16 +36,18 @@ class RefreshPeer(Method):
        
        ### retrieve peer info
        peers = Peers (self.api,[peer_id])
-        if not peers:
+        try:
+            peer=peers[0]
+        except:
             raise PLCInvalidArgument,'no such peer_id:%d'%peer_id
-        peer=peers[0]
        
        ### retrieve account info
        person_id = peer['person_id']
        persons = Persons (self.api,[person_id])
-        if not persons:
+        try:
+            person = persons[0]
+        except:
             raise PLCInvalidArgument,'no such person_id:%d'%person_id
-       person = persons[0]
        
        ### build up foreign auth
        auth={ 'Username': person['email'],
@@ -51,22 +56,15 @@ class RefreshPeer(Method):
               'Role' : 'admin' }
 
        ## connect to the peer's API
-        url=peer['peer_url']+"/PLCAPI/"
+        url=peer['peer_url']
         print 'url=',url
        apiserver = xmlrpclib.Server (url)
        print 'auth=',auth
-       current_peer_nodes = apiserver.GetNodes(auth)
-        print 'current_peer_nodes',current_peer_nodes
 
-       ## manual feed for tests
-        n11={'session': None, 'slice_ids': [], 'nodegroup_ids': [], 'last_updated': 1162884349, 'version': None, 'nodenetwork_ids': [], 'boot_state': 'inst', 'hostname': 'n11.plc1.org', 'site_id': 1, 'ports': None, 'pcu_ids': [], 'boot_nonce': None, 'node_id': 1, 'root_person_ids': [], 'key': None, 'date_created': 1162884349, 'model': None, 'conf_file_ids': [], 'ssh_rsa_key': None}
-        n12={'session': None, 'slice_ids': [], 'nodegroup_ids': [], 'last_updated': 1162884349, 'version': None, 'nodenetwork_ids': [], 'boot_state': 'inst', 'hostname': 'n12.plc1.org', 'site_id': 1, 'ports': None, 'pcu_ids': [], 'boot_nonce': None, 'node_id': 1, 'root_person_ids': [], 'key': None, 'date_created': 1162884349, 'model': None, 'conf_file_ids': [], 'ssh_rsa_key': None}
-        n21={'session': None, 'slice_ids': [], 'nodegroup_ids': [], 'last_updated': 1162884349, 'version': None, 'nodenetwork_ids': [], 'boot_state': 'boot', 'hostname': 'n21.plc2.org', 'site_id': 1, 'ports': None, 'pcu_ids': [], 'boot_nonce': None, 'node_id': 1, 'root_person_ids': [], 'key': None, 'date_created': 1162884349, 'model': None, 'conf_file_ids': [], 'ssh_rsa_key': None}
-        n22={'session': None, 'slice_ids': [], 'nodegroup_ids': [], 'last_updated': 1162884349, 'version': None, 'nodenetwork_ids': [], 'boot_state': 'boot', 'hostname': 'n22.plc2.org', 'site_id': 1, 'ports': None, 'pcu_ids': [], 'boot_nonce': None, 'node_id': 1, 'root_person_ids': [], 'key': None, 'date_created': 1162884349, 'model': None, 'conf_file_ids': [], 'ssh_rsa_key': None}
-
-#        current_peer_nodes = []
-#        print 'current_peer_nodes',current_peer_nodes
-
-        nb_new_nodes = peer.refresh_nodes(current_peer_nodes)
-
-       return nb_new_nodes
+       peer_get_nodes = apiserver.GetNodes(auth)
+        nb_new_nodes = peer.refresh_nodes(peer_get_nodes)
+        
+        peer_get_slices = apiserver.GetSlices(auth)
+        nb_new_slices = peer.refresh_slices(peer_get_slices)
+        
+       return (self.api.config.PLC_NAME,nb_new_nodes,nb_new_slices)