Revision 1c31b263

b/lib/constants.py
203 203
# These are the extra logfiles, grouped by daemon
204 204
DAEMONS_EXTRA_LOGBASE = {
205 205
  MOND: {
206
    EXTRA_LOGREASON_ACCESS: "monitoring-daemon-access",
207
    EXTRA_LOGREASON_ERROR: "monitoring-daemon-error",
206
    EXTRA_LOGREASON_ACCESS: _constants.EXTRA_LOGREASON_ACCESS,
207
    EXTRA_LOGREASON_ERROR: _constants.EXTRA_LOGREASON_ERROR,
208 208
    }
209 209
  }
210 210

  
b/src/Ganeti/ConstantUtils.hs
63 63
instance PyValue Protocol where
64 64
  showValue Tcp = "\"tcp\""
65 65
  showValue Udp = "\"udp\""
66

  
67
-- | Failure exit code
68
--
69
-- This is defined here and not in 'Ganeti.HsConstants' together with
70
-- the other exit codes in order to avoid a circular dependency
71
-- between 'Ganeti.HsConstants' and 'Ganeti.Runtime'
72
exitFailure :: Int
73
exitFailure = 1
b/src/Ganeti/HsConstants.hs
40 40
import qualified Data.Map as Map (fromList)
41 41

  
42 42
import AutoConf
43
import Ganeti.ConstantUtils
43
import Ganeti.ConstantUtils (FrozenSet, Protocol(..))
44
import qualified Ganeti.ConstantUtils as ConstantUtils (mkSet, exitFailure)
45
import Ganeti.Runtime (GanetiDaemon(..), MiscGroup(..), GanetiGroup(..),
46
                       ExtraLogReason(..))
47
import qualified Ganeti.Runtime as Runtime
44 48

  
45 49
-- * Admin states
46 50

  
......
59 63
-- * User separation
60 64

  
61 65
daemonsGroup :: String
62
daemonsGroup = AutoConf.daemonsGroup
66
daemonsGroup = Runtime.daemonGroup (ExtraGroup DaemonsGroup)
63 67

  
64 68
adminGroup :: String
65
adminGroup = AutoConf.adminGroup
69
adminGroup = Runtime.daemonGroup (ExtraGroup AdminGroup)
66 70

  
67 71
masterdUser :: String
68
masterdUser = AutoConf.masterdUser
72
masterdUser = Runtime.daemonUser GanetiMasterd
69 73

  
70 74
masterdGroup :: String
71
masterdGroup = AutoConf.masterdGroup
75
masterdGroup = Runtime.daemonGroup (DaemonGroup GanetiMasterd)
72 76

  
73 77
rapiUser :: String
74
rapiUser = AutoConf.rapiUser
78
rapiUser = Runtime.daemonUser GanetiRapi
75 79

  
76 80
rapiGroup :: String
77
rapiGroup = AutoConf.rapiGroup
81
rapiGroup = Runtime.daemonGroup (DaemonGroup GanetiRapi)
78 82

  
79 83
confdUser :: String
80
confdUser = AutoConf.confdUser
84
confdUser = Runtime.daemonUser GanetiConfd
81 85

  
82 86
confdGroup :: String
83
confdGroup = AutoConf.confdGroup
87
confdGroup = Runtime.daemonGroup (DaemonGroup GanetiConfd)
84 88

  
85 89
luxidUser :: String
86
luxidUser = AutoConf.luxidUser
90
luxidUser = Runtime.daemonUser GanetiLuxid
87 91

  
88 92
luxidGroup :: String
89
luxidGroup = AutoConf.luxidGroup
93
luxidGroup = Runtime.daemonGroup (DaemonGroup GanetiLuxid)
90 94

  
91 95
nodedUser :: String
92
nodedUser = AutoConf.nodedUser
96
nodedUser = Runtime.daemonUser GanetiNoded
93 97

  
94 98
nodedGroup :: String
95
nodedGroup = AutoConf.nodedGroup
99
nodedGroup = Runtime.daemonGroup (DaemonGroup GanetiNoded)
96 100

  
97 101
mondUser :: String
98
mondUser = AutoConf.mondUser
102
mondUser = Runtime.daemonUser GanetiMond
99 103

  
100 104
mondGroup :: String
101
mondGroup = AutoConf.mondGroup
105
mondGroup = Runtime.daemonGroup (DaemonGroup GanetiMond)
102 106

  
103 107
sshLoginUser :: String
104 108
sshLoginUser = AutoConf.sshLoginUser
......
117 121
-- * Daemons
118 122

  
119 123
confd :: String
120
confd = "ganeti-confd"
124
confd = Runtime.daemonName GanetiConfd
121 125

  
122 126
masterd :: String
123
masterd = "ganeti-masterd"
127
masterd = Runtime.daemonName GanetiMasterd
124 128

  
125 129
mond :: String
126
mond = "ganeti-mond"
130
mond = Runtime.daemonName GanetiMond
127 131

  
128 132
noded :: String
129
noded = "ganeti-noded"
133
noded = Runtime.daemonName GanetiNoded
130 134

  
131 135
luxid :: String
132
luxid = "ganeti-luxid"
136
luxid = Runtime.daemonName GanetiLuxid
133 137

  
134 138
rapi :: String
135
rapi = "ganeti-rapi"
139
rapi = Runtime.daemonName GanetiRapi
136 140

  
137 141
daemons :: FrozenSet String
138 142
daemons =
......
163 167
                (rapi, (Tcp, defaultRapiPort)),
164 168
                (ssh, (Tcp, 22))]
165 169

  
170
extraLogreasonAccess :: String
171
extraLogreasonAccess = Runtime.daemonsExtraLogbase GanetiMond AccessLog
172

  
173
extraLogreasonError :: String
174
extraLogreasonError = Runtime.daemonsExtraLogbase GanetiMond ErrorLog
175

  
166 176
-- * Possible values for NodeGroup.alloc_policy
167 177

  
168 178
allocPolicyLastResort :: String
b/src/Ganeti/Luxi.hs
76 76
import Ganeti.JSON
77 77
import Ganeti.OpParams (pTagsObject)
78 78
import Ganeti.OpCodes
79
import Ganeti.Runtime
80 79
import qualified Ganeti.Query.Language as Qlang
80
import Ganeti.Runtime (GanetiDaemon(..), MiscGroup(..), GanetiGroup(..))
81 81
import Ganeti.THH
82 82
import Ganeti.Types
83 83
import Ganeti.Utils
b/src/Ganeti/Monitoring/Server.hs
117 117
-- | Prepare function for monitoring agent.
118 118
prepMain :: PrepFn CheckResult PrepResult
119 119
prepMain opts _ = do
120
  mAccessLog <- daemonsExtraLogFile GanetiMond AccessLog
121
  mErrorLog <- daemonsExtraLogFile GanetiMond ErrorLog
122
  case (mAccessLog, mErrorLog) of
123
    (Just accessLog, Just errorLog) ->
124
      return $
125
        setPort
126
          (maybe C.defaultMondPort fromIntegral (optPort opts))
127
          (defaultHttpConf accessLog errorLog)
128
    _ -> fail "Failed to retrieve extra log filepaths for the monitoring daemon"
120
  accessLog <- daemonsExtraLogFile GanetiMond AccessLog
121
  errorLog <- daemonsExtraLogFile GanetiMond ErrorLog
122
  return $
123
    setPort
124
      (maybe C.defaultMondPort fromIntegral (optPort opts))
125
      (defaultHttpConf accessLog errorLog)
129 126

  
130 127
-- * Query answers
131 128

  
b/src/Ganeti/Runtime.hs
30 30
  , RuntimeEnts
31 31
  , daemonName
32 32
  , daemonOnlyOnMaster
33
  , daemonLogBase
33 34
  , daemonUser
34 35
  , daemonGroup
35 36
  , ExtraLogReason(..)
36 37
  , daemonLogFile
38
  , daemonsExtraLogbase
37 39
  , daemonsExtraLogFile
38 40
  , daemonPidFile
39 41
  , getEnts
......
51 53
import System.Posix.User
52 54
import Text.Printf
53 55

  
54
import qualified Ganeti.Constants as C
56
import qualified Ganeti.ConstantUtils as ConstantUtils
55 57
import qualified Ganeti.Path as Path
56 58
import Ganeti.BasicTypes
57 59

  
60
import AutoConf
61

  
58 62
data GanetiDaemon = GanetiMasterd
59 63
                  | GanetiNoded
60 64
                  | GanetiRapi
......
75 79

  
76 80
-- | Returns the daemon name for a given daemon.
77 81
daemonName :: GanetiDaemon -> String
78
daemonName GanetiMasterd = C.masterd
79
daemonName GanetiNoded   = C.noded
80
daemonName GanetiRapi    = C.rapi
81
daemonName GanetiConfd   = C.confd
82
daemonName GanetiLuxid   = C.luxid
83
daemonName GanetiMond    = C.mond
82
daemonName GanetiMasterd = "ganeti-masterd"
83
daemonName GanetiNoded   = "ganeti-noded"
84
daemonName GanetiRapi    = "ganeti-rapi"
85
daemonName GanetiConfd   = "ganeti-confd"
86
daemonName GanetiLuxid   = "ganeti-luxid"
87
daemonName GanetiMond    = "ganeti-mond"
84 88

  
85 89
-- | Returns whether the daemon only runs on the master node.
86 90
daemonOnlyOnMaster :: GanetiDaemon -> Bool
......
93 97

  
94 98
-- | Returns the log file base for a daemon.
95 99
daemonLogBase :: GanetiDaemon -> String
96
daemonLogBase GanetiMasterd = C.daemonsLogbaseGanetiMasterd
97
daemonLogBase GanetiNoded   = C.daemonsLogbaseGanetiNoded
98
daemonLogBase GanetiRapi    = C.daemonsLogbaseGanetiRapi
99
daemonLogBase GanetiConfd   = C.daemonsLogbaseGanetiConfd
100
daemonLogBase GanetiLuxid   = C.daemonsLogbaseGanetiLuxid
101
daemonLogBase GanetiMond    = C.daemonsLogbaseGanetiMond
100
daemonLogBase GanetiMasterd = "master-daemon"
101
daemonLogBase GanetiNoded   = "node-daemon"
102
daemonLogBase GanetiRapi    = "rapi-daemon"
103
daemonLogBase GanetiConfd   = "conf-daemon"
104
daemonLogBase GanetiLuxid   = "luxi-daemon"
105
daemonLogBase GanetiMond    = "monitoring-daemon"
102 106

  
103 107
-- | Returns the configured user name for a daemon.
104 108
daemonUser :: GanetiDaemon -> String
105
daemonUser GanetiMasterd = C.masterdUser
106
daemonUser GanetiNoded   = C.nodedUser
107
daemonUser GanetiRapi    = C.rapiUser
108
daemonUser GanetiConfd   = C.confdUser
109
daemonUser GanetiLuxid   = C.luxidUser
110
daemonUser GanetiMond    = C.mondUser
109
daemonUser GanetiMasterd = AutoConf.masterdUser
110
daemonUser GanetiNoded   = AutoConf.nodedUser
111
daemonUser GanetiRapi    = AutoConf.rapiUser
112
daemonUser GanetiConfd   = AutoConf.confdUser
113
daemonUser GanetiLuxid   = AutoConf.luxidUser
114
daemonUser GanetiMond    = AutoConf.mondUser
111 115

  
112 116
-- | Returns the configured group for a daemon.
113 117
daemonGroup :: GanetiGroup -> String
114
daemonGroup (DaemonGroup GanetiMasterd) = C.masterdGroup
115
daemonGroup (DaemonGroup GanetiNoded)   = C.nodedGroup
116
daemonGroup (DaemonGroup GanetiRapi)    = C.rapiGroup
117
daemonGroup (DaemonGroup GanetiConfd)   = C.confdGroup
118
daemonGroup (DaemonGroup GanetiLuxid)   = C.luxidGroup
119
daemonGroup (DaemonGroup GanetiMond)    = C.mondGroup
120
daemonGroup (ExtraGroup  DaemonsGroup)  = C.daemonsGroup
121
daemonGroup (ExtraGroup  AdminGroup)    = C.adminGroup
118
daemonGroup (DaemonGroup GanetiMasterd) = AutoConf.masterdGroup
119
daemonGroup (DaemonGroup GanetiNoded)   = AutoConf.nodedGroup
120
daemonGroup (DaemonGroup GanetiRapi)    = AutoConf.rapiGroup
121
daemonGroup (DaemonGroup GanetiConfd)   = AutoConf.confdGroup
122
daemonGroup (DaemonGroup GanetiLuxid)   = AutoConf.luxidGroup
123
daemonGroup (DaemonGroup GanetiMond)    = AutoConf.mondGroup
124
daemonGroup (ExtraGroup  DaemonsGroup)  = AutoConf.daemonsGroup
125
daemonGroup (ExtraGroup  AdminGroup)    = AutoConf.adminGroup
122 126

  
123 127
data ExtraLogReason = AccessLog | ErrorLog
124 128

  
125
daemonsExtraLogbase :: GanetiDaemon -> ExtraLogReason -> Maybe String
126
daemonsExtraLogbase GanetiMond AccessLog =
127
  Just C.daemonsExtraLogbaseGanetiMondAccess
128

  
129
daemonsExtraLogbase GanetiMond ErrorLog =
130
  Just C.daemonsExtraLogbaseGanetiMondError
131

  
132
daemonsExtraLogbase _ _ = Nothing
129
daemonsExtraLogbase :: GanetiDaemon -> ExtraLogReason -> String
130
daemonsExtraLogbase daemon AccessLog = daemonLogBase daemon ++ "-access"
131
daemonsExtraLogbase daemon ErrorLog = daemonLogBase daemon ++ "-error"
133 132

  
134 133
-- | Returns the log file for a daemon.
135 134
daemonLogFile :: GanetiDaemon -> IO FilePath
......
137 136
  logDir <- Path.logDir
138 137
  return $ logDir </> daemonLogBase daemon <.> "log"
139 138

  
140
daemonsExtraLogFile :: GanetiDaemon -> ExtraLogReason -> IO (Maybe FilePath)
139
-- | Returns the extra log files for a daemon.
140
daemonsExtraLogFile :: GanetiDaemon -> ExtraLogReason -> IO FilePath
141 141
daemonsExtraLogFile daemon logreason = do
142 142
  logDir <- Path.logDir
143
  case daemonsExtraLogbase daemon logreason of
144
    Nothing -> return Nothing
145
    Just logbase -> return . Just $ logDir </> logbase <.> "log"
143
  return $ logDir </> daemonsExtraLogbase daemon logreason <.> "log"
146 144

  
147 145
-- | Returns the pid file name for a daemon.
148 146
daemonPidFile :: GanetiDaemon -> IO FilePath
......
202 200
                   \expected %d\n" name
203 201
              (fromIntegral actual::Int)
204 202
              (fromIntegral expected::Int) :: IO ()
205
    exitWith $ ExitFailure C.exitFailure
203
    exitWith $ ExitFailure ConstantUtils.exitFailure

Also available in: Unified diff