- May 23, 2009
-
-
Iustin Pop authored
This strips the suffix from the objects themselves, not only from the ktn/kti vars.
-
Iustin Pop authored
This patch makes the format of IAlloc.loadData be similar the same as Loader.mergeData.
-
Iustin Pop authored
This patch moves the common loading sequence to CLI, such that hbal/hn1 and possible future scripts that take the input from same sources can use it.
-
Iustin Pop authored
This moves the remaining loading function to Loader (together with its associated support functions).
-
Iustin Pop authored
This patch generalizes a little the CLI handling by not passing in a special function for help and such, but instead requiring that the options object supports some common functionality.
-
Iustin Pop authored
Since both nodes and instances support some common functionality (names and indices), we add a class so that we can access these attributes in a generic way.
-
- May 22, 2009
-
-
Iustin Pop authored
In order to simplify the data structures, we add back the name on the node and instance objects. We still keep the index for, well, indexing, but we will use the name directly from the object, in order to get rid of the ktn/kti arguments which are passed around everywhere.
-
Iustin Pop authored
This new big patch does a couple of more cleanups in the loading of data chapter: - introduce a Types module that holds most types (except the base Node/Instance/etc.) so that multiple other modules can use these (instead of only Cluster and its users) - bring IAlloc.hs in line with the recent changes of providing data types and not strings - removal of obsolete Utils.hs json-related functions
-
Iustin Pop authored
This big patch changes the loader model from “string data as common format” to actual object structures as common format. The text loading function move from Cluster.hs to a new Text.hs module, some common functions are moved to a new Loader.hs module, and the return values from both Rapi.hs and Text.hs are uniformized.
-
- May 21, 2009
-
-
Iustin Pop authored
This makes hail compile and get a request parsed via IAlloc, but nothing more.
-
Iustin Pop authored
This patch adds experimental support to hbal for non-redundant instances (i.e. instances with only one node). They are currently handled as non-moveable, and as such the algorithm simply ignores them. Supports needs to be added when reading from RAPI via hscan, and probably in other corner cases.
-
Iustin Pop authored
-
Iustin Pop authored
This patch switches from plain read to a wrapper over readsPrec that returns better error messages than the buildin 'Prelude: no parse'.
-
Iustin Pop authored
This allows easy checking for valid format of the input data (row-wise).
-
- May 20, 2009
-
-
Iustin Pop authored
This patch converts loadTabular and loadData to a monadic form, thus allowing meaningful error messages from the node/instance load routines.
-
Iustin Pop authored
D'oh, one can extract from a wrapped variable, not only from functions.
-
Iustin Pop authored
This patch changes Cluster.loadData to return a Result, instead of directly the values; this will allow us to return meaningful error values (e.g. when an instances lives on unknown node) rather than simply abort. Currently the result is always an Ok, the actual signalling of errors will come later. Its callers are changed to accommodate for the new return type and to display errors as needed.
-
Iustin Pop authored
This patch adds a very dumb way to override the port and scheme for RAPI: if the master string doesn't contain a colon, we consider it a simple hostname specification, and thus prepend ‘https://’ and append ‘:5080’, (the default RAPI port); otherwise, we consider it a fully specified URL, and don't do any mangling to it. This allows to use saved RAPI responses in testing, with the “file://” scheme, or to use another port or non https mode with an actual RAPI instance.
-
Iustin Pop authored
Now that we dropped 1.2 compatibility, we can removed the special casing for RAPI differences.
-
Iustin Pop authored
We don't really needed, but is more clean like this.
-
Iustin Pop authored
This big patch converts from our home-grown monad-like constructs (the Either stuff) to a real, Either-like-but-another-name monad. We introduce a “Result a” monad, and this allows dropping many of the extra constructs. Hopefully the code is also more clear. Many of the functions could now be written in a generic-monad style, instead of Result specifically, but that will come in future patches. IAlloc.hs also has some unrelated patches.
-
Iustin Pop authored
Adding a small request type data structure.
-
- May 19, 2009
-
-
Iustin Pop authored
This is just a cosmetic (I hope) change; the nodes shouldn't be used anyway, and we only correct the display message.
-
Iustin Pop authored
Since we only support Ganeti 2.0, we drop the 1.2 compatibility.
-
Iustin Pop authored
This patch drops compatiblity with Ganeti 1.2 and adds support for offline nodes in the cluster. When reading from RAPI, the drained nodes are considered offline so that we don't allocate on them too.
-
- May 18, 2009
-
-
Iustin Pop authored
We know have a working parseData function that returns the node and instance data. This uncovered bad support for non-drbd instances
☹️ -
Iustin Pop authored
This patch moves the generic/reusable JSON functions to Utils.hs, so that they're shared between RAPI/IAlloc.
-
Iustin Pop authored
This will be used in two ways: - format the response to Ganeti (easy, implemented) - parse the input data and build the node/instance lists (hard :)
-
- Apr 25, 2009
-
-
Iustin Pop authored
This new parameter causes the algorithm to finish (or even not start at all) if we reach/have a score better than it.
-
Iustin Pop authored
In some case we manually do “if isNothing … then Nothing else …”, which can be very easily replaced with a monadic construct in the Maybe monad.
-
- Apr 20, 2009
-
-
Iustin Pop authored
Since Xen seems to “steal” some amounts of memory (depending on total node memory), we increase the maximum allowed missing memory to 512MB, based on gathered data from multiple machines.
-
Iustin Pop authored
This patch adds support for selecting the instance/node file names via two environment variables (HTOOLS_NODES, HTOOLS_INSTANCES). Unfortunately we still have lots of duplicated code, since the options are not unified.
-
- Apr 18, 2009
-
-
Iustin Pop authored
This patch adds support in hbal for writing the command list to a shell script, with error checking and allowing for early exit.
-
- Apr 16, 2009
-
-
Iustin Pop authored
Since it's easy to pass a wrong node name as offline, we should abort instead of silently ignoring it.
-
- Mar 23, 2009
-
-
Iustin Pop authored
This removes most of the content of the README file (obsoleted by new algorithm and man pages), modifies the Makefile to include the built documentation in the source archive (so that haddock/hscolour are not needed) and updates the haddock-prologue with current information.
-
- Mar 22, 2009
-
-
Iustin Pop authored
This small patch adds disk space checks to the Cluster.checkData function, and simplifies a little the warning messages.
-
Iustin Pop authored
For Ganeti 1.2 which doesn't have the ‘disk_usage’ instance query field, we need to manually include the DRBD overhead (per disk). This patch modifies the RAPI collection to do this, but loading from disk does not as it's unknown if the query came from hscan or RAPI 1.2 or RAPI 2.0...
-
Iustin Pop authored
This fixes the setFmem function which didn't compute other related fields after free memory change. Ideally, this should be abstracted so that add/remove Pri and similar functions could reuse it instead of duplicating code.
-
Iustin Pop authored
If an instance is down, it's memory is not reflected in the node used memory, and thus the node free memory is higher than the actual value. This patch deducts the memory for such instances from the node free memory, allowing a correct calculation for such cases.
-
Iustin Pop authored
This patch modifies Rapi, the Cluster.loadData and hscan serialization to load and save the instance run status. At instance level, we add both a boolean field denoting the true/false run status, and a string field which holds the original value (since we don't have a 1-to-1 mapping) for use in hscan serialization. The run status is not yet used.
-