This module holds the common cli-related functions for the binaries,
separated into this module since Utils.hs is used in many other places
-and this is more I/O oriented.
+and this is more IO oriented.
-}
module Ganeti.HTools.CLI
(
parseOpts
+ , parseEnv
, showVersion
+ , shTemplate
) where
import System.Console.GetOpt
+import System.Posix.Env
import System.IO
import System.Info
import System
where header = printf "%s %s\nUsage: %s [OPTION...]"
progname Version.version progname
+-- | Parse the environment and return the node/instance names.
+-- This also hardcodes here the default node/instance file names.
+parseEnv :: () -> IO (String, String)
+parseEnv () = do
+ a <- getEnvDefault "HTOOLS_NODES" "nodes"
+ b <- getEnvDefault "HTOOLS_INSTANCES" "instances"
+ return (a, b)
-- | Return a version string for the program
showVersion :: String -- ^ The program name
name Version.version
compilerName (Data.Version.showVersion compilerVersion)
os arch
+
+-- | A shell script template for autogenerated scripts
+shTemplate :: String
+shTemplate =
+ printf "#!/bin/sh\n\n\
+ \# Auto-generated script for executing cluster rebalancing\n\n\
+ \# To stop, touch the file /tmp/stop-htools\n\n\
+ \set -e\n\n\
+ \check() {\n\
+ \ if [ -f /tmp/stop-htools ]; then\n\
+ \ echo 'Stop requested, exiting'\n\
+ \ exit 0\n\
+ \ fi\n\
+ \}\n\n"