Statistics
| Branch: | Tag: | Revision:

root / lib / cmdlib.py @ 6e06b36c

History | View | Annotate | Download (144 kB)

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

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

Replace disk template drbd8 with drbd where missing.

Reviewed-by: iustinp

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

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

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

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

Use new functions to modify /etc/hosts.

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

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

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

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

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

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

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

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

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

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

b352ab5b 10/24/2007 05:23 pm Iustin Pop

Fix a disk handling bug triggered by failover

This leaves an instance's disks configured for the primary node as after
disk activation we want to start the instance anyway. As such,
_GatherBlockDevs in backend.py will need the disks configured for the
primary....

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

bf6929a2 10/18/2007 01:25 pm Alexander Schreiber

Patch series for reboot feature, part 2

This patch series implements the reboot command for gnt-instance. It
supports three types of reboot: soft (hypervisor reboot), hard (instance
config rebuild and reboot) and full (full instance shutdown and startup
again)....

6a438c98 10/16/2007 06:27 pm Michael Hanselmann

Make “gnt-cluster verify” exit 0 if there's no problem with instances.

Reviewed-by: schreiberal

f55ff7ec 10/16/2007 05:30 pm Iustin Pop

Add the number of VCPUs in gnt-instance info

Reviewed-by: imsnah

1d67656e 10/16/2007 04:51 pm Iustin Pop

Allow force removal of instances

This patch adds a new option to the instance removal command
"--ignore-failures" that forces the removal of the instance from the
configuration even if the removal process encounters errors.

In order to be able to do this when the remote node(s) is(are) down, we...

70d9e3d8 10/16/2007 11:28 am Iustin Pop

Replace more ssh paths with proper constants

The node's ssh keys filenames are now provided as constants; this should
allow easier customization.

Also, the user's ssh key computing has been abstracted into ssh.py

Reviewed-by: imsnah

0e137c28 10/11/2007 06:23 pm Iustin Pop

Some small improvements to the hooks environment

For the configuration update hook, it's useful to have a consistent name
for the target of the operation. As such, the LU code is modified to
include an GANETI_OP_TARGET that points either to the cluster (name),...

4167825b 10/11/2007 06:00 pm Iustin Pop

Split the hooks env building in two parts

This patch moves some of the environment processing from _BuildEnv to a
new _RunWrapper command which does the stringification and adds the
sstore variables.

The reasoning is that the sstore can be fresher than before the...

16abfbc2 10/10/2007 08:20 pm Alexander Schreiber

Remove fping as a dependency for Ganeti.

This patch completely gets rid of fping
- replace all fping invocations with TcpPing calls
- update documentation accordingly.
- associated cleanups (use constant for localhost IP, use more sensible
defaults for TcpPing and use those)...

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

3ef10550 10/08/2007 06:18 pm Michael Hanselmann

Add boot id to “gnt-node list”.

Reviewed-by: iustinp

f27302fa 10/08/2007 06:10 pm Iustin Pop

Change tags add/remove to process multiple tags

This patch changes the tags opcodes to work with multiple tags at once
instead of only one. As such, the opcodes and some parameters are
renamed.

Reviewed-by: imsnah

8f684e16 10/08/2007 06:10 pm Iustin Pop

Fix tags operations for instances

Reviewed-by: imsnah

89e1fc26 09/21/2007 04:37 pm Iustin Pop

Remove requirement that host names are FQDN

We currently require that hostnames are FQDN not short names
(node1.example.com instead of node1). We can allow short names as long
as:
- we always resolve the names as returned by socket.gethostname()
- we rely on having a working resolver...

bdd55f71 09/19/2007 04:52 pm Iustin Pop

Allow 'add instance' to not start the new instance

This patch allows 'gnt-instance add' to not start the newly-created
instance. It also allow 'gnt-instance add' and 'gnt-backup import' to
not check for IP conflicts (only when not starting the instance)....

bcf043c9 09/19/2007 09:56 am Iustin Pop

Change resolved hostname from dict to a class

The current result of utils.LookupHostname() is a dict, but this does
not allow static checkers to check the correctness of the code. This
patch introduces a new class names HostInfo and changes LookupHostname...

07bd8a51 09/18/2007 03:42 pm Iustin Pop

Implement cluster rename operation

This patch adds a new OpCode (and corresponding LU) that implements the
cluster rename functionality.

This is done by shutting down the master role, making the needed sstore
modifications and distributing the changed files to all nodes, and then...

decd5f45 09/17/2007 02:52 pm Iustin Pop

Implement instance rename operation

This patch adds support for instance rename operation at all remaining
layers: RPC, OpCode/LU and CLI.

Reviewed-by: imsnah

246e180a 09/14/2007 12:54 pm Iustin Pop

Change OpQueryNodes nodes attribute to names

Change this to have the exact same parameters as OpQueryInstances.

Also fix burnin which is broken since r146.

Reviewed-by: imsnah

069dcc86 09/14/2007 12:54 pm Iustin Pop

Enable LUQueryInstances to work with a given list of instances

As per the changes to LUQueryNodes, the QueryInstances LU is modified to
accept a list of instances for which to compute and return information.

Reviewed-by: imsnah

4a72cc75 09/14/2007 12:03 pm Iustin Pop

Remove OpQueryNodeData and LUQueryNodeData

Now that LUQueryNodes supports all the functionality of LUQueryNodeData,
let's migrate gnt-node.ShowNodeConfig to use it and remove all traces of
OpQueryNodeData and LUQueryNodeData.

Reviewed-by: imsnah

ec223efb 09/14/2007 12:02 pm Iustin Pop

Change LUQueryNodes to return raw values and support selective listing

LUQueryNodes it's very similar to LUQueryNodeData, but it lacks two
features:
- instance list (it has count though), both primary and secondary
- selective node listing

In order to support these features, we change it to return raw values...

a7ba5e53 09/14/2007 12:02 pm Iustin Pop

Change _GetWanted* to return names instead of objects

On closer look, all except one of the current users of _GetWantedNodes are
using only the name of the nodes and throw away the other attributes. It makes
sense to make this function return only the name list (as in the future this...

8a23d2d3 09/13/2007 02:49 pm Iustin Pop

Move string formatting out of LUQueryInstances

Currently, LUQueryInstances will provide strings for its results. This makes it
hard for other consumers than "gnt-instance list" to use the OpQueryInstances
opcode for whatever they wish to.

The change moves the formatting in five of the six cases where this happens to...

3312b702 09/12/2007 02:58 pm Iustin Pop

Clone cmdlib._GetWantedNodes into _GetWantedInstances

This duplicates _GetWantedNodes to _GetWantedInstances, after doing some
changes to it:
- fix an indentation error that should result in only the last node
name passed being chosen
- change the function to have a single return statement...

2a710df1 08/30/2007 06:36 pm Michael Hanselmann

- Check for secondary node before doing a failover.
- Replace magic values by constants.

Reviewed-by: iustinp

130e907e 08/30/2007 05:30 pm Iustin Pop

Add one more check on cluster init.

This adds a check that the initial node's IP name doesn't resolve to a
loopback address (127.x.y.z).

Also remove an unused variable.

Reviewed-by: imsnah

ff98055b 08/28/2007 03:25 pm Iustin Pop

Refuse nodes with non-FQDN hostnames.

This changes the cluster init and node join to refuse a node that has a
different hostname than what the resolver returns.

Reviewed-by: imsnah

82122173 08/24/2007 12:20 pm Iustin Pop

Rework ssh known-hosts handling.

This changes:
- cluster setup, we no longer edit /etc/ssh/ssh_known_hosts but our
own file
- node add, we no longer remove root's known_hosts (twice)
- gnt-instance console, both the LU and the script: since now the ssh...

02715459 08/23/2007 04:59 pm Iustin Pop

Improve LURunClusterCommand

This function used a hand-coded ssh call to remote nodes. Fix it to use the
ssh.SSHCall function, and in the process drop the command field from the
results, as it's too verbose and we can use (in gnt-cluster) what we passed in....

8bd562f5 08/22/2007 06:53 pm Iustin Pop

Fix one wrong usage of _GetWantedNodes

_GetWantedNodes is used wrongly by the LUClusterCopyFile. This fixes that.

Reviewed-by: imsnah

644eeef9 08/20/2007 03:17 pm Iustin Pop

Add support for listing instance disk sizes.

Reviewed-by: imsnah

a02bc76e 08/20/2007 02:29 pm Iustin Pop

A CheckPrereq method had one unconverted "return 1" statement. Change it to the
appropriate raise.

Reviewed-by: imsnah

8925faaa 08/16/2007 06:13 pm Iustin Pop

Some small fixes.

It fixes the main Makefile.am to create $localstatedir/{lib,log}/ganeti.
It fixes the testing Makefile.am after the rename fake_config.py ->
mocks.py. It strips the output of "ip link show" to have a nicer output
if the master netdev does not exist.

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

5c947f38 08/08/2007 12:37 pm Iustin Pop

Implement tag support for cluster, nodes and instances.

This is only the backend part, from the command line the tags can't be
read/modified yet.

Reviewed-by: imsnah

37d19eb2 08/06/2007 02:26 pm Michael Hanselmann

Don't bail out if node isn't there on “gnt-node volumes”.

Reviewed-by: iustinp

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

Add instance name to LVM volume as a tag.

Reviewed-by: iustinp

923b1523 08/03/2007 12:57 pm Iustin Pop

Change logival volume names to not be based on the instance's name, but
instead use an UUID prefix and a suffix denoting the disk iv_name
(sda/sdb) and possibly it's type (data/meta).

Reviewed-by: imsnah

ecb215b5 07/30/2007 03:40 pm Michael Hanselmann

Fix issues reported by pylint.

Reviewed-by: iustinp

396e1b78 07/27/2007 03:28 pm Michael Hanselmann

Unify environment variables for instance related hooks.

Reviewed-by: iustinp

db915bd1 07/27/2007 01:00 pm Michael Hanselmann

Check for instances on “gnt-cluster destroy”.

Reviewed-by: iustinp

d0834de3 07/27/2007 12:05 pm Michael Hanselmann

- Implement “gnt-instance reinstall --os-type=…”
- Add the command to gnt-instance.sgml

Reviewed-by: iustinp

59322403 07/27/2007 11:15 am Iustin Pop

Fix the "gnt-cluster getmaster" command by making the LuQueryClusterInfo
runnable on non-master nodes (and remove the list of instances and nodes
returned by it, that information can be retrieved by other opcodes).

Also, remove the node/instance list from "gnt-cluster info" as it...

5fcdc80d 07/27/2007 10:41 am Iustin Pop

Move the cluster name from ConfigWriter to SimpleStore.

Reason: if left ConfigWriter, nodes don't know to which cluster they belong.
This will bite us later when we'll revisit node join operation.

Cons: we lose the cluster name from the config file, which means a...

fe7b0351 07/26/2007 07:09 pm Michael Hanselmann

- Move --force option to cli.py
- Implement “gnt-instance reinstall”
- Fix two typos

Reviewed-by: iustinp

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

Comment formatting updates.

Reviewed-by: iustinp

821afb13 07/25/2007 04:34 pm Iustin Pop

It seems the _CheckNodesDirs function is no longer used. Let's remove it.

cb91d46e 07/25/2007 02:46 pm Iustin Pop

Since the watcher can run on all nodes, let's get rid of the cron file
handling, as it can be static and outside of ganeti.

This also means we can get rid of a lot of infrastructure too:
- the master/node config files checkers
- one rpc function

83120a01 07/24/2007 05:10 pm Michael Hanselmann

Add description, fix indentation.

Reviewed-by: iustinp

dcb93971 07/24/2007 02:45 pm Michael Hanselmann

- Implement “gnt-node volumes”
- Create all --output options using a constant
- Put node checking code from opcodes into a single function
- Do the same for output fields

Reviewed-by: iustinp

880478f8 07/23/2007 05:38 pm Iustin Pop

Big change/cleanup in relation to the master startup:
- move the master node name from the ConfigWriter to SimpleStore (all
nodes need this, and it was the only thing pulled in from the
ConfigWriter on nodes)
- fix mcpu.py and the testing w.r.t. this change; for testing, rename...

191a8385 07/23/2007 02:33 pm Guido Trotter

Fix a typo in an error message, and actually pass it its parameters.

Reviewed-By: imsnah

d0b3526f 07/23/2007 01:27 pm Michael Hanselmann

Output instance name in error message instead of object representation.

Reviewed-by: iustinp

72d6c464 07/23/2007 10:44 am Michael Hanselmann

Fix calls to _GenerateMDDRBDBranch.

Reviewed-by: iustinp

3a7c308e 07/19/2007 05:41 pm Guido Trotter

Check for memory size requirements before failing over an instance.

Reviewed-By: iustinp

ed1ebc60 07/19/2007 03:08 pm Guido Trotter

Implement space requirement checking before creating/importing an instance.

Reviewed-By: iustinp

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

Initial commit.