Skip to content
Snippets Groups Projects
Commit 2795466b authored by Iustin Pop's avatar Iustin Pop
Browse files

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.
parent 16103319
No related branches found
No related tags found
No related merge requests found
...@@ -42,7 +42,7 @@ import System.IO ...@@ -42,7 +42,7 @@ import System.IO
import System.Info import System.Info
import System import System
import Monad import Monad
import Text.Printf (printf) import Text.Printf (printf, hPrintf)
import qualified Data.Version import qualified Data.Version
import qualified Ganeti.HTools.Version as Version(version) import qualified Ganeti.HTools.Version as Version(version)
...@@ -151,13 +151,13 @@ loadExternalData opts = do ...@@ -151,13 +151,13 @@ loadExternalData opts = do
(case ldresult of (case ldresult of
Ok x -> return x Ok x -> return x
Bad s -> do 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 exitWith $ ExitFailure 1
) )
let (fix_msgs, fixed_nl) = Loader.checkData loaded_nl il let (fix_msgs, fixed_nl) = Loader.checkData loaded_nl il
unless (null fix_msgs || silent opts) $ do unless (null fix_msgs || silent opts) $ do
putStrLn "Warning: cluster has inconsistent data:" hPutStrLn stderr "Warning: cluster has inconsistent data:"
putStrLn . unlines . map (printf " - %s") $ fix_msgs hPutStrLn stderr . unlines . map (printf " - %s") $ fix_msgs
return (fixed_nl, il, csf) return (fixed_nl, il, csf)
...@@ -124,7 +124,7 @@ main = do ...@@ -124,7 +124,7 @@ main = do
request <- case (parseData input_data) of request <- case (parseData input_data) of
Bad err -> do Bad err -> do
putStrLn $ "Error: " ++ err hPutStrLn stderr $ "Error: " ++ err
exitWith $ ExitFailure 1 exitWith $ ExitFailure 1
Ok rq -> return rq Ok rq -> return rq
......
...@@ -34,7 +34,7 @@ import System.IO ...@@ -34,7 +34,7 @@ import System.IO
import System.Console.GetOpt import System.Console.GetOpt
import qualified System import qualified System
import Text.Printf (printf) import Text.Printf (printf, hPrintf)
import qualified Ganeti.HTools.Container as Container import qualified Ganeti.HTools.Container as Container
import qualified Ganeti.HTools.Cluster as Cluster import qualified Ganeti.HTools.Cluster as Cluster
...@@ -224,8 +224,8 @@ main = do ...@@ -224,8 +224,8 @@ main = do
m_dsk = optMdsk opts m_dsk = optMdsk opts
when (length offline_wrong > 0) $ do when (length offline_wrong > 0) $ do
printf "Wrong node name(s) set as offline: %s\n" hPrintf stderr "Wrong node name(s) set as offline: %s\n"
(commaJoin offline_wrong) (commaJoin offline_wrong)
exitWith $ ExitFailure 1 exitWith $ ExitFailure 1
let nm = Container.map (\n -> if elem (Node.idx n) offline_indices let nm = Container.map (\n -> if elem (Node.idx n) offline_indices
......
...@@ -33,7 +33,7 @@ import System.IO ...@@ -33,7 +33,7 @@ import System.IO
import System.Console.GetOpt import System.Console.GetOpt
import qualified System import qualified System
import Text.Printf (printf) import Text.Printf (printf, hPrintf)
import qualified Ganeti.HTools.Container as Container import qualified Ganeti.HTools.Container as Container
import qualified Ganeti.HTools.Cluster as Cluster import qualified Ganeti.HTools.Cluster as Cluster
...@@ -241,14 +241,15 @@ main = do ...@@ -241,14 +241,15 @@ main = do
hPutStrLn stderr "Error: this program doesn't take any arguments." hPutStrLn stderr "Error: this program doesn't take any arguments."
exitWith $ ExitFailure 1 exitWith $ ExitFailure 1
let verbose = optVerbose opts
(fixed_nl, il, csf) <- CLI.loadExternalData opts
printf "Spec RAM: %d\n" (optIMem opts) printf "Spec RAM: %d\n" (optIMem opts)
printf "Spec disk: %d\n" (optIDsk opts) printf "Spec disk: %d\n" (optIDsk opts)
printf "Spec CPUs: %d\n" (optIVCPUs opts) printf "Spec CPUs: %d\n" (optIVCPUs opts)
printf "Spec nodes: %d\n" (optINodes 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 num_instances = length $ Container.elems il
let offline_names = optOffline opts let offline_names = optOffline opts
...@@ -263,12 +264,12 @@ main = do ...@@ -263,12 +264,12 @@ main = do
m_dsk = optMdsk opts m_dsk = optMdsk opts
when (length offline_wrong > 0) $ do when (length offline_wrong > 0) $ do
printf "Error: Wrong node name(s) set as offline: %s\n" hPrintf stderr "Error: Wrong node name(s) set as offline: %s\n"
(commaJoin offline_wrong) (commaJoin offline_wrong)
exitWith $ ExitFailure 1 exitWith $ ExitFailure 1
when (req_nodes /= 1 && req_nodes /= 2) $ do 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 exitWith $ ExitFailure 1
let nm = Container.map (\n -> if elem (Node.idx n) offline_indices let nm = Container.map (\n -> if elem (Node.idx n) offline_indices
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment