The String parameter to 'nodeLiveFieldExtract' is the query2 field
name, not the RPC-layer field name. Grrr for not having a real data
type for this.

Furthermore, we add some safety check that we don't return JSNull via
rsNormal…

Signed-off-by: Iustin Pop <[email protected]>
---
 htools/Ganeti/Query/Node.hs |   38 ++++++++++++++++++++------------------
 1 file changed, 20 insertions(+), 18 deletions(-)

diff --git a/htools/Ganeti/Query/Node.hs b/htools/Ganeti/Query/Node.hs
index ded9979..0630754 100644
--- a/htools/Ganeti/Query/Node.hs
+++ b/htools/Ganeti/Query/Node.hs
@@ -72,29 +72,31 @@ nodeLiveFieldsDefs =
 -- the RPC result.
 nodeLiveFieldExtract :: String -> RpcResultNodeInfo -> J.JSValue
 nodeLiveFieldExtract "bootid" res =
-    J.showJSON $ rpcResNodeInfoBootId res
-nodeLiveFieldExtract "cpu_nodes" res =
-    jsonHead (rpcResNodeInfoHvInfo res) hvInfoCpuNodes
-nodeLiveFieldExtract "cpu_sockets" res =
-    jsonHead (rpcResNodeInfoHvInfo res) hvInfoCpuSockets
-nodeLiveFieldExtract "cpu_total" res =
-    jsonHead (rpcResNodeInfoHvInfo res) hvInfoCpuTotal
-nodeLiveFieldExtract "vg_free" res =
-    jsonHead (rpcResNodeInfoVgInfo res) vgInfoVgFree
-nodeLiveFieldExtract "vg_size" res =
-    jsonHead (rpcResNodeInfoVgInfo res) vgInfoVgSize
-nodeLiveFieldExtract "memory_free" res =
-    jsonHead (rpcResNodeInfoHvInfo res) hvInfoMemoryFree
-nodeLiveFieldExtract "memory_dom0" res =
-    jsonHead (rpcResNodeInfoHvInfo res) hvInfoMemoryDom0
-nodeLiveFieldExtract "memory_total" res =
-    jsonHead (rpcResNodeInfoHvInfo res) hvInfoMemoryTotal
+  J.showJSON $ rpcResNodeInfoBootId res
+nodeLiveFieldExtract "cnodes" res =
+  jsonHead (rpcResNodeInfoHvInfo res) hvInfoCpuNodes
+nodeLiveFieldExtract "csockets" res =
+  jsonHead (rpcResNodeInfoHvInfo res) hvInfoCpuSockets
+nodeLiveFieldExtract "ctotal" res =
+  jsonHead (rpcResNodeInfoHvInfo res) hvInfoCpuTotal
+nodeLiveFieldExtract "dfree" res =
+  jsonHead (rpcResNodeInfoVgInfo res) vgInfoVgFree
+nodeLiveFieldExtract "dtotal" res =
+  jsonHead (rpcResNodeInfoVgInfo res) vgInfoVgSize
+nodeLiveFieldExtract "mfree" res =
+  jsonHead (rpcResNodeInfoHvInfo res) hvInfoMemoryFree
+nodeLiveFieldExtract "mnode" res =
+  jsonHead (rpcResNodeInfoHvInfo res) hvInfoMemoryDom0
+nodeLiveFieldExtract "mtotal" res =
+  jsonHead (rpcResNodeInfoHvInfo res) hvInfoMemoryTotal
 nodeLiveFieldExtract _ _ = J.JSNull
 
 -- | Helper for extracting field from RPC result.
 nodeLiveRpcCall :: FieldName -> NodeRuntime -> Node -> ResultEntry
 nodeLiveRpcCall fname (Right res) _ =
-    rsNormal (nodeLiveFieldExtract fname res)
+  case nodeLiveFieldExtract fname res of
+    J.JSNull -> rsNoData
+    x -> rsNormal x
 nodeLiveRpcCall _ (Left err) _ =
     ResultEntry (rpcErrorToStatus err) Nothing
 
-- 
1.7.10.4

Reply via email to