ganeti

Safe HaskellNone

Ganeti.Config

Contents

Description

Implementation of the Ganeti configuration database.

Synopsis

Documentation

type LinkIpMap = Map String (Map String String) Source #

Type alias for the link and ip map.

Operations on the whole configuration

loadConfig :: FilePath -> IO (Result ConfigData) Source #

Wrapper over readConfig and parseConfig.

saveConfig :: Handle -> ConfigData -> IO () Source #

Wrapper over hPutStr and encodeConfig.

Query functions

instNodes :: ConfigData -> Instance -> Set String Source #

Computes all nodes of an instance.

getNodeInstances :: ConfigData -> String -> ([Instance], [Instance]) Source #

Get instances of a given node. The node is specified through its UUID. The secondary calculation is expensive and frequently called, so optimise this to allocate fewer temporary values

getNodeRole :: ConfigData -> Node -> NodeRole Source #

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 -> MasterNetworkParameters Source #

Get the network parameters for the master IP address.

getOnlineNodes :: ConfigData -> [Node] Source #

Get the list of online nodes.

getDefaultNicLink :: ConfigData -> String Source #

Returns the default cluster link.

getDefaultHypervisor :: ConfigData -> Hypervisor Source #

Returns the default cluster hypervisor.

getInstancesIpByLink :: LinkIpMap -> String -> [String] Source #

Returns instances of a given link.

getNode :: ConfigData -> String -> ErrorResult Node Source #

Looks up a node by name or uuid.

getInstance :: ConfigData -> String -> ErrorResult Instance Source #

Looks up an instance by name or uuid.

getDisk :: ConfigData -> String -> ErrorResult Disk Source #

Looks up a disk by uuid.

getFilterRule :: ConfigData -> String -> ErrorResult FilterRule Source #

Looks up a filter by uuid.

getGroup :: ConfigData -> String -> ErrorResult NodeGroup Source #

Looks up a node group by name or uuid.

getGroupNdParams :: ConfigData -> NodeGroup -> FilledNDParams Source #

Computes a node group's node params.

getGroupIpolicy :: ConfigData -> NodeGroup -> FilledIPolicy Source #

Computes a node group's ipolicy.

getGroupDiskParams :: ConfigData -> NodeGroup -> GroupDiskParams Source #

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.

getFilledInstHvParams :: [String] -> ConfigData -> Instance -> HvParams Source #

Retrieves the instance hypervisor params, missing values filled with cluster defaults.

getFilledInstBeParams :: ConfigData -> Instance -> ErrorResult FilledBeParams Source #

Retrieves the instance backend params, missing values filled with cluster defaults.

getFilledInstOsParams :: ConfigData -> Instance -> OsParams Source #

Retrieves the instance os params, missing values filled with cluster defaults. This does NOT include private and secret parameters.

getInstPrimaryNode :: ConfigData -> String -> ErrorResult Node Source #

Looks up an instance's primary node.

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.

getDrbdMinorsForDisk :: Disk -> [(Int, String)] Source #

Returns the DRBD minors of a given Disk

getDrbdMinorsForInstance :: ConfigData -> Instance -> ErrorResult [(Int, String)] Source #

Returns the DRBD minors of a given instance

getInstMinorsForNode Source #

Arguments

:: 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 -> LinkIpMap Source #

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 NodeGroup Source #

Returns a node's group, with optional failure if we can't find it (configuration corrupt).

getNodeNdParams :: ConfigData -> Node -> Maybe FilledNDParams Source #

Returns a node's ndparams, filled.

Network

getNetwork :: ConfigData -> String -> ErrorResult Network Source #

Looks up a network. If looking up by uuid fails, we look up by name.

MACs

type MAC = String Source #

getAllMACs :: ConfigData -> [MAC] Source #

Returns all MAC addresses used in the cluster.

DRBD secrets

LVs

type NodeLVsMap = MultiMap String LogicalVolume Source #

A map from node UUIDs to

FIXME: After adding designated types for UUIDs, use them to replace String here.

ND params

class NdParamObject a where Source #

Type class denoting objects which have node parameters.

Instances
NdParamObject Node # 
Instance details

Defined in Ganeti.Config

NdParamObject NodeGroup # 
Instance details

Defined in Ganeti.Config

NdParamObject Cluster # 
Instance details

Defined in Ganeti.Config