X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FMethods%2FGetPeers.py;fp=PLC%2FMethods%2FGetPeers.py;h=e93fe363ccf9fd8eea631c44e44cfcfa2eb9b35d;hb=abef31240c9e9e498928da73f6db8cbe0ecede60;hp=235c27cb9d3dac67c0fced893380c6f744e8aa92;hpb=a0e131a2893c75df786c94997370b01cb623dee0;p=plcapi.git diff --git a/PLC/Methods/GetPeers.py b/PLC/Methods/GetPeers.py index 235c27c..e93fe36 100644 --- a/PLC/Methods/GetPeers.py +++ b/PLC/Methods/GetPeers.py @@ -8,6 +8,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 +20,7 @@ class GetPeers (Method): specified details will be returned. """ - roles = ['admin', 'node'] + roles = ['admin', 'node','pi','user'] accepts = [ Auth(), @@ -32,4 +33,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