Statistics
| Branch: | Tag: | Revision:

root / lib / bdev.py @ 911a495b

History | View | Annotate | Download (49.4 kB)

# Date Author Comment
cb999543 07/09/2008 01:41 pm Iustin Pop

Reduce duplicate Attach() calls in bdev

Currently, the 'public' functions of bdev (FindDevice and
AttachOrAssemble) will call the Attach() method right after class
instantiation.

But the constructor itself calls this function, and therefore we have
duplicate Attach() calls (which are not cheap at all)....

468c5f77 07/09/2008 01:41 pm Iustin Pop

Convert bdev.py to the logging module

This does not enhance in any way the messages; it just switches to the
new module.

Reviewed-by: imsnah

99e8295c 06/25/2008 09:45 am Iustin Pop

Cleanup LV status computation

Currently, when seeing if a LV is degraded or not (i.e. virtual volume),
we first attach to the device (which does an lvdisplay), then do a lvs
in order to display the lv_attr. This generates two external commands to
do (almost) the same thing....

6b90c22e 06/18/2008 06:08 pm Iustin Pop

Rework the DRBD8 device status computation

Currently, compute the status of a drbd8 device in GetSyncStatus and
return only the values that we need (and fit in the framework of
GetSyncStatus). However, the full status details are useful (and needed)
in other places, so the patch attempts to improve this situation....

1005d816 06/16/2008 07:01 pm Iustin Pop

bdev: implement disk resize for lvm/drbd8

This patch implements disk resize at the bdev level for the LVM and
DRBD8 disk types. It is not implemented for DRBD7 and MD since the way
MD works with its underlaying devices makes it harder and this
combination is also deprecated....

abdf0113 05/30/2008 01:55 pm Iustin Pop

Complete removal of md/drbd 0.7 code

This patch removes the last of the md and drbd 0.7 code. Cluster which
have the old device types will be broken if they have this applied.

Reviewed-by: imsnah

63012024 05/15/2008 12:00 pm Guido Trotter

Fix drbd show parser to handle valueless keywords

It turns out in some cases there can exist keywords without an
associated value exported by drbdsetup show. This patch makes the value
part optional in our parser, so that if it's not present the parsing
result will contain an array with just the keyword in it. This is not a...

333411a7 05/15/2008 12:00 pm Guido Trotter

Split drbd command creation and execution

Make _AssembleDisk more similar to _AssembleNet by splitting the
generation of the drbdsetup command and its execution. While not
changing anything this makes it easier to manipulate the command just in
certain cases, which in the future we'll need to do....

6c896e2f 05/12/2008 12:14 pm Iustin Pop

bdev: always log command output if it failed

Currently many error handling code paths in bdev.py log only
result.fail_reason (i.e. exit code or signal that killed the command)
but not its output. This makes debugging very hard.

The patch changes all places where we only log fail_reason to also log...

ab6cc81c 05/10/2008 11:25 am Iustin Pop

DRBD: Fix another bug in diskless activation

DRBD8 requires that we pass ‘--create-device’ to the first command that
wants to activate a new DRBD minor. We do this currently when we run the
“drbdsetup ... disk” command which we run before the network setup....

f860ff4e 05/08/2008 10:50 pm Guido Trotter

Improve DRBD8.Open's docstring a bit more

Reviewed-by: iustinp

7b62772e 05/08/2008 10:50 pm Guido Trotter

Fix comment typo in bdev.py

Reviewed-by: iustinp

bf25af3b 05/08/2008 11:21 am Iustin Pop

Fix DRBD8 diskless assembling

The algorithm for attaching to existing DRBD devices is not trivial. It
has four alternatives, and there is a bug in the last one when we have
diskless devices.

The last case (local disk info matches but remote/network configuration...

b62ddbe5 04/15/2008 07:12 pm Guido Trotter

Fix two pylint uninitialized variable errors

Reviewed-by: iustinp

6f695a2e 04/05/2008 03:47 pm Manuel Franceschini

Add FileStorage class

This is the representation of file VBDs on the backend. It's the first
implementation an supports only raw files.

Reviewed-by: iustinp

39e9e213 03/20/2008 12:51 pm Iustin Pop

Remove some deprecated code in bdev.py

The BlockDev.GetStatus() method and some associated constants were never
used in the rest of the code. This patch removes them.

Reviewed-by: imsnah

c99a3cc0 02/22/2008 06:12 pm Manuel Franceschini

Fixes small spell mistakes and comments

c3f9340c 02/12/2008 07:06 pm Guido Trotter

Parse double protocol version in drbd8.2

DRBD 8.2 uses a double integer field ad protocol version, rather than a single
one. This patch fixes the ganeti parsing code, allowing both the old and the
new version type. In order to do so the internal _GetVersion function is...

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...

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....

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...

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

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

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

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

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

Reviewed-by: schreiberal

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...

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...

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...

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

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

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

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....

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

a2cfdea2 10/24/2007 04:30 pm Iustin Pop

Add DRBD8 class for handling drbd version 8.x

This duplicates some code from the DRBDev class, but not very much, and
it will be expanded with the new functionality available for the 8.x
version. Currently the code is not accessible outside the module.

This patch introduces a dependency on the pyparsing module....

ae26a287 10/24/2007 04:30 pm Iustin Pop

Move/rename _IsValidMeta to base drbd class

The DRBDev._IsValidMeta only checks for the metadata device size. Since
this is a useful check (but not complete) for DRBD8, move it to the base
class and name it _CheckMetaSize.

Reviewed-by: imsnah

5a47ad20 10/24/2007 04:24 pm Iustin Pop

More abstractions from DRBD7 to base class

This moves the _SetFromMinor and _MassageProcData to the base class.

Reviewed-by: imsnah

0caf6485 10/24/2007 04:24 pm Iustin Pop

Improve out-of-minors handling

Currently, the out-of-minors handling is not very good: though both MD
and DRBD functions for finding an unused minor can return None, only the
DRBD code checks for this case.

This patch improves this by making the functions _FindUnusedMinor raise...

770fe0f9 10/24/2007 04:23 pm Iustin Pop

Move some methods from DRBDev to BaseDRBD

Since some of the methods and constants are valid for both 0.7 and 8.x
versions, we move them to the base class.

Reviewed-by: imsnah

0f7f32d9 10/19/2007 02:48 pm Iustin Pop

Split some DRBD functionality based on versions

This is a small split of some functionality from the DRBDev class into a
base drbd class that holds just a few things, in order to make migration
to drbd 8.x easier.

Reviewed-by: imsnah

fe96220b 10/19/2007 02:48 pm Iustin Pop

Abstract more strings values into constants

Currently, the disk types are defined using constants in the code.
Convert those into constants so that we can easily find them and check
their usage.

Note that we don't rename the values of the constants as they are used...

2f31098c 10/10/2007 01:00 pm Iustin Pop

Remove the shebang from modules

Since modules are not directly executables, remove the shebang from
them. This helps with lintian warnings.

Also make the autogenerated _autoconf.py contain two comment lines at
the beginning, like the other modules.

Reviewed-by: ultrotter

8d519422 08/30/2007 07:16 pm Iustin Pop

Fix mdadm -D output compatibility issues.

Also add some debugging output.

1a87dca7 08/28/2007 11:50 am Iustin Pop

Fix compatibility problems with mdadm-2.5.6

This fixes a compatibility problem with recent mdadm (2.x?) by
reimplementing the zero-ing of the superblocks in ganeti itself.

Reviewed-by: imsnah

3ecf6786 08/14/2007 06:17 pm Iustin Pop

Style changes for pep-8 and python-3000 compliance.

This changes the raising of exceptions from:
raise Exception, value
to
raise Exception(value)

as the first form will be removed in python-3000 and the second form is
preferred now.

The changes also involve a few cases of changing from raising standard...

a0c3fea1 08/03/2007 03:35 pm Michael Hanselmann

Add instance name to LVM volume as a tag.

Reviewed-by: iustinp

098c0958 07/26/2007 02:40 pm Michael Hanselmann

Comment formatting updates.

Reviewed-by: iustinp

5b7b5d49 07/23/2007 03:14 pm Guido Trotter

Do the secondary check and subsequently allocate the drive on all available
logival volumes. This lets you use more than one when none of them can support
your full drive size.

Reviewed-By: iustinp

a8083063 07/16/2007 04:39 pm Iustin Pop

Initial commit.