from PLC.Parameter import Parameter, Mixed
from PLC.Auth import BootAuth
from PLC.Nodes import Node, Nodes
-from PLC.NodeNetworks import NodeNetwork, NodeNetworks
+from PLC.Interfaces import Interface, Interfaces
from PLC.Sessions import Session, Sessions
class BootGetNodeDetails(Method):
node session value.
"""
+ roles = ['node']
+
accepts = [BootAuth()]
+
returns = {
'hostname': Node.fields['hostname'],
'boot_state': Node.fields['boot_state'],
'model': Node.fields['model'],
- 'networks': [NodeNetwork.fields],
+ 'networks': [Interface.fields],
'session': Session.fields['session_id'],
}
- def call(self, auth, update_fields):
+ def call(self, auth):
details = {
'hostname': self.caller['hostname'],
'boot_state': self.caller['boot_state'],
- 'model': self.caller['model'],
+ # XXX Boot Manager cannot unmarshal None
+ 'model': self.caller['model'] or "",
}
# Generate a new session value
details['session'] = session['session_id']
- if self.caller['nodenetwork_ids']:
- details['networks'] = NodeNetworks(self.api, self.caller['nodenetwork_ids']).values()
-
+ if self.caller['interface_ids']:
+ details['networks'] = Interfaces(self.api, self.caller['interface_ids'])
+ # XXX Boot Manager cannot unmarshal None
+ for network in details['networks']:
+ for field in network:
+ if network[field] is None:
+ if isinstance(network[field], (int, long)):
+ network[field] = -1
+ else:
+ network[field] = ""
+
+ self.message = "Node request boot_state (%s) and networks" % \
+ (details['boot_state'])
return details
-