Also show it in hbal's verbose output (helpful for debugging).
---
 htools/Ganeti/HTools/Luxi.hs         |   16 ++++++++++------
 htools/Ganeti/HTools/Program/Hbal.hs |    5 +++--
 2 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/htools/Ganeti/HTools/Luxi.hs b/htools/Ganeti/HTools/Luxi.hs
index d360390..74dd984 100644
--- a/htools/Ganeti/HTools/Luxi.hs
+++ b/htools/Ganeti/HTools/Luxi.hs
@@ -199,11 +199,15 @@ parseNode ktg [ name, mtotal, mnode, mfree, dtotal, dfree
 parseNode _ v = fail ("Invalid node query result: " ++ show v)
 
 -- | Parses the cluster tags.
-getClusterTags :: JSValue -> Result [String]
-getClusterTags v = do
+getClusterData :: JSValue -> Result ([String], IPolicy)
+getClusterData (JSObject obj) = do
   let errmsg = "Parsing cluster info"
-  obj <- annotateResult errmsg $ asJSObject v
-  tryFromObj errmsg (fromJSObject obj) "tags"
+      obj' = fromJSObject obj
+  ctags <- tryFromObj errmsg obj' "tags"
+  cpol <- tryFromObj errmsg obj' "ipolicy"
+  return (ctags, cpol)
+
+getClusterData _ = Bad $ "Cannot parse cluster info, not a JSON record"
 
 -- | Parses the cluster groups.
 getGroups :: JSValue -> Result [(String, Group.Group)]
@@ -248,8 +252,8 @@ parseData (groups, nodes, instances, cinfo) = do
   let (node_names, node_idx) = assignIndices node_data
   inst_data <- instances >>= getInstances node_names
   let (_, inst_idx) = assignIndices inst_data
-  ctags <- cinfo >>= getClusterTags
-  return (ClusterData group_idx node_idx inst_idx ctags defIPolicy)
+  (ctags, cpol) <- cinfo >>= getClusterData
+  return (ClusterData group_idx node_idx inst_idx ctags cpol)
 
 -- | Top level function for data loading.
 loadData :: String -- ^ Unix socket to use as source
diff --git a/htools/Ganeti/HTools/Program/Hbal.hs 
b/htools/Ganeti/HTools/Program/Hbal.hs
index 758b890..689e8aa 100644
--- a/htools/Ganeti/HTools/Program/Hbal.hs
+++ b/htools/Ganeti/HTools/Program/Hbal.hs
@@ -351,10 +351,11 @@ main = do
       shownodes = optShowNodes opts
       showinsts = optShowInsts opts
 
-  ini_cdata@(ClusterData gl fixed_nl ilf ctags _) <- loadExternalData opts
+  ini_cdata@(ClusterData gl fixed_nl ilf ctags ipol) <- loadExternalData opts
 
-  when (verbose > 1) $
+  when (verbose > 1) $ do
        putStrLn $ "Loaded cluster tags: " ++ intercalate "," ctags
+       putStrLn $ "Loaded cluster ipolicy: " ++ show ipol
 
   nlf <- setNodeStatus opts fixed_nl
   checkCluster verbose nlf ilf
-- 
1.7.3.1

Reply via email to