Statistics
| Branch: | Tag: | Revision:

root / src / Ganeti @ 7b4bde57

# Date Author Comment
7b4bde57 04/17/2014 06:59 pm Petr Pudlak

Add Haskell and Python modules for running jobs as processes

They will be used by Luxi daemon to spawn jobs as separate processes.

The communication protocol between the Luxi daemon and a spawned process
is described in the documentation of module Ganeti.Query.Exec....

7b0a9096 04/17/2014 06:56 pm Petr Pudlak

Add an utility function for writing and replicating a job

Use the function where appropriate.

Also handling of CancelJob is slightly refactored to use ResultT, which
is used by the new function.

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

64f3a6ea 04/17/2014 06:56 pm Petr Pudlak

Add a livelock file for the Luxi daemon

The file is initialized and kept within JQStatus.
It is temporarily assigned to jobs spawned by Luxi until they create
their own livelock files.

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

35e3ce28 04/17/2014 06:56 pm Petr Pudlak

Move `isDead` from DeathDetection to Utils/Livelock

.. as it has nothing special to do with WConfd and fits the new module
better.

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

2dcba67f 04/17/2014 06:56 pm Petr Pudlak

Add a module for livelock related functions

Currently it exports a function for creating livelock files.

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

2745aa81 04/17/2014 06:56 pm Petr Pudlak

Add functions for computing the full path of livelock files

.. so that Haskell code can create them at the proper place.

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

45ff650d 04/17/2014 06:56 pm Petr Pudlak

Allow closing a RPC client, keeping its file descriptors

The purpose is to keep the communication channel open, while replacing a
'Client' with something else.

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

0191874e 04/17/2014 06:56 pm Petr Pudlak

Separate client and server config for Luxi communication

The daemon identity is only required for server connections to set the
access mode to its socket appropriately. For client connections it's
not needed and requiring it prevents creating standalone clients, for...

8275c414 04/17/2014 06:56 pm Petr Pudlak

Extend 'lockFile' to return the file descriptor

.. of the locked file so that it can be closed later, if needed.

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

f63f7419 04/17/2014 06:56 pm Petr Pudlak

Allow creation if bi-directional pair of Luxi-like clients

This allows a process and its forked child to communicate with each
other using our standard infrastructure.

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

e5b675dc 04/17/2014 06:56 pm Petr Pudlak

Separate read and write handle in the Luxi Client data type

This is required for inter-process pipes, which are fully supported only
as uni-directional.

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

3f11a477 04/15/2014 02:39 pm Klaus Aehlig

Report non-existent jobs as such

When queried to WaitForJobChange of an non-existent job,
report this as an error.

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

3ea0d511 04/11/2014 05:02 pm Klaus Aehlig

fix typo

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

d890439b 04/11/2014 05:02 pm Klaus Aehlig

Clean up from LockAllocation what is no longer used

With the change from LockAllocations to LockWaitings, several
manipulation operations had to be implemented for LockWaitings
and became unused in LockAllocation. Remove these functions that
are no longer used....

39c1e700 04/11/2014 05:02 pm Klaus Aehlig

Use a LockWaiting structure instead of a LockAllocation

In this way, we will be able to support in WConfD waiting for locks
to become available instead of having to poll for them.

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

b6442eba 04/11/2014 05:02 pm Klaus Aehlig

Support opportunistically allocating locks

Again, this just wraps around updateLocks, sequentially trying
to obtain all the locks mentioned.

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

6dec5ace 04/11/2014 05:02 pm Klaus Aehlig

Support intersecting locks

...in waiting structures. This is just a convenience wrapper
around freeLocksPredicate.

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

639997b9 04/11/2014 05:02 pm Klaus Aehlig

Support downgrade and freeing locks

Add convenience functions for downgrading and freeing
locks in a waiting structure. As these functions are
guaranteed to always succeed, they will also drop any
pending request of the owner.

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

32935f7a 04/11/2014 05:02 pm Klaus Aehlig

Do not notify the current requester

The current implementation of lock waiting yields as notification
set the list of all owners whose requests could be fulfilled. This
includes the initiating request. While technically correct, the
original requester gets the answer of the request and hence does not...

50d756af 04/10/2014 04:30 pm Klaus Aehlig

Fix a race in rescheduling jobs

When handling the queue, in particular at analyzing job dependencies,
we assume that all non-finalized jobs are present in the Queue data
structure. When rescheduling jobs we move them from the running part
of the queue to the scheduled part again. In order to comply with the...

c37ca7be 04/10/2014 03:18 pm Klaus Aehlig

Instance JSON LockWaiting

...so that it can be used by WConfD who needs to be
able to persist all its data.

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

07423850 04/10/2014 03:18 pm Klaus Aehlig

Instance JSON LockRequest

...as pending requests need to be serialized when serializing
lock waiting structures.

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

b2a8f6ac 04/10/2014 03:18 pm Klaus Aehlig

Add a function to get a LockWaiting from an extRepr

Add a function to obtain some lock waiting structure from a
given extensional representation.

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

7fe8baad 04/10/2014 03:18 pm Klaus Aehlig

Provide an extensional representation of LockWaiting

The internal representation of the lock waiting structure contains
some arbitrariness---pending requests are arbitrarily keyed by one
of the lock owners that blocks them. Therefore, LockWaiting is not
an instance of Eq. To allow some meaningful form of comparison...

f24f0e5c 04/10/2014 03:18 pm Klaus Aehlig

Export the set of pending requests

...from a lock waiting structure. In this way, all the data
describing the behavior can be inspected.

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

38b3e03d 04/10/2014 01:41 pm Klaus Aehlig

Schedule on jobs where all job dependencies are finished

Jobs may depend on other jobs in the sense that they may only be started
once a given job is finalized. For a job process, however, it is hard to
determine if the status of a different job without a significant overhead....

6a2e71d9 04/10/2014 01:41 pm Klaus Aehlig

Add function to obtain job dependencies

Add a function that computes the list of job ids a job depends
on. This will allow to schedule only those jobs for execution,
where all jobs it depends on have been finalized.

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

55433d5b 04/10/2014 01:41 pm Klaus Aehlig

Add function to obtain job id from a dependency

Add a function that extracts the job id, if given in absolute
form, from a job dependency.

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

60c4dbb9 04/09/2014 01:55 pm Klaus Aehlig

Add process id to lock-owner description

...so that we can notify owners when their pending request got granted.

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

b52bad34 04/09/2014 11:58 am Klaus Aehlig

Add a function to release all resources of an owner

Add a convenience function---definable from the exported
interface---to clean up all the resources of an owner. This
will be needed, e.g., if a job dies.

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

89e605be 04/09/2014 11:58 am Klaus Aehlig

Add a function to remove a pending request

Add a function that allows an owner to remove a pending request
it might have. Besides useful for testing, this will also be
needed to clean up the resources for dead owners.

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

0585cfd6 04/09/2014 11:58 am Klaus Aehlig

Export the set of pending owners

...as the question of who has pending requests is an import
part of the data structure.

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

98b11317 04/09/2014 11:58 am Klaus Aehlig

Export the underlying allocation from a waiting structure

...so that all kind of diagnostic tasks can be carried out without
duplicating the functionality on the waiting structure. Note that
we still do not export the constructor so that we can change the...

3eb96afc 04/09/2014 11:58 am Klaus Aehlig

Add functions to update locks in a waiting structure

Add functions to update the lock allocation structure and also
compute all the consequences of the update, if it succeeds. Optionally,
requests that cannot be fulfilled immediately, it can be added to
the pendig requests....

dc1e4874 04/09/2014 11:58 am Klaus Aehlig

Add data structure for lock waiting

To avoid jobs polling on locks, and also to ensure that the
most important of the waiting jobs obtains a lock, add a
data structure to keep track of who is waiting for which locks.

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

b355c758 04/09/2014 11:58 am Klaus Aehlig

Derive Ord for LockRequests

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

22096c14 04/08/2014 03:34 pm Hrvoje Ribicic

Add zeroing timeout params to opcode

This patch adds two parameters controlling the zeroing timeout - one
that is fixed and another that depends on the amount of data (size of
disks) to zero.

Signed-off-by: Hrvoje Ribicic <>
Reviewed-by: Jose A. Lopes <>

21a17f33 04/08/2014 03:34 pm Hrvoje Ribicic

Add file info RPC call

Due to the need to determine the size of the temporary disk used for
the VM helper, an RPC call capable of supplying this information has
been added. It can be extended as needed to supply additional
information provided by Python's os.stat....

0894ac48 04/08/2014 03:34 pm Hrvoje Ribicic

Add the zeroing-image option

This patch adds the zeroing-image option to gnt-cluster and the
OpBackupExport params. The many changes are all minor, yet necessary.

Signed-off-by: Hrvoje Ribicic <>
Reviewed-by: Jose A. Lopes <>

363f43eb 04/08/2014 03:34 pm Hrvoje Ribicic

Add the zero-free-space option

Although unused for now, add the zero-free-space option to the backup
export opcode, and add a rudimentary check for whether it should be
used.

Signed-off-by: Hrvoje Ribicic <>
Reviewed-by: Jose A. Lopes <>

6e684281 04/07/2014 05:01 pm Jose A. Lopes

Serve OS scripts from metadata daemon

This patch makes the metadata daemon web server serve the OS scripts
via the instance communication mechanism. This is achieved by
retrieving the "os" field from the instance parameters and serving the
file directly from the 'Constants.osSearchPath', typically...

eeaa2571 04/07/2014 05:01 pm Jose A. Lopes

Move processing OS params with visibility to web server

This will allow the metadata daemon to keep a more general instance
configuration and thus serve more general requests, such as, serving
information related to the OS scripts.

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

84e1ac7c 04/07/2014 05:01 pm Jose A. Lopes

Move metad configuration related code to a separate module

... as an intermediate step before moving the responsbility of
computing the final OS parameter configuration from the configuration
server to the web server. This will allow the metadata daemon to...

d1dd8525 04/07/2014 10:53 am Klaus Aehlig

Switch to ClientType as identifier

...instead of Either String JobId.

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

79a25c7b 04/07/2014 10:53 am Klaus Aehlig

Instance JSON ClientType

Make ClientType a JSON instance, in the way lock owners are
already encoded in JSON on the Python side.

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

caa39a5d 04/07/2014 10:53 am Klaus Aehlig

Add a type for the entity owning a lock

While it is unlikely that lock owners will ever be represented by
something different than a job id or, exceptionally, a string, this
type will still improves type checking. Additionally, it will allow
us to make it a separate instance of JSON and thus simplify the...

665a9ddc 04/04/2014 06:20 pm Klaus Aehlig

Make LuxiD query WConfD for locks

Since WConfD is now the authoritative source for locks, make LuxiD
query this daemon for lock information rather than the master daemon.

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

5d9efc0f 04/04/2014 06:20 pm Klaus Aehlig

Make locks field use live data

So far, the description of the locks fields was made under the assumption
that lock queries wouldn't be answered by Luxid anyway, and hence it was
enough to parse such requests. However, now luxid will answer these queries
after getting a snapshot of the locks status from wconfd. Hence make the fields...

d00aadee 04/04/2014 06:20 pm Klaus Aehlig

Export lock name

...as locks are queried by name.

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

21a9adce 04/04/2014 06:20 pm Klaus Aehlig

Expose listAllLocksOwners in WConfD

...so that LuxiD can ask for the lock status to answer
lock queries.

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

6ea23205 04/04/2014 06:13 pm Klaus Aehlig

Add a function to provide all the full lock state

This function will be used to provide the information required
to answer lock queries.

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

0a4c8808 04/04/2014 06:13 pm Klaus Aehlig

Expose listAllLocks on WConfD

Make wconfd provide information about the list of all locks currently
in use.

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

22f3fc92 04/04/2014 06:13 pm Klaus Aehlig

Add a function to obtain all active locks

Add a function that extracts from a LockAllocation the list
of all locks that are in use (directly or indirectly).

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

aa4a4b76 04/03/2014 02:38 pm Petr Pudlak

Fix lint errors after moving Luxi code to UDSServer

Remove unused imports and update the 'buildCall' call in tests.

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

6856693f 04/03/2014 12:54 pm Petr Pudlak

Add a WConfd RPC Client

The client is generated automatically by Ganeti.THH.HsRPC.

It also includes helper functions for creating a client object.

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

d808bf6e 04/03/2014 12:54 pm Petr Pudlak

Add a module for creating Haskell-to-Haskell RPC clients

It uses TH to create client functions with the corresponding signature
from a given list of server functions.

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

6e1e47d4 04/03/2014 12:54 pm Petr Pudlak

Add a generic TH currying function for arbitrary arity

.. and also a function for extracting a type argument from a type.

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

3fc9410e 04/03/2014 12:54 pm Petr Pudlak

Move buildCall and validateResult from Luxi to UDSServer

.. to that they're available for other Luxi-like RPC clients as well.

While at it, rename validateResult to parseResponse to be consistent
with the names of the other functions.

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

735cdaa5 04/03/2014 11:48 am Jose A. Lopes

Serve OS package from metadata daemon

... and fix an error message.

Signed-off-by: Jose A. Lopes <>
Reviewed-by: Hrvoje Ribicic <>

416e49bd 04/02/2014 02:22 pm Jose A. Lopes

Fix metad port from 8080 to 80

Signed-off-by: Jose A. Lopes <>
Reviewed-by: Hrvoje Ribicic <>

acc1eb23 04/02/2014 02:19 pm Jose A. Lopes

Add metadata daemon server entry point

... which starts the configuration and web servers.

Signed-off-by: Jose A. Lopes <>
Reviewed-by: Hrvoje Ribicic <>

bf3a5cc0 04/02/2014 02:19 pm Jose A. Lopes

Modify metadata daemon web server to serve OS parameters

Extend metadata web server to serve the OS parameters from the shared
MVar containing the instances' configurations, indexed by their IP
address.

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

f007e290 04/02/2014 02:18 pm Jose A. Lopes

Add metadata daemon configuration server

The configuration server listens on a Unix socket for connections from
the node daemon. The node daemon sends the instance parameters to the
configuration server so they can be served through the metadata daemon
web server to the instances which have the communication mechanism...

80929ecb 04/02/2014 02:18 pm Jose A. Lopes

Add metadata daemon types

The metadata daemon will be responsible for receiving the instance
parameters from the node daemon and keeping them in memory. The type
of the instance parameters in defined in a separate module because it
will be shared between the web server and the configuration server....

57ccc712 04/02/2014 02:18 pm Jose A. Lopes

Move metadata daemon to its own directory

Currently, the metadata daemon is mainly a web server. However, a new
configuration server will be introduced along with other metadata
related modules. Therefore, this patch moves the current metadata
daemon web server to its own directory. This module is also renamed...

7d6e577c 03/31/2014 02:59 pm Petr Pudlak

Log asynchronous WConfd tasks and include the serial number

This makes debugging more informative and makes more clear how
configuration distribution gets aggregated.

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

49fd9796 03/31/2014 02:59 pm Petr Pudlak

Enable logging of thread ID in Haskell daemons

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

9c45196b 03/28/2014 03:00 pm Klaus Aehlig

Identify lock owners by either string or job id

Most requests asking for resources are jobs. However, in exceptional
cases, other requests (like currently requests to masterd requiring the
configuration) need to ask for resources. They identify themselves by...

8d2896f5 03/28/2014 11:28 am Klaus Aehlig

Merge branch 'stable-2.11' into master

  • stable-2.11
    (no changes)
  • stable-2.10
    Fix specification of TIDiskParams
    Add unittests for instance modify parameter renaming
    Add renaming of instance custom params
    Add RAPI symmetry tests for groups
    Extend RAPI symmetry tests with RAPI-only aliases...
e69c93fb 03/27/2014 07:31 pm Hrvoje Ribicic

Merge branch 'stable-2.10' into stable-2.11

  • stable-2.10
    Fix specification of TIDiskParams
    Add unittests for instance modify parameter renaming
    Add renaming of instance custom params
    Add RAPI symmetry tests for groups
    Extend RAPI symmetry tests with RAPI-only aliases...
7bb22823 03/27/2014 06:50 pm Hrvoje Ribicic

Merge branch 'stable-2.9' into stable-2.10

  • stable-2.9
    Fix failing gnt-node list-drbd command
  • stable-2.8
    Add reason parameter to RAPI client functions

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

4efa6249 03/27/2014 05:18 pm Hrvoje Ribicic

Fix failing gnt-node list-drbd command

The UUID/name switch avoided this particular bit of code, and as a
result the list-drbd command failed as it tried to compare UUIDs and
names. This patch fixes the retrieval, converts the newly returned
UUIDs to names, and modifies the QA to the results and not only the...

028f2db5 03/27/2014 04:39 pm Petr Pudlak

Add lock checks to readConfig and writeConfig in WConfd

Allow reading the configuration only if the client has acquired
ConfigLock in shared or exclusive mode, and allow writing it only if the
client has acquired ConfigLock in exclusive mode.

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

61660332 03/27/2014 04:39 pm Petr Pudlak

Add RPC calls to WConfd to lock/unlock ConfigLock

This allows the clients to protect configuration operations, as required
by the current implementation of Python 'ConfigWriter'.

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

f066e7fb 03/27/2014 04:39 pm Petr Pudlak

Add a function for determining if a client holds a lock

This convenience function examines 'listLocks' for a particular owner
and checks, if it holds a given lock at a given ownership level (or
higher). Therefore checking for a shared locks returns 'True' if the...

952cf6e2 03/27/2014 04:39 pm Petr Pudlak

After each lock operation, log the current lock status

.. using the DEBUG channel.

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

17086868 03/27/2014 04:39 pm Petr Pudlak

Add a transitional configuration lock

The lock is used for protecting concurrent operations on the
configuration on the Python side.

The lock must be last wrt to the lock ordering so that it can be always
obtained regardless of other locks held by a client. During operations...

2f719353 03/27/2014 03:39 pm Petr Pudlak

Include the master in the list of MCs in SSConf

This was an unnoticed regression when SSConf has been refactored into
WConfd.

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

7315a346 03/27/2014 03:39 pm Petr Pudlak

Add a function to return all MCs including the master

The original 'getMasterCandidates' returns only the true candidates,
without the master itself.

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

0828635b 03/26/2014 12:32 pm Klaus Aehlig

Also consider filter fields for deciding if using live data

If the query fields don't require live data, we use the shortcut
and don't request live data. However, we cannot take this shortcut
if the fields the filter depends on requires live data.

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

937ff984 03/24/2014 03:38 pm Dimitris Aragiorgis

kvm: Add migration capabilities as an hvparam

Latest QEMU versions support various migration capabilities. Each
can be enabled/disabled with 'migrate_set_capability' monitor
command.

Version 1.7.0 defines x-rdma-pin-all, auto-converge, zero-blocks,
and xbzrle migration capabilities....

6ea039ef 03/18/2014 01:52 pm Petr Pudlak

Add a thread ID to the WConfd client id

This allows to distinguish threads that don't have a job id, which is
needed for answering queries.

Since Python thread IDs aren't guaranteed to be unique, in future it'd
be preferable to use a different, unique identifier....

3addd59f 03/18/2014 01:52 pm Petr Pudlak

Create a separate data type for WConfd client identity

.. instead of using a pair.

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

5a8921f3 03/13/2014 02:49 pm Klaus Aehlig

Add downgrading locks by level to WConfd

Export a function that downgrades all locks of an owner of a
given level to own them only shared.

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

1243b689 03/13/2014 02:49 pm Klaus Aehlig

Add convenience function to downgrade locks

Add a convenience function that downgrades all locks with a given
property to be held only at shared level.

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

5e46225d 03/13/2014 02:49 pm Klaus Aehlig

Fix typo in lock levels

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

c89622cd 03/11/2014 05:09 pm Jose A. Lopes

Helper function that downloads an image and dumps it to disk

  • Add constant that holds the curl binary.
  • Add '_DownloadAndDumpDevice' which downloads a file (e.g., OS image)
    through curl and dumps it to a disk device (e.g., an instance disk).

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

e11d0f55 03/11/2014 03:28 pm Klaus Aehlig

Support releasing locks by level

Add a function to WConfD allowing to release locks by
Ganeti lock level.

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

e227f161 03/11/2014 03:28 pm Klaus Aehlig

Add a convenience function to release locks by property

While definable from listLocks and updateLocks, it is convenient
to be able to all locks with a given property. This will, e.g.,
allow to release all locks at a given level---as the mcpu does
routinely....

32cbb380 03/11/2014 03:28 pm Klaus Aehlig

BGL is not a set lock

Despite what the name suggests, the Big Ganeti Lock does not act as a
set of all locks. It is just a lock as any other lock from the point
of view of the Ganeti lock hierarchy.

It's special meaning comes from the fact that all jobs, except for...

5714a925 03/11/2014 03:28 pm Klaus Aehlig

For each Ganeti Lock provide its level

...so set a job can request operations on all its locks of a given level.

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

1835fd75 03/11/2014 03:28 pm Klaus Aehlig

Add network locks to Haskell

Ganeti also has a lock level for networks, however this level was forgotten
when the Ganeti lock hierarchy was implemented in Haskell.

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

1310339c 03/11/2014 03:28 pm Klaus Aehlig

Fix allocation order of locks

The correct allocation order for node-related Ganeti locks is
allocation, group, the node itself, resources.

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

2754dc7d 03/11/2014 03:28 pm Klaus Aehlig

Allow transitions from sets to elements

Owning a set-lock has the same effect as owning each member. So asking
for a member while already holding the set lock in the same mode (shared
or exclusive) is, effectively, no asking for new locks. Therefore, do not...

a55a40d6 03/11/2014 03:28 pm Klaus Aehlig

Fix typo

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

a8b9a6e3 03/07/2014 05:22 pm Petr Pudlak

Let WConfd distribute SSConf to nodes

.. and remove the corresponding code from lib/config.py.

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

7ea201c9 03/07/2014 05:22 pm Petr Pudlak

Add an asynchronous task for distributing SSConf to nodes

The task computes the SSconf data and compares it to the last state that
was successfully distributed. If it differs, issues the RPC call to
distribute it. If any of the RPC calls fails, the state remains...

9a8952e0 03/07/2014 05:22 pm Petr Pudlak

Add Haskell RPC call for distributing SSConf to nodes

The data is sent as a dictionary mapping file names to lists of lines.

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

731152ce 03/07/2014 05:22 pm Petr Pudlak

Add a module for constructing Ssconf from the configuration

This migrates the functionality from Python
ConfigWriter._UnlockedGetSsconfValues to Haskell.

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

ce52f060 03/07/2014 05:22 pm Petr Pudlak

Add a data type for representing the complete SSConf

.. as a map from SSKeys to lists of strings.

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