-import os
-
from PLC.Faults import *
from PLC.Method import Method
from PLC.Parameter import Parameter, Mixed
class GetNodes(Method):
"""
- Return an array of dictionaries containing details about the
- specified nodes.
-
- If return_fields is specified, only the specified fields will be
- returned. Only admins may retrieve certain fields. Otherwise, the
- default set of fields returned is:
+ Return an array of structs containing details about nodes. If
+ node_id_or_hostname_list is specified, only the specified nodes
+ will be queried.
+ Some fields may only be viewed by admins.
"""
roles = ['admin', 'pi', 'user', 'tech']
returns = [Node.fields]
- def __init__(self, *args, **kwds):
- Method.__init__(self, *args, **kwds)
- # Update documentation with list of default fields returned
- self.__doc__ += os.linesep.join(Node.fields.keys())
-
def call(self, auth, node_id_or_hostname_list = None):
# Authenticated function
assert self.caller is not None
# Remove admin only fields
if 'admin' not in self.caller['roles']:
for key in ['boot_nonce', 'key', 'session', 'root_person_ids']:
- valid_fields.remove(key)
+ if key in valid_fields:
+ valid_fields.remove(key)
# Get node information
nodes = Nodes(self.api, node_id_or_hostname_list).values()
- # turn each node into a real dict.
+ # Turn each node into a real dict
nodes = [dict(node) for node in nodes]
return nodes