Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Ganeti.WConfd.TempRes
Description
Pure functions for manipulating reservations of temporary objects
NOTE: Reservations aren't released specifically, they're just all released at the end of a job. This could be improved in the future.
Synopsis
- data TempRes j a
- mkTempRes :: MultiMap j a -> TempRes j a
- data TempResState = TempResState {}
- emptyTempResState :: TempResState
- type NodeUUID = ByteString
- type InstanceUUID = ByteString
- type DiskUUID = ByteString
- type NetworkUUID = ByteString
- type DRBDMinor = Int
- type DRBDMap = Map NodeUUID (Map DRBDMinor DiskUUID)
- trsDRBDL :: Lens' TempResState DRBDMap
- computeDRBDMap :: MonadError GanetiException m => ConfigData -> TempResState -> m DRBDMap
- computeDRBDMap' :: MonadError GanetiException m => ConfigData -> TempResState -> m DRBDMap'
- allocateDRBDMinor :: (MonadError GanetiException m, MonadState TempResState m) => ConfigData -> DiskUUID -> [NodeUUID] -> m [DRBDMinor]
- releaseDRBDMinors :: MonadState TempResState m => DiskUUID -> m ()
- type MAC = String
- generateMAC :: (RandomGen g, MonadError GanetiException m, Functor m) => g -> ClientId -> Maybe NetworkUUID -> ConfigData -> StateT TempResState m MAC
- reserveMAC :: (MonadError GanetiException m, MonadState TempResState m, Functor m) => ClientId -> MAC -> ConfigData -> m ()
- generateDRBDSecret :: (RandomGen g, MonadError GanetiException m, Functor m) => g -> ClientId -> ConfigData -> StateT TempResState m DRBDSecret
- reserveLV :: (MonadError GanetiException m, MonadState TempResState m, Functor m) => ClientId -> LogicalVolume -> ConfigData -> m ()
- data IPv4ResAction
- data IPv4Reservation = IPv4Res {}
- reserveIp :: (MonadError GanetiException m, MonadState TempResState m, Functor m) => ClientId -> NetworkUUID -> Ip4Address -> Bool -> ConfigData -> m ()
- releaseIp :: (MonadError GanetiException m, MonadState TempResState m, Functor m) => ClientId -> NetworkUUID -> Ip4Address -> m ()
- generateIp :: (MonadError GanetiException m, MonadState TempResState m, Functor m) => ClientId -> NetworkUUID -> ConfigData -> m Ip4Address
- commitReleaseIp :: (MonadError GanetiException m, Functor m) => NetworkUUID -> Ip4Address -> ConfigData -> m ConfigData
- commitReservedIps :: (MonadError GanetiException m, Functor m, MonadLog m) => ClientId -> TempResState -> ConfigData -> m ConfigData
- listReservedIps :: ClientId -> TempResState -> Set IPv4Reservation
- dropAllReservations :: ClientId -> State TempResState ()
- isReserved :: (Ord a, Ord j) => a -> TempRes j a -> Bool
- reserve :: (MonadError GanetiException m, Show a, Ord a, Ord j) => j -> a -> TempRes j a -> m (TempRes j a)
- dropReservationsFor :: (Ord a, Ord j) => j -> TempRes j a -> TempRes j a
- reserved :: (Ord a, Ord j) => TempRes j a -> Set a
Documentation
A polymorphic data structure for managing temporary resources assigned to jobs.
Instances
(Ord j, Ord a) => Monoid (TempRes j a) # | |
(Ord j, Ord a) => Semigroup (TempRes j a) # | |
(Show j, Show a) => Show (TempRes j a) # | |
(Eq j, Eq a) => Eq (TempRes j a) # | |
(Ord j, Ord a) => Ord (TempRes j a) # | |
Defined in Ganeti.WConfd.TempRes | |
(JSON j, Ord j, JSON a, Ord a) => JSON (TempRes j a) # | |
data TempResState #
The state of the temporary reservations
Constructors
TempResState | |
Fields
|
Instances
Show TempResState # | |
Defined in Ganeti.WConfd.TempRes Methods showsPrec :: Int -> TempResState -> ShowS show :: TempResState -> String showList :: [TempResState] -> ShowS | |
ArrayObject TempResState # | |
Defined in Ganeti.WConfd.TempRes | |
DictObject TempResState # | |
Defined in Ganeti.WConfd.TempRes Methods toDict :: TempResState -> [(String, JSValue)] # fromDictWKeys :: [(String, JSValue)] -> WriterT UsedKeys Result TempResState # fromDict :: [(String, JSValue)] -> Result TempResState # | |
Eq TempResState # | |
Defined in Ganeti.WConfd.TempRes | |
JSON TempResState # | |
Defined in Ganeti.WConfd.TempRes Methods readJSON :: JSValue -> Result TempResState showJSON :: TempResState -> JSValue readJSONs :: JSValue -> Result [TempResState] showJSONs :: [TempResState] -> JSValue |
type InstanceUUID = ByteString #
type NetworkUUID = ByteString #
trsDRBDL :: Lens' TempResState DRBDMap #
computeDRBDMap :: MonadError GanetiException m => ConfigData -> TempResState -> m DRBDMap #
Compute the map of used DRBD minor/nodes. Report any duplicate entries as an error.
Unlike computeDRBDMap'
, includes entries for all nodes, even if empty.
computeDRBDMap' :: MonadError GanetiException m => ConfigData -> TempResState -> m DRBDMap' #
Compute the map of used DRBD minor/nodes, including possible duplicates. An error is returned if the configuration isn't consistent (for example if a referenced disk is missing etc.).
allocateDRBDMinor :: (MonadError GanetiException m, MonadState TempResState m) => ConfigData -> DiskUUID -> [NodeUUID] -> m [DRBDMinor] #
releaseDRBDMinors :: MonadState TempResState m => DiskUUID -> m () #
generateMAC :: (RandomGen g, MonadError GanetiException m, Functor m) => g -> ClientId -> Maybe NetworkUUID -> ConfigData -> StateT TempResState m MAC #
reserveMAC :: (MonadError GanetiException m, MonadState TempResState m, Functor m) => ClientId -> MAC -> ConfigData -> m () #
generateDRBDSecret :: (RandomGen g, MonadError GanetiException m, Functor m) => g -> ClientId -> ConfigData -> StateT TempResState m DRBDSecret #
reserveLV :: (MonadError GanetiException m, MonadState TempResState m, Functor m) => ClientId -> LogicalVolume -> ConfigData -> m () #
data IPv4ResAction #
Types of IPv4 reservation actions.
Constructors
IPv4Reserve | |
IPv4Release |
Instances
data IPv4Reservation #
The values stored in the IPv4 reservation table.
Constructors
IPv4Res | |
Fields |
Instances
Arguments
:: (MonadError GanetiException m, MonadState TempResState m, Functor m) | |
=> ClientId | |
-> NetworkUUID | |
-> Ip4Address | |
-> Bool | whether to check externally reserved IPs |
-> ConfigData | |
-> m () |
Reserve a given IPv4 address for use by an instance.
releaseIp :: (MonadError GanetiException m, MonadState TempResState m, Functor m) => ClientId -> NetworkUUID -> Ip4Address -> m () #
Give a specific IP address back to an IP pool. The IP address is returned to the IP pool designated by network id and marked as reserved.
generateIp :: (MonadError GanetiException m, MonadState TempResState m, Functor m) => ClientId -> NetworkUUID -> ConfigData -> m Ip4Address #
commitReleaseIp :: (MonadError GanetiException m, Functor m) => NetworkUUID -> Ip4Address -> ConfigData -> m ConfigData #
Immediately release an IP address, without using the reservations pool.
commitReservedIps :: (MonadError GanetiException m, Functor m, MonadLog m) => ClientId -> TempResState -> ConfigData -> m ConfigData #
Commit all reserved/released IP address to an IP pool. The IP addresses are taken from the network's IP pool and marked as reserved/free for instances.
Note that the reservations are kept, they are supposed to be cleaned when a job finishes.
listReservedIps :: ClientId -> TempResState -> Set IPv4Reservation #
dropAllReservations :: ClientId -> State TempResState () #
Removes all resources reserved by a given job.
If a new reservation resource type is added, it must be added here as well.
isReserved :: (Ord a, Ord j) => a -> TempRes j a -> Bool #
Tests if a given value is reserved for a given job.
reserve :: (MonadError GanetiException m, Show a, Ord a, Ord j) => j -> a -> TempRes j a -> m (TempRes j a) #
Tries to reserve a given value for a given job.
dropReservationsFor :: (Ord a, Ord j) => j -> TempRes j a -> TempRes j a #