|
|
|
Description |
Implementation of the iallocator interface.
|
|
Synopsis |
|
type IAllocResult = (String, JSValue, List, List) | | parseBaseInstance :: String -> JSRecord -> Result (String, Instance) | | parseInstance :: NameAssoc -> String -> JSRecord -> Result (String, Instance) | | parseNode :: NameAssoc -> String -> JSRecord -> Result (String, Node) | | parseGroup :: String -> JSRecord -> Result (String, Group) | | parseData :: String -> Result ([String], Request) | | formatResponse :: Bool -> String -> JSValue -> String | | describeSolution :: AllocSolution -> String | | formatAllocate :: List -> AllocSolution -> Result IAllocResult | | formatNodeEvac :: List -> List -> List -> (List, List, EvacSolution) -> Result IAllocResult | | processRelocate :: List -> List -> List -> Idx -> Int -> [Ndx] -> Result (List, List, [Ndx]) | | formatRelocate :: (List, List, [Ndx]) -> Result IAllocResult | | processRequest :: Request -> Result IAllocResult | | readRequest :: FilePath -> IO Request | | runIAllocator :: Request -> (Maybe (List, List), String) | | loadData :: FilePath -> IO (Result ClusterData) |
|
|
Documentation |
|
|
Type alias for the result of an IAllocator call.
|
|
|
Parse the basic specifications of an instance.
Instances in the cluster instance list and the instance in an
Allocate request share some common properties, which are read by
this function.
|
|
|
:: NameAssoc | The node name-to-index association list
| -> String | The name of the instance
| -> JSRecord | The JSON object
| -> Result (String, Instance) | | Parses an instance as found in the cluster instance list.
|
|
|
|
:: NameAssoc | The group association
| -> String | The node's name
| -> JSRecord | The JSON object
| -> Result (String, Node) | | Parses a node as found in the cluster node list.
|
|
|
|
:: String | The group UUID
| -> JSRecord | The JSON object
| -> Result (String, Group) | | Parses a group as found in the cluster group list.
|
|
|
|
:: String | The JSON message as received from Ganeti
| -> Result ([String], Request) | Result tuple
| Top-level parser.
The result is a tuple of eventual warning messages and the parsed
request; if parsing the input data fails, we'll return a Bad
value.
|
|
|
|
:: Bool | Whether the request was successful
| -> String | Information text
| -> JSValue | The JSON encoded result
| -> String | The full JSON-formatted message
| Formats the result into a valid IAllocator response message.
|
|
|
|
Flatten the log of a solution into a string.
|
|
|
Convert allocation/relocation results into the result format.
|
|
|
Convert a node-evacuation/change group result.
|
|
|
:: List | The group list
| -> List | The node list
| -> List | The instance list
| -> Idx | The index of the instance to move
| -> Int | The number of nodes required
| -> [Ndx] | Nodes which should not be used
| -> Result (List, List, [Ndx]) | Solution list
| Runs relocate for a single instance.
This is wrapper over the tryNodeEvac function that is run
with a single instance (ours), and further it checks that the
result it got (in the nodes field) is actually consistent, as
tryNodeEvac is designed to output primarily an opcode list, not a
node list.
|
|
|
|
|
|
Process a request and return new node lists.
|
|
|
Reads the request from the data file(s).
|
|
|
Main iallocator pipeline.
|
|
|
:: FilePath | The path to the file
| -> IO (Result ClusterData) | | Load the data from an iallocation request file
|
|
|
Produced by Haddock version 2.6.0 |