X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=inline;f=PLC%2FMethods%2FGetPeers.py;h=a324de5e80b35398a1b9b39c7e8ca5a6312c720a;hb=286cdfc25f6ef8fd3e0ed59a175bcf801b14038a;hp=b7509b00afb6524e2b70ec8b762dda0a6ae061ce;hpb=d4c363a3ee55334eacd91f303adf6ecc20055d1e;p=plcapi.git diff --git a/PLC/Methods/GetPeers.py b/PLC/Methods/GetPeers.py index b7509b0..a324de5 100644 --- a/PLC/Methods/GetPeers.py +++ b/PLC/Methods/GetPeers.py @@ -1,3 +1,4 @@ +# $Id# # # Thierry Parmentelat - INRIA # @@ -8,6 +9,7 @@ from PLC.Parameter import Parameter, Mixed from PLC.Filter import Filter from PLC.Auth import Auth +from PLC.Persons import Person from PLC.Peers import Peer, Peers class GetPeers (Method): @@ -19,7 +21,7 @@ class GetPeers (Method): specified details will be returned. """ - roles = ['admin'] + roles = ['admin', 'node','pi','user'] accepts = [ Auth(), @@ -32,4 +34,15 @@ class GetPeers (Method): returns = [Peer.fields] def call (self, auth, peer_filter = None, return_fields = None): - return Peers(self.api, peer_filter, return_fields) + + peers = Peers(self.api, peer_filter, return_fields) + + # Remove admin only fields + if not isinstance(self.caller, Person) or \ + 'admin' not in self.caller['roles']: + for peer in peers: + for field in ['key', 'cacert']: + if field in peer: + del peer[field] + + return peers