X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FMethods%2FGetPeers.py;h=dca352a9c39c24cfcf495e8f395433224abddbcc;hb=c3fc031363ac794e6b1245c6ed1a05329cba69c9;hp=3002e82a52ea77bb2770492334d5095c0adb9254;hpb=8e199f468aaf48ac1dad3090c149711f38aa6c38;p=plcapi.git diff --git a/PLC/Methods/GetPeers.py b/PLC/Methods/GetPeers.py index 3002e82..dca352a 100644 --- a/PLC/Methods/GetPeers.py +++ b/PLC/Methods/GetPeers.py @@ -1,6 +1,6 @@ # # Thierry Parmentelat - INRIA -# +# from PLC.Faults import * from PLC.Method import Method @@ -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,19 +20,28 @@ class GetPeers (Method): specified details will be returned. """ - roles = ['admin'] + roles = ['admin', 'node','pi','user'] accepts = [ Auth(), Mixed([Mixed(Peer.fields['peer_id'], Peer.fields['peername'])], Filter(Peer.fields)), - Parameter([str], "List of fields to return", nullok = True) + Parameter([str], "List of fields to return", nullok = True) ] returns = [Peer.fields] - event_type = 'Get' - object_type = 'Peer' 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