Revision 6a221b79
b/src/Ganeti/WConfd/Core.hs | ||
---|---|---|
32 | 32 |
module Ganeti.WConfd.Core where |
33 | 33 |
|
34 | 34 |
import Control.Monad (liftM, unless, when) |
35 |
import Control.Monad.State (modify) |
|
35 | 36 |
import qualified Data.Map as M |
36 | 37 |
import qualified Data.Set as S |
37 | 38 |
import Language.Haskell.TH (Name) |
39 |
import qualified System.Random as Rand |
|
38 | 40 |
|
39 | 41 |
import Ganeti.BasicTypes |
40 | 42 |
import qualified Ganeti.JSON as J |
... | ... | |
110 | 112 |
|
111 | 113 |
-- ** Temporary reservations related functions |
112 | 114 |
|
115 |
dropAllReservations :: ClientId -> WConfdMonad () |
|
116 |
dropAllReservations cid = |
|
117 |
modifyTempResState (const . modify $ T.dropAllReservations cid) |
|
118 |
|
|
119 |
-- *** DRBD |
|
120 |
|
|
113 | 121 |
computeDRBDMap :: WConfdMonad T.DRBDMap |
114 | 122 |
computeDRBDMap = uncurry T.computeDRBDMap =<< readTempResState |
115 | 123 |
|
... | ... | |
133 | 141 |
:: T.InstanceUUID -> WConfdMonad () |
134 | 142 |
releaseDRBDMinors inst = modifyTempResState (const $ T.releaseDRBDMinors inst) |
135 | 143 |
|
144 |
-- *** MACs |
|
145 |
|
|
146 |
-- Randomly generate a MAC for an instance and reserves it for |
|
147 |
-- a given client. |
|
148 |
generateMAC |
|
149 |
:: ClientId -> J.MaybeForJSON T.NetworkUUID -> WConfdMonad T.MAC |
|
150 |
generateMAC cid (J.MaybeForJSON netId) = do |
|
151 |
g <- liftIO Rand.newStdGen |
|
152 |
modifyTempResStateErr $ T.generateMAC g cid netId |
|
153 |
|
|
154 |
-- Reserves a MAC for an instance in the list of temporary reservations. |
|
155 |
reserveMAC :: ClientId -> T.MAC -> WConfdMonad () |
|
156 |
reserveMAC = (modifyTempResStateErr .) . T.reserveMAC |
|
157 |
|
|
136 | 158 |
-- ** Locking related functions |
137 | 159 |
|
138 | 160 |
-- | List the locks of a given owner (i.e., a job-id lockfile pair). |
... | ... | |
195 | 217 |
, 'lockConfig |
196 | 218 |
, 'unlockConfig |
197 | 219 |
, 'flushConfig |
198 |
-- temporary reservations |
|
220 |
-- temporary reservations (common) |
|
221 |
, 'dropAllReservations |
|
222 |
-- DRBD |
|
199 | 223 |
, 'computeDRBDMap |
200 | 224 |
, 'allocateDRBDMinor |
201 | 225 |
, 'releaseDRBDMinors |
226 |
-- MACs |
|
227 |
, 'reserveMAC |
|
228 |
, 'generateMAC |
|
202 | 229 |
-- locking |
203 | 230 |
, 'listLocks |
204 | 231 |
, 'listAllLocks |
Also available in: Unified diff