Statistics
| Branch: | Tag: | Revision:

root / htools / Ganeti @ c5b4a186

# Date Author Comment
c5b4a186 06/08/2012 02:02 pm Iustin Pop

Fix prefix bug in Haskell ssconf implementation

This patch fixes a (brown-bag) bug in the ssconf implementation where
the looked-for filenames were not prefixed with the ssconf file
prefix.

Additionally, a test for this is added (which fails without the fix)....

36691f08 05/29/2012 12:09 pm Iustin Pop

Add support for SIGHUP handling in Haskell daemons

This patch adds support for handling SIGHUP and reopening the
stdout/stderr logfile in daemon mode (but not in foreground mode).

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

0c28bee1 05/29/2012 12:09 pm Iustin Pop

Rework logging setup for Haskell daemons

This fixes a missing functionality: closing of stdout/stderr when
forking daemons. Without this, starting the daemons from the command
line seems to work, but doing it from utils.RunCmd breaks, since
without closing the standard descriptors, RunCmd never finishes....

cdd495ae 05/08/2012 01:37 pm Iustin Pop

Add decoding of Luxi calls and unittests for LuxiOp

This patch adds a hand-coded decoder for LuxiCall arguments, as the
data-structure is not uniform enough for automated generation (even
for the serialisation, we had to add hints for some fields,
de-serialisation is even harder)....

5cefb2b2 05/08/2012 01:37 pm Iustin Pop

Some unit tests improvements

In preparation for unit-testing the Luxi definitions, this improves
the auto-generation of OpCodes: currently this uses unbounded plain
Strings for names and fields, and this creates too big test sizes
(e.g. when automatically generating job sets)....

95d0d502 05/08/2012 01:37 pm Iustin Pop

Auto-define a LuxiReq data type

We currently auto-generate a LuxiOp data type, which holds the entire
operation (including parameters). However, having a data type just for
the method call would be useful, so let's change THH to also
defineSADT for the Luxi constructors....

fae980e5 05/08/2012 01:37 pm Iustin Pop

Replace hardcoded constants with Constants.hs names

Now that luxi.py constants are exported, we can use them for more
consistency.

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

3ad57194 05/08/2012 01:37 pm Iustin Pop

Add a new JSON function

And its associated unittests.

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

79ac58fa 05/01/2012 08:11 pm Iustin Pop

Further fixes for new-style exception handling

Commit 30d25dd8 moved the htools code to new-style exception handling,
but the hconfd code hasn't been, which fails when compiling on newer
GHC versions.

This patch does the rest of the move; however, the situation is not...

30d25dd8 03/26/2012 11:54 am Iustin Pop

Switch to new-style exception handling

Currently, we're using Prelude.catch to handle I/O errors in
htools. This style of error handling has been deprecated for a while,
but it still used to work without warnings.

However, the GHC release 7.4 has started to emit deprecation warnings...

d80e3485 03/26/2012 11:54 am Iustin Pop

Change a type computation for compatibility with 6.12

This is the last warning related to TemplateHaskell that was 6.12
specific; for some reason, it doesn't "see" that traw/tname were used.

The patch just replaces the quoting syntax with an explicit type...

ffbd9592 03/26/2012 11:53 am Iustin Pop

Fix compatibility with TemplateHaskell from GHC 7.4

GHC 7.4 has updated the TemplateHaskell library, and it turns out that
the way we built the JSON instance implementation for showJSON was not
good (probably this is why GHC 6.12 was generating some warnings)....

88a10df5 03/22/2012 07:30 pm Iustin Pop

Rework exit model

While updating the confd code, I realised that we have lots of
duplication in the exit model for the various programs.

So this patch attempts to abstract all the exits via a couple of new
functions; sorry for the somewhat big patch, but I hope the payoff is...

b714ff89 03/22/2012 03:58 pm Iustin Pop

Add command line option for controlling syslog use

… and enable it in hconfd.

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

a6e2a138 03/22/2012 03:58 pm Iustin Pop

Add support for syslog logging to Ganeti.Logging

Currently this is initialised to no from Daemon.hs, but will in the
future allow command-line options for controlling it.

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

f183de56 03/21/2012 12:37 pm Iustin Pop

Allow hail to read data from stdin

This patch makes hail treat '-' as denoting stdin, per the usual Unix
convention. This will help with testing.

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

19cff311 03/21/2012 12:37 am Iustin Pop

Update hconfd bind address handling

Instead of hardcoded IPv4 INADDR_ANY, this patch changes hconfd to use
either the any network for the configured cluster address family
(ipv4/ipv6), or whatever the user passes in via the --bind option.

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

aa3adf35 03/21/2012 12:25 am Iustin Pop

Add skeleton ssconf module

This currently has only one export function in it, which will be used
for future bind address functionality in daemons.

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

1091021c 03/21/2012 12:25 am Iustin Pop

Add two utility functions

These both are work with/on the Result type, so we add them to
BasicTypes. The functions will be used as more generic versions of
some more specialised functions that are right now spread across the
modules.

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

152e05e1 03/21/2012 12:25 am Iustin Pop

Add the bind-address option

This implements the same logic as the Python code: if the option is
not used, use the default appropriate for the cluster, otherwise try
to parse and use whatever was passed in.

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

e6812a1a 03/19/2012 12:00 pm Iustin Pop

htools: fix long version of --port for daemons

The dashes do not need to be in, if they are then the resulting option
is:

-p PORT  ----port=PORT     Network port (default: 1814)

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

f0753837 03/16/2012 12:35 pm René Nussbaumer

hspace: Make use of the spindle_use

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

5850e990 03/16/2012 12:08 pm Iustin Pop

htools: Fix some compiler warnings

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

d575c755 03/15/2012 06:22 pm Iustin Pop

Enhance the RAPI backend to accept file:// URLs

This will allow offline testing of this backend (except for the actual
curl part), also in the case where we didn't compile against curl.

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

ec629280 03/15/2012 04:25 pm René Nussbaumer

htools: Reflect the rename of spindle_usage to spindle_use

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

fafd0773 03/15/2012 04:05 pm Iustin Pop

Add a helper function for mirrorType computations

We most always use `templateMirrorType . diskTemplate`, so let's add a
helper function for this.

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

64946775 03/15/2012 04:05 pm Iustin Pop

Enable all disk templates in unit-tests

After the many patches implementing the shared storage functionality
in iallocator, balances, etc., and after the patches preparing the
unit-tests to do the right thing for shared storage, we can finally
flip the bits that make instances have "random" disk templates as...

f9f6480e 03/15/2012 04:05 pm Iustin Pop

Enable evacuation/relocation for shared storage

This patch toggles the final bit and enables nodeEvacInstance to work
on shared storage instances. Diskless instances are handled the same
(as in, None is the same everywhere :).

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

91575c31 03/15/2012 04:05 pm Iustin Pop

Replace explicit case with 'either'

Instead of manually case-ing on the Either contents, let's just use
either with const functions (not really readable, but…).

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

a1741ae5 03/15/2012 04:04 pm Iustin Pop

Rename evacDrbdSecondaryInner to evacOneNodeInner

The function is now generic, so let's rename it and cleanup/improve
the docstrings.

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

6ab3ce90 03/15/2012 04:04 pm Iustin Pop

Abstract the secondary evac into a separate function

This is generic enough (no longer depending on the replace type) that
it will be used for other replace modes too. So all we need to do is
to abstract it to a separate function (that can be called from...

53bddadd 03/15/2012 04:04 pm Iustin Pop

Fix Node_addPriFD test for arbitrary disk templates

Currently, this test assumes localStorageTemplates, so let's make sure
we enforce that on the given instance

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

0c8cef35 03/15/2012 04:04 pm Iustin Pop

Extend the possible move types with FailoverToAny

This brings together all previous pieces and allows balancing to work
(with the known caveats related to disk space calculation) for shared
storage disk templates.

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

d953a965 03/15/2012 03:53 pm René Nussbaumer

htools: Add the new ipolicy field

Also add the spindle usage to QC

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

4c18f468 03/15/2012 12:29 pm René Nussbaumer

htools: Use the spindle usage in the algorithms

In the same transition also do a simple refactor of the caculation

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

b003b8c0 03/15/2012 12:29 pm René Nussbaumer

htools: Convert all the other backends as this is trivial

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

52cc1370 03/15/2012 12:29 pm René Nussbaumer

htools: Adapt the Text backend to spindle usage

The old text files remain compatible with this change.

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

981bb5cf 03/15/2012 12:29 pm René Nussbaumer

htools: Adding spindle usage to Instance

For now we just pass in "1" as spindle usage and adapt the backend
later.

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

1cdcf8f3 03/15/2012 12:24 pm Iustin Pop

Rework unit parsing

Due to how conversions were implemented previously, 1TB failed to
parse on 32-bit, as we were overflowing during computation, even
though the final result would fit easily.

This patch moves the parsing of the scaling factor to a separate...

358a0a8f 03/13/2012 03:12 pm Iustin Pop

htools: add confd server module

This contains a more-or-less complete implementation for the
server-side confd.

Note that most of the code is behaving identical to the Python code,
with a notable exception: the asyncore/inotify code was changed (since
Haskell doesn't have asyncore) to 3-thread system. While otherwise I...

6ec7a50e 03/13/2012 02:48 pm Iustin Pop

htools: add basic daemon-related functionality

This is not complete for now, just the basic functionality has been
implemented:

- daemonize
- check we're running under the correct user
- call setup logging

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

ba4e38e8 03/13/2012 02:48 pm Iustin Pop

htools: add logging functionality

This adds a dependency on hslogger 1.1+, which is not available in
Debian Squeeze, only in later versions.

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

7946c25d 03/13/2012 02:48 pm Iustin Pop

htools: add runtime functionality

This duplicates the lib/runtime.py functionality, allowing us to check
for runtime users and groups consistency.

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

21dc8694 03/13/2012 02:48 pm Iustin Pop

htools: add a small module for crypto functions

This adds a dependency on the following new libraries:

- Data.HMAC module from the 'crypto' library
- Data.Text from the 'text' library
- Data.ByteString from the 'bytestring' library

In Debian, the bytestring library comes with the ghc compiler, whereas...

417cc253 03/13/2012 02:48 pm Iustin Pop

htools: add definitions for confd types

While we have some of these as plain types in Constants.hs, we add
proper ADT definitions for them in a new file. Furthermore, we add the
ConfdRequest and ConfdReply types here (in Python they are in
objects.py).

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

eaa64cd8 03/13/2012 02:48 pm Iustin Pop

htools: add a very basic lib/config.py equivalent

This only is able to load the configuration data for now.

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

b1e81520 03/13/2012 02:48 pm Iustin Pop

htools: add partial implementation of lib/objects.py

This is partial since not all object types can be easily converted for
now (will need some changes on the Python side for this).

Most importantly, the *Params types do not have a good solution now:
the Python code, due to its dynamic typing, hides the fact that we...

0547d608 03/13/2012 11:29 am René Nussbaumer

htools: Make it possible to load an IAlloc request

This is only useful in the stand-alone command line tools:

- hbal
- hspace
- hinfo

This change also documents the flag in all man-pages.

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

7018af9c 03/07/2012 11:35 pm Iustin Pop

Fix relocation test ClusterAllocRelocate

As for the evacuate tests, we require a mirrored disk template, but
otherwise the test should work for both mirror types.

Additionally, we perform a simplification that was left as TODO.

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

3d7d3a1f 03/07/2012 11:34 pm Iustin Pop

Fix IAlloc.processRelocate to support shared storage

Currently, this function expects (but doesn't really check! only via
secondary node being defined) a DRBD8 template type.

This patch (not very readable, sorry) changes it so that we check
whether we're internally mirrored, externally mirrored, or not...

ac1c0a07 03/07/2012 11:31 pm Iustin Pop

Fix up Cluster nodeEvac unittests for shared storage

Currently, these presume that the instance being generated always is
DRBD/relocatable (but won't be in the future), and also presume that
all relocation modes can be used (hint: not ☺).

So we add a couple of helper functions to restrict the used disk...

80b27509 03/07/2012 11:24 pm Iustin Pop

Rework evacDrbdSecondaryInner to take the imove

Instead of hard-coding the instance move operation, let's accept is as
a parameter from the caller. This is the single thing that makes this
DRBD-specific, so removing it will help for future
patches. Furthermore, this abstract the imove op type into a single...

bebe7a73 03/07/2012 11:24 pm Iustin Pop

Add a simple type alias for nicer type signatures

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

c6e8fb9c 03/07/2012 11:24 pm Iustin Pop

Fix a few tests that hard-coded the number of nodes

Instead of randomly generating the number of required nodes or
hard-coding it, compute it from the disk template of the
instance. Otherwise tests will fail when the disk template is not
DRBD8 and we ask for allocation on 2 nodes....

90669369 03/07/2012 11:18 pm Iustin Pop

Fix test Node_addSec_idempotent

Another test that only works for DRBD8 instances.

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

e7b4d0e1 03/07/2012 11:17 pm Iustin Pop

Fix the Node_rMem test to specify DRBD8 templates

… since memory reservation only is used for this template.

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

c6b7e804 03/07/2012 11:17 pm Iustin Pop

Split the Node_addOffline test into pri/sec

Currently, this (single) test checks whether we can add an instance as
primary and secondary to a given node. This won't work for instance
templates other than DRBD8, so we split it into:

- an add to primary test, which should work for all disk templates...

5f4464db 03/07/2012 11:05 pm Iustin Pop

Use the mirror type in Cluster.possibleMoves

Currently the function possibleMoves always presumes DtDrbd, which is
wrong for shared storage. To make it work with all disk templates, we
additionally pass the mirror type to it (we assume that the move
behaviour only depends on the mirror type, and not the individual...

810d051f 03/07/2012 11:05 pm Iustin Pop

iPolicy: enable by default all storage templates

… otherwise we can't run tests or simulations using non-default
templates. Tests still pass.

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

255d140d 03/07/2012 11:05 pm Iustin Pop

Fix printSolutionLine to handle big scores

Currently we don't set a boundary on the length of the score field,
which breaks all our nicely-aligned output efforts.

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

e85444d0 03/07/2012 11:05 pm Iustin Pop

Fix printSolutionLine to handle non-DRBD steps

Currently Cluster.printSolutionLine function always wants to print the
old and new secondary, and as such it fails (ugly) for moves of
non-DRBD instances. Change it so that it looks explicitly for
noSecondary nodes, and format the output different in that case....

b906d7c1 03/07/2012 11:05 pm Iustin Pop

Add a helper type and function for the mirror type

Currently we track the mirroring type as simply yes/no, with "yes"
meaning DRBD. This is not enough for handling shared storage, so we
need to add a type that gives the exact mirroring type (none,
internal, external), and a function that ties the disk template type...

73d12eab 03/07/2012 11:04 pm Iustin Pop

Small simplification in tryBalance

Instead of computing the bad/good node lists separately (in effect
iterating twice over the all_nodes list and also creating that list
twice from the container), let's use 'partition' and do a small
improvement.

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

2c7b328c 03/07/2012 11:04 pm Iustin Pop

Mark Rbd as a movable disk template

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

a7667ba6 03/07/2012 11:04 pm Iustin Pop

Do not rely on no-secondary for movable tests

Currently, the code in Loader.hs marks as un-movable any instances
which don't have a secondary. This is not valid for any shared storage
templates, so let's remove that check completely. The initial state of...

b7743258 03/07/2012 11:04 pm Iustin Pop

Handle nodes without local storage

Our current cluster model is based on per-node storage, and as such we
don't handle shared disk templates. Until we can improve the model,
let's handle nodes without local storage better: in order to still
compute a valid cluster score, we need to handle nodes with tDsk == 0....

4892d955 03/03/2012 09:46 pm René Nussbaumer

htools/ExtLoader: Bring the pieces together

This make it possible to load from an Ialloc file

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

9899796b 03/03/2012 09:46 pm René Nussbaumer

htools/CLI: Adding new options to use ialloc as source

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

786c514c 03/03/2012 09:46 pm René Nussbaumer

htools/IAlloc: Adding loadData method for use as backend

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

c3f8cb12 03/03/2012 09:46 pm René Nussbaumer

htools: Refactor some of IAlloc.readRequest to Hail

This makes it possible to reuse that function when we want to use IAlloc
as a data source backend

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

14fbd75b 03/03/2012 09:46 pm René Nussbaumer

hinfo: Adjust the verbosity

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

d0a14556 03/01/2012 08:48 pm René Nussbaumer

hinfo: Gather and print group statistics

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

c3024b7e 02/29/2012 04:22 pm René Nussbaumer

htools: Adding printTable helper

This helper abstract away all the unlines and unwords call you've to do
after you got a formatTable back.

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

5c52dae6 02/29/2012 04:19 pm Iustin Pop

Fixup a Node unittest

This fixes the prop_Node_rMem test, which cares about memory only;
otherwise we could fail due to other problems (e.g. not enough disk).

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

ee4ffc8a 02/29/2012 04:18 pm Iustin Pop

Allow overriding the target test count

This is not perfect, as the override applies identical target test
values to both the 'fast' and 'slow' tests (making the slow tests take
a long time), but it allows a quick override for manual runs.

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

eae69eee 02/29/2012 04:18 pm Iustin Pop

Add two more unittests for Node add/remove

These just test that add/remove are idempotent. This is not perfect,
as we use unsorted lists for some values (instead of sets), so when
using non-empty nodes this would break (but for empty nodes, a
1-element list is sorted, so it's fine)....

084565ac 02/29/2012 04:18 pm Iustin Pop

Use the spindles metric in cluster scores

This makes balancing use the new metric.

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

82f19570 02/29/2012 04:17 pm Iustin Pop

Track instance-used spindles in node set/add/remove

This simply tracks the instance-used spindles (using hard-coded '1'
per instance), and additionally prevents additions in soft-mode when
we go over the limit.

Note: there's an assymetry between addSec and removeSec (basically...

7959cbb9 02/29/2012 04:17 pm Iustin Pop

Shorten some function names

Since we use the functions always module-qualified, let's drop the
`instance` prefix and use a shorter one.

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

f87c9f5d 02/29/2012 04:17 pm Iustin Pop

Simplify logic in Node operations

This patch adds two helper functions and uses them for a somewhat
simplified logic in the add/remove pri/sec node functions.

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

0c7d4422 02/29/2012 04:16 pm Iustin Pop

htools: support spindles in simu backend

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

f951bd09 02/29/2012 04:16 pm Iustin Pop

htools: support spindles in text load/save

If missing, we'll default to 1 spindle.

This also updates the text file format with the ipolicy, which was
forgotten.

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

34ace266 02/29/2012 04:16 pm Iustin Pop

htools: add support for listing spindles for nodes

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

8bc34c7b 02/29/2012 04:16 pm Iustin Pop

htools: add spindle-related attribute to nodes

This adds the spindleCount, hiSpindles and instSpindles attributes.

The spindleCount is equivalent to spindle_count on the ganeti side (a
node parameter). hiSpindles is the maximum instance-used spindles, and...

c22d4dd4 02/29/2012 04:15 pm Iustin Pop

Add spindle ratio to htool's IPolicy

Just the usual data/type declarations, read/save in the text backend,
etc. Also does a bit of unit-test cleanup (the way we build
ipolicies).

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

19e310cc 02/28/2012 05:02 pm René Nussbaumer

hinfo: Reorganize the code to separate functions

Also rename some functions as they don't reflect their actions anymore

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

2922d2c5 02/28/2012 02:26 pm René Nussbaumer

hinfo: Adding basic skeleton based on hbal

It prints the information which hbal prints in a nice formatted manner and of
course without doing any actions. An example output looks like this:

$ hinfo -m xen.example.com
Loaded 4 nodes, 2 instances
Cluster has 1 node group(s)...

bdd6931c 02/13/2012 07:17 pm Guido Trotter

htools: allow rbd disk template

Notes:
- it'd be nice if there was a way to automatically generate the
DiskTemplate list instead of manually specifying it. After all we
have C.diskTemplates
- Of course this actually does nothing, as for other...

cd79cd83 02/13/2012 05:44 pm Iustin Pop

Use the ipolicy constants for key names

Sorry, I missed this when I wrote the code originally.

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

3c1e4af0 01/26/2012 08:45 pm Iustin Pop

Fix integer overflow in Node unittest

When using a really random "extra cpus" variable, this can overflow
(especially on 32 bit) and thus the final value can be < 0, thus the
test will fail to fail.

It doesn't make sense to test with huge values, so let's just generate...

e8fa4ff6 01/26/2012 03:34 pm Iustin Pop

Add vcpu_ratio definition to the IPolicy type

This will be "naturally" read in the JSON-based backends (Luxi/Rapi),
and we add explicit code for handling it in the Text backend.

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

487e1962 01/26/2012 03:34 pm Iustin Pop

Remove Node.mCpu, replaced with the ipol vcpu_ratio

Since the iPolicy contains the vcpu_ratio now, we can remove the
per-node mCpu value (which was the initial way to set this attribute).

Furthermore, we need to re-set the hiCpu value when changing the
policy....

5f3b040a 01/26/2012 03:34 pm Iustin Pop

Temporary fix for hspace's NPU calculation

hspace computes the NPU (normalised CPU units) via the
(used|pool|avail) VCPU divided by the (currently cluster-wide) max
vcpu_ratio.

However, in the future we'll have variable vcpu_ratios, so we can't
the calculation as such. We temporarily change to computing the...

284e9822 01/26/2012 03:34 pm Iustin Pop

Change meaning of the --max-cpu option

Instead of always overriding, we should update the nodes's maxcpu
setting only when the option is specified. Otherwise this will be read
from the cluster or from the Ganeti constant for non-live backends.

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

e54d6628 01/26/2012 03:34 pm Iustin Pop

Remove obsolete constant for vcpu_ratio

This is superseded now.

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

33e17565 01/26/2012 03:34 pm Iustin Pop

Re-indent code for readability

Otherwise the docstrings for members take too many lines.

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

90c2f1e8 01/26/2012 03:34 pm Iustin Pop

Track 'normalised' used CPUs in Cluster.CStats

This will be used in hspace for proper tracking of used/pool/unavail
npus.

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

76a20994 01/26/2012 03:34 pm Iustin Pop

Add a new type for holding allocation statistics

The current RSpec type doesn't cut it anymore (and it's used in other
places), so let's introduce a separate type for holding these
statistics.

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

80d7d8a1 01/26/2012 03:34 pm Iustin Pop

Switch over some hspace stats from RSpec to AllocInfo

This patch changes the allocation delta stats from RSpec to
AllocInfo. There's nothing interesting about it, but it should allow
more correct computations of Npus in hspace.

I also moved the AllocStats type alias from Cluster.hs to Types.hs...

37483aa5 01/26/2012 03:34 pm Iustin Pop

Expand the tiered alloc unittest to check allocation stats

This was missing before, so with the new metric (NCpus), it's a good
time to test this.

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