X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FMethods%2FGetWhitelist.py;h=ca3bbae03c441265fc4c2c84d4fae51009454f0f;hb=1c4f6c43455b1e8225073e2f6a04ba03cfc5d84b;hp=852a7aff8dab2f14791166ed72516402517f6b73;hpb=f5cd72e35593c96b9996ab4e49674cccc7525c48;p=plcapi.git diff --git a/PLC/Methods/GetWhitelist.py b/PLC/Methods/GetWhitelist.py index 852a7af..ca3bbae 100644 --- a/PLC/Methods/GetWhitelist.py +++ b/PLC/Methods/GetWhitelist.py @@ -10,7 +10,7 @@ from PLC.Auth import Auth class GetWhitelist(Method): """ - Returns an array of structs containing details about the specified nodes + Returns an array of structs containing details about the specified nodes whitelists. If node_filter is specified and is an array of node identifiers or hostnames, or a struct of node attributes, only nodes matching the filter will be returned. If return_fields is specified, only the @@ -33,43 +33,43 @@ class GetWhitelist(Method): def call(self, auth, node_filter = None, return_fields = None): - - # Must query at least slice_ids_whitelist - if return_fields is not None: - added_fields = set(['slice_ids_whitelist']).difference(return_fields) - return_fields += added_fields - else: - added_fields =[] - # Get node information + # Must query at least slice_ids_whitelist + if return_fields is not None: + added_fields = set(['slice_ids_whitelist']).difference(return_fields) + return_fields += added_fields + else: + added_fields =[] + + # Get node information nodes = Nodes(self.api, node_filter, return_fields) - # Remove all nodes without a whitelist - for node in nodes[:]: - if not node['slice_ids_whitelist']: - nodes.remove(node) + # Remove all nodes without a whitelist + for node in nodes[:]: + if not node['slice_ids_whitelist']: + nodes.remove(node) # Remove admin only fields if not isinstance(self.caller, Person) or \ 'admin' not in self.caller['roles']: - slice_ids = set() - if self.caller: - slice_ids.update(self.caller['slice_ids']) - #if node has whitelist, make sure the user has a slice on the whitelist + slice_ids = set() + if self.caller: + slice_ids.update(self.caller['slice_ids']) + #if node has whitelist, make sure the user has a slice on the whitelist for node in nodes[:]: - if 'slice_ids_whitelist' in node and \ - node['slice_ids_whitelist'] and \ - not slice_ids.intersection(node['slice_ids_whitelist']): - nodes.remove(node) - for node in nodes: + if 'slice_ids_whitelist' in node and \ + node['slice_ids_whitelist'] and \ + not slice_ids.intersection(node['slice_ids_whitelist']): + nodes.remove(node) + for node in nodes: for field in ['boot_nonce', 'key', 'session', 'root_person_ids']: if field in node: del node[field] - # remove added fields if not specified - if added_fields: - for node in nodes: - for field in added_fields: - del node[field] + # remove added fields if not specified + if added_fields: + for node in nodes: + for field in added_fields: + del node[field] return nodes