Revision 6a221b79 src/Ganeti/WConfd/Core.hs

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