X-Git-Url: https://code.grnet.gr/git/ganeti-local/blobdiff_plain/f511082f3a3b02fd0dbfa98da92945b5e0973177..5ce621ab2d83b8ac38d9a8fc3123fbd3feaa4b49:/src/Ganeti/Runtime.hs diff --git a/src/Ganeti/Runtime.hs b/src/Ganeti/Runtime.hs index effa41f..b5d4ba5 100644 --- a/src/Ganeti/Runtime.hs +++ b/src/Ganeti/Runtime.hs @@ -29,9 +29,14 @@ module Ganeti.Runtime , GanetiGroup(..) , RuntimeEnts , daemonName + , daemonOnlyOnMaster + , daemonLogBase , daemonUser , daemonGroup + , ExtraLogReason(..) , daemonLogFile + , daemonsExtraLogbase + , daemonsExtraLogFile , daemonPidFile , getEnts , verifyDaemonUser @@ -48,14 +53,17 @@ import System.Posix.Types 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) @@ -71,37 +79,56 @@ type RuntimeEnts = (M.Map GanetiDaemon UserID, M.Map GanetiGroup GroupID) -- | 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 GanetiMond = C.mond +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 = C.daemonsLogbaseGanetiMasterd -daemonLogBase GanetiNoded = C.daemonsLogbaseGanetiNoded -daemonLogBase GanetiRapi = C.daemonsLogbaseGanetiRapi -daemonLogBase GanetiConfd = C.daemonsLogbaseGanetiConfd -daemonLogBase GanetiMond = C.daemonsLogbaseGanetiMond +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 GanetiMond = C.mondUser +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 (DaemonGroup GanetiMond) = C.mondGroup -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 @@ -109,6 +136,12 @@ daemonLogFile daemon = do logDir <- Path.logDir 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 daemonPidFile daemon = do @@ -167,4 +200,4 @@ checkUidMatch name expected actual = \expected %d\n" name (fromIntegral actual::Int) (fromIntegral expected::Int) :: IO () - exitWith $ ExitFailure C.exitFailure + exitWith $ ExitFailure ConstantUtils.exitFailure