From 2795466bba6e4dbf092587b79cb7cc90b1fa776b Mon Sep 17 00:00:00 2001 From: Iustin Pop <iustin@google.com> Date: Tue, 7 Jul 2009 10:32:52 +0200 Subject: [PATCH] Show errors on stderr instead of stdout Currently many of the exit and warning conditions mistakenly display error messages on stdout, which makes parsing the output of programs harder. This patch attempts to fix such occurrences. --- Ganeti/HTools/CLI.hs | 8 ++++---- hail.hs | 2 +- hbal.hs | 6 +++--- hspace.hs | 15 ++++++++------- 4 files changed, 16 insertions(+), 15 deletions(-) diff --git a/Ganeti/HTools/CLI.hs b/Ganeti/HTools/CLI.hs index 972d4a2fa..d625e2fa0 100644 --- a/Ganeti/HTools/CLI.hs +++ b/Ganeti/HTools/CLI.hs @@ -42,7 +42,7 @@ import System.IO import System.Info import System import Monad -import Text.Printf (printf) +import Text.Printf (printf, hPrintf) import qualified Data.Version import qualified Ganeti.HTools.Version as Version(version) @@ -151,13 +151,13 @@ loadExternalData opts = do (case ldresult of Ok x -> return x Bad s -> do - printf "Error: failed to load data. Details:\n%s\n" s + hPrintf stderr "Error: failed to load data. Details:\n%s\n" s exitWith $ ExitFailure 1 ) let (fix_msgs, fixed_nl) = Loader.checkData loaded_nl il unless (null fix_msgs || silent opts) $ do - putStrLn "Warning: cluster has inconsistent data:" - putStrLn . unlines . map (printf " - %s") $ fix_msgs + hPutStrLn stderr "Warning: cluster has inconsistent data:" + hPutStrLn stderr . unlines . map (printf " - %s") $ fix_msgs return (fixed_nl, il, csf) diff --git a/hail.hs b/hail.hs index 4befe386d..d216a46e3 100644 --- a/hail.hs +++ b/hail.hs @@ -124,7 +124,7 @@ main = do request <- case (parseData input_data) of Bad err -> do - putStrLn $ "Error: " ++ err + hPutStrLn stderr $ "Error: " ++ err exitWith $ ExitFailure 1 Ok rq -> return rq diff --git a/hbal.hs b/hbal.hs index 7e5ab282d..15333462e 100644 --- a/hbal.hs +++ b/hbal.hs @@ -34,7 +34,7 @@ import System.IO import System.Console.GetOpt import qualified System -import Text.Printf (printf) +import Text.Printf (printf, hPrintf) import qualified Ganeti.HTools.Container as Container import qualified Ganeti.HTools.Cluster as Cluster @@ -224,8 +224,8 @@ main = do m_dsk = optMdsk opts when (length offline_wrong > 0) $ do - printf "Wrong node name(s) set as offline: %s\n" - (commaJoin offline_wrong) + hPrintf stderr "Wrong node name(s) set as offline: %s\n" + (commaJoin offline_wrong) exitWith $ ExitFailure 1 let nm = Container.map (\n -> if elem (Node.idx n) offline_indices diff --git a/hspace.hs b/hspace.hs index 6ad59ccbc..ae83c3515 100644 --- a/hspace.hs +++ b/hspace.hs @@ -33,7 +33,7 @@ import System.IO import System.Console.GetOpt import qualified System -import Text.Printf (printf) +import Text.Printf (printf, hPrintf) import qualified Ganeti.HTools.Container as Container import qualified Ganeti.HTools.Cluster as Cluster @@ -241,14 +241,15 @@ main = do hPutStrLn stderr "Error: this program doesn't take any arguments." exitWith $ ExitFailure 1 + let verbose = optVerbose opts + + (fixed_nl, il, csf) <- CLI.loadExternalData opts + printf "Spec RAM: %d\n" (optIMem opts) printf "Spec disk: %d\n" (optIDsk opts) printf "Spec CPUs: %d\n" (optIVCPUs opts) printf "Spec nodes: %d\n" (optINodes opts) - let verbose = optVerbose opts - - (fixed_nl, il, csf) <- CLI.loadExternalData opts let num_instances = length $ Container.elems il let offline_names = optOffline opts @@ -263,12 +264,12 @@ main = do m_dsk = optMdsk opts when (length offline_wrong > 0) $ do - printf "Error: Wrong node name(s) set as offline: %s\n" - (commaJoin offline_wrong) + hPrintf stderr "Error: Wrong node name(s) set as offline: %s\n" + (commaJoin offline_wrong) exitWith $ ExitFailure 1 when (req_nodes /= 1 && req_nodes /= 2) $ do - printf "Error: Invalid required nodes (%d)\n" req_nodes + hPrintf stderr "Error: Invalid required nodes (%d)\n" req_nodes exitWith $ ExitFailure 1 let nm = Container.map (\n -> if elem (Node.idx n) offline_indices -- GitLab