Since we don't have the data per design, UNAVAIL is appropriate here,
while NODATA is not.

The patch also adds a comment: if we extend the live fields list to
contain other data in the future, we need to reevaluate this solution.

This should fix issue 143. The listing now shows (node2==ofline,
node3==not vm_capable):

  Node     DTotal     DFree    MTotal     MNode     MFree Pinst Sinst
  node1    698.6G    630.5G     32.0G      1.0G     30.0G     8     7
  node2 (offline) (offline) (offline) (offline) (offline)     9     4
  node3 (unavail) (unavail) (unavail) (unavail) (unavail)     0     0
---
 lib/query.py |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/lib/query.py b/lib/query.py
index 8d8b667..f83e5c4 100644
--- a/lib/query.py
+++ b/lib/query.py
@@ -487,6 +487,7 @@ _NODE_SIMPLE_FIELDS = {
 
 
 #: Fields requiring talking to the node
+# Note that none of these are available for non-vm_capable nodes
 _NODE_LIVE_FIELDS = {
   "bootid": ("BootID", QFT_TEXT, "bootid"),
   "cnodes": ("CNodes", QFT_NUMBER, "cpu_nodes"),
@@ -577,6 +578,9 @@ def _GetLiveNodeField(field, kind, ctx, node):
   if node.offline:
     return _FS_OFFLINE
 
+  if not node.vm_capable:
+    return _FS_UNAVAIL
+
   if not ctx.curlive_data:
     return _FS_NODATA
 
-- 
1.7.3.1

Reply via email to