a slightly clearer version of GetSliceFamily
[plcapi.git] / PLC / Methods / UpdatePeer.py
index 5a298d9..cd4c1ec 100644 (file)
@@ -1,10 +1,11 @@
+from PLC.Faults import *
 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 (field, value): field in \
-             ['peername', 'peer_url', 'key', 'cacert']
+             ['peername', 'peer_url', 'key', 'cacert', 'shortname', 'hrn_root']
 
 class UpdatePeer(Method):
     """
@@ -34,12 +35,16 @@ class UpdatePeer(Method):
         peers = Peers(self.api, [peer_id_or_name])
         if not peers:
             raise PLCInvalidArgument, "No such peer"
-
         peer = peers[0]
+
+        if isinstance(self.caller, Peer):
+            if self.caller['peer_id'] != peer['peer_id']:
+                raise PLCPermissionDenied, "Not allowed to update specified peer"
+
         peer.update(peer_fields)
         peer.sync()
 
         # Log affected objects
-       self.object_ids = [peer['peer_id']]
+        self.event_objects = {'Peer': [peer['peer_id']]}
 
-       return 1
+        return 1