From b714ff89872bbeb08f2a0a2e0a324685534435b9 Mon Sep 17 00:00:00 2001 From: Iustin Pop <iustin@google.com> Date: Wed, 21 Mar 2012 16:48:07 +0000 Subject: [PATCH] Add command line option for controlling syslog use MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit β¦ and enable it in hconfd. Signed-off-by: Iustin Pop <iustin@google.com> Reviewed-by: RenΓ© Nussbaumer <rn@google.com> --- htools/Ganeti/Daemon.hs | 25 +++++++++++++++++++++---- htools/hconfd.hs | 1 + 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/htools/Ganeti/Daemon.hs b/htools/Ganeti/Daemon.hs index d3f58f647..15583be55 100644 --- a/htools/Ganeti/Daemon.hs +++ b/htools/Ganeti/Daemon.hs @@ -34,6 +34,7 @@ module Ganeti.Daemon , oDebug , oPort , oBindAddress + , oSyslogUsage , parseArgs , parseAddress , writePidFile @@ -75,6 +76,7 @@ data DaemonOptions = DaemonOptions , optDebug :: Bool -- ^ Enable debug messages , optNoUserChecks :: Bool -- ^ Ignore user checks , optBindAddress :: Maybe String -- ^ Override for the bind address + , optSyslogUsage :: Maybe SyslogUsage -- ^ Override for Syslog usage } -- | Default values for the command line options. @@ -87,6 +89,7 @@ defaultOptions = DaemonOptions , optDebug = False , optNoUserChecks = False , optBindAddress = Nothing + , optSyslogUsage = Nothing } -- | Abrreviation for the option type. @@ -142,6 +145,15 @@ oBindAddress = Option "b" ["bind"] "ADDR") "Bind address (default depends on cluster configuration)" +oSyslogUsage :: OptType +oSyslogUsage = Option "" ["syslog"] + (reqWithConversion syslogUsageFromRaw + (\su opts -> Ok opts { optSyslogUsage = Just su }) + "SYSLOG") + ("Enable logging to syslog (except debug \ + \messages); one of 'no', 'yes' or 'only' [" ++ C.syslogUsage ++ + "]") + -- | Usage info. usageHelp :: String -> [OptType] -> String usageHelp progname = @@ -291,16 +303,21 @@ genericMain daemon options main = do exitWith $ ExitFailure C.exitFailure Ok ents -> verifyDaemonUser daemon ents + syslog <- case optSyslogUsage opts of + Nothing -> exitIfBad $ + annotateResult "Invalid cluster syslog setting" $ + syslogUsageFromRaw C.syslogUsage + Just v -> return v let processFn = if optDaemonize opts then daemonize else id - processFn $ innerMain daemon opts (main opts) + processFn $ innerMain daemon opts syslog (main opts) -- | Inner daemon function. -- -- This is executed after daemonization. -innerMain :: GanetiDaemon -> DaemonOptions -> IO () -> IO () -innerMain daemon opts main = do +innerMain :: GanetiDaemon -> DaemonOptions -> SyslogUsage -> IO () -> IO () +innerMain daemon opts syslog main = do setupLogging (daemonLogFile daemon) (daemonName daemon) (optDebug opts) - (not (optDaemonize opts)) False SyslogNo + (not (optDaemonize opts)) False syslog pid_fd <- writePidFile (daemonPidFile daemon) case pid_fd of Bad msg -> do diff --git a/htools/hconfd.hs b/htools/hconfd.hs index d544a6c78..32d1208f6 100644 --- a/htools/hconfd.hs +++ b/htools/hconfd.hs @@ -40,6 +40,7 @@ options = , oDebug , oPort C.defaultConfdPort , oBindAddress + , oSyslogUsage ] -- | Main function. -- GitLab