Statistics
| Branch: | Tag: | Revision:

root / lib @ 973d7867

# Date Author Comment
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

8ee53a06 11/05/2007 02:44 am Guido Trotter

Bump protocol version up

The OS cleanup patches change the wire protocol. Increment the protocol number
by one.

Reviewed-By: iustinp

dfa96ded 11/05/2007 02:43 am Guido Trotter

Convert os_get to use OS rather than InvalidOS

In order to do this for simplicity we leave the OSFromDisk function as-is and
we convert the eventual exception to an OS object in ganeti-noded. The
unmangling gets simplified and so does the code for checking whether the OS is...

4e679f11 11/05/2007 02:43 am Guido Trotter

Simplify diagnose mangling/unmangling functions

The functions in ganeti-noded and rpc.py still deal with the fact that an
InvalidOS error could be returned by DiagnoseOS. As this is not the case
anymore simplify their code for the current behavior.

Reviewed-By: iustinp

8fa42c7c 11/05/2007 02:43 am Guido Trotter

Make DiagnoseOS use the modified OS objects

Modify backend.py so that DiagnoseOS only returns OS objects rather than
InvalidOS errors, and make sure gnt-os understands the new objects. Also delete
the deprecated helper functions from gnt-os.

Reviewed-By: iustinp

d2c807e4 11/05/2007 02:42 am Guido Trotter

Create OS from an InvalidOS error

Add a new FromInvalidOS static function to objects.OS that makes it easy to
create an object representing a broken OS starting from the relevant exception.

Reviewed-By: iustinp

37482e7b 11/05/2007 02:42 am Guido Trotter

Make the OS object able to represent broken OSes

Till now the OS object just represents a correct OS instance. Change it so it
can represent a broken one too, by adding a "status" field: if this field is
different from the OS_VALID_STATUS constant the object is considered to be an...

00fe9e38 11/04/2007 06:10 am Guido Trotter

Make call_os_get a single node function

call_os_get is never called with a real list of nodes, so there's no point in
it being multi-node. Making it single-node till a usage for multi-node call is
found.

Reviewed-By: iustinp

74b4217d 11/04/2007 05:37 am Guido Trotter

Fix two typos in a doc string

Remove a wrong "i" and add a missing ")" to the DiagnoseOS function doc string.

Reviewed-By: iustinp

73415719 11/03/2007 08:55 am Iustin Pop

Implement tag searching

This patch adds a search command for locating tags on all objects of the
cluster using a regex pattern.

Reviewed-by: aat

3f78eef2 11/02/2007 03:44 pm Iustin Pop

Implement device to instance mapping cache

Currently, troubleshooting DRBD problems involves a manual process of going
backwards from the DRBD device to the instance that owns it.

This patch adds a weak (i.e. not guaranteed to be correct or up-to-date)
cache of device to instance. The cache should be, in normal operation,...

be345db0 11/02/2007 03:43 pm Iustin Pop

Update the dev_path on LVs on rename

When renaming a logical volume, we should change the dev_path (and other
internal variables) in order to be consistent.

Reviewed-by: imsnah

25a915d0 11/02/2007 03:10 am Iustin Pop

Revision 302 is broken, this fixes it

I forgot a pair of parentheses in that revision which break the common
case. This patch adds them.

Reviewed-by: ultrotter

073ca59e 11/01/2007 11:40 pm Iustin Pop

Fix printing of unconfigured DRBD devices

If the device is unconfigured (not yet did SetDiskID for it ever), it
might have a physical_id of None. This patch fixes that case.

Reviewed-by: ultrotter

5d0fe286 11/01/2007 07:22 pm Iustin Pop

Whitespace fixes

Reviewed-by: ultrotter

24a40d57 10/31/2007 04:56 pm Iustin Pop

More sane handling of errors during failover

Currently we ignore errors on instance shutdown (on the source node)
during instance failover. We should do this only if the user gave a
command line options allowing this, as it's a dangerous thing to do.

This patch fixes this by using the same "--ignore-consistency" option...

50ff9a7a 10/31/2007 04:55 pm Iustin Pop

Fix bridge checking in instance failover

The current code checks the bridge on the primary node of the instance,
but we need to check it on the destination node.

This was caught by testing failover with a down primary node.

Reviewed-by: imsnah

4cc2a728 10/30/2007 05:09 pm Michael Hanselmann

Fix _UpdateEtcHosts to understand empty lines.

Reviewed-by: schreiberal

1a8c0ce1 10/29/2007 10:09 pm Iustin Pop

Change the signature of some methods of mcpu.Processor

This patch moves the passing of the feedback_fn argument from the
(Exec|Chain)OpCode to the initialization of the Processor instance.

Reviewed-by: imsnah

ce838ee3 10/29/2007 07:05 pm Iustin Pop

Remove a redundant assignment

The major is declared in the base class, we do not need to overwrite it.

Reviewed-by: imsnah

0ede5336 10/29/2007 07:05 pm Iustin Pop

Fix some style issues (whitespace changes only)

Reviewed-by: imsnah

233d06c5 10/29/2007 06:02 pm Iustin Pop

Fix a non-clear error message

Reviewed-by: imsnah

a9e0c397 10/29/2007 05:49 pm Iustin Pop

Implement replace-disks for drbd8 devices

This patch adds three modes of disk replacement for drbd8:
- replace the disk on the primary node
- replace the disk on the secondary node
- replace the secondary node

It also adds some debugging code to backend.py and increments the...

b00b95dd 10/29/2007 05:47 pm Iustin Pop

Allow drbd8 devices to work without local storage

This patch adds functionality to drbd8 for:
- removing local storage
- initializing without local storage
- adding local storage

This is needed for the being able to replace disks for drbd8.

Reviewed-by: imsnah

f3e513ad 10/29/2007 05:44 pm Iustin Pop

Implement block device renaming

This patch add code for renaming a device; more precisely, for changing
the unique_id of the device. This means:
- logical volumes, rename the volume
- drbd8, change the remote peer

This is needed for the being able to replace disks for drbd8....

78feb6fb 10/28/2007 04:32 pm Guido Trotter

Import two itertools recipes

The two function 'any' and 'all' are copied as-is from the python 2.4
documentation for the itertools module. They are useful (and are already
builtin function in python 2.5).

Reviewed-by: iustinp

65a15336 10/26/2007 01:25 pm Iustin Pop

Add a custom str() method for objects.Disk

This is done in order to easy debugging of disk-related issues.

Reviewed-by: imsnah

153d9724 10/25/2007 02:22 pm Iustin Pop

Modify two mirror-device related rpc calls

The two calls mirror_addchild and mirror_removechild take only one child
for addition/removal. While this is enough for our md usage, for local
disk replacement in drbd8, we need to be able to specify both the data...

a1f445d3 10/24/2007 05:43 pm Iustin Pop

Initial implementation of drbd8 template type

This is a partially working drbd8 template type. It does:
- add/remove
- startup/failover/shutdown

Not working is replace disks, which needs custom code for this template.

Reviewed-by: imsnah

f38478b2 10/24/2007 05:41 pm Iustin Pop

Allow DRBD8 to sync after sb1-pri with no changes

Currently the way we shutdown or startup disks seems to make DRBD8
unhappy. Until we rewrite the sequence of (de)activation, allow DRBD to
connect after a sb1-pri condition with no changes to the data.

Reviewed-by: imsnah