diff --git a/Ganeti/HTools/Cluster.hs b/Ganeti/HTools/Cluster.hs index 6877f6c91b23aad728a33f66c2c24208a0c91fe3..5bba46e1401e5c71dd0cfa57b25d9292fb41101a 100644 --- a/Ganeti/HTools/Cluster.hs +++ b/Ganeti/HTools/Cluster.hs @@ -643,8 +643,10 @@ printNodes ktn nl = snl' = map (\ n -> ((fromJust $ lookup (Node.idx n) ktn), n)) snl m_name = maximum . (map length) . fst . unzip $ snl' helper = Node.list m_name - header = printf "%2s %-*s %5s %5s %5s %5s %5s %5s %3s %3s %7s %7s" - " F" m_name "Name" "t_mem" "n_mem" "f_mem" "r_mem" + header = printf + "%2s %-*s %5s %5s %5s %5s %5s %5s %5s %5s %3s %3s %7s %7s" + " F" m_name "Name" + "t_mem" "n_mem" "i_mem" "x_mem" "f_mem" "r_mem" "t_dsk" "f_dsk" "pri" "sec" "p_fmem" "p_fdsk" in unlines $ (header:map (uncurry helper) snl') diff --git a/Ganeti/HTools/Node.hs b/Ganeti/HTools/Node.hs index 3ecf6852553233a57661b172075749d5977715cc..c18b21b24ebee316d1dd6cbe0c243519447f9b21 100644 --- a/Ganeti/HTools/Node.hs +++ b/Ganeti/HTools/Node.hs @@ -217,10 +217,15 @@ list mname n t = dp = p_dsk t off = offline t fn = failN1 t + tmem = t_mem t + nmem = n_mem t + xmem = x_mem t + fmem = f_mem t + imem = (truncate tmem) - nmem - xmem - fmem in - printf " %c %-*s %5.0f %5d %5d %5d %5.0f %5d %3d %3d %.5f %.5f" + printf " %c %-*s %5.0f %5d %5d %5d %5d %5d %5.0f %5d %3d %3d %.5f %.5f" (if off then '-' else if fn then '*' else ' ') - mname n (t_mem t) (n_mem t) (f_mem t) (r_mem t) + mname n tmem nmem imem xmem fmem (r_mem t) ((t_dsk t) / 1024) ((f_dsk t) `div` 1024) (length pl) (length sl) mp dp diff --git a/hbal.hs b/hbal.hs index b34cd52473a7ac6085432e4f42e0a7f94ae511c9..e97b5127fed4ded6f8de8c2be2ca85a6254c2c70 100644 --- a/hbal.hs +++ b/hbal.hs @@ -153,6 +153,11 @@ main = do readData getInstances host) (loaded_nl, il, csf, ktn, kti) <- liftM2 Cluster.loadData node_data inst_data + let (fix_msgs, fixed_nl) = Cluster.checkData loaded_nl il ktn kti + + unless (null fix_msgs) $ do + putStrLn "Warning: cluster has inconsistent data:" + putStrLn . unlines . map (\s -> printf " - %s" s) $ fix_msgs let offline_names = optOffline opts offline_indices = fst . unzip . @@ -160,7 +165,7 @@ main = do let nl = Container.map (\n -> if elem (Node.idx n) offline_indices then Node.setOffline n True - else n) loaded_nl + else n) fixed_nl unless oneline $ printf "Loaded %d nodes, %d instances\n" (Container.size nl) diff --git a/hn1.hs b/hn1.hs index c452c959eff19ef93ba031ac8cc91224bdbcd15a..4140674dff6d49390ebac48d9f8a4be148f0447a 100644 --- a/hn1.hs +++ b/hn1.hs @@ -137,7 +137,13 @@ main = do host -> (readData getNodes host, readData getInstances host) - (nl, il, csf, ktn, kti) <- liftM2 Cluster.loadData node_data inst_data + (loaded_nl, il, csf, ktn, kti) <- liftM2 Cluster.loadData node_data inst_data + + let (fix_msgs, nl) = Cluster.checkData loaded_nl il ktn kti + + unless (null fix_msgs) $ do + putStrLn "Warning: cluster has inconsistent data:" + putStrLn . unlines . map (\s -> printf " - %s" s) $ fix_msgs printf "Loaded %d nodes, %d instances\n" (Container.size nl) diff --git a/hscan.hs b/hscan.hs index 8a3a64e489d6b47ac84392771391611cf51b1bc8..634cbe52c677f5a5fcb8f09927a529c70aad4b8e 100644 --- a/hscan.hs +++ b/hscan.hs @@ -162,8 +162,9 @@ main = do (nl, il, csf, ktn, kti) = Cluster.loadData ndata idata putStrLn $ printCluster nl il ktn kti - when (optShowNodes opts) $ - putStr $ Cluster.printNodes ktn nl + when (optShowNodes opts) $ do + let (_, fix_nl) = Cluster.checkData nl il ktn kti + putStr $ Cluster.printNodes ktn fix_nl let ndata = serializeNodes nl csf ktn idata = serializeInstances il csf ktn kti oname = odir </> name