Statistics
| Branch: | Tag: | Revision:

root / htools / Ganeti @ 1f5635a9

# Date Author Comment
1f5635a9 01/13/2012 03:17 pm Iustin Pop

Show explicit message when hspace fails to alloc

Currently, in the human-readable mode, hspace doesn't show any
messages when no instances can be allocated in tiered-alloc mode. This
is confusing, so let's add an explicit message.

Signed-off-by: Iustin Pop <>...

aa5b2f07 01/13/2012 03:17 pm Iustin Pop

Obey instance policy in allocation routines

This currently checks the minimum/maximum sizes and the disk
template. Unittests will come later.

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

d6eec019 01/13/2012 03:17 pm Iustin Pop

Set group policy on nodes

In order to be able to use the group policy during allocation, we have
a few choices:

- pass the group policy as a separate argument to all involved
functions, or
- add the policy as an attribute to nodes, or
- add the group (not only the group index) as an attribute to nodes...

cdbab531 01/13/2012 03:17 pm Iustin Pop

A trivial optimisation in Loader.mergeData

During loading, we can eliminate some intermediate data
structures. This only matters for big clusters, and even there it's
less than 1% less memory allocated, but still, it's a no-brainer.

Signed-off-by: Iustin Pop <>...

74c35f2f 01/13/2012 03:17 pm Iustin Pop

Trivial performance optimisation

This is not in the hot-path, but still, no sense in doing O(n) instead
of O(1).

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

6cff91f5 01/13/2012 03:17 pm Iustin Pop

Add ipolicy attribute to group objects

This is straightforward; as before, so far the text and simu backends
have no way to use a non-default ipolicy.

Furthermore, we do some unit-test preparation for future changes
(these seem a no-op for now, but they are needed for later patches)....

3c3c796e 01/13/2012 03:17 pm Iustin Pop

Enable Eq instances for TH-built objects

This is needed for the next patch.

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

9fdd3d0f 01/13/2012 03:16 pm Iustin Pop

Switch hspace to read the disk template from the cluster

The default disk template is the first enabled template.

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

fc42a408 01/13/2012 03:16 pm Iustin Pop

Read the disk templates part of the ipolicy

The default value is badly defined (hardcoded defaults)…

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

89c758c6 01/13/2012 03:16 pm Iustin Pop

Move DiskTemplate definition around

This is needed since we'll need the DiskTemplate definition in the
IPolicy one.

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

be468da0 01/13/2012 03:16 pm Iustin Pop

Switch hspace defaults to the cluster policy

This changes from the current hardcoded defaults to the cluster
policy. The command line options now override the defaults from the
cluster, and the tiered spec mode is always enabled.

Also fixes a tiny typo in the man page (together with the man page...

304f9292 01/13/2012 03:16 pm Iustin Pop

Add a helper function converting ispecs to rspecs

The rspec type is simpler than the ispec one; most likely it should be
deprecated later.

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

8564fb47 01/13/2012 03:16 pm Iustin Pop

Abstract creation of instance from a spec

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

df5d5433 01/13/2012 03:16 pm Iustin Pop

Load cluster ipolicy via Rapi

This requires changing from querying the /tags resource to the /info
resource.

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

135f64a3 01/13/2012 03:16 pm Iustin Pop

Update memory/maxmem reading in Rapi backend

Recent changes to the instance beparams have replaced memory with
maxmem in Rapi bulk queries. Until this is either reverted (for
backwards compat) or we decide to go ahead with only maxmem, we change
the backend to read both; this only affects the "instance down" code...

e77bc89b 01/13/2012 03:16 pm Iustin Pop

Load cluster ipolicy via Luxi

Also show it in hbal's verbose output (helpful for debugging).

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

71375ef7 01/13/2012 03:16 pm Iustin Pop

Extend ClusterData with the cluster instance policy

This attribute is always initialised to the default, and is not (yet)
read/saved in the various backends.

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

d02f941e 01/13/2012 03:16 pm Iustin Pop

Add default ipolicy declarations

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

a07343b2 01/13/2012 03:16 pm Iustin Pop

Add object definitions for the ispec and ipolicy

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

b69be409 01/13/2012 03:16 pm Iustin Pop

Stop exporting JSON functionality from Utils.hs

This completes the Utils/JSON split started in commit f047f90f. The
import graph should be cleaner now.

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

f3f76ccc 01/13/2012 03:16 pm Iustin Pop

More reshuffling of code

Following the split Types/BasicTypes, we can remove the last
JSON-related stuff from Utils.hs, and do some more cleanup.

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

0c37d1e4 01/13/2012 03:15 pm Iustin Pop

htools: split parts of HTools/Types.hs into BasicTypes.hs

The 'Result' type is common and:

- might be used outside of HTools-specific code too
- is better split as we need these basic types for building the more
complex ones in Types.hs

Signed-off-by: Iustin Pop <>...

410a8a76 01/11/2012 01:12 pm Iustin Pop

Rename optISpec to optStdSpec

More consistency with the tiered allocation mode.

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

294bb337 01/11/2012 01:12 pm Iustin Pop

Change how hspace reads cmdline args for std specs

For the standard specs, hspace currently takes separate options for
the memory, disk and VCPUs. For the tiered specs, which were
introduced later, it takes a single option with all three values
combined....

7da760ca 01/11/2012 12:59 pm Iustin Pop

Abstract tiered specs command line parsing

This will be used in the future for the standard specs too, so let's
abstract it away.

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

ba1260ba 12/08/2011 12:03 pm Iustin Pop

Some small test simplifications

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

3603605a 12/08/2011 10:00 am Iustin Pop

Cleanup hlint errors

First, we update the recommended hlint version to what I used to get a
clean output (1.8.15). Most of the changes are:

- remove unneeded parentheses
- some simplifications (intercalate " " → unwords, maybe … id →
fromMaybe, etc.)
- removal of some duplicate code (in previous patches)...

2f9198be 12/08/2011 10:00 am Iustin Pop

Abstract some common hspace code into a function

Signed-off-by: Iustin Pop <>
Reviewed-by: Agata Murawska <>

255f55a9 12/08/2011 10:00 am Iustin Pop

Abstract some common Cluster.hs code into a function

Signed-off-by: Iustin Pop <>
Reviewed-by: Agata Murawska <>

a1505857 12/07/2011 12:00 pm Iustin Pop

Convert opcode TH code to the use of Field type

This makes more explicit the field behaviour - previously an optional
field was detected via a "Maybe" constructor, and an optional one via
a "Just defval" one. With this, field behaviour become more explicit...

6bd26f00 12/06/2011 11:38 am Iustin Pop

htools: small change in error message in THH.hs

We should also display the value we can't parse, otherwise debugging
is very hard.

Signed-off-by: Iustin Pop <>
Reviewed-by: Agata Murawska <>

706f7f51 12/06/2011 11:38 am Iustin Pop

htools: improvements to JSON deserialisation

This fixes two problems:

- first, when we deserialise a big object, showing its value is not
useful, as it will hide the actual error message
- second, we shouldn't deserialise a container at once, because then...

879273e3 12/06/2011 11:37 am Iustin Pop

htools: add new template haskell system

This system based on explicit types instead of ad-hoc rules
(e.g. instead of deducing from "Maybe Int" an optional field, we now
can say explicitly OptionalField ''Int). In the first phase, this will
be used for the equivalent of lib/objects.py, which has slightly...

7345b69b 11/18/2011 07:20 pm Iustin Pop

htools: adjust imports for newer compilers

While testing with ghc 7.2, I saw that some imports we are using are
very old (from ghc 6.8 time), even though current libraries are using
different names.

We fix this and bump minimum documented version to ghc 6.12, as I...

0e82dcf9 11/18/2011 01:48 pm Andrea Spadaccini

Merge branch 'devel-2.5'

  • devel-2.5: (24 commits)
    LUInstanceCreate: Release unused node locks
    htools: rework message display construction
    hbal: handle empty node groups
    Document OpNodeMigrate's result for RAPI
    Ensure unused ports return to the free port pool...
0c1441eb 11/18/2011 12:41 pm Michael Hanselmann

Merge branch 'stable-2.5' into devel-2.5

  • stable-2.5:
    htools: rework message display construction
    hbal: handle empty node groups
    Document OpNodeMigrate's result for RAPI
    Fail if node/group evacuation can't evacuate instances
    LUInstanceRename: Compare name with name...
b99d1638 11/17/2011 03:49 pm Iustin Pop

Fix unittest bug related to offline instances

Currently, the code in Node.hs is overly strict: once a node's free
memory reaches 0, it will refuse to add any instances (offline or
not). I think this is a safe safeguard (I don't expect nodes to run
without at least 1MB of free memory), so rather than change this...

ebf38064 11/17/2011 03:49 pm Iustin Pop

htools: reindent the rest of the files

Signed-off-by: Iustin Pop <>
Reviewed-by: Michael Hanselmann <>

00dd69a2 11/17/2011 03:49 pm Iustin Pop

htools: re-indent IAlloc.hs

Signed-off-by: Iustin Pop <>
Reviewed-by: Michael Hanselmann <>

3c3690aa 11/17/2011 03:49 pm Iustin Pop

htools: reindent hspace

Signed-off-by: Iustin Pop <>
Reviewed-by: Michael Hanselmann <>

2ba17362 11/17/2011 03:49 pm Iustin Pop

htools: reindent hbal

Signed-off-by: Iustin Pop <>
Reviewed-by: Michael Hanselmann <>

cd08cfa4 11/17/2011 03:49 pm Iustin Pop

htools: reindent CLI.hs

Signed-off-by: Iustin Pop <>
Reviewed-by: Michael Hanselmann <>

d5dfae0a 11/17/2011 03:49 pm Iustin Pop

htools: re-indent QC.hs

Signed-off-by: Iustin Pop <>
Reviewed-by: Michael Hanselmann <>

fd7a7c73 11/17/2011 03:49 pm Iustin Pop

htools: re-indent Node.hs

Signed-off-by: Iustin Pop <>
Reviewed-by: Michael Hanselmann <>

9fc18384 11/17/2011 03:49 pm Iustin Pop

htools: finish re-indenting Cluster.hs

Signed-off-by: Iustin Pop <>
Reviewed-by: Michael Hanselmann <>

bdd8c739 11/16/2011 04:01 pm Iustin Pop

htools: rework message display construction

While diagnosing some (unrelated) memory usage in htools, I've
stumbled upon some very bad behaviour in checkData: mapAccum is
non-strict, and the tuple we use also, so that results in the list of
list of messages being very bad space-wise (hundreds of MB of memory...

2072221f 11/16/2011 04:01 pm Iustin Pop

hbal: handle empty node groups

This patch changes an internal assert (which can only be triggered
when a node group is empty) into properly handling this case (and
returning empty node/instance lists).

While we could handle this in the backend (Cluster.splitNodeGroup)...

f23f21c3 11/16/2011 03:59 pm Iustin Pop

Start converting the indentation to 2-chars

… also do some other small style cleanups.

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

e1bf27bb 11/16/2011 03:16 pm Agata Murawska

htools: Nicer arbitrary instantiation

Signed-off-by: Agata Murawska <>
Reviewed-by: Iustin Pop <>

61bbbed7 11/16/2011 03:16 pm Agata Murawska

htools: change behaviour for offline instances

Signed-off-by: Agata Murawska <>
Reviewed-by: Iustin Pop <>

8a8ed513 11/16/2011 03:16 pm Agata Murawska

htools: remove 'running' from instance options

Signed-off-by: Agata Murawska <>
Reviewed-by: Iustin Pop <>

7dd14211 11/16/2011 03:15 pm Agata Murawska

htools: change runSt type to InstanceStatus

Signed-off-by: Agata Murawska <>
Reviewed-by: Iustin Pop <>

3771d104 11/16/2011 03:15 pm Agata Murawska

htools: create InstanceStatus ADT

Signed-off-by: Agata Murawska <>
Reviewed-by: Iustin Pop <>

5f828ce4 10/26/2011 05:35 pm Agata Murawska

Generalize the generation of ADT from raw types

Signed-off-by: Agata Murawska <>
Reviewed-by: Iustin Pop <>

260d0bda 10/26/2011 05:35 pm Agata Murawska

Luxi support for Query status in htools

Signed-off-by: Agata Murawska <>
Reviewed-by: Iustin Pop <>

07abe80a 10/26/2011 12:59 pm Iustin Pop

hail: don't select the primary as new secondary

This just adds the primary node of the instance as 'non-allocable'
during the choosing of the new secondary.

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>
(cherry picked from commit 7073b3a86856bcd8d8a62c0b72f82deaabb8d8f1)...

e0baa26f 10/26/2011 12:59 pm Iustin Pop

hail: add an extra safety check in relocate

If we select the primary as new secondary, better to fail than return
wrong data to Ganeti.

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>
(cherry picked from commit f25508bef4e85032f0468e5a6f0f8930ff154e66)...

e86f7f65 10/14/2011 01:37 pm Iustin Pop

Further cleanup in hspace

This moves the checking of results from the allocation functions to a
separate function, so that we have less code duplication. It also does
a bit of simplification in the printing functions.

Signed-off-by: Iustin Pop <>...

5296ee23 10/14/2011 01:37 pm Iustin Pop

A bit of cleanup in hspace

The node offline/mcpu is identical to hbal's setNodesStatus, so let's
move that to CLI.hs and reuse it in hspace (also, rename it and drop
one 's').

Also, the check for the number of nodes is obsolete, as we compute
that from the disk template....

7eda951b 10/14/2011 01:37 pm Iustin Pop

Add a type synonym for the allocation function sig

Both iterateAlloc and tieredAlloc share the same signature, but it's
not documented nor exported (needed for refactoring).

Signed-off-by: Iustin Pop <>
Reviewed-by: Michael Hanselmann <>

d12f50b2 10/14/2011 01:37 pm Iustin Pop

htools: Simplify Luxi query results parsing

The logic is not entirely correct—the new Query interface exports the
field status, and we don't use that yet. But the new code should be
more readable.

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

b20cbf06 10/14/2011 01:37 pm Iustin Pop

Adjust htools code to new Luxi argument format

This partially undoes commit 92678b3, more specifically it removes the
Store data type and the associated code, since all Luxi arguments are
now lists.

Furthermore, since the qfilter field on Query is complex (it's...

00976304 10/12/2011 02:51 pm Michael Hanselmann

Merge branch 'devel-2.5'

  • devel-2.5:
    rpc: Disable HTTP client pool and reduce memory consumption
    Preserve bridge MTU in KVM ifup script
    hail: Fix result for node evacuation
    Fix assertion error on unclean master shutdown

Signed-off-by: Michael Hanselmann <>...

5b0ac1a5 10/12/2011 02:35 pm Michael Hanselmann

Merge branch 'stable-2.5' into devel-2.5

  • stable-2.5:
    rpc: Disable HTTP client pool and reduce memory consumption
    hail: Fix result for node evacuation
    Fix assertion error on unclean master shutdown

Signed-off-by: Michael Hanselmann <>...

2e5c33db 10/12/2011 02:01 pm Iustin Pop

Rename filter and filter_ to qfilter

We currently use 'filter' as the OpCode, QueryRequest and RAPI field
name for representing a query filter. However, since 'filter' is a
built-in function, we actually have to use filter_ throughout the code
in order to not override the built-in function....

92678b3c 10/12/2011 11:47 am Iustin Pop

Haskell support for generic Query in Luxi

Untill now htools did not have support for generic Query in Luxi. This
patch introduces Query as a supported Luxi operation and replaces
QueryNodes, QueryInstances and QueryGroups with Query.

Signed-off-by: Agata Murawska <>...

9d74cb04 10/12/2011 11:47 am Agata Murawska

TH simplification for Luxi

This patch simplifies the generation of save constructors for LuxiOp
by always using showJSON over an array of JSValues, instead of having
to pass showJSON in most cases, except the 5-tuple case.

Signed-off-by: Agata Murawska <>...

05ff7a00 10/12/2011 10:49 am Agata Murawska

Dots in docstings and hlint error fixes for htools

Signed-off-by: Agata Murawska <>
Signed-off-by: Iustin Pop <>
Reviewed-by: Iustin Pop <>

e19ee6e4 10/11/2011 11:25 am Iustin Pop

Remove the oneline output option in hbal

This was, AFAIK, never used, and complicates the output code enough
that it's better to remove it.

Signed-off-by: Iustin Pop <>
Reviewed-by: Michael Hanselmann <>

5dad2589 10/11/2011 11:24 am Iustin Pop

Rework/split hbal's main function

This is just moving code around. A subsequent patch will do a bit more
cleanup and changing the output.

Signed-off-by: Iustin Pop <>
Reviewed-by: Agata Murawska <>

60de49c3 10/11/2011 11:23 am Iustin Pop

Skip application of 'id' in TH code

This is just beautification when dumping splices to stdout, as ghc
will optimise the 'id' away anyway.

Original generate code:

opToArgs QueryTags kind name = J.showJSON (id kind, id name)

Afterwards:

opToArgs QueryTags kind name = J.showJSON (kind, name)...
1ab94e48 10/07/2011 01:00 pm Michael Hanselmann

hail: Fix result for node evacuation

According to the iallocator documentation the “node-evacuate” call needs
to return a list of jobs, not a list of lists of jobs.

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Iustin Pop <>

a0090487 10/06/2011 11:21 am Agata Murawska

Use TemplateHaskell to create LUXI operations

Signed-off-by: Agata Murawska <>
Reviewed-by: Iustin Pop <>

53664e15 10/03/2011 12:17 pm Iustin Pop

Some TH simplifications

Now that the basic code works, let's use some aliases for simpler code
and less ))))))))).

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

72bb6b4e 10/03/2011 12:17 pm Iustin Pop

A few minor test improvements

This patch adds a few niceties to the test suite:

- allows matching test groups case insensitive and emit warnings when
we give test group names that don't match anything
- add a new operator that is similar to assertEqual in Python: it...

23fe06c2 10/03/2011 12:17 pm Iustin Pop

Use TemplateHaskell to decorate tests with names

This makes error message change from "Test 4 failed …" to "Test
prop_Loader_mergeData failed", which is much more readable. It also
removes the duplication of test suite names in the test.hs file.

Signed-off-by: Iustin Pop <>...

12c19659 10/03/2011 12:17 pm Iustin Pop

Use TemplateHaskell to generate opcode serialisation

This replaces the hand-coded opcode serialisation code with
auto-generation based on TemplateHaskell.

Signed-off-by: Iustin Pop <>
Reviewed-by: Agata Murawska <>

6111e296 10/03/2011 12:17 pm Iustin Pop

Use TemplateHaskell to build the opID function

This replaces the hand-coded opID with one automatically generated
from the constructor names, similar to the way Python does it, except
it's done at compilation time as opposed to runtime.

Again, the code line delta does not favour this patch, but this...

e9aaa3c6 10/03/2011 12:17 pm Iustin Pop

Use TemplateHaskell instead of hand-coded instances

This patch replaces the current hard-coded JSON instances (all alike,
just manual conversion to/from string) with auto-generated code based
on Template Haskell
(http://www.haskell.org/haskellwiki/Template_Haskell)....

2c9336a4 10/03/2011 12:17 pm Iustin Pop

Rename some helper functions for consistency

This changes the names for some helper functions so that future
patches are touching less unrelated code. The change replaces
shortened prefixes with the full type name.

Signed-off-by: Iustin Pop <>...

f047f90f 10/03/2011 12:16 pm Iustin Pop

Split part of Utils.hs into JSON.hs

Utils is a bit big, let's split the JSON stuff (not all of it) into a
separate module that doesn't have any other dependencies.

Signed-off-by: Iustin Pop <>
Reviewed-by: Agata Murawska <>

b8a2c0ab 09/29/2011 10:16 am Iustin Pop

Add an allocation limit to hspace

This is very useful for testing/benchmarking.

Signed-off-by: Iustin Pop <>
Reviewed-by: Agata Murawska <>

1bf6d813 09/29/2011 10:16 am Iustin Pop

Small simplification in tryAlloc

Signed-off-by: Iustin Pop <>
Reviewed-by: Agata Murawska <>

b0631f10 09/29/2011 10:16 am Iustin Pop

Change how node pairs are generated/used

Currently, the node pairs used for allocation are a simple [(primary,
secondary)] list of tuples, as this is how they were used before the
previous patch. However, for that patch, we use them separately per
primary node, and we have to unpack this list right after generation....

f828f4aa 09/29/2011 10:15 am Iustin Pop

Parallelise instance allocation/capacity computation

This patch finally enables parallelisation in instance placement.

My original try for enabling this didn't work well, but it took a
while (and liberal use of threadscope) to understand why. The attempt...

d7339c99 09/29/2011 10:15 am Iustin Pop

Abstract comparison of AllocElements

This is moved outside of the concatAllocs as it will be needed in
another place in the future.

Signed-off-by: Iustin Pop <>
Reviewed-by: Agata Murawska <>

129734d3 09/29/2011 10:14 am Iustin Pop

Change type of Cluster.AllocSolution

Originally, this data type was used both by instance allocation (1
result), and by instance relocation (many results, one per
instance). As such, the field 'asSolutions' was a list, and the
various code paths checked whether the length of the list matches the...

2ef8013f 09/23/2011 02:04 pm Iustin Pop

hspace: add short forms for the group policy

This adds a shortened versions of the allocation policies, as writing
out the whole name in the command line can become tedious.

Signed-off-by: Iustin Pop <>
Reviewed-by: Agata Murawska <>

1c7c4578 09/22/2011 12:44 pm Iustin Pop

htools: add a MonadPlus instance for Result

This will be used to implement more easily 'choice' parsing of input
data, without resorting to syntax (case … of Bad _ -> …).

Signed-off-by: Iustin Pop <>
Reviewed-by: Agata Murawska <>

6804faa0 09/14/2011 05:42 pm Iustin Pop

htools: remove dead code

The tryEvac/evacuateInstance functions are no longer used in the new
multi-group world order, so we remove them and change the unit-test to
test the actual IAllocator function.

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

7073b3a8 09/14/2011 05:42 pm Iustin Pop

hail: don't select the primary as new secondary

This just adds the primary node of the instance as 'non-allocable'
during the choosing of the new secondary.

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

f25508be 09/14/2011 05:42 pm Iustin Pop

hail: add an extra safety check in relocate

If we select the primary as new secondary, better to fail than return
wrong data to Ganeti.

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

88df1fa9 08/08/2011 12:29 pm Iustin Pop

Revert deprecation of evacuate mode in hail

As discussed offline, the new node-change mode could be used for
evacuation, but it's not directly useful as it returns a list of
opcodes; therefore, we need to partially revert commits fbe5fcf and
5b53ca7 that removed it (and multi-evacuate, which remains removed)....

97da6b71 07/22/2011 02:33 pm Iustin Pop

htools: rework the algorithm for ChangeAll mode

I think I've identified the problem with the current ChangeAll
mode. The current algorithm works as follows:

- identify a new primary by choosing the node which gives best score
as new secondary
- failover to it...

77ecfa82 07/22/2011 01:53 pm Iustin Pop

htools: replace two hardcoded uses of pri+sec nodes

These two cases use explicit uses of primary and secondary nodes with
Instance.allNodes, which means the code is more flexible if the
internal layout of the instance changes.

I've verified that the output of involvedNodes is not required to be...

bbe9758d 07/22/2011 01:53 pm Iustin Pop

htools: add target_node member to migrate opcode

… and failover too. Not many changes otherwise except for
serialisation and unittests.

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

10f055ac 07/22/2011 01:53 pm Iustin Pop

htools: do not change node disk for non-local storage

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

8353b5e1 07/22/2011 01:53 pm Iustin Pop

htools: add more functions for local disk storage

These will be used in Node.hs for proper add/remove instance
code. Furthermore, we restrict the movable status to the right disk
templates only, so that we don't attempt to move the 'wrong' instance
types....

0047d4e2 07/21/2011 02:52 pm Iustin Pop

htools: add two more small unittests

This adds tests for the opToResult and eitherToResult functions from
Types.hs, and changes two other tests for the same module to test JSON
serialisation (which automatically also tests the lower-level to/from
string conversion functions)....

1b0a6356 07/21/2011 02:51 pm Iustin Pop

htools: a few more hlint fixes

Tested only on GHC 7.x, will test on 6.1x too before commit.

Signed-off-by: Iustin Pop <>
Reviewed-by: Michael Hanselmann <>