X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FMethods%2FGetNodeGroups.py;h=f4927efc5db887a2528cfd84785a263f8799b6a9;hb=refs%2Fheads%2Fplanetlab-4_0-branch;hp=ffd6eb33ba97ee7cc60b929989454f435218af78;hpb=40d33ca5c3e174e3ac07e3519c07e43825b4c797;p=plcapi.git diff --git a/PLC/Methods/GetNodeGroups.py b/PLC/Methods/GetNodeGroups.py index ffd6eb3..f4927ef 100644 --- a/PLC/Methods/GetNodeGroups.py +++ b/PLC/Methods/GetNodeGroups.py @@ -1,34 +1,30 @@ from PLC.Faults import * from PLC.Method import Method from PLC.Parameter import Parameter, Mixed -from PLC.Auth import PasswordAuth +from PLC.Filter import Filter +from PLC.Auth import Auth from PLC.NodeGroups import NodeGroup, NodeGroups class GetNodeGroups(Method): """ - Returns an array of structs containing details about all node - groups. If nodegroup_id_or_name_list is specified, only the - specified node groups will be queried. + Returns an array of structs containing details about node groups. + If nodegroup_filter is specified and is an array of node group + identifiers or names, or a struct of node group attributes, only + node groups matching the filter will be returned. If return_fields + is specified, only the specified details will be returned. """ - roles = ['admin', 'pi', 'user', 'tech'] + roles = ['admin', 'pi', 'user', 'tech', 'node', 'anonymous'] accepts = [ - PasswordAuth(), - [Mixed(NodeGroup.fields['nodegroup_id'], - NodeGroup.fields['name'])] + Auth(), + Mixed([Mixed(NodeGroup.fields['nodegroup_id'], + NodeGroup.fields['name'])], + Filter(NodeGroup.fields)), + Parameter([str], "List of fields to return", nullok = True) ] returns = [NodeGroup.fields] - def call(self, auth, nodegroup_id_or_name_list = None): - # Get node group details - nodegroups = NodeGroups(self.api, nodegroup_id_or_name_list).values() - - # Filter out undesired or None fields (XML-RPC cannot marshal - # None) and turn each nodegroup into a real dict. - valid_return_fields_only = lambda (key, value): value is not None - nodegroups = [dict(filter(valid_return_fields_only, nodegroup.items())) \ - for nodegroup in nodegroups] - - return nodegroups + def call(self, auth, nodegroup_filter = None, return_fields = None): + return NodeGroups(self.api, nodegroup_filter, return_fields)