{-
-Copyright (C) 2011, 2012 Google Inc.
+Copyright (C) 2011, 2012, 2013 Google Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
, GanetiGroup(..)
, RuntimeEnts
, daemonName
+ , daemonOnlyOnMaster
+ , daemonLogBase
, daemonUser
, daemonGroup
+ , ExtraLogReason(..)
, daemonLogFile
+ , daemonsExtraLogbase
+ , daemonsExtraLogFile
, daemonPidFile
, getEnts
, verifyDaemonUser
import System.Posix.User
import Text.Printf
-import qualified Ganeti.Constants as C
+import qualified Ganeti.ConstantUtils as ConstantUtils
import qualified Ganeti.Path as Path
import Ganeti.BasicTypes
+import AutoConf
+
data GanetiDaemon = GanetiMasterd
| GanetiNoded
| GanetiRapi
| GanetiConfd
+ | GanetiLuxid
+ | GanetiMond
deriving (Show, Enum, Bounded, Eq, Ord)
data MiscGroup = DaemonsGroup
-- | Returns the daemon name for a given daemon.
daemonName :: GanetiDaemon -> String
-daemonName GanetiMasterd = C.masterd
-daemonName GanetiNoded = C.noded
-daemonName GanetiRapi = C.rapi
-daemonName GanetiConfd = C.confd
+daemonName GanetiMasterd = "ganeti-masterd"
+daemonName GanetiNoded = "ganeti-noded"
+daemonName GanetiRapi = "ganeti-rapi"
+daemonName GanetiConfd = "ganeti-confd"
+daemonName GanetiLuxid = "ganeti-luxid"
+daemonName GanetiMond = "ganeti-mond"
+
+-- | Returns whether the daemon only runs on the master node.
+daemonOnlyOnMaster :: GanetiDaemon -> Bool
+daemonOnlyOnMaster GanetiMasterd = True
+daemonOnlyOnMaster GanetiNoded = False
+daemonOnlyOnMaster GanetiRapi = False
+daemonOnlyOnMaster GanetiConfd = False
+daemonOnlyOnMaster GanetiLuxid = True
+daemonOnlyOnMaster GanetiMond = False
+
+-- | Returns the log file base for a daemon.
+daemonLogBase :: GanetiDaemon -> String
+daemonLogBase GanetiMasterd = "master-daemon"
+daemonLogBase GanetiNoded = "node-daemon"
+daemonLogBase GanetiRapi = "rapi-daemon"
+daemonLogBase GanetiConfd = "conf-daemon"
+daemonLogBase GanetiLuxid = "luxi-daemon"
+daemonLogBase GanetiMond = "monitoring-daemon"
-- | Returns the configured user name for a daemon.
daemonUser :: GanetiDaemon -> String
-daemonUser GanetiMasterd = C.masterdUser
-daemonUser GanetiNoded = C.nodedUser
-daemonUser GanetiRapi = C.rapiUser
-daemonUser GanetiConfd = C.confdUser
+daemonUser GanetiMasterd = AutoConf.masterdUser
+daemonUser GanetiNoded = AutoConf.nodedUser
+daemonUser GanetiRapi = AutoConf.rapiUser
+daemonUser GanetiConfd = AutoConf.confdUser
+daemonUser GanetiLuxid = AutoConf.luxidUser
+daemonUser GanetiMond = AutoConf.mondUser
-- | Returns the configured group for a daemon.
daemonGroup :: GanetiGroup -> String
-daemonGroup (DaemonGroup GanetiMasterd) = C.masterdGroup
-daemonGroup (DaemonGroup GanetiNoded) = C.nodedGroup
-daemonGroup (DaemonGroup GanetiRapi) = C.rapiGroup
-daemonGroup (DaemonGroup GanetiConfd) = C.confdGroup
-daemonGroup (ExtraGroup DaemonsGroup) = C.daemonsGroup
-daemonGroup (ExtraGroup AdminGroup) = C.adminGroup
+daemonGroup (DaemonGroup GanetiMasterd) = AutoConf.masterdGroup
+daemonGroup (DaemonGroup GanetiNoded) = AutoConf.nodedGroup
+daemonGroup (DaemonGroup GanetiRapi) = AutoConf.rapiGroup
+daemonGroup (DaemonGroup GanetiConfd) = AutoConf.confdGroup
+daemonGroup (DaemonGroup GanetiLuxid) = AutoConf.luxidGroup
+daemonGroup (DaemonGroup GanetiMond) = AutoConf.mondGroup
+daemonGroup (ExtraGroup DaemonsGroup) = AutoConf.daemonsGroup
+daemonGroup (ExtraGroup AdminGroup) = AutoConf.adminGroup
+
+data ExtraLogReason = AccessLog | ErrorLog
+
+daemonsExtraLogbase :: GanetiDaemon -> ExtraLogReason -> String
+daemonsExtraLogbase daemon AccessLog = daemonLogBase daemon ++ "-access"
+daemonsExtraLogbase daemon ErrorLog = daemonLogBase daemon ++ "-error"
-- | Returns the log file for a daemon.
daemonLogFile :: GanetiDaemon -> IO FilePath
daemonLogFile daemon = do
logDir <- Path.logDir
- return $ logDir </> daemonName daemon <.> "log"
+ return $ logDir </> daemonLogBase daemon <.> "log"
+
+-- | Returns the extra log files for a daemon.
+daemonsExtraLogFile :: GanetiDaemon -> ExtraLogReason -> IO FilePath
+daemonsExtraLogFile daemon logreason = do
+ logDir <- Path.logDir
+ return $ logDir </> daemonsExtraLogbase daemon logreason <.> "log"
-- | Returns the pid file name for a daemon.
daemonPidFile :: GanetiDaemon -> IO FilePath
\expected %d\n" name
(fromIntegral actual::Int)
(fromIntegral expected::Int) :: IO ()
- exitWith $ ExitFailure C.exitFailure
+ exitWith $ ExitFailure ConstantUtils.exitFailure