svn keywords
[plcapi.git] / PLC / Methods / BootGetNodeDetails.py
index 520d80d..ae338f9 100644 (file)
@@ -1,8 +1,10 @@
+# $Id$
+# $URL$
 from PLC.Method import Method
 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):
@@ -11,12 +13,15 @@ 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'],
         }
 
@@ -24,7 +29,8 @@ class BootGetNodeDetails(Method):
         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
@@ -34,8 +40,18 @@ class BootGetNodeDetails(Method):
 
         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