- Dec 20, 2010
-
-
Iustin Pop authored
This patch switches from the group index to the group name for the informational messages in the hail results. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
Iustin Pop authored
Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
Iustin Pop authored
This should have been in the previous patches, but sent separate for clarity. The live-test script is updated to read the first node from the cluster, now that the text files don't start anymore with the node data. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
Iustin Pop authored
Currently, the Node.group attribute is the UUID of the group, as until recently Ganeti didn't export the node group properties. Since it does so now, we make the following changes (again apologies for a big patch): - we change the group attribute to be an index, similar to the way an Instance.pnode and snode attributes point to the parent node(s) - on load, we read the group.uuid attribute and we use that to lookup the actual group index, from previously-loaded groups info - this means that we now first read groups, then read nodes using the group info, and then read instances using the node info This patch leaves a few functions showing the group index (ugly since it's htools internal), will be converted later. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
Iustin Pop authored
This (invasive) patch changes all the loader pipelines to read the node groups data from the cluster, via the various backends. It is invasive as it needs coordinated changes across all the loaders. Note that the new group data is not used, just returned. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
Iustin Pop authored
This will be used in the various backends similar to the lookupNode function. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
Iustin Pop authored
This is not yet used by the rest of the code. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
Iustin Pop authored
Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
- Dec 15, 2010
-
-
Iustin Pop authored
This patch fixes two issues related to coloured sources generation. First, recent hscolour has changed the css file (and we need to update it), but it also can output it at runtime, so there's no need to store it anymore in the source tree. Second, the current source generation predates the addition of sources in Ganeti/ (as opposed to just Ganeti/HTools), and thus we were missing the sources in that directory. We replace the target file name to account for different base directories. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
René Nussbaumer <rn@google.com>
-
- Dec 09, 2010
-
-
Iustin Pop authored
When doing a two-node allocation on a cluster/group in which only one node is online, or a one-node allocation without any online nodes, we didn't show a valid error mesage. The patch changes tryAlloc to "fail hard" in this case, to make the failure explicit. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
Iustin Pop authored
This is a bit hackish. We add a new function that takes the input data, splits it into groups, runs the original tryAlloc for each group, and then chooses the best solution, but adds the log messages from all the groups, as to give better debugging information. In hail, we just point to this new function. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
Iustin Pop authored
Since the solutions are "self-annotated", we can remove the custom code from hail, and just keep a very small processResults function. After this change, allocation/failure shows the new detailed information. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
Iustin Pop authored
And also a couple of functions for describing a given solution; these will be used in the future instead of the ones currently in hail. The patch also enhances the description of failure messages. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
Iustin Pop authored
Tuples are good for two, three, at most four elements. Beyond that, the continuous pattern matching and construction/deconstruction becomes tedious. Since in the future we'll probably keep more information in the AllocSolution type, we change it now from a triple to a "real" data type. We also do some cleanups: adding a real emptyAlloc value, instead of the previous hardcoded ones, and add some more comments on how we do the multi-evacuation. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
- Dec 01, 2010
-
-
Iustin Pop authored
Since we added the score to AllocElement, we don't need to wrap AllocElement in yet another tuple, just to attach the cluster score. So we simplify the AllocSolution type. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
Iustin Pop authored
AllocElement, a type used as a result of allocations, holds the status of the nodes after the allocation. In most cases, we'll compare this allocation result with others, to see which allocation decision makes the most sense. This comparison is done via the cluster score. However, if we later need to redo this computation, as part of other comparisons, we'd need to evaluate it again, etc. So it's easier to just compute the score at the place where we compute the node list in the initial step. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
Iustin Pop authored
Actually, this just moves the functions from the QC module to Types, and removes a duplicate entry from Cluster. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
Iustin Pop authored
This improves on the previous change. Currently, the node and instance lists shipped around during data loading are (again) association lists. For instances it's not a big issue, but the node list is rewritten continuously while we assign instances to nodes, and that is very slow. The code was originally written for small (10-20 node) clusters, and today with multinodes… :) Rewriting to use Node.List/Instance.List makes a bit of a messy patch, but it allows to remove some custom functions for assoc. list processing, and also some custom unittests. At the end, the load time is almost halved, and we spend time now just in the string parsing code (which is, as we know, slow…). Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
Iustin Pop authored
When loading big clusters, the association lists become a bit slow, so we'll replace this with a simple Map String Int; the change is trivial and can be reverted easily, while it brings up a good speedup in the data loading. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
Iustin Pop authored
The type alias NameAssoc has been introduced a long time ago, but there are some few not-yet-converted cases. In preparation for changes to that type, let's make sure we use it consistently. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
Iustin Pop authored
On a single-group cluster, we proceed as before. On multi-group clusters, we require selection of the desired group (currently via UUID only). Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
Iustin Pop authored
This splits a top-level cluster information into the component node groups. Instance go to the group of their primary node, but otherwise we don't disallow split instances. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
Iustin Pop authored
Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
Iustin Pop authored
Since some of the functions we export from Container.hs are 1:1 identical to IntMap, we can just export the originals and remove the wrappers. This reduces the code we need to unittest. Furthermore, we add two simple unittest for the two non-trivial functions that we do have in Container.hs. And finally, we remove the 'remove' function, since it's not used, and thus bring code coverage very close to 100%. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
Iustin Pop authored
Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
Iustin Pop authored
For now, we don't support instances allocated across two groups, and we will reject such clusters. The isClusterConsistent function will return a list of inconsistent instances, potentially allowing operation without touch them (but only the rest). Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
Iustin Pop authored
Unittests included. The function will be needed for consistency checks in the algorithms. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
Iustin Pop authored
This is to pottentially allow easier changes later. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
- Nov 28, 2010
-
-
Iustin Pop authored
-
- Nov 24, 2010
-
-
Iustin Pop authored
This depends on future support from Ganeti (2.4+). Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
Iustin Pop authored
This makes the code incompatible with JSON files from Ganeti pre-2.4. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
Iustin Pop authored
Compatibility with old text files is kept by using the default UUID if the file (or even some records) don't have a UUID. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
Iustin Pop authored
This makes the code incompatible with Ganeti pre-2.4. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
Iustin Pop authored
This is not used anywhere yet, and the backend are all just adding the default UUID, not the real one. The patch also allows displaying the group UUID in the node list. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
Iustin Pop authored
This will be used as a placeholder for the cases when we need a UUID (any UUID), but we don't have one handy. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
- Nov 23, 2010
-
-
Iustin Pop authored
-
Iustin Pop authored
This does just two passes, instead of three, over the list. This reduces the overall runtime well enough (~25%) in some tests, but it's not reproducible using profiling, so I don't know how much the function itself is being sped-up. Note: this is written via `seq`s, and not BangPatterns. Since it's just one case, adding BangPatterns just for it wasn't a big gain. Thanks to Lécz Balázs for the impetus to improve this! Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
Iustin Pop authored
Currently, hbal does a one-two signal handling, where the first signal causes graceful termination, and the second one an immediate on (either SIGINT or SIGTERM can be used, interchangeably). However, this poses a timing problem: if two programs want to send a graceful termination request, they cannot do that without careful coordination. To fix this, we change to code to handle the signal separately: SIGINT (^C) sends graceful termination, while SIGTERM sends immediate termination. This should allow easier controlling of hbal. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Balazs Lecz <leczb@google.com>
-
- Nov 19, 2010
-
-
Iustin Pop authored
While we don't actually have IO code in the Simu loader, we do have the same interface. So we move the code again to a separate parseData function which is exported.
-
Iustin Pop authored
-