svn keywords
[plcapi.git] / PLC / Methods / AddPeer.py
index f636add..e4aef4c 100644 (file)
@@ -1,34 +1,38 @@
-from PLC.Faults import *
+# $Id$
+# $URL$
+#
+# Thierry Parmentelat - INRIA
+# 
+
 from PLC.Method import Method
 from PLC.Parameter import Parameter, Mixed
 from PLC.Auth import Auth
-
 from PLC.Peers import Peer, Peers
 
-can_update = lambda(k,v): k in ['peername','peer_url','person_id']
+can_update = lambda (field, value): field in \
+             ['peername', 'peer_url', 'key', 'cacert', 'shortname', 'hrn_root']
 
-class AddPeer (Method):
+class AddPeer(Method):
     """
-    Creates a peer entry in the database and returns its id
-    Temporarily, requires to provide a person_id 
-    this is used to store the credentials that we'll
-    use when connecting to the peer's API
+    Adds a new peer.
+
+    Returns the new peer_id (> 0) if successful, faults otherwise.
     """
 
     roles = ['admin']
-    peer_fields = dict( [x for x in Peer.fields.iteritems() if can_update(x)] )
 
-    accepts = [ Auth(),
-               peer_fields
-               ]
+    peer_fields = dict(filter(can_update, Peer.fields.items()))
 
-    returns = Parameter (int, "peer_id")
+    accepts = [
+        Auth(),
+        peer_fields
+        ]
 
-    def call (self, auth, fields):
+    returns = Parameter(int, "New peer_id (> 0) if successful")
 
-       peer = Peer (self.api,fields);
+    def call(self, auth, peer_fields):
+       peer = Peer(self.api, peer_fields);
        peer.sync()
-       
-       return peer['peer_id']
-       
+       self.event_objects = {'Peer': [peer['peer_id']]}
 
+       return peer['peer_id']