X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FMethods%2FGetNodes.py;h=bc7dc7e33f9ce2b9c36efdd386689c5e314d26ab;hb=30a1b37ac8928f233815814a38a8e156957d1d5e;hp=d36b3ca7e2381997ef20e9fa631624db610777ce;hpb=a5d87c50303cb3b022eb7da1813cee5f2a02d2f0;p=plcapi.git diff --git a/PLC/Methods/GetNodes.py b/PLC/Methods/GetNodes.py index d36b3ca..bc7dc7e 100644 --- a/PLC/Methods/GetNodes.py +++ b/PLC/Methods/GetNodes.py @@ -87,6 +87,10 @@ node_fields = Node.fields.copy() node_fields['nodenetwork_ids']=Parameter([int], "Legacy version of interface_ids") class v42GetNodes(v43GetNodes): + """ + Legacy wrapper for v43GetNodes. + """ + accepts = [ Auth(), Mixed([Mixed(Node.fields['node_id'], @@ -100,16 +104,33 @@ class v42GetNodes(v43GetNodes): def call(self, auth, node_filter = None, return_fields = None): # convert nodenetwork_ids -> interface_ids - if node_filter <> None and \ - node_filter.has_key('nodenetwork_ids') and \ - not node_filter.has_key('interface_ids'): - node_filter['interface_ids']=node_filter['nodenetwork_ids'] + if isinstance(node_filter, dict): + if node_filter.has_key('nodenetwork_ids'): + interface_ids = node_filter.pop('nodenetwork_ids') + if not node_filter.has_key('interface_ids'): + node_filter['interface_ids']=interface_ids + + if isinstance(return_fields, list): + if 'nodenetwork_ids' in return_fields: + return_fields.remove('nodenetwork_ids') + if 'interface_ids' not in return_fields: + return_fields.append('interface_ids') nodes = v43GetNodes.call(self,auth,node_filter,return_fields) - # add in a interface_ids -> nodenetwork_ids + # if interface_ids are present, then create a nodenetwork_ids mapping for node in nodes: if node.has_key('interface_ids'): node['nodenetwork_ids']=node['interface_ids'] return nodes -GetNodes = v42GetNodes +class GetNodes(v42GetNodes): + """ + Returns an array of structs containing details about nodes. 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 + specified details will be returned. + + Some fields may only be viewed by admins. + """ + pass