Safe Haskell | Safe-Infered |
---|
Implementation of the Ganeti configuration database.
- type LinkIpMap = Map String (Map String String)
- readConfig :: FilePath -> IO (Result String)
- parseConfig :: String -> Result ConfigData
- encodeConfig :: ConfigData -> String
- loadConfig :: FilePath -> IO (Result ConfigData)
- saveConfig :: Handle -> ConfigData -> IO ()
- withMissingParam :: String -> (a -> ErrorResult b) -> Maybe a -> ErrorResult b
- computeDiskNodes :: Disk -> Set String
- instDiskNodes :: ConfigData -> Instance -> Set String
- instNodes :: ConfigData -> Instance -> Set String
- instSecondaryNodes :: ConfigData -> Instance -> Set String
- getNodeInstances :: ConfigData -> String -> ([Instance], [Instance])
- getNodeRole :: ConfigData -> Node -> NodeRole
- getMasterNodes :: ConfigData -> [Node]
- getMasterCandidates :: ConfigData -> [Node]
- getMasterOrCandidates :: ConfigData -> [Node]
- getMasterNetworkParameters :: ConfigData -> MasterNetworkParameters
- getOnlineNodes :: ConfigData -> [Node]
- getDefaultNicLink :: ConfigData -> String
- getDefaultHypervisor :: ConfigData -> Hypervisor
- getInstancesIpByLink :: LinkIpMap -> String -> [String]
- getItem :: String -> String -> Map String a -> ErrorResult a
- getItem' :: String -> String -> Map ByteString a -> ErrorResult a
- getNode :: ConfigData -> String -> ErrorResult Node
- getInstance :: ConfigData -> String -> ErrorResult Instance
- getDisk :: ConfigData -> String -> ErrorResult Disk
- getFilterRule :: ConfigData -> String -> ErrorResult FilterRule
- getGroup :: ConfigData -> String -> ErrorResult NodeGroup
- getGroupNdParams :: ConfigData -> NodeGroup -> FilledNDParams
- getGroupIpolicy :: ConfigData -> NodeGroup -> FilledIPolicy
- getGroupDiskParams :: ConfigData -> NodeGroup -> GroupDiskParams
- getGroupNodes :: ConfigData -> String -> [Node]
- getGroupInstances :: ConfigData -> String -> ([Instance], [Instance])
- defaultHvStateParams :: FilledHvStateParams
- getFilledHvStateParams :: ConfigData -> Node -> FilledHvState
- getFilledInstHvParams :: [String] -> ConfigData -> Instance -> HvParams
- getFilledInstBeParams :: ConfigData -> Instance -> ErrorResult FilledBeParams
- getFilledInstOsParams :: ConfigData -> Instance -> OsParams
- getInstPrimaryNode :: ConfigData -> String -> ErrorResult Node
- getDrbdDiskNodes :: ConfigData -> Disk -> [Node]
- getInstAllNodes :: ConfigData -> String -> ErrorResult [Node]
- getInstDisks :: ConfigData -> String -> ErrorResult [Disk]
- getInstDisksFromObj :: ConfigData -> Instance -> ErrorResult [Disk]
- collectFromDrbdDisks :: Monoid a => (String -> String -> Int -> Int -> Int -> Private DRBDSecret -> a) -> Disk -> a
- getDrbdSecretsForDisk :: Disk -> [DRBDSecret]
- getDrbdMinorsForDisk :: Disk -> [(Int, String)]
- getDrbdMinorsForNode :: String -> Disk -> [(Int, String)]
- getDrbdMinorsForInstance :: ConfigData -> Instance -> ErrorResult [(Int, String)]
- rolePrimary :: String
- roleSecondary :: String
- getInstMinorsForNode :: ConfigData -> String -> Instance -> [(String, Int, String, String, String, String)]
- buildLinkIpInstnameMap :: ConfigData -> LinkIpMap
- getGroupOfNode :: ConfigData -> Node -> Maybe NodeGroup
- getNodeNdParams :: ConfigData -> Node -> Maybe FilledNDParams
- getNetwork :: ConfigData -> String -> ErrorResult Network
- type MAC = String
- getAllMACs :: ConfigData -> [MAC]
- getAllDrbdSecrets :: ConfigData -> [DRBDSecret]
- type NodeLVsMap = MultiMap String LogicalVolume
- getInstanceLVsByNode :: ConfigData -> Instance -> ErrorResult NodeLVsMap
- getAllLVs :: ConfigData -> ErrorResult (Set LogicalVolume)
- class NdParamObject a where
- getNdParamsOf :: ConfigData -> a -> Maybe FilledNDParams
Documentation
Operations on the whole configuration
readConfig :: FilePath -> IO (Result String)Source
parseConfig :: String -> Result ConfigDataSource
encodeConfig :: ConfigData -> StringSource
loadConfig :: FilePath -> IO (Result ConfigData)Source
Wrapper over readConfig
and parseConfig
.
saveConfig :: Handle -> ConfigData -> IO ()Source
Wrapper over hPutStr
and encodeConfig
.
Query functions
withMissingParam :: String -> (a -> ErrorResult b) -> Maybe a -> ErrorResult bSource
computeDiskNodes :: Disk -> Set StringSource
instDiskNodes :: ConfigData -> Instance -> Set StringSource
instNodes :: ConfigData -> Instance -> Set StringSource
Computes all nodes of an instance.
instSecondaryNodes :: ConfigData -> Instance -> Set StringSource
getNodeInstances :: ConfigData -> String -> ([Instance], [Instance])Source
Get instances of a given node. The node is specified through its UUID.
getNodeRole :: ConfigData -> Node -> NodeRoleSource
Computes the role of a node.
getMasterNodes :: ConfigData -> [Node]Source
Get the list of the master nodes (usually one).
getMasterCandidates :: ConfigData -> [Node]Source
Get the list of master candidates, not including the master itself.
getMasterOrCandidates :: ConfigData -> [Node]Source
Get the list of master candidates, including the master.
getMasterNetworkParameters :: ConfigData -> MasterNetworkParametersSource
Get the network parameters for the master IP address.
getOnlineNodes :: ConfigData -> [Node]Source
Get the list of online nodes.
getDefaultNicLink :: ConfigData -> StringSource
Returns the default cluster link.
getDefaultHypervisor :: ConfigData -> HypervisorSource
Returns the default cluster hypervisor.
getInstancesIpByLink :: LinkIpMap -> String -> [String]Source
Returns instances of a given link.
getItem :: String -> String -> Map String a -> ErrorResult aSource
getItem' :: String -> String -> Map ByteString a -> ErrorResult aSource
getNode :: ConfigData -> String -> ErrorResult NodeSource
Looks up a node by name or uuid.
getInstance :: ConfigData -> String -> ErrorResult InstanceSource
Looks up an instance by name or uuid.
getDisk :: ConfigData -> String -> ErrorResult DiskSource
Looks up a disk by uuid.
getFilterRule :: ConfigData -> String -> ErrorResult FilterRuleSource
Looks up a filter by uuid.
getGroup :: ConfigData -> String -> ErrorResult NodeGroupSource
Looks up a node group by name or uuid.
getGroupNdParams :: ConfigData -> NodeGroup -> FilledNDParamsSource
Computes a node group's node params.
getGroupIpolicy :: ConfigData -> NodeGroup -> FilledIPolicySource
Computes a node group's ipolicy.
getGroupDiskParams :: ConfigData -> NodeGroup -> GroupDiskParamsSource
Computes a group's (merged) disk params.
getGroupNodes :: ConfigData -> String -> [Node]Source
Get nodes of a given node group.
getGroupInstances :: ConfigData -> String -> ([Instance], [Instance])Source
Get (primary, secondary) instances of a given node group.
getFilledHvStateParams :: ConfigData -> Node -> FilledHvStateSource
Retrieves the node's static hypervisor state parameters, missing values filled with group's parameters, missing group parameters are filled with cluster's parameters. Currently, returns hvstate parameters only for the default hypervisor.
getFilledInstHvParams :: [String] -> ConfigData -> Instance -> HvParamsSource
Retrieves the instance hypervisor params, missing values filled with cluster defaults.
getFilledInstBeParams :: ConfigData -> Instance -> ErrorResult FilledBeParamsSource
Retrieves the instance backend params, missing values filled with cluster defaults.
getFilledInstOsParams :: ConfigData -> Instance -> OsParamsSource
Retrieves the instance os params, missing values filled with cluster defaults. This does NOT include private and secret parameters.
getInstPrimaryNode :: ConfigData -> String -> ErrorResult NodeSource
Looks up an instance's primary node.
getDrbdDiskNodes :: ConfigData -> Disk -> [Node]Source
getInstAllNodes :: ConfigData -> String -> ErrorResult [Node]Source
Retrieves all the nodes of the instance.
As instances not using DRBD can be sent as a parameter as well, the primary node has to be appended to the results.
getInstDisks :: ConfigData -> String -> ErrorResult [Disk]Source
Get disks for a given instance. The instance is specified by name or uuid.
getInstDisksFromObj :: ConfigData -> Instance -> ErrorResult [Disk]Source
Get disks for a given instance object.
collectFromDrbdDisks :: Monoid a => (String -> String -> Int -> Int -> Int -> Private DRBDSecret -> a) -> Disk -> aSource
getDrbdMinorsForDisk :: Disk -> [(Int, String)]Source
Returns the DRBD minors of a given Disk
getDrbdMinorsForNode :: String -> Disk -> [(Int, String)]Source
getDrbdMinorsForInstance :: ConfigData -> Instance -> ErrorResult [(Int, String)]Source
Returns the DRBD minors of a given instance
rolePrimary :: StringSource
roleSecondary :: StringSource
:: ConfigData | |
-> String | The UUID of a node. |
-> Instance | |
-> [(String, Int, String, String, String, String)] |
Gets the list of DRBD minors for an instance that are related to a given node.
buildLinkIpInstnameMap :: ConfigData -> LinkIpMapSource
Builds link -> ip -> instname map. For instances without a name, we insert the uuid instead.
TODO: improve this by splitting it into multiple independent functions:
- abstract the "fetch instance with filled params" functionality
- abstsract the [instance] -> [(nic, instance_name)] part
- etc.
getGroupOfNode :: ConfigData -> Node -> Maybe NodeGroupSource
Returns a node's group, with optional failure if we can't find it (configuration corrupt).
getNodeNdParams :: ConfigData -> Node -> Maybe FilledNDParamsSource
Returns a node's ndparams, filled.
Network
getNetwork :: ConfigData -> String -> ErrorResult NetworkSource
Looks up a network. If looking up by uuid fails, we look up by name.
MACs
getAllMACs :: ConfigData -> [MAC]Source
Returns all MAC addresses used in the cluster.
DRBD secrets
LVs
type NodeLVsMap = MultiMap String LogicalVolumeSource
A map from node UUIDs to
FIXME: After adding designated types for UUIDs,
use them to replace String
here.
getAllLVs :: ConfigData -> ErrorResult (Set LogicalVolume)Source
ND params
class NdParamObject a whereSource
Type class denoting objects which have node parameters.
getNdParamsOf :: ConfigData -> a -> Maybe FilledNDParamsSource