Safe HaskellNone



Parsing data from text-files.

This module holds the code for loading the cluster state from text files, as produced by gnt-node and gnt-instance list command.


Helper functions

commaSplit :: String -> [String] Source #

Simple wrapper over sepSplit

Serialisation functions

serializeGroup :: Group -> String Source #

Serialize a single group.

serializeGroups :: List -> String Source #

Generate group file data from a group list.

serializeNode Source #


:: List

The list of groups (needed for group uuid)

-> Node

The node to be serialised

-> String 

Serialize a single node.

serializeNodes :: List -> List -> String Source #

Generate node file data from node objects.

serializeInstance Source #


:: List

The node list (needed for node names)

-> Instance

The instance to be serialised

-> String 

Serialize a single instance.

serializeInstances :: List -> List -> String Source #

Generate instance file data from instance objects.

iSpecsSeparator :: Char Source #

Separator between ISpecs (in MinMaxISpecs).

serializeISpec :: ISpec -> String Source #

Generate a spec data from a given ISpec object.

serializeDiskTemplates :: [DiskTemplate] -> String Source #

Generate disk template data.

serializeMultipleMinMaxISpecs :: [MinMaxISpecs] -> String Source #

Generate min/max instance specs data.

serializeIPolicy :: String -> IPolicy -> String Source #

Generate policy data from a given policy object.

serializeAllIPolicies :: IPolicy -> List -> String Source #

Generates the entire ipolicy section from the cluster and group objects.

serializeCluster :: ClusterData -> String Source #

Generate complete cluster data from node and instance lists.

Parsing functions

loadGroup Source #


:: MonadFail m 
=> [String] 
-> m (String, Group)

The result, a tuple of group UUID and group object

Load a group from a field list.

loadNode Source #


:: MonadFail m 
=> NameAssoc

Association list with current groups

-> [String]

Input data as a list of fields

-> m (String, Node)

The result, a tuple o node name and node object

Load a node from a field list.

loadInst Source #


:: NameAssoc

Association list with the current nodes

-> [String]

Input data as a list of fields

-> Result (String, Instance)

A tuple of instance name and the instance object

Load an instance from a field list.

loadISpec :: String -> [String] -> Result ISpec Source #

Loads a spec from a field list.

loadMinMaxISpecs :: String -> String -> String -> Result MinMaxISpecs Source #

Load a single min/max ISpec pair

breakISpecsPairs :: String -> [String] -> Result [(String, String)] Source #

Break a list of ispecs strings into a list of (min/max) ispecs pairs

loadMultipleMinMaxISpecs :: String -> [String] -> Result [MinMaxISpecs] Source #

Load a list of min/max ispecs pairs

loadIPolicy :: [String] -> Result (String, IPolicy) Source #

Loads an ipolicy from a field list.

loadAllIPolicies :: List -> [String] -> Result (IPolicy, List) Source #

Loads all policies from the policy section

loadTabular Source #


:: (MonadFail m, Element a) 
=> [String]

Input data, as a list of lines

-> ([String] -> m (String, a))

Conversion function

-> m (NameAssoc, Container a)

A tuple of an association list (name to object) and a set as used in Ganeti.HTools.Container

Convert newline and delimiter-separated text.

This function converts a text in tabular format as generated by gnt-instance list and gnt-node list to a list of objects using a supplied conversion function.

readData Source #


:: String

Path to the text file

-> IO String

Contents of the file

Load the cluser data from disk.

This is an alias to readFile just for consistency with the other modules.

parseData Source #


:: String

Text data

-> Result ClusterData 

Builds the cluster data from text input.

loadData Source #


:: String

Path to the text file

-> IO (Result ClusterData) 

Top level function for data loading.