Statistics
| Branch: | Tag: | Revision:

root / lib @ 5f2725c1

# Date Author Comment
dc5af8d1 06/22/2011 02:12 pm Apollon Oikonomopoulos

Add network and IP pool config methods and ssconf

Add helper methods to ganeti.config.ConfigWriter to handle Network addition and
removal, IP address reservation and commitment to the address pools.

Also add the “networks” ssconf key to make network names/UUIDs available to all...

679cba3a 06/22/2011 02:12 pm Apollon Oikonomopoulos

query: add network query primitives

Add NetworkQueryData data container for network-related queries. Also add a
network query field generator and helper functions to generate usage statistics
for IP address pools.

Signed-off-by: Apollon Oikonomopoulos <>

47a6db9b 06/22/2011 02:12 pm Apollon Oikonomopoulos

bootstrap: initialize network configuration to an empty dict

Signed-off-by: Apollon Oikonomopoulos <>

cafa5b70 06/22/2011 02:12 pm Apollon Oikonomopoulos

Add network-related LUs

Add Logical Units for network adding and querying network config objects.

Signed-off-by: Apollon Oikonomopoulos <>

427746af 06/22/2011 02:12 pm Apollon Oikonomopoulos

LUGroupSetParams: handle network map/unmap

Modify LUGroupSetParams to accept network addition/removal. Networks are
connected to nodegroups' links.

Signed-off-by: Apollon Oikonomopoulos <>

7ffdb1d8 06/22/2011 02:12 pm Apollon Oikonomopoulos

Add network-related opcodes

Add opcodes for network addition and query.

Signed-off-by: Apollon Oikonomopoulos <>

600eeb31 06/22/2011 02:12 pm Apollon Oikonomopoulos

Add network query LUXI method

Signed-off-by: Apollon Oikonomopoulos <>

f709cbca 06/22/2011 02:12 pm Apollon Oikonomopoulos

Add gnt-network client script

gnt-network manipulates network objects. Required parameters have been added to
ganeti.cli.

Signed-off-by: Apollon Oikonomopoulos <>

ac75fad9 06/22/2011 02:12 pm Apollon Oikonomopoulos

Instance addition and removal: manage IP addresses

Prototype implementation of IP address management during instance
addition/removal.

Signed-off-by: Apollon Oikonomopoulos <>

1eeeea44 06/22/2011 02:12 pm Apollon Oikonomopoulos

Fix cyclic dependency between iallocator and pools

The IP pool management infrastructure currently needs to know an instance's
node to fill in IP addresses. For this to happen, the iallocator must run
before we generate IP addresses, yet the iallocator itself needs the instance's...

4ffb8181 06/22/2011 02:12 pm Apollon Oikonomopoulos

Fix typo in gnt-network list

ToStdOut -> ToStdout

Signed-off-by: Apollon Oikonomopoulos <>

5f2725c1 06/22/2011 02:12 pm Apollon Oikonomopoulos

More fixes regarding ip pool mgmt and instance creation

Signed-off-by: Apollon Oikonomopoulos <>

9dfd5fc2 06/22/2011 02:12 pm Apollon Oikonomopoulos

Add lib/ippool.py: IP pool management primitives

This patch introduces primitive structures for IP pool management. The core of
the IP Pool management framework is the ippool.IPv4Network class, which encodes
an IPv4 subnet configuration with its IP address pool. The pool functionality...

62a7762b 06/22/2011 02:12 pm Apollon Oikonomopoulos

Add config objects and methods for IP pools

This patch introduces the following changes to lib.config and lib.objects to
facilitate IP pool management.

- Add a "networks" key to objects.cluster to hold link -> subnet relations.
Each link is assumed to be associated with at most one IPv4 and at most one...

2abc8f57 06/22/2011 02:12 pm Apollon Oikonomopoulos

LUCreateInstance: Retrieve IPs from an IP pool

A new ip keyword is added ("pool") to signify that LUCreateInstance should get
the instance's IP from an IP pool (rather than manually or by DNS resolution).

IP and link checks are re-ordered so that a NIC's link is available at the time...

5974efea 06/22/2011 02:12 pm Apollon Oikonomopoulos

lib.objects: Add network object definition

Add a network object definition, with the appropriate slots, to lib.objects.

Also add a “networks” top-level configuration slot to host network definitions
and a “networks” slot to the NodeGroup objects to hold network ←→ node-group...

4bba8e4c 06/22/2011 02:12 pm Apollon Oikonomopoulos

Add ganeti.network: address pool management tools

lib.network contains AddressPool, a helper class for ganeti.objects.Network.
AddressPool wraps a Network object and provides all IPv4 Address Pool
management logic, manipulating the respective fields of the Network object....

034c116d 06/22/2011 01:26 pm Apollon Oikonomopoulos

KVM: configure bridged NICs at migration start

Commit 5d9bfd870 moved tap interface handling from KVM to Ganeti, partly to
also solve the problem of routed interfaces getting configured too early during
live migrations, causing network anomalies. In that direction, configuration of...

c1dc897b 06/01/2011 04:52 pm Apollon Oikonomopoulos

Remove duplicate CDROM_IMAGE_PATH KVM hv param def

Introduced during merge, because of fba7f91. Remove the second definition, as
it broke KVM HTTP CDROM boot.

Signed-off-by: Apollon Oikonomopoulos <>

fa6347d0 05/30/2011 02:05 pm Apollon Oikonomopoulos

Fix argument order in ReserveLV and ReserveMAC

ConfigWriter.ReserveLV() and Configwriter.ReserveMAC() called
TemporaryReservationManager.Reserve() with the ec_id and resource arguments
swapped. As a result, two reservation attempts for the same resource type...

fe66bb7d 05/13/2011 09:59 pm Apollon Oikonomopoulos

Merge remote branch 'origin/stable-2.4' into grnet-2.4

Conflicts:
lib/hypervisor/hv_kvm.py
lib/opcodes.py
- Merge

Signed-off-by: Apollon Oikonomopoulos <>

9711e69d 05/13/2011 04:20 pm Apollon Oikonomopoulos

TLMigrateInstance: do not migrate to self

Check that the instance is not being migrated to its current primary node
during CheckPrereq. Otherwise migration is aborted because the instance is
already running and cleaned-up, which causes the running instance to be killed....

f01738fc 05/12/2011 03:40 pm Iustin Pop

Preload the string-escape code in noded

This encoding, part of the standard Python installation, is used by
the pickle module (in turn used by subprocess when handling
failures in program execution). Preloading it means that Python will
cache it in memory so that even if the disk goes away or just the...

4b9e8c93 05/12/2011 03:40 pm Iustin Pop

Abstract ignore_consistency opcode parameter

Two opcodes already use it and we need it for a third, time to add a
constant for it.

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

bb851c63 05/12/2011 03:40 pm Iustin Pop

Fix a bug in LUInstanceMove

The opcode parameter ignore_consistency was used in the LU, but not
actually declared in the OpCode. The patch adds it in the opcode and
the command line client.

ObQuote — Please, please, can I have static typing?

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

b92a2f3e 05/11/2011 07:14 pm Iustin Pop

Try to prevent instance memory changes N+1 failures

There are multiple bugs with the code checking for N+1 failures in the
instance memory changes which needs significant changes, in the
meantime we can at least:

- change the warning message into an error (--force will skip checks)...

fba7f911 05/10/2011 07:40 pm Marco Casavecchia

Use floppy disk and a second CDROM on KVM

Hi all,
this patch will add 3 new KVM parameters and a new option.

New Parameters:
- floppy_image_path = "" -> Specify the floppy image to load as
floppy disk.
- cdrom2_image_path = "" -> Specify a second cdrom image to load on...

9d5d703e 05/10/2011 06:44 pm Apollon Oikonomopoulos

Remove self._migrater use from TLMigrateInstance

Comply with changes introduced in f1ea1be, as we forgot to completely remove
self._migrater.target_node from TLMigrateInstance.

Signed-off-by: Apollon Oikonomopoulos <>

7adf7814 05/10/2011 11:48 am René Nussbaumer

Make root_path an optional hypervisor parameter

This will allow us an easy migration to pv-grub, because a set root_path
confused pv-grub.

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

519719fd 05/09/2011 02:22 pm Marco Casavecchia

Add 2 new variables to the OS scripts environment

Add INSTANCE_PRIMARY_NODE and INSTANCE_SECONDARY_NODES. These new
values are useful for OS scripts that needs to know the nodes where
the instance lives.. or has lived.

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

456798ab 05/09/2011 02:22 pm Iustin Pop

Add --no-wait-for-sync when converting to drbd

Currently, when converting an instance from plain to DRBD, the
instance is blocked during the entire resync period. This patch adds
the --no-wait-for-sync so that the operation finishes as soon as the
DRBD sync has started, without waiting for the entire sync. This makes...

c8a96ae7 05/09/2011 12:18 pm Iustin Pop

Recreate instance disks: allow changing nodes

This patch introduces the option of changing an instance's nodes when
doing the disk recreation. The rationale is that currently if an
instance lives on a node that has gone down and is marked offline,
it's not possible to re-create the disks and reinstall the instance on...

931413f6 05/06/2011 05:35 pm Iustin Pop

Rename instance: only show new name when different

It makes not sense to show messages like:
Fri May 6 02:04:01 2011 - INFO: Resolved given name 'instance18' to
'instance18'

So we'll skip the message if the resolved name is identical to the
requested one....

9d5b1371 05/06/2011 01:46 pm Michael Hanselmann

Fix race condition in LUGroupAssignNodes

The original code would get all node information and their groups
without before acquiring the necessary locks. With this patch the node
information is only retrieved once all locks have been acquired. Groups
are locked optimistically and verified after acquiring the node locks....

6d1b57f0 05/05/2011 10:43 am Apollon Oikonomopoulos

TLMigrateInstance: restore live migration behavior

Commit b9187ba2 erroneously incorporated parts of the code of
TLMigrateInstance.CheckPrereq into TLMigrateInstance._RunAllocator. As a
result, all migrations performed without the use of an iallocator would end-up...

43fcf0d3 05/04/2011 04:07 pm Apollon Oikonomopoulos

kvm: check that the ISO image is there if it's a URL

Perform a simple urllib2 check on ISO images specified as URL before instance
start, so as to work around qemu bug #597575 [1].

[1] https://bugs.launchpad.net/qemu/+bug/597575

Signed-off-by: Apollon Oikonomopoulos <>

958d01f8 05/03/2011 06:53 pm Michael Hanselmann

cmdlib: Fix typo, s/nick/NIC/

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

8dddc5bc 05/03/2011 12:25 pm Iustin Pop

A small optimisation in cluster verify

This removes (count of instances + count of nodes) lock
acquires/releases.

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

72740756 05/02/2011 04:08 pm Iustin Pop

A few docstring fixes

At least one generates an epydoc error :)

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

d143f2c6 05/02/2011 03:41 pm Iustin Pop

luxi: do not handle KeyboardInterrupt

With the current code, it's possible to mistake a ^C for a protocol
error:

node1# gnt-job info 221691
[press ^C]
Unhandled protocol error while talking to the master daemon:
Error while deserializing response:

(and note empty error message)....

225e2544 05/02/2011 03:41 pm Iustin Pop

Handle EPIPE errors while writing to the terminal

This handles EPIPE errors in two places: ToStream (to catch logging
done in GenericMain itself) and in GenericMain (to cover also plain
print statements).

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

20d317d4 05/02/2011 03:41 pm Iustin Pop

Cluster verify: check for missing bridges

Currently cluster verify doesn't check for bridge information; the
only checks are done at instance create and failover/migrate
time. This means a cluster that seems healthy will fail creation jobs.

This patch implements a simple verification that all nodes (in the...

29b8eaee 04/29/2011 03:56 pm Michael Hanselmann

TLReplaceDisks: Use implicit loop for dictionary

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

1bee66f3 04/29/2011 03:55 pm Michael Hanselmann

Release unneeded locks while replacing disks

If an iallocator is used, “gnt-instance replace-disks” would acquire the
locks of all nodes (only the allocator will decide which node to use).
Unfortunately the unneeded locks were not released during the operation,...

07cba1bc 04/29/2011 03:41 pm Michael Hanselmann

locking: Export “list_owned” from lock manager

This is analog to “is_owned” and will be used for assertions.

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

d8d838cb 04/29/2011 03:41 pm Michael Hanselmann

gnt-instance: Fix typo in error message

The iallocator parameter is “-I”, not “-i”.

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

adc523ab 04/29/2011 03:05 pm Iustin Pop

mlock: fail gracefully if libc.so.6 cannot be loaded

This allows noded to continue instead of blowing up if the libc major
number changes.

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

87001920 04/28/2011 01:03 pm Iustin Pop

Allow creating the DRBD metadev in a different VG

This is a simple change to allow specifying a different VG for the
meta device during the creation of instances and addition of disks via
gnt-instance modify.

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

c260fa25 04/28/2011 01:03 pm Iustin Pop

Make _GenerateDRBD8Branch accept different VG names

This is a small change to make this function take a list of VG names,
instead of a single one.

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

1d39e245 04/28/2011 01:02 pm Iustin Pop

Fix WriteFile with unicode data

Unicode is fun, indeed:

len(buffer("abc"))

3

len(buffer(u"abc"))

12

So we can't pass unicode data to buffer(), as the result will be to
write the in-memory (usually UTF-32) representation to disk.

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

88aa7f66 04/27/2011 06:26 pm Doug Dumitru

Fix for multiple VGs - PlainToDrbd and replace-disks

Converting an instance from 'plain' to 'drbd'. The old code would
create the drbd volumes in the default VG and then the renames would
fail. This fix pulls the plain VG names from the existing volumes and...

fd09d178 04/27/2011 06:26 pm Iustin Pop

Replace disks: keep the meta device in the same VG

This patch enhances the multi-VG support in replace disks, by keeping
the meta device in the same VG, as opposed to moving it to the data
device VG (note that we don't have a way to create the meta in a
different VG in the first place, but at least we correctly handle a...

cce6f357 04/27/2011 06:26 pm Iustin Pop

Fix punctuation in an error message

IIRC we don't use punctuation at the end of error messages.

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

d833acc6 04/27/2011 06:26 pm Iustin Pop

Prevent readding of the master node

This breaks Ganeti in multiple ways. If we don't make the check in
gnt-node itself, then bootstrap.SetupNodeDaemon will restart the
master daemon, making the operation fail:

node1# gnt-node add --readd node1
Cannot communicate with the master daemon....
2db04578 04/27/2011 06:26 pm Iustin Pop

Improve error messages in cluster verify/OS

A few issues in the clarity of the error messages are fixed:

- "ERROR: node node3: OS API version lenny-image": no preposition
between the parameter type and the OS name, changed to "for
lenny-image"

- "API version lenny-image differs from reference node node1: 10, 5...

437c3e77 04/27/2011 06:26 pm Iustin Pop

Fix potential data-loss in utils.WriteFile

os.write can do incomplete writes, as long as at least some bytes have
been written (like write(2)):

os.write(fd, " " * 1300)

1300

os.write(fd, " " * 1300)

1300

os.write(fd, " " * 1300)

1300

os.write(fd, " " * 1300)...

dadf6b7d 04/21/2011 03:41 pm Michael Hanselmann

cli: Fix wrong argument kind for groups

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

97b40f39 04/20/2011 03:37 pm Michael Hanselmann

Fix typo in LUGroupAssignNodes

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

5c097318 04/20/2011 02:54 pm Iustin Pop

gnt-instance info: automatically request locking

Commit dae661a4 added support for controlling the locking, but it
didn't modify the gnt-instance info code, which leads to this command
always showing:

Wed Apr 20 04:10:48 2011 - WARNING: Non-static data requested, locks...

aef68e02 04/20/2011 11:22 am Apollon Oikonomopoulos

Remove 20-second sleeps from _ExecMigration

TLMigrateInstance._ExecMigration included two 10-second sleeps for unknown
reasons.

This patch removes them.

Signed-off-by: Apollon Oikonomopoulos <>

f7d61653 04/20/2011 11:22 am Apollon Oikonomopoulos

KVM: reduce 'info migrate' polling period to 1s

Signed-off-by: Apollon Oikonomopoulos <>

a593b742 04/20/2011 11:20 am Apollon Oikonomopoulos

Shared storage instance failover

Modify LUFailoverInstance to enable shared storage instances to failover.
Shared storage instance failover requires either a target node or an
iallocator to determine the target node. If none is given, the cluster default...

1477a16f 04/20/2011 11:20 am Apollon Oikonomopoulos

KVM: use cache=none for shared disk templates

Disable host cache for externally mirrored disks to avoid cache incoherency.
Without this, migrations between the same two nodes may end up in disk
corruption.

This is a runtime override of cluster defaults, mostly a workaround....

88f8f0f7 04/20/2011 11:20 am Apollon Oikonomopoulos

Rename DTS_NET_MIRROR to DTS_INT_MIRROR

DTS_INT_MIRROR better contrasts DTS_EXT_MIRROR.

Signed-off-by: Apollon Oikonomopoulos <>
[: updated patch for changed context]
Signed-off-by: Iustin Pop <>
Reviewed-by: Iustin Pop <>

b94590c6 04/20/2011 11:20 am Iustin Pop

Instance failover: fix bug for INT_MIRROR cases

Patches db366d9a and aac4511a added support for EXT_MIRROR instances,
but inadvertently introduced a bug: for INT_MIRROR cases, we don't
need (actually we can't support) neither an iallocator nor a target
node....

dc5377f8 04/20/2011 11:20 am Apollon Oikonomopoulos

Allow disk adoption during disk addition

It is now possible to allow adopting a disk during gnt-instance modify time, as
follows:

gnt-instance modify --disk add:adopt=/path/to/disk (blockdev)
or
gnt-instance modify --disk add:adopt=<lvname> (plain)

We do the same checks as during instance creation....

c8a9285e 04/20/2011 11:20 am Apollon Oikonomopoulos

Temporary workaround for hail to work with shared storage

Signed-off-by: Apollon Oikonomopoulos <>

f1ea1bef 04/20/2011 11:20 am Apollon Oikonomopoulos

Fix parts of shared storage migration

Commit faaabe3c fixed failover behaviour for DTS_INT_MIRROR instances, however
it broke migration for DTS_EXT_MIRROR instances, by moving iallocator and node
checks from LUInstanceMigrate to TLMigrateInstance. This has the side-effect...

cc5d722f 04/20/2011 11:20 am Apollon Oikonomopoulos

Add completion suggestion for more parameters

Add suggestions for disk-, nic-, and backend-parameter completion.

Also alter autotools/build-bash-completion to ignore the new suggestion types
for the moment.

Signed-off-by: Apollon Oikonomopoulos <>

eb980c5a 04/20/2011 11:20 am Apollon Oikonomopoulos

Ignore parameter completion for bash completion

Named parameters are only handled by zsh completion for the time being.

Signed-off-by: Apollon Oikonomopoulos <>

823bfa49 04/20/2011 11:20 am Apollon Oikonomopoulos

Allow KVM to boot from HTTP

New versions of KVM support booting from HTTP-hosted ISO
images, via libcurl. This patch adds a proper check to
allow defining either a sane, absolute path or an HTTP
URL as an iso image path.

Remove "format=raw" from the cdrom device options when iso_image...

15df79ad 04/20/2011 11:20 am Iustin Pop

Prevent ssconf values from having non-string values

For whatever reason, my test cluster managed to acquire
shared_file_storage_dir with a None value, instead of empty
string. This is not flagged in masterd itself, but the node daemon
will fail in writing the value to disk, as it calls len() on the...

528140fb 04/20/2011 11:20 am Iustin Pop

Fix shared_file_storage_dir on upgrades

If the cluster was upgraded from 2.4 or earlier, this key won't exist
(it's only set to a correct value on cluster init), so we need to
properly set it to a null string (disabled).

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

53197381 04/20/2011 11:20 am Apollon Oikonomopoulos

Core shared file storage support

This patch introduces core file storage support, consisting of the following:

A configure-time switch for enabling/disabling shared file storage
support and controlling the shared file storage location:
--with-shared-file-storage-dir=. Shared file storage configuration is then...

87bc7ca8 04/20/2011 11:20 am Apollon Oikonomopoulos

Shared file storage initialization code

Add shared file storage handling during cluster initialization.

Signed-off-by: Apollon Oikonomopoulos <>
Signed-off-by: Iustin Pop <>
Reviewed-by: Iustin Pop <>

2cb78cc7 04/20/2011 11:20 am Apollon Oikonomopoulos

Add DTS_MIRRORED frozenset

Use DTS_MIRRORED to indicate mirrored disk templates that allow
migrations/failover.

DTS_MIRRORED is the union of DTS_EXT_MIRROR and DTS_NET_MIRROR.

Signed-off-by: Apollon Oikonomopoulos <>
Reviewed-by: Michael Hanselmann <>...

69266fae 04/20/2011 11:20 am Apollon Oikonomopoulos

Add bdev_sizes RPC call

The bdev_sizes multi-node RPC call returns the sizes of the requested
block devices on the desired nodes. Its intended use is to verify the
existence of a block device on a given node for shared block storage
support.

Block device paths are expected to lie under constants.BLOCKDEV_DIR...

391d0261 04/20/2011 11:20 am Apollon Oikonomopoulos

Shared block storage support

This patch introduces basic shared block storage support.

It introduces a new storage backend, bdev.PersistentBlockDevice, to
use as a backend for shared block storage. The new bdev requires a new
BLOCKDEV_DRIVER_MANUAL constant with the value "manual" and uses it as...

5e2e3283 04/20/2011 11:20 am Apollon Oikonomopoulos

IAllocator changes to work with shared storage

Make cmdlib.IAllocator shared-storage-aware. IAllocator requires secondary
nodes only on DTS_NET_MIRROR disk templates and requires no secondaries for
DTS_EXT_MIRROR templates.

Signed-off-by: Apollon Oikonomopoulos <>...

36a072e8 04/20/2011 11:20 am Apollon Oikonomopoulos

Migration and failover: add iallocator and target_node slots

Add iallocator and target_node slots to OpMigrateInstance and
OpFailoverInstance to facilitate shared-storage-backed instance mobility. Add
iallocator slot to OpMigrateNode (no explicit target_node in this case)....

04967d3a 04/20/2011 11:20 am Apollon Oikonomopoulos

CLI changes to facilitate shared storage migration/failover

Add DST_NODE_OPT to cli.py to use for directly specifying the target node
during migration/failover.

gnt-instance failover/migrate also get passed an iallocator option.

gnt-node failover/migrate get only a target_node option....

b9187ba2 04/20/2011 11:20 am Apollon Oikonomopoulos

Shared storage instance migration

Modify LUMigrateInstance and TLMigrateInstance to allow instance migrations for
instances with DTS_EXT_MIRROR disk templates.

Migrations of shared storage instances require either a target node, or an
iallocator to determine the target node. If none is given, the cluster default...

9a833381 04/20/2011 11:20 am Apollon Oikonomopoulos

Shared storage node migration

Modify LUNodeMigrate to provide node migration for nodes with instances using
shared storage. gnt-node migrate has to be passed an iallocator for migration
of shared storage instances to be performed. When using a shared storage...

675e2bf5 04/19/2011 07:41 pm Iustin Pop

Fix master IP activation in failover with no-voting

Thanks to for reporting this. The logic in
masterd.CheckMasterd did an early return in case of no_voting, hence
skipping the master IP activation. We just change the ifs to not
return but simply continue through the function....

6e7f0cd9 04/19/2011 06:41 pm Iustin Pop

disk wiping: fix bug in chunk size computation

The current wipe_chunk_size computation is doing min(int_value,
float_value). For small disks (below 10GiB), the actual formula will
result into the float value being chosen. This results into very
interesting behaviour:...

a0aa6b49 04/19/2011 03:38 pm Michael Hanselmann

Fix bug in watcher

If “utils.RunParts” were to raise an exception, a log message was
written and the code continued to run. Due to the exception the
“results” variable would not be defined.

Also change the code to log a backtrace (getting an exception is rather...

4a2c0db0 04/14/2011 01:33 pm Michael Hanselmann

Release locks before wiping disks during instance creation

Ganeti 2.3 introduced an optional feature to overwrite an instance's
disks on creation. Unfortunately the code kept all locks while doing the
wipe, slowing down the creation of multiple instances in parallel....

a9d68e40 04/13/2011 01:01 pm Michael Hanselmann

utils.WriteFile: Close file before renaming

Issue 154 (http://code.google.com/p/ganeti/issues/detail?id=154)
reported an “Operation not supported” error when writing instance
exports to a mounted CIFS filesystem. Experimentation showed the error
to only occur when using rename(2) on an opened file. Various references...

accbf5e3 04/13/2011 01:01 pm Michael Hanselmann

Nicer formatting for group query error

Before this patc the message would look like “Some groups do not exist:
[u'foo', u'bar']”, now it's “Some groups do not exist: foo, bar”.

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

76ae1d65 04/07/2011 12:46 pm Michael Hanselmann

Merge branch 'stable-2.4' into devel-2.4

  • stable-2.4:
    Add error checking and merging for cluster params
    Clarify --force-join parameter message
    Treat empty oob_program param as default
    Fix bug in instance listing with orphan instances
    Fix bug related to log opening failures...
dae661a4 04/06/2011 07:47 pm Michael Hanselmann

LUInstanceQueryData: Don't acquire locks unless requested

Until now LUInstanceQueryData always acquired locks for the instance(s)
and nodes involved. In combination with long-running operations this
prevented the use of “gnt-instance info”, even with the “--static”...

d385a174 04/06/2011 03:49 pm Iustin Pop

Increase the lock timeouts before we block-acquire

This has been observed to cause problems on real clusters via the
following mechanism:

- a long job (e.g. a replace-disks) is keeping an exclusive lock on an
instance
- the watcher starts and submits its query instances opcode which...

fe295df3 04/04/2011 02:47 pm Iustin Pop

daemon.py: move startup log message before prep_fn

Before this, the output in the rapi daemon log was:
2011-04-04 03:09:51,026: ganeti-rapi pid=17447 INFO Reading users file
at /var/lib/ganeti/rapi/users
2011-04-04 03:09:51,027: ganeti-rapi pid=17447 INFO ganeti-rapi daemon...

0942620b 04/04/2011 02:47 pm Iustin Pop

Display the actual memory values in N+1 failures

This changes the display from:
Mon Apr 4 02:29:46 2011 * Verifying N+1 Memory redundancy
Mon Apr 4 02:29:46 2011 - ERROR: node node2: not enough memory to
accomodate instance failovers should node node1 fail...

ebcd61bb 03/31/2011 07:47 pm Iustin Pop

ssh.VerifyNodeHostname: remove the quiet flag

This is not needed for this function, and can interfere with debugging
of ssh failures.

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

d1b47b16 03/24/2011 02:49 pm Michael Hanselmann

Fix output for “gnt-job info”

If the result of an opcode was a non-empty dictionary, it
would be impossible to differenciate between input and result:

Input fields:
[…]
debug_level: 0
fields: cluster_name,master_node,volume_group_name
jobs: [[True, u'37922'], [True, u'37923'], [True, u'37924']]...
f0a80b01 03/17/2011 06:39 pm Michael Hanselmann

watcher: Fix misleading usage output

When “ganeti-watcher” is called with an argument, it would hint at
a non-existing “-f” parameter. With this patch the separate usage
string is no longer necessary.

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

50769215 03/17/2011 12:17 pm Stephen Shirley

Clarify --force-join parameter message

This isn't only used during cluster merge.

Signed-off-by: Stephen Shirley <>
Reviewed-by: Michael Hanselmann <>

e4e35357 03/16/2011 07:37 pm Michael Hanselmann

locking: Fix race condition in lock monitor

In some rare cases it can happen that a lock is re-created very soon
after deletion, while the old instance hasn't been destructed yet. In
such a case the code would detect a duplicate name and raise an
exception....

7d4da09e 03/15/2011 02:50 pm Michael Hanselmann

utils: Export NiceSortKey function

The ability to split a string into a list of strings and integers can be
handy elsewhere and is necessary for sorting query results by names.

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