Safe Haskell | None |
---|
Implementation of the Ganeti network objects.
This is does not (yet) cover all methods that are provided in the corresponding python implementation (network.py).
Synopsis
- ip4BaseAddr :: Ip4Network -> Ip4Address
- ipv4NumHosts :: Integral n => n -> Integer
- ipv4NetworkMinNumHosts :: Integer
- ipv4NetworkMaxNumHosts :: Integer
- data PoolPart
- addressPoolIso :: Iso' AddressPool BitArray
- poolLens :: PoolPart -> Lens' Network (Maybe AddressPool)
- poolArrayLens :: PoolPart -> Lens' Network (Maybe BitArray)
- netIpv4NumHosts :: Network -> Integer
- newPoolArray :: (MonadError e m, Error e) => Network -> m BitArray
- newPool :: (MonadError e m, Error e) => Network -> m AddressPool
- orNewPool :: (MonadError e m, Error e) => Network -> Maybe AddressPool -> m AddressPool
- withPool :: (MonadError e m, Error e) => PoolPart -> (Network -> BitArray -> m (a, BitArray)) -> StateT Network m a
- withPool_ :: (MonadError e m, Error e) => PoolPart -> (Network -> BitArray -> m BitArray) -> Network -> m Network
- readPool :: PoolPart -> Network -> Maybe BitArray
- readPoolE :: (MonadError e m, Error e) => PoolPart -> Network -> m BitArray
- readAllE :: (MonadError e m, Error e) => Network -> m BitArray
- reservations :: Network -> Maybe BitArray
- extReservations :: Network -> Maybe BitArray
- allReservations :: Network -> Maybe BitArray
- getReservedCount :: Network -> Int
- getFreeCount :: Network -> Int
- isFull :: Network -> Bool
- getMap :: Network -> String
- addrIndex :: (MonadError e m, Error e) => Ip4Address -> Network -> m Int
- addrAt :: (MonadError e m, Error e) => Int -> Network -> m Ip4Address
- isReserved :: (MonadError e m, Error e) => PoolPart -> Ip4Address -> Network -> m Bool
- reserve :: (MonadError e m, Error e) => PoolPart -> Ip4Address -> Network -> m Network
- release :: (MonadError e m, Error e) => PoolPart -> Ip4Address -> Network -> m Network
- findFree :: (MonadError e m, Error e) => (Ip4Address -> Bool) -> Network -> m (Maybe Ip4Address)
Documentation
ip4BaseAddr :: Ip4Network -> Ip4Address Source #
ipv4NumHosts :: Integral n => n -> Integer Source #
ipv4NetworkMinNumHosts :: Integer Source #
ipv4NetworkMaxNumHosts :: Integer Source #
addressPoolIso :: Iso' AddressPool BitArray Source #
netIpv4NumHosts :: Network -> Integer Source #
newPoolArray :: (MonadError e m, Error e) => Network -> m BitArray Source #
Creates a new bit array pool of the appropriate size
newPool :: (MonadError e m, Error e) => Network -> m AddressPool Source #
Creates a new bit array pool of the appropriate size
orNewPool :: (MonadError e m, Error e) => Network -> Maybe AddressPool -> m AddressPool Source #
A helper function that creates a bit array pool, of it's missing.
withPool :: (MonadError e m, Error e) => PoolPart -> (Network -> BitArray -> m (a, BitArray)) -> StateT Network m a Source #
withPool_ :: (MonadError e m, Error e) => PoolPart -> (Network -> BitArray -> m BitArray) -> Network -> m Network Source #
reservations :: Network -> Maybe BitArray Source #
extReservations :: Network -> Maybe BitArray Source #
allReservations :: Network -> Maybe BitArray Source #
Get a bit vector of all reservations (internal and external) combined.
getReservedCount :: Network -> Int Source #
Get the count of reserved addresses.
getFreeCount :: Network -> Int Source #
Get the count of free addresses.
getMap :: Network -> String Source #
Return a textual representation of the network's occupation status.
Functions used for manipulating the reservations
addrIndex :: (MonadError e m, Error e) => Ip4Address -> Network -> m Int Source #
Returns an address index wrt a network. Fails if the address isn't in the network range.
addrAt :: (MonadError e m, Error e) => Int -> Network -> m Ip4Address Source #
Returns an address of a given index wrt a network. Fails if the index isn't in the network range.
isReserved :: (MonadError e m, Error e) => PoolPart -> Ip4Address -> Network -> m Bool Source #
Checks if a given address is reserved. Fails if the address isn't in the network range.
reserve :: (MonadError e m, Error e) => PoolPart -> Ip4Address -> Network -> m Network Source #
Marks an address as used.
release :: (MonadError e m, Error e) => PoolPart -> Ip4Address -> Network -> m Network Source #
Marks an address as unused.
findFree :: (MonadError e m, Error e) => (Ip4Address -> Bool) -> Network -> m (Maybe Ip4Address) Source #
Get the first free address in the network that satisfies a given predicate.