Statistics
| Branch: | Tag: | Revision:

root / lib @ 162c1c1f

# Date Author Comment
162c1c1f 02/08/2008 01:23 pm Guido Trotter

Shared Lock implementation and unit tests.

Adding a locking.py file for the ganeti locking library. Its first component is
the implementation of a non-recursive blocking shared lock complete with a
testing library.

Reviewed-by: imsnah, iustinp

06009e27 02/05/2008 04:12 pm Iustin Pop

Add a test opcode that sleeps for a given duration

This can be used for testing purposes.

Reviewed-by: ultrotter,imsnah

fdbd668d 02/05/2008 03:33 pm Iustin Pop

Reduce the chance of DRBD errors with stale primaries

This patch is a first step in reducing the chance of causing DRBD
activation failures when the primary node has not-perfect data.

This issue is more seen with DRBD8, which has an 'outdate' state (in
which it can get more often). But it can (and before this patch, usually...

b08d5a87 02/04/2008 04:33 pm Iustin Pop

Fix some indendation issues

Reviewed-by: imsnah

c7b27e9e 02/04/2008 04:28 pm Iustin Pop

Fix incomplete mac address export to hooks

This patch completes the change introduced in r566 (trunk) and r568
(branch-1.2).

Reviewed-by: imsnah

53e4e875 01/31/2008 03:22 pm Guido Trotter

Give mac information to instance hooks

Currently just the bridge and ip address are passed. Add an environment
variable for the mac address.

Reviewed-by: iustinp

cdeef2ca 01/31/2008 02:38 pm Alexander Schreiber

Make the mouse more usable in VNC for HVM.

Reviewed-by: imsnah

1cafd236 01/30/2008 01:14 pm Guido Trotter

Export bridge information too

gnt-backup export used to export the ip and mac of each nic, but not which
bridge it was connected to. Adding this information.

Reviewed-by: iustinp

d8a4b51d 01/28/2008 04:32 pm Iustin Pop

Improve the documentation of query output fields

The gnt-node and gnt-instance list commands have a customizable list of
output fields, but the list is not up to date (in the man page) and not
easily understandable from the ‘--help’ output.

This patch updates the man pages and adds the available fields and...

d6d415e8 01/28/2008 01:51 pm Iustin Pop

Add option for the number of VCPUs in instance listing

Reviewed-by: ultrotter

2bc22872 01/28/2008 11:03 am Iustin Pop

Fix "gnt-instance modify --initrd"

The new QA tests for instance modify uncovered a bug in the modify
initrd operation when setting the initrd to none.

Reviewed-by: imsnah

70a35b6f 01/25/2008 05:36 pm Guido Trotter

Add a missing parenthesis

It was wrongly deleted when converting

if a in dict.keys():
to
if a in dict:

Reviewed-by: imsnah

de47cf8f 01/21/2008 06:28 pm Guido Trotter

Add support for command aliases

Passing a new aliases dict to generic main we can easily support aliases for
compatibility reasons or simply useability.

Reviewed-by: iustinp

d87ae7d2 01/21/2008 04:33 pm Iustin Pop

Fix VG listing broken by r510

LVM code sometimes adds an extra separator at the end of the field list.
Make the code strip it if exists.

Reviewed-by: imsnah

f4d377e7 01/21/2008 12:13 am Iustin Pop

Make backend._GetVGInfo check the validity of 'vgs'

Currently, the function backend._GetVGInfo only checks for errors via
the exit code of the 'vgs' command. However, there are other ways of
failure so we need to also check for valid output before parsing....

8d75db10 01/21/2008 12:12 am Iustin Pop

Fix checking of node free disk in CreateInstance

This patch does two things:
- checks that the result values from call_node_info are valid integer
values and aborts otherwise
- skips disk space computation for the DT_DISKLESS case

The most important point of the patch is the verification of results...

d4f16fd9 01/21/2008 12:12 am Iustin Pop

Abstract node memory checking into a separate function

The checking of a node's free memory (via rpc.call_node_info) is done in
both start instance an failover. This patch abstracts this call,
together with the appropriate error handling, into a separate function...

97628462 01/21/2008 12:09 am Iustin Pop

Change a hardcoded path into its proper constant

The function backend.UploadFile still uses "/etc/hosts" directly instead
of the existing constant; this patch fixes this.

Reviewed-by: ultrotter

1ed70996 01/21/2008 12:02 am Iustin Pop

Fix run directory for the fake hypervisor

Currently the fake hypervisor has hardcoded ‘/var/run’ as a base
directory for its store. This patch adds a constant RUN_DIR that is used
for both the fake hypervisor and for BDEV_CACHE_DIR.

Reviewed-by: ultrotter

8ae6bb54 01/16/2008 06:01 pm Iustin Pop

Show the HVM boot order in instance info

This is a merge from the 1.2 branch

Reviewed-by: imsnah

147af04d 01/16/2008 06:01 pm Iustin Pop

Two small style fixes

This is a merge from the 1.2 branch

Reviewed-by: imsnah

ba4b62cf 01/14/2008 05:10 pm Iustin Pop

Fix some misspellings

This patch fixes two name typos and a style issue (which makes pylint
complain).

Reviewed-by: ultrotter

40ed12dd 01/14/2008 04:19 pm Guido Trotter

Fix CreateInstance new optional parameters

Some new paramenters of the CreateInstance opcode are optional (namely
kernel_path, initrd_path and hvm_boot_order) but their absence makes the code
crash. Fix this by initializing them to a default value if they're not present....

25c5878d 01/11/2008 02:13 pm Alexander Schreiber

Support selecting the boot device order for HVM.

This patch adds support for specifying and changing the boot device order for
HVM instances. The boot device order specification is ignored for non HVM
instances.

Reviewed-by: iustinp

0d9c53bc 01/09/2008 03:02 pm Alexander Schreiber

Add boot_order entry to Instance object.

First step to support custom boot device order for HVM instances, add a
location to actually store that information for the instance.

Reviewed-by: iustinp

8cafeb26 01/08/2008 06:16 pm Iustin Pop

Fix gnt-instance modify breakage introduced in r462

Reviewed-by: schreiberal

03abdbe8 01/08/2008 01:04 pm Iustin Pop

Change the Xen PVM to use the new kernel options

This patch changes the hypervisor to use the new kernel and initrd
instance attributes. They kernel is handled as expected (use the custom
or the default one), but the initrd is treated a little bit special, in...

71aa8f73 01/08/2008 01:03 pm Iustin Pop

Make ‘gnt-instance info’ show kernel/initrd paths

This patch changes the info subcommand to nicely show the kernel and
initrd paths.

Reviewed-by: imsnah

3b6d8c9b 01/08/2008 01:03 pm Iustin Pop

Allow defining the kernel/initrd at creation time

This patch adds support for defining the kernel/initrd at instance
creation time, using the same interface as in instance modify.

Reviewed-by: imsnah

973d7867 01/08/2008 01:03 pm Iustin Pop

Add support for modifying the kernel/initrd path

This patch adds support in ‘gnt-instance modify’ to set the kernel and
initrd paths. The user can pass either 'default' or 'none' (none is not
valid for kernel).

Reviewed-by: imsnah

2d8c9c2e 01/08/2008 01:02 pm Iustin Pop

Add kernel/initrd paths to the instance object

This patch adds two new attributes to the instance object:
- kernel_path
- object_path

The code ignores them and the configuration handling is not broken by
this addition.

Reviewed-by: imsnah

b63ed789 01/07/2008 03:30 pm Iustin Pop

Improve verify-disks: broken/missing LV detection

This patch improves the ‘gnt-cluster verify-disks’ command by adding
support for detecting broken volume groups and missing logical volume
names.

As such, we don't try anymore to activate disks for instances that are...

5574047a 01/07/2008 03:29 pm Iustin Pop

Activate logical volumes at Assemble() time

This patch changes the Assemble() method for logical volumes from a noop
to do a `lvchange -ay` on the logical volume; this ensures that if the
logical volume is not active, we are able to activate and use it.
...

be1ba2bd 01/07/2008 03:28 pm Iustin Pop

Improve speed of activating block devs

This patch fixes the double attach operation in bdev.AttachOrAssemble,
which was an indentation mistake in the first place.

Reviewed-by: imsnah

3840729d 01/07/2008 01:22 pm Iustin Pop

Add unittest for DRBD8 drdbsetup show parser

This patch changes the bdev.DRBD8._GetDevInfo to take a string instead
of a minor, separates the `drbdsetup show` invocation into a new
separate method (bdev.DRBD8._GetShowData) and modifies the rest of the
DRBD8 class to make the appropriate calls....

1862d460 12/27/2007 05:31 pm Alexander Schreiber

Allow instance MAC address to be set.

Allow the MAC address of an instance to be specified optionally during
instance creation and later to be changed via instance modify.

Reviewed-by: iustinp

2a6469d5 12/20/2007 06:47 pm Alexander Schreiber

Proof-of-Concept HVM support for Ganeti.

This patch implements a first proof-of-concept for HVM support in Ganeti.
Due to the nature of this patch, it is intended for test environments
only.

Reviewed-by: iustinp

01121d61 12/20/2007 03:59 pm Alexander Schreiber

Error handling for instance config file creation

Wrap error handling around creating the instance config file.

Reviewed-by: iustinp

631eb662 12/20/2007 11:58 am Alexander Schreiber

Use a generic Xen hypervisor interface.

Abstract the parts of the Xen hypervisor interface shared by both PVM and
HVM into a generic interface, subclass the special case PVM from that.

Prepatch for adding HVM support.

Reviewed-by: iustinp

9c233417 12/19/2007 01:11 pm Iustin Pop

Make utils.RunCmd() deal with interleaved stdout/stderr

Currently, RunCmd is written with the assumption that programs will have
a small stderr output, therefore we read the child's stdout (which can
be big, so we don't want to block the child) and then the stderr (which...

30989e69 12/18/2007 04:25 pm Alexander Schreiber

Internal API change for instance console access.

Change the internal hypervisor API for GetShellCommandForConsole, we
now call it with the instance instead of just the instance name.

This is a prep patch for HVM, since HVM needs more than just the instance...

2584d4a4 12/18/2007 04:05 pm Alexander Schreiber

cleanup for hypervisor constants

Move constant definitions for hypervisor into constants.py

Reviewed-by: ultrotter

79caa9ed 12/18/2007 01:04 pm Guido Trotter

Specify hint as a named argument

hint is declared as a named argument for the LogWarning function. Make its
caller pass it naming it.

Reviewed-by: iustinp

58acb49d 12/17/2007 04:53 pm Alexander Schreiber

Add instance port support.

Extends the instance object by adding a port item, also adds changes
to print this port via gnt-instance info.

Reviewed-by: iustinp

36c68ff1 12/12/2007 05:18 pm Iustin Pop

Handle ^C while trying to acquire the lock

When waiting for the lock and pressing ^C, the user will get a backtrace
as the KeyboardInterrupt exception is not handled. The patch adds a
simple method of handling it.

Note that this is not about ^C in any other place....

f4d4e184 12/12/2007 03:13 pm Iustin Pop

Add the ‘gnt-cluster verify-disks’ command

This patch adds the OpVerifyDisks handling in mcpu.py and the
verify-disks command in the gnt-cluster script, which for every instance
computed by LUVerifyDisks submits a new OpActivateInstanceDisks request.

Reviewed-by: imsnah

2c95a8d4 12/12/2007 03:13 pm Iustin Pop

Add LUVerifyDisks

This patch adds a new LUVerifyDisks that implements the OpVerifyDisks.
The algorithm is that by determining not-used logical volumes for
instances that are supposed to be running, we presume from there that
the DRBD devices are not online and therefore one should...

150e978f 12/12/2007 03:13 pm Iustin Pop

Add a new OpVerifyDisks opcode

This patch adds the definition of a new opcode that will be used to
compute the list of instances with not-online disks.

Reviewed-by: imsnah

cb2037a2 12/11/2007 06:25 pm Iustin Pop

Return more data in rpc.call_volume_list

Currently, the volume_list call returns only the volume size. However,
it is useful to also have two other things: the 'inactive' state of the
volume (which might trigger a ‘vgchange -a y’ on the volume group) and...

ff73280e 12/04/2007 01:21 pm Michael Hanselmann

On OS creation errors, write logfile path to ganeti-noded's logfile.

Reviewed-by: schreiberal

f675d4aa 12/04/2007 01:18 pm Alexander Schreiber

Output reading fix for backend.NodeVolumes()

Use result.stdout instead of result.output to avoid potential confusion
by merged in error messages from stderr.

Reviewed-by: iustinp

523687d7 12/04/2007 01:04 pm Iustin Pop

Log instance startup errors correctly

Currently, the Hypervisor error raised on ‘xm create’ failure doesn't
contain the actual output from the command, thus what we log to the node
daemon log is not helpful enough. This patch fixes that.

Reviewed-by: schreiberal

f49a5e02 12/04/2007 12:37 pm Alexander Schreiber

Modify GetVolumeList so output on stderr from lvs doesn't break it.

Reviewed-by: imsnah

f4bc1f2c 12/03/2007 04:03 pm Michael Hanselmann

Various code style fixes for strings.

- When line wrapping is needed, move spaces to the next line.
- Remove embedded line breaks from error messages.

Reviewed-by: schreiberal

c522ea02 11/30/2007 12:22 pm Iustin Pop

Fix parsing of drbdsetup show output

This fixes the parsing of integers in the drbdsetup show output with
newer pyparsing versions.

Basically, the convert-to-int action that we use was taken from the
example documentation of an older pyparsing version that automatically...

3aecd2c7 11/29/2007 06:52 pm Iustin Pop

Replace hardcoded lock dir

This patch replaces the hardcoded ‘/var/lock/’ directory with one based on
LOCALSTATEDIR.

Reviewed-by: imsnah

f362096f 11/29/2007 06:03 pm Iustin Pop

Make utils.RunCmd log failures when using debug

This patch adds logging of command failures to the debug log in case the
user either started the command (gnt-*) or the node daemon with the
debug flag.

Reviewed-by: imsnah

8522ceeb 11/27/2007 04:15 pm Iustin Pop

Fix logging of some checks in LUClusterVerify

Currently, the results of ConfigWriter.VerifyConfig() are lost. Make
sure we log them too in cluster verify.

Reviewed-by: ultrotter

a70f34d1 11/26/2007 10:39 am Iustin Pop

Drop the Rename method of DRBD8 devices

Since we now do changes of remote peers in two steps (Attach with no
network information and then Attach with the new peer's data), we don't
need this operation anymore.

Reviewed-by: imsnah

642445d9 11/26/2007 10:38 am Iustin Pop

Split the change of peer in secondary replace in two operations

This patch splits the single operation of replace peer into two distinct
phases, in order to make a single change to the instance configuration:
- detach from network
- if at least one drbd device succeeded, make one change to the...

9cdbe77f 11/26/2007 10:38 am Iustin Pop

Relax even more the identification of DRBD8 devices

This patch adds a new success condition for identifying DRBD8 devices:
if the local device is correct, but the network peer is not, we shutdown
the network and attach to the correct one (this also handles going to...

52857176 11/26/2007 10:38 am Iustin Pop

Add support for DRBD8 devices to work standalone

This patch adds a check in _AssembleNet so that if we are passed None
value in the unique_id, we instead switch to standalone mode.

Reviewed-by: imsnah

f3299a07 11/22/2007 04:10 pm Michael Hanselmann

Sort list returned by ListVisibleFiles.

If we didn't sort this list, files would be in arbitrary order.

Reviewed-by: iustinp

12c3449a 11/21/2007 06:55 pm Michael Hanselmann

Replace disk template drbd8 with drbd where missing.

Reviewed-by: iustinp

a8459f1c 11/21/2007 01:34 pm Iustin Pop

Fix logging in drbd _ShutdownNet method

We didn't test for failure, just always logged the output.

Reviewed-by: imsnah

7fbb1f65 11/20/2007 11:18 am Michael Hanselmann

Make sure aliases written to /etc/hosts are unique.

Reviewed-by: iustinp

f7414041 11/20/2007 11:17 am Michael Hanselmann

Add function to return list with unique elements.

Reviewed-by: ultrotter

6852c52f 11/16/2007 08:36 pm Guido Trotter

Fix a typo in a warning message

Reviewed-by: schreiberal

6510a58a 11/16/2007 04:28 pm Michael Hanselmann

Don't remove master's hostname from /etc/hosts on cluster destroy.

This fixes issue #13.

Reviewed-by: schreiberal

20a0c9ef 11/14/2007 11:52 pm Guido Trotter

When an assembly error occurs log it too

Right now an assembly error produces an exception but not a log message. This
is bad because the exception suggests looking at the log, but the log itself
has a lot of errors which are not really a problem and only some which really...

fcb1f331 11/14/2007 04:05 pm Michael Hanselmann

Give more details on errors when trying to run “lvdisplay”.

Reviewed-by: schreiberal

7803d4d3 11/13/2007 01:11 am Iustin Pop

Fix a wrong comparison in _RecursiveAssembleBD

We want to prevent sending too many 'None' children to a device.
However, the test as it is today is wrong, as we want to test the
situation after adding a new child, and not before. This patch fixes
this by testing greater-or-equal instead of just greater....

7e3dbb94 11/13/2007 01:11 am Iustin Pop

Fix another breakage in SetEtcHostsEntry

The code assumes all lines have at least two elements which are
whitespace separated - i.e. it does not deal with empty lines or comment
lines with no spaces. This patch fixes this.

Also, the patch replaces the blank between IP and the canonical name...

2e3e75b7 11/12/2007 07:10 pm Michael Hanselmann

Call fsync() after modifying /etc/hosts.

This is a critical file. Breaking it would be very bad. Thus, if the system
crashes before the data is synched to the disk, it should have the complete
file afterwards.

Reviewed-by: iustinp

9440aeab 11/12/2007 07:09 pm Michael Hanselmann

Fix functions for /etc/hosts.

- Combine hostname and aliases on one line
- Fix bug with wrongfully removed newline characters
- Use wrapper for SetEtcHostsEntry in cmdlib

Reviewed-by: iustin

424908c1 11/12/2007 07:03 pm Michael Hanselmann

Rollback commit 356.

2d6cfa31 11/12/2007 06:44 pm Michael Hanselmann

Add functions for known_hosts files.

Reviewed-by: TODO

3e1cdf9f 11/12/2007 12:57 pm Michael Hanselmann

Add missing descriptions to {Add,Remove}EtcHostsEntry.

Reviewed-by: schreiberal

7df43a76 11/12/2007 05:56 am Iustin Pop

Relax replace_disks_all meaning for drbd8

In order to make the replace secondary action to be done via the same
opcode parameters for both remote_raid1 and drbd, we must allow the
LUReplaceDisks to change replace_disks_all for drbd with non-empty
remote_node into replace_disks_sec....

2395c322 11/09/2007 10:13 pm Iustin Pop

Soften the requirements for hooks execution

Currently, an unreachable node (or one that return undetermined failure)
in the hooks pre-phase will abort the curren operation. This is not
good, as a down node could prevent many operation on the cluster.

This patch changes a RPC-level failure (and not a hook execution...

c8a0948f 11/09/2007 04:54 pm Michael Hanselmann

Use new functions to modify /etc/hosts.

Reviewed-by: schreiberal

899d2a81 11/09/2007 04:53 pm Michael Hanselmann

Add functions to modify /etc/hosts.

Reviewed-by: schreiberal

59f82e3f 11/09/2007 04:52 pm Michael Hanselmann

Cleanup temporary file in RemoveAuthorizedKey.

Reviewed-by: schreiberal

5bfac263 11/08/2007 09:04 pm Iustin Pop

Changes related to logging

This patch modifes:
- mcpu.Processor.LogWarning to have its 'hint' parameter as optional
and only log it if not None
- cmdlib._WaitForSync to not log directly to stdout/stderr but via the
proc.Log(Info|Warning) methods...

0834c866 11/07/2007 05:53 pm Iustin Pop

Enhance secondary node replace for drbd8

This (big) patch does two things:
- add "local disk status" to the block device checks
(BlockDevice.GetSyncStatus and the rpc calls that call this
function, and therefore cmdlib._CheckDiskConsistency)
- improve the drbd8 secondary replace operation using the above...

7dd30006 11/07/2007 01:48 pm Michael Hanselmann

Check whether init.d script is executable.

Reviewed-by: schreiberal

60d49723 11/06/2007 07:04 pm Michael Hanselmann

Remove --secondary-node option.

Replace --secondary-node option with an optional parameter for --node.

cff90b79 11/06/2007 07:01 pm Iustin Pop

Enhance DBRD8 disk replacement (same nodes)

This patch adds enhanced reporting and much more checks to the disk
replacement (when not switching the secondary).

Reviewed-by: imsnah

9db6dbce 11/06/2007 07:01 pm Iustin Pop

Implement degraded status for logical volumes

Logical volumes can be 'degraded' in a similar way to mirrored devices,
when their underlying storage has gone away (i.e. after a physical disk
failure and 'vgreduce --removemissing'). If we can detect this, we can...

0fbbf897 11/06/2007 07:01 pm Iustin Pop

Add better error logging functions for LUs

Currently, some LUs use logger.Error, others just feedback_fn, etc. This
patch adds three functions to mcpu.Processor than can be used to log
messages to both the log and to the user.

These function will be used to enhance the output of replace-disks for...

03ece5f3 11/06/2007 07:01 pm Iustin Pop

Enhance mirror operations for DRBD8

Currently, the mirror operations (add and remove children) test against
the instance's attributes. This patch changes the check tests to work
against the actual status of the device (i.e. live data) which is more
realistic....

fc1dc9d7 11/06/2007 07:00 pm Iustin Pop

Allow DRBD8 operation without backing storage

This patch adds the following functionality:
- DRBD8 devices can assemble without local storage (done by allowing
None in the list of children, and making DRBD8 to ignore all
children if any is None)...

583e3f6f 11/06/2007 07:00 pm Iustin Pop

Make DRBD8 disks show 'degraded' status if diskless

This patch enables the bdev.DRBD8 class report a degraded status if the
local disk is missing. This allows `gnt-instance info` to report the
actual situation in this case.

Note that DRBD7 should also behave like this, however the diskless case...

e739bd57 11/06/2007 07:00 pm Iustin Pop

Change the way remove children is called in bdev

For some cases, we don't have to have access to the children of a device
in order to remove them (e.g. md over lvs, or drbd over lvs). In order
to ease the removal process, skip over finding the child if it provides...

222f2dd5 11/06/2007 06:55 pm Iustin Pop

Add a support function to objects.Disk

This patch adds a function returning the device path if it is computable
from the disk object (and we don't need to instantiate a bdev object on
the target node in order to compute this). Only LVs support this.

Reviewed-by: imsnah

e2e521d0 11/05/2007 11:22 pm Iustin Pop

Small cleanup for error formatting

Reviewed-by: ultrotter

c7b46d59 11/05/2007 07:59 pm Iustin Pop

Handle missing init script at cluster init

This patch adds a check in the prereq of LUInitCluster for the existence
of the init script. This allows a clean abort instead of a stack dump.

Based on a report by

Reviewed-by: ultrotter

cf5a8306 11/05/2007 05:08 pm Iustin Pop

Fix a unhandled error case in device creation

The block device creation process is the following:
- device create
- device assembly (on primary or depending on dev_type, on secondary
too)
- set sync speed
- return

The problem is that device assembly after creation was not checked for...

65fe4693 11/05/2007 05:06 pm Iustin Pop

Miscellaneous style fixes

This patch fixes some minor pylint warnings (unused variables, wrong
indentation, etc.) and a real bug in the recovery for drbd8 rename
procedure.

Reviewed-by: imsnah

24818e8f 11/05/2007 02:14 pm Michael Hanselmann

Rename utils.GetUUID to utils.NewUUID.

Reviewed-by: schreiberal