X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FMethods%2FGetPeerData.py;h=113fe86c9c7b4fdf39c52e494c96839c3a6f3966;hb=a74854dd38cb742b8fdc0d0cda7fff738a95312c;hp=7258384251e88f7287f672b3afd8bc9b328fd3fa;hpb=2197504226e266858256a5ae69bd8d8d8b886de2;p=plcapi.git diff --git a/PLC/Methods/GetPeerData.py b/PLC/Methods/GetPeerData.py index 7258384..113fe86 100644 --- a/PLC/Methods/GetPeerData.py +++ b/PLC/Methods/GetPeerData.py @@ -1,6 +1,7 @@ # # Thierry Parmentelat - INRIA # +# $Id$ import time @@ -16,6 +17,7 @@ from PLC.Keys import Key, Keys from PLC.Nodes import Node, Nodes from PLC.Persons import Person, Persons from PLC.Slices import Slice, Slices +from PLC.SliceAttributes import SliceAttributes class GetPeerData(Method): """ @@ -47,6 +49,10 @@ class GetPeerData(Method): node_fields = filter(lambda field: field not in \ ['boot_nonce', 'key', 'session', 'root_person_ids'], Node.fields) + nodes = Nodes(self.api, {'peer_id': None}, node_fields); + # filter out whitelisted nodes + nodes = [ n for n in nodes if not n['slice_ids_whitelist']] + person_fields = filter(lambda field: field not in \ ['password', 'verification_key', 'verification_expires'], @@ -54,12 +60,23 @@ class GetPeerData(Method): # XXX Optimize to return only those Persons, Keys, and Slices # necessary for slice creation on the calling peer's nodes. + + # filter out special person + persons = Persons(self.api, {'~email':[self.api.config.PLC_API_MAINTENANCE_USER, + self.api.config.PLC_ROOT_USER], + 'peer_id': None}, person_fields) + + # filter out system slices + system_slice_ids = SliceAttributes(self.api, {'name': 'system', 'value': '1'}).dict('slice_id') + slices = Slices(self.api, {'peer_id': None, + '~slice_id':system_slice_ids.keys()}) + result = { 'Sites': Sites(self.api, {'peer_id': None}), 'Keys': Keys(self.api, {'peer_id': None}), - 'Nodes': Nodes(self.api, {'peer_id': None}, node_fields), - 'Persons': Persons(self.api, {'peer_id': None}, person_fields), - 'Slices': Slices(self.api, {'peer_id': None}), + 'Nodes': nodes, + 'Persons': persons, + 'Slices': slices, } if isinstance(self.caller, Peer):