|
|
|
|
|
Description |
Module describing a node.
All updates are functional (copy-based) and return a new node with
updated value.
|
|
Synopsis |
|
|
|
|
Type declarations
|
|
type TagMap = Map String Int | Source |
|
The tag map type
|
|
|
The node type.
| Constructors | Node | | name :: String | The node name
| tMem :: Double | Total memory (MiB)
| nMem :: Int | Node memory (MiB)
| fMem :: Int | Free memory (MiB)
| xMem :: Int | Unaccounted memory (MiB)
| tDsk :: Double | Total disk space (MiB)
| fDsk :: Int | Free disk space (MiB)
| tCpu :: Double | Total CPU count
| uCpu :: Int | Used VCPU count
| pList :: [Idx] | List of primary instance indices
| sList :: [Idx] | List of secondary instance indices
| idx :: Ndx | Internal index for book-keeping
| peers :: PeerMap | Pnode to instance mapping
| failN1 :: Bool | Whether the node has failed n1
| rMem :: Int | Maximum memory needed for failover by
primaries of this node
| pMem :: Double | Percent of free memory
| pDsk :: Double | Percent of free disk
| pRem :: Double | Percent of reserved memory
| pCpu :: Double | Ratio of virtual to physical CPUs
| mDsk :: Double | Minimum free disk ratio
| mCpu :: Double | Max ratio of virt-to-phys CPUs
| loDsk :: Int | Autocomputed from mDsk low disk
threshold
| hiCpu :: Int | Autocomputed from mCpu high cpu
threshold
| offline :: Bool | Whether the node should not be used
for allocations and skipped from score
computations
| utilPool :: DynUtil | Total utilisation capacity
| utilLoad :: DynUtil | Sum of instance utilisation
| pTags :: TagMap | Map of primary instance tags and their count
|
|
| Instances | |
|
|
|
A simple name for the int, node association list.
|
|
|
A simple name for a node map.
|
|
|
A simple name for an allocation element (here just for logistic
reasons)
|
|
|
Constant node index for a non-moveable instance.
|
|
|
No limit value
|
|
|
No limit int value
|
|
Helper functions
|
|
|
Add a tag to a tagmap
|
|
|
Add multiple tags
|
|
|
Adjust or delete a tag from a tagmap
|
|
|
Remove multiple tags
|
|
|
Check if we can add a list of tags to a tagmap
|
|
|
Check how many primary instances have conflicting tags. The
algorithm to compute this is to sum the count of all tags, then
subtract the size of the tag map (since each tag has at least one,
non-conflicting instance); this is equivalent to summing the
values in the tag map minus one.
|
|
Initialization functions
|
|
create :: String -> Double -> Int -> Int -> Double -> Int -> Double -> Bool -> Node | Source |
|
Create a new node.
The index and the peers maps are empty, and will be need to be
update later via the setIdx and buildPeers functions.
|
|
|
Changes the index.
This is used only during the building of the data structures.
|
|
|
Changes the name.
This is used only during the building of the data structures.
|
|
|
Sets the offline attribute.
|
|
|
Sets the unnaccounted memory.
|
|
|
Sets the max disk usage ratio
|
|
|
Sets the max cpu usage ratio
|
|
|
Computes the maximum reserved memory for peers from a peer map.
|
|
|
Builds the peer map for a given node.
|
|
|
Assigns an instance to a node as primary and update the used VCPU
count, utilisation data and tags map.
|
|
|
Assigns an instance to a node as secondary without other updates.
|
|
Update functions
|
|
|
Sets the free memory.
|
|
|
Removes a primary instance.
|
|
|
Removes a secondary instance.
|
|
|
Adds a primary instance.
|
|
|
Adds a secondary instance.
|
|
Stats functions
|
|
|
Computes the amount of available disk on a given node
|
|
Display functions
|
|
|
|
showHeader :: String -> (String, Bool) | Source |
|
Returns the header and numeric propery of a field
|
|
|
String converter for the node list functionality.
|
|
defaultFields :: [String] | Source |
|
|
Produced by Haddock version 2.4.2 |