X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FMethods%2FGetPeerData.py;h=113fe86c9c7b4fdf39c52e494c96839c3a6f3966;hb=a74854dd38cb742b8fdc0d0cda7fff738a95312c;hp=08ed4bc542d425da1b2a52ef14f6602f1661f168;hpb=14cdfc43531c31f3a7e2c71fab24fc4b58868cdf;p=plcapi.git diff --git a/PLC/Methods/GetPeerData.py b/PLC/Methods/GetPeerData.py index 08ed4bc..113fe86 100644 --- a/PLC/Methods/GetPeerData.py +++ b/PLC/Methods/GetPeerData.py @@ -1,6 +1,7 @@ # # Thierry Parmentelat - INRIA # +# $Id$ import time @@ -15,9 +16,8 @@ from PLC.Sites import Site, Sites from PLC.Keys import Key, Keys from PLC.Nodes import Node, Nodes from PLC.Persons import Person, Persons -from PLC.SliceAttributeTypes import SliceAttributeType, SliceAttributeTypes -from PLC.SliceAttributes import SliceAttribute, SliceAttributes from PLC.Slices import Slice, Slices +from PLC.SliceAttributes import SliceAttributes class GetPeerData(Method): """ @@ -49,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'], @@ -56,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):