Statistics
| Branch: | Tag: | Revision:

root @ 9ec1bcbd

# Date Author Comment
9ec1bcbd 03/05/2014 11:21 am Hrvoje Ribicic

Make PrintGenericInfo handle tuples better

The PrintGenericInfo function in cli.py did not handle tuples as
containers of items, making it impossible for these to be deserialized
automatically when a YAML parser is used. This patch adds separate
handling of tuples, including inlining them for readability when...

5fb7679c 03/05/2014 11:21 am Hrvoje Ribicic

Refactor move-instance QA test

The move-instance QA test will have to be changed in the following
patches to allow testing opportunistic locking.

This patch retains the same functionality as before, but allows an
iallocator to be used, and splits the move back and forth into two...

9dc47292 03/05/2014 11:21 am Hrvoje Ribicic

Make gnt-debug delay interruptible

The gnt-debug delay command could be useful as a means of acquiring
locks for testing purposes. In practice, to be useful it should be
interruptible, otherwise we risk race conditions or long delays.

This patch follows the examples of the move-instance command and the...

22c828a9 03/05/2014 11:21 am Hrvoje Ribicic

Add new log type

Following the example of the job-queue test, the delay also defines a
log message type of its own.

Signed-off-by: Hrvoje Ribicic <>
Reviewed-by: Petr Pudlak <>

787074d5 03/05/2014 11:21 am Hrvoje Ribicic

Add the interruptible option to gnt-debug delay

This patch allows the opcode option to be used through the gnt-debug
client.

Signed-off-by: Hrvoje Ribicic <>
Reviewed-by: Petr Pudlak <>

2868f3f7 03/05/2014 11:21 am Hrvoje Ribicic

Add the interruptible option to the delay opcode

To prepare for the use of sockets to interrupt a running delay opcode,
this patch adds an option to the opcode for doing so.

Signed-off-by: Hrvoje Ribicic <>
Reviewed-by: Petr Pudlak <>

c346d0ac 03/05/2014 11:21 am Hrvoje Ribicic

Factor Unix domain socket creation into helper class

As the delay class will also have to start using domain sockets,
extract the functionality into a helper class.

Signed-off-by: Hrvoje Ribicic <>
Reviewed-by: Petr Pudlak <>

a9a3416e 03/05/2014 11:21 am Hrvoje Ribicic

Fix minor accidental concatenation

Signed-off-by: Hrvoje Ribicic <>
Reviewed-by: Petr Pudlak <>

aa14fb0a 03/05/2014 11:21 am Hrvoje Ribicic

Fix failing tests

The previously introduced changes caused some tests to fail. This patch
alters the tests to expect different values, while still ensuring
correct behavior.

Signed-off-by: Hrvoje Ribicic <>
Reviewed-by: Petr Pudlak <>

8631b46b 03/05/2014 11:21 am Hrvoje Ribicic

Handle incorrect duration more elegantly

The previous version of the LUTestDelay opcode relied on the utility
function complaining about the negative duration. As this function has
been removed for now, do the check ourselves, and issue a more
appropriate exception....

36870aa1 03/05/2014 11:21 am Hrvoje Ribicic

Make gnt-debug delay command run in parallel

The gnt-debug delay command executes the delay first on the master, and
only then on all the other nodes, causing a significant delay. This
patch makes the command treat the master as it would all other nodes....

47c43de1 03/05/2014 11:21 am Hrvoje Ribicic

Extend RAPI client constant unit test with error codes

The RAPI client is meant to be independent from the wider Ganeti
codebase, but it still needs to use Ganeti constants. To enforce this,
a unit test is used. This patch extends the unit test with error code...

363e2869 03/05/2014 11:20 am Hrvoje Ribicic

Fix typo in RAPI client utility

Signed-off-by: Hrvoje Ribicic <>
Reviewed-by: Petr Pudlak <>

4fe43605 03/05/2014 11:20 am Hrvoje Ribicic

Add variation to delays between creation attempts

Attempting to acquire node locks with a certain fixed delay could lead
to unwanted synchronization with other processes competing for the same
locks. This patch adds some random variation to the attempts....

a396b2d6 03/05/2014 11:20 am Hrvoje Ribicic

Implement opportunistic locking in the move-instance tool

This patch allows opportunistic instance creations to be attempted,
with a delay between them giving nodes the opportunity to become
available. After the given number of opportunistic tries has been...

2c4ec08e 03/05/2014 11:20 am Hrvoje Ribicic

Add options for opportunistic creation during moves

To start off the introduction of oppportunistic locking during instance
creation, this patch adds the options allowing the locking to be
invoked.

Signed-off-by: Hrvoje Ribicic <>
Reviewed-by: Petr Pudlak <>

ec3a7362 03/05/2014 10:58 am Jose A. Lopes

Remove duplicated '_CheckOSVariant'

It seems '_CheckOSVariant' was moved from 'ganeti.cmdlib.instance' to
'ganeti.cmdlib.instance_utils' but the source was never deleted. This
patch deletes the source copy if this function.

Signed-off-by: Jose A. Lopes <>...

35cded14 03/04/2014 05:19 pm Petr Pudlak

Use 'ArrayObject' in Ganeti.RPC instead of manual encoding

Before most of the calls were implemented manually, ignoring any
generated code for maniupulating JSON. Using 'ArrayObject' we can
automate the process.

Signed-off-by: Petr Pudlak <>...

0b3a266d 03/04/2014 05:19 pm Petr Pudlak

Test the instance 'ArrayObject Disk'

.. which is one of the few ones that use extra fields.

Signed-off-by: Petr Pudlak <>
Reviewed-by: Klaus Aehlig <>

91f0dc1e 03/04/2014 05:19 pm Petr Pudlak

Add a helper function for testing 'ArrayObject' instances

It checks if 'fromJSArray . toJSArray' is equivalent to 'Ok'.

Signed-off-by: Petr Pudlak <>
Reviewed-by: Klaus Aehlig <>

26e32dee 03/04/2014 05:19 pm Petr Pudlak

Move 'DictObject' and 'ArrayObject' to Ganeti.JSON

The type classes are more closely related to JSON and for using them
it should not be necessary to import Ganeti.THH.

Signed-off-by: Petr Pudlak <>
Reviewed-by: Klaus Aehlig <>

948f6540 03/04/2014 05:19 pm Petr Pudlak

Add a typeclass for type serializable as a JSON array

This is in particular needed for RPC requests which are serialized this
way and therefore using `showJSON` on the generated objects doesn't
work.

The fiels are serialized in the order they're declared, together with...

0df2d967 03/04/2014 05:19 pm Petr Pudlak

Document 'fieldExtraKeys' in 'Field'

Signed-off-by: Petr Pudlak <>
Reviewed-by: Klaus Aehlig <>

58b37916 03/04/2014 05:19 pm Petr Pudlak

Remove toDist... functions completely

Since thre already is `DictObject` class with `toDict`, there is no need
for them, just polluting the name space.

Signed-off-by: Petr Pudlak <>
Reviewed-by: Klaus Aehlig <>

c2e136e2 03/04/2014 05:19 pm Petr Pudlak

Enhance DictObject and refactor loading/saving TH functions

Since there is already `DictObject` type class which could share code
with generated instances of `showJSON`, the generated code is split into
two parts: One that converts between `[(String, JSValue)]` and the data...

1d4febbd 03/04/2014 05:03 pm Klaus Aehlig

Write lock state to disk after updates

Make use of asynchronous worker to save to log status after every
update. The answer to the query is only returned, once the state
is saved on disk. Note that replication of the lock status is not
necessary, as all jobs will be gone if the master node goes away....

61fd6337 03/04/2014 05:03 pm Klaus Aehlig

Provide an asynchronous task for writing lock status

It will be used to persist the state of the lock allocation on
disk, allowing locks to survive reboots of WConfD.

Signed-off-by: Klaus Aehlig <>
Reviewed-by: Petr Pudlak <>

69809ae3 03/04/2014 02:27 pm Klaus Aehlig

Verify the intervall property of GanetiLocks

According to the specification in our design, if A is a group
lock and B belogs to this group, then all locks between A and B
in the lock order also must belong to A. Verify this.

Signed-off-by: Klaus Aehlig <>...

cf7f8e51 03/04/2014 02:27 pm Klaus Aehlig

Verify implication restriction on locks

As specified in our design, if A is a group lock and B
belongs to A, then A must be earlier in the lock order
than B. Verify this property.

Signed-off-by: Klaus Aehlig <>
Reviewed-by: Petr Pudlak <>

2e1399da 03/04/2014 02:27 pm Klaus Aehlig

Update Arbitrary GanetiLocks

With the extension of Ganeti.Locking.Locks.GanetiLocks to the
full lock hierarchy, also extend the instantiation of Arbitrary.

Signed-off-by: Klaus Aehlig <>
Reviewed-by: Petr Pudlak <>

ec2355ad 03/04/2014 02:27 pm Klaus Aehlig

Add Ganeti Lock Hierarchy

Make Ganeti.Locking.Locks.GanetiLocks present the full Ganeti
lock hierarchy. This is in accordance with the current Python
implementation.

Signed-off-by: Klaus Aehlig <>
Reviewed-by: Petr Pudlak <>...

79786c6b 03/04/2014 02:26 pm Klaus Aehlig

Serialize locks as JSON strings

...as the current Python implementation does as well.

Signed-off-by: Klaus Aehlig <>
Reviewed-by: Petr Pudlak <>

5d7ac40f 03/03/2014 06:05 pm Klaus Aehlig

Export opportunistic lock union through WConfd

Make WConfD provide a function to opportunistically allocate
locks.

Signed-off-by: Klaus Aehlig <>
Reviewed-by: Petr Pudlak <>

dee434c2 03/03/2014 06:05 pm Klaus Aehlig

Support name generation for pairs

Add support for naming of python variables if the type
is a pair.

Note: on older versions of haskell, Q is not an instance of
Applicative, hence we use the do-syntax here.

Signed-off-by: Klaus Aehlig <>...

66927d09 03/03/2014 06:05 pm Klaus Aehlig

Export lock intersection through WConfD

Export the functionality to restrict the owned locks to a given set.

Signed-off-by: Klaus Aehlig <>
Reviewed-by: Petr Pudlak <>

b4d1b49f 03/03/2014 06:05 pm Klaus Aehlig

Export freeLocks through WConfD

Export the functionality to free all locks of a given
owner.

Signed-off-by: Klaus Aehlig <>
Reviewed-by: Petr Pudlak <>

032befbd 03/03/2014 06:05 pm Klaus Aehlig

Add lock modification without result to WConfdMonad

Enrich the structure of WConfdMonad by a convenience
wrapper around modifyLockAllocation for the case that
the modification always succeeds and does not produce
any result.

Signed-off-by: Klaus Aehlig <>...

f919184d 03/03/2014 06:05 pm Klaus Aehlig

Export updateLocks through WConfD

Export the functionality to update the locks of a given
owner through WConfD.

Signed-off-by: Klaus Aehlig <>
Reviewed-by: Petr Pudlak <>

62f1e053 03/03/2014 06:05 pm Klaus Aehlig

Add serialization for LockRequest GanetiLocks

Add a module describing how abstract requests, like lock requests are
passed over the wire to WConfD.

Signed-off-by: Klaus Aehlig <>
Reviewed-by: Petr Pudlak <>

5dd9a07e 03/03/2014 06:05 pm Klaus Aehlig

Add listlocks to gnt-debug wconfd

So that wconfd's locking can be debugged directly.

Signed-off-by: Klaus Aehlig <>
Reviewed-by: Petr Pudlak <>

84640a93 03/03/2014 06:05 pm Klaus Aehlig

Export listing of locks

Make WconfD answer requests about the locks of a specific
owner.

Signed-off-by: Klaus Aehlig <>
Reviewed-by: Petr Pudlak <>

3e80d1b7 03/03/2014 06:05 pm Klaus Aehlig

Support reading the lock allocation in WConfdMonad

As opposed to the atomic modify-and-read provided my modifyLockAllocation,
no storing is necessary here.

Signed-off-by: Klaus Aehlig <>
Reviewed-by: Petr Pudlak <>

51b69fc8 02/28/2014 03:44 pm Petr Pudlak

Remove unused import in rpc/transport.py

.. which got there by mistake.

Signed-off-by: Petr Pudlak <>
Reviewed-by: Klaus Aehlig <>

71b770a9 02/28/2014 03:39 pm Klaus Aehlig

Merge branch 'stable-2.11' into master

  • stable-2.11
    Setting correct permissions of client cert (split-user)
    Add luxid group to 'users-setup'
    Add some whitespace to fix formatting
    Consider old client cert only when available
    Fix return of 'Validate'...
f3aebf6f 02/28/2014 03:00 pm Petr Pudlak

Retry luxi/wconfd RPC calls if the connection is closed

Since the daemon can decide to close a client connection after a
timeout, the client needs to be able to automatically reconnect.

This patch introduces this functionality into the RPC client:
If an attempt to send data fails on 'Broken pipe', it's retried one more...

2992f2f7 02/28/2014 02:31 pm Klaus Aehlig

Fix generic uncurrying

in the case of n>1, the n-ary uncurry function is of the form
\f (x_1, ..., x_n) -> ... rather than \f x_1 ... x_n -> ...

Signed-off-by: Klaus Aehlig <>
Reviewed-by: Petr Pudlak <>

e715a6d6 02/28/2014 02:08 pm Dimitris Bliablias

Add --mac-prefix to gnt-cluster modify manpage

Update the manpage for mac-prefix modification in 'gnt-cluster modify'
command.

Signed-off-by: Dimitris Bliablias <>
Reviewed-by: Jose A. Lopes <>

b4726cd7 02/28/2014 02:08 pm Dimitris Bliablias

Add unittest for gnt-cluster modify --mac-prefix

Add unittest for cluster mac-prefix modification support.

Signed-off-by: Dimitris Bliablias <>
Reviewed-by: Jose A. Lopes <>

0cffcdb1 02/28/2014 02:08 pm Dimitris Bliablias

Allow cluster mac prefix modification

Extend LUClusterSetParams to allow the modification of the cluster
mac-prefix setting in 'gnt-cluster modify' command.

This fixes part of issue 239.

Signed-off-by: Dimitris Bliablias <>
Reviewed-by: Jose A. Lopes <>

353bd75b 02/28/2014 02:08 pm Dimitris Bliablias

Show mac prefix setting in gnt-cluster info

Include mac-prefix setting in the output of 'gnt-cluster info'
command.

This fixes part of issue 239.

Signed-off-by: Dimitris Bliablias <>
Reviewed-by: Jose A. Lopes <>

22114677 02/28/2014 11:06 am Helga Velroyen

Setting correct permissions of client cert (split-user)

This patch makes sure that the client certificate gets
the right permissions and owner when created. Additionally
it enhances the 'ensure_dirs' script to correct the
permissions in case they are broken for whatever reason....

7d720a67 02/28/2014 11:06 am Helga Velroyen

Add luxid group to 'users-setup'

The creation of the luxid group was missing in the
'users-setup' script. Ganeti will refuse to start
if this group does not exist on a node when using
split-user mode.

Signed-off-by: Helga Velroyen <>
Reviewed-by: Jose Lopes <>

10df0dfe 02/28/2014 10:58 am Petr Pudlak

Add documentation for "gnt-debug wconfd"

The missing part caused a doclint test to fail.

Signed-off-by: Petr Pudlak <>
Reviewed-by: Jose A. Lopes <>

f33307bd 02/27/2014 07:15 pm Klaus Aehlig

Add a command to gnt-debug to test various aspects of wconfd

For debugging purpose, support direct communication to WConfD from
the commandline for some of its commands. For the time being, support
the echo command.

Signed-off-by: Klaus Aehlig <>...

46ae85de 02/27/2014 05:28 pm Helga Velroyen

Add some whitespace to fix formatting

Some error messages were lacking some spaces between lines
to make it more readable.

Signed-off-by: Helga Velroyen <>
Reviewed-by: Klaus Aehlig <>

da27bc7d 02/27/2014 05:28 pm Helga Velroyen

Consider old client cert only when available

This fixes a bug which occurred only after upgrading
from 2.10 to 2.11. During the cluster renew-crypto
operation, Ganeti tries to include the old certificate
in the candidate map while it is providing new
certificates. This failed when there was no certificate...

b3724640 02/27/2014 05:11 pm Jose A. Lopes

Fix return of 'Validate'

  • fix return of 'Validate' in docstrings
  • fix all call sites
  • fix all tests

Signed-off-by: Jose A. Lopes <>
Reviewed-by: Helga Velroyen <>

e1e36b88 02/27/2014 04:33 pm Klaus Aehlig

Locks are owned by job id file path pairs

...according to our updated design.

Signed-off-by: Klaus Aehlig <>
Reviewed-by: Petr Pudlak <>

b28f715a 02/27/2014 04:33 pm Klaus Aehlig

Remove the client state from WConfD monad

As we decided to keep our protocols stateless, the client
state is no longer needed.

Signed-off-by: Klaus Aehlig <>
Reviewed-by: Petr Pudlak <>

7786784e 02/27/2014 04:33 pm Klaus Aehlig

design: keep WConfD's protocols stateless

To simplify the setup, keep all protocols of WConfD stateless. This implies
that the job id has to be sent with every resource request. Also clarify that
the owner of a resource is the pair of the job id and the file for job death...

ef89d9d5 02/27/2014 04:04 pm Michele Tartara

Have SubmitManyJobs add entries to the reason trail

Not only SubmitJobToDrainedQueue (and therefore SubmitJob) but also
SubmitManyJobs has to add "gnt:opcode:*" entries to the reason trail.

Signed-off-by: Michele Tartara <>
Reviewed-by: Klaus Aehlig <>

8a7738b9 02/27/2014 03:51 pm Petr Pudlak

Fix the dependencies of Makefile.ghc

Include only the programs that were configured to be built, and let GHC
figure out the required Haskell sources by itself.

Signed-off-by: Petr Pudlak <>
Reviewed-by: Helga Velroyen <>

7959b875 02/27/2014 03:50 pm Petr Pudlak

Include mond and confd only when configured

Previously they were included no matter of what the configuration was,
failing to compile if some of the dependencies were missing.

Signed-off-by: Petr Pudlak <>
Reviewed-by: Helga Velroyen <>

be6cdf67 02/27/2014 03:17 pm Michele Tartara

Add reason for job pickup to the trail

Add a new entry in the reason trail when a job is picked up by MasterD from the
hard drive, after LuxiD put it there.

Note that the signature of NameToReasonSrc is changed in an incompatible way,
although it's a public method because in this commit we also change its only...

830b09dd 02/27/2014 03:17 pm Michele Tartara

Add reason trail pickup constant

Add a constant for the reason trail, representing the pickup of a job from the
disk.

Also, refactor a bit the other constants so that part of the definition can be
shared in a hierarichical fashion.

Signed-off-by: Michele Tartara <>...

653bc0f1 02/27/2014 03:17 pm Michele Tartara

Make the AddReason method public

It will need to be accessed from outside the class too in one of the next
commits.

Signed-off-by: Michele Tartara <>
Reviewed-by: Klaus Aehlig <>

0c779689 02/27/2014 03:17 pm Michele Tartara

Have LuxiD add the "gnt:opcode" reason trail entry

The entry used to be added in jqueue.py, but after switching the queue
management from masterd to luxyd it had been lost. Now, make LuxiD responsible
for adding it.

Signed-off-by: Michele Tartara <>...

65a3ff88 02/27/2014 03:17 pm Michele Tartara

Add function for extending the reason trail in Luxid

The function will be used by the next commit.

Also, remove a few trailing whitespaces lying around the file.

Signed-off-by: Michele Tartara <>
Reviewed-by: Klaus Aehlig <>

39e169c9 02/27/2014 01:52 pm Helga Velroyen

Update INSTALL wrt missing dependencies

This patch updates the quick installation guide with
with respect to some missing dependencies. Besides,
it rephrases some instructions to make them more clear.

Signed-off-by: Helga Velroyen <>
Reviewed-by: Petr Pudlak <>

8ffd7e4b 02/27/2014 12:29 pm Klaus Aehlig

hsqueeze also partially implemented in 2.11

Signed-off-by: Klaus Aehlig <>
Reviewed-by: Helga Velroyen <>

25cf4130 02/27/2014 12:28 pm Petr Pudlak

Let config.py use WConfd for reading/writing the config

Currently it only relays the reads/writes to the file to WConfd,
everything else yet remains in config.py.

Also if the 'ConfigWriter' is opened in "offline" mode (like in
bootstrap.py), it doesn't use WConfd and resorts to the original...

80a56f26 02/27/2014 12:27 pm Petr Pudlak

Start WConfd temporarily during master failover

.. in order to update the configuration and distribute ssconf, before
starting the daemons by the scripts.

Signed-off-by: Petr Pudlak <>
Reviewed-by: Klaus Aehlig <>

c0eb47b9 02/27/2014 12:27 pm Petr Pudlak

Include WConfd in the list of daemons started on a master

.. and make it the first one so that masterd can use it when it starts.

Signed-off-by: Petr Pudlak <>
Reviewed-by: Klaus Aehlig <>

08fcaf55 02/27/2014 12:27 pm Petr Pudlak

Add missing constant for the name of WConfd

The constant is used when calling the daemon startup/shutdown scripts.

Signed-off-by: Petr Pudlak <>
Reviewed-by: Klaus Aehlig <>

bc820a01 02/27/2014 12:27 pm Petr Pudlak

Add the --force-node option to WConfd

.. and fix the superfluous options list in ganeti-wconfd.hs

Signed-off-by: Petr Pudlak <>
Reviewed-by: Klaus Aehlig <>

9a0b8258 02/27/2014 12:27 pm Petr Pudlak

Add an option for disabling node checks at daemon startup

This is needed for WConfd, because during failover it needs to be
temporarily started in order to update the configuration on the selected
master candidate.

Signed-off-by: Petr Pudlak <>...

710a2863 02/27/2014 12:27 pm Petr Pudlak

Convert int to float when checking config. consistency

When reading the configuration file from RPC JSON, values without a
floating point are parsed as 'int', not as 'float', and later the
consistency check fails.

This patch adds an automatic conversion from 'int' to 'float' during...

803dafcd 02/27/2014 12:18 pm Petr Pudlak

While at it, fix the order of imports in OpCodes.hs

.. so that Ganeti imports are below library imports and ordered
alphabetically.

Signed-off-by: Petr Pudlak <>
Reviewed-by: Michele Tartara <>
Reviewed-by: Jose A. Lopes <>

e713a686 02/27/2014 12:18 pm Petr Pudlak

Add a function for generating OpCode reason src. names

The function convert the opcode name to lowercase with underscores,
strips the 'Op' prefix and prepends Constants.opcodeReasonSrcOpcode.

Signed-off-by: Petr Pudlak <>
Reviewed-by: Michele Tartara <>...

ffdcc263 02/27/2014 12:18 pm Petr Pudlak

Add a TH function for lower-cased stripped opcode names

The function strips the 'Op' prefix from a constructor name and converts
it to lower-case with underscores.

Signed-off-by: Petr Pudlak <>
Reviewed-by: Michele Tartara <>...

8aab74e9 02/27/2014 12:18 pm Petr Pudlak

Generalize genConstrToStr to custom monadic functions

This will allow compile-time checks for constructor names.

Signed-off-by: Petr Pudlak <>
Reviewed-by: Michele Tartara <>
Reviewed-by: Jose A. Lopes <>

5ca6adf5 02/26/2014 07:17 pm Klaus Aehlig

Prefer unless over when (not...)

...and by doing so, please lint.

Signed-off-by: Klaus Aehlig <>
Reviewed-by: Hrvoje Ribicic <>

5e26a86e 02/26/2014 06:23 pm Klaus Aehlig

At startup, make WConfD read the lock allocation from disk

On startup, make wconfd read a the state of the lock allocation from disk,
instead of starting from an empty allocation.

Note that, as opposed to the configuration, no finding a saved
log configuration is not an error; e.g., the node might be master...

f3eb4bfd 02/26/2014 06:23 pm Klaus Aehlig

Provide path to persist locks

As we aim to handle jobs as separate processes with locks
handled by WConfD, we need to persist the locks to ensure
they survive a restart of that deamon. Saving only on master
daemon is enough, however.

Signed-off-by: Klaus Aehlig <>...

c8751a72 02/26/2014 06:23 pm Klaus Aehlig

Add a function to load lock allocation from disk

Lock allocation are stored on disk as their JSON representation.

Signed-off-by: Klaus Aehlig <>
Reviewed-by: Petr Pudlak <>

e3b02e1f 02/26/2014 06:23 pm Klaus Aehlig

Verify serialization/deserialization consistency for Locks

As we made Ganeti.Locking.Locks an instance of JSON, we better verify
that we can readJSON what we showJSON.

Signed-off-by: Klaus Aehlig <>
Reviewed-by: Petr Pudlak <>

15a53b1e 02/26/2014 06:23 pm Klaus Aehlig

Make Locks a JSON instance

As requests to acquire or release locks come via
inter-process communication, we need a serialization
of the locks data type.

All locks are serialised as JSON objects, where the
key "type" describes the type of lock, and the remaining...

89d140d1 02/26/2014 06:23 pm Klaus Aehlig

Add test for serialization of LockAllocation

Verify readJSON . showJSON = Ok for LockAllocations.

Signed-off-by: Klaus Aehlig <>
Reviewed-by: Petr Pudlak <>

71dc39a1 02/26/2014 06:23 pm Klaus Aehlig

Make LockAllocation an instance of JSON

In this way, we can serialize a lock state to disk, so that
locks can survive a restart of WConfD.

Signed-off-by: Klaus Aehlig <>
Reviewed-by: Petr Pudlak <>

d977f86c 02/26/2014 05:50 pm Hrvoje Ribicic

Merge branch 'stable-2.11' into master

  • stable-2.11
    Add query support for locks to luxid (cherry-pick)
    Provide fields for lock queries (cherry-pick)
    A quick fix for broken 'make distcheck'
  • stable-2.9
    Make gnt-debug locks display fake job locks properly...
a8c1f633 02/26/2014 03:48 pm Hrvoje Ribicic

Merge branch 'origin/stable-2.10' into stable-2.11

  • stable-2.9
    Make gnt-debug locks display fake job locks properly
    Make NiceSort treat integers well
    Revision bump for 2.9.5
    Set release date for 2.9.5
    Add NEWS entry for 2.9.5

Signed-off-by: Hrvoje Ribicic <>...

508c7d70 02/26/2014 03:04 pm Klaus Aehlig

Add query support for locks to luxid

While requests only get forwarded, it still helps to
get luxid feature-complete with respect to master.

Signed-off-by: Klaus Aehlig <>
Reviewed-by: Petr Pudlak <>
Cherry-picked from commit a6e406ce376453e90e598c7be68809d6a7bd7d41...

014eaaa0 02/26/2014 03:04 pm Klaus Aehlig

Provide fields for lock queries

For luxid to be feature-complete with respect to masterd, it
also needs to answer requests about locks. This includes knowing
the fields available for locks.

Signed-off-by: Klaus Aehlig <>
Reviewed-by: Petr Pudlak <>...

59651d52 02/26/2014 02:07 pm Petr Pudlak

Export reading and writing the configuration using RPC

Note that currently these functions lack any kind of locking and
concurrent calls to 'writeConfig' will result in lost changes in the
configuration.

Signed-off-by: Petr Pudlak <>
Reviewed-by: Klaus Aehlig <>

833c32b3 02/26/2014 02:07 pm Petr Pudlak

Add a module for functions specific to config. management

.. and include ConfigData in WConfd's ConfigState.

Currently it includes functions for asynchronous saving the
configuration and reading and (over)writing it in the daemon state.

Load the configuration from the file at daemon startup and configure an...

13d26b66 02/26/2014 02:06 pm Petr Pudlak

Add more general conf. handling functions to WConfd's Monad

Add functions for reading and writing the configuration. Writing
triggers the asynchronous worker which saves the configuration into the
master file. The actual action that saves the configuration is passed as...

a6a6a1b5 02/26/2014 02:06 pm Petr Pudlak

Add functions for saving the configuration to Ganeti.Config

.. so that it can be not only read, but also written to the master
configuration file.

Signed-off-by: Petr Pudlak <>
Reviewed-by: Klaus Aehlig <>

c5f6dcdf 02/26/2014 02:06 pm Petr Pudlak

Add a module for creating and using asynchronous workers

Each such worker has its own background thread and performs a given
task when triggered. Triggers arriving when the worker is processing are
accumulated and processed together in a subsequent worker action....

5f6515b6 02/26/2014 02:06 pm Petr Pudlak

A separate module for functions for atomic file operations

Utils is getting too big, so better split this new set of functions into
a separate sub-module. This also allows us to use ResultG there.

Signed-off-by: Petr Pudlak <>
Reviewed-by: Klaus Aehlig <>

0efada2a 02/26/2014 02:06 pm Petr Pudlak

Add a function for lifting ResultT from a MonadBase

Often we have `ResultT e IO a` as the return type of our primitive
functions and we need to lift them into a monad stack that is also based
on IO. This function accomplishes this by lifting a ResultT in a base...