ganeti-local
14 years agorapi: Add /2/nodes/[node_name]/storage/modify resource
Michael Hanselmann [Tue, 11 Aug 2009 13:49:44 +0000 (15:49 +0200)]
rapi: Add /2/nodes/[node_name]/storage/modify resource

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agorlib2: Import rapi
Michael Hanselmann [Tue, 11 Aug 2009 13:49:12 +0000 (15:49 +0200)]
rlib2: Import rapi

This fixes ganeti-rapi which was broken in commit 7a95a954.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agorapi: Add /2/nodes/[node_name]/storage resource
Michael Hanselmann [Fri, 7 Aug 2009 13:28:47 +0000 (15:28 +0200)]
rapi: Add /2/nodes/[node_name]/storage resource

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

14 years agoConstants: config directories cleanup
Luca Bigliardi [Tue, 11 Aug 2009 09:35:38 +0000 (10:35 +0100)]
Constants: config directories cleanup

Use variables already defined.
Introduce ganeti CONF_DIR.

Signed-off-by: Luca Bigliardi <shammash@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoSsconf IP lists: change separator
Luca Bigliardi [Tue, 11 Aug 2009 08:25:26 +0000 (09:25 +0100)]
Ssconf IP lists: change separator

Use " " instead of ",".

Signed-off-by: Luca Bigliardi <shammash@google.com>

14 years agoMap Node/IP in ssconf IP lists
Luca Bigliardi [Mon, 10 Aug 2009 18:24:04 +0000 (19:24 +0100)]
Map Node/IP in ssconf IP lists

Map the node hostname with its primary/secondary ganeti IP in ssconf.
In this way a node can discover which are its IPs simply grepping ssconf files,
thus avoiding checks depending on network configuration.

Signed-off-by: Luca Bigliardi <shammash@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

14 years agoinit script: handle ganeti-confd as well
Guido Trotter [Mon, 3 Aug 2009 17:13:44 +0000 (18:13 +0100)]
init script: handle ganeti-confd as well

Adding ganeti-confd to the example init script. The daemon itself will
only start on master candidates, but the init script can just try to
start it on all nodes.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoInitial confd implementation
Guido Trotter [Wed, 22 Jul 2009 17:09:52 +0000 (18:09 +0100)]
Initial confd implementation

ganeti-confd is a simple asynchronous daemon, which listens on a UDP
port, passes each packet to a processor, and sends back to the client
the result.

It also listens on an inotify socket, in order to reload its
configuration when the ganeti config file changes.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoconfd.server.ConfdProcessor
Guido Trotter [Sat, 8 Aug 2009 13:25:58 +0000 (14:25 +0100)]
confd.server.ConfdProcessor

A ConfdProcessor is the job processor for a confd query.
It's responsible for all the processing, from unpacking it, verifying
it, to calculating the result.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoAdd empty ganeti.confd module
Guido Trotter [Sat, 8 Aug 2009 13:20:28 +0000 (14:20 +0100)]
Add empty ganeti.confd module

It will be used for the confd server code, and for a basic client
library.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoconstants for the confd daemon
Guido Trotter [Sat, 8 Aug 2009 13:18:55 +0000 (14:18 +0100)]
constants for the confd daemon

Adding the various basic daemon constants for confd.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoReply status constants for confd
Guido Trotter [Sat, 8 Aug 2009 13:17:58 +0000 (14:17 +0100)]
Reply status constants for confd

These are valid values for the "status" field in objects.ConfdReply

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoBasic exceptions used by confd
Guido Trotter [Sat, 8 Aug 2009 13:16:40 +0000 (14:16 +0100)]
Basic exceptions used by confd

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoSimpleConfigReader.Reload, avoid double reloads
Guido Trotter [Mon, 3 Aug 2009 17:32:15 +0000 (18:32 +0100)]
SimpleConfigReader.Reload, avoid double reloads

If for some reason we try to call Reload twice but the config file
hasn't changed, we don't want to load it again. Use stat() on the file
to cheaply avoid that situation.

We also return a boolean value, according to whether we have reloaded
the config or not.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoSimpleConfigReader: s/Reload/_Load/
Guido Trotter [Sun, 9 Aug 2009 10:08:40 +0000 (11:08 +0100)]
SimpleConfigReader: s/Reload/_Load/

Since we use it also to load the config file initially we rename the
Reload function to _Load. Then we re-export it as Reload to clients
(since for them it's a reload).

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoRun post cluster initialization LU
Luca Bigliardi [Mon, 10 Aug 2009 08:59:50 +0000 (09:59 +0100)]
Run post cluster initialization LU

Call PostInitCluster from 'gnt-cluster init'.

Signed-off-by: Luca Bigliardi <shammash@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoPost cluster initialization LU
Luca Bigliardi [Mon, 10 Aug 2009 08:48:48 +0000 (09:48 +0100)]
Post cluster initialization LU

Add an 'empty' logical unit to run hooks after cluster initialization.

Signed-off-by: Luca Bigliardi <shammash@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agodesign-2.1: Change OS Flavours with OS Variants
Guido Trotter [Fri, 7 Aug 2009 12:42:32 +0000 (13:42 +0100)]
design-2.1: Change OS Flavours with OS Variants

This is the terminology used by libvirt, it's shorter, clearer, and it
makes sense. :)

Also the final sentence about "possible futures" is changed to be a bit
more clear.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoSimpleConfigReader: add serial numbers reading
Guido Trotter [Thu, 6 Aug 2009 17:38:08 +0000 (18:38 +0100)]
SimpleConfigReader: add serial numbers reading

GetConfigSerialNo and GetClusterSerialNo return respectively the serial
number for the config and for the cluster object.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Michael Hanselmann <hansmi@google.com>

14 years agoserializer.DumpSignedJson
Guido Trotter [Fri, 7 Aug 2009 10:07:37 +0000 (11:07 +0100)]
serializer.DumpSignedJson

Don't indent the final message.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Michael Hanselmann <hansmi@google.com>

14 years agoconstants: confd node roles
Guido Trotter [Thu, 6 Aug 2009 17:15:15 +0000 (18:15 +0100)]
constants: confd node roles

confd will return the node role as an integer, which represents one of
the mutually exclusive roles a node can be in.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoconstants: confd query types
Guido Trotter [Thu, 6 Aug 2009 17:08:34 +0000 (18:08 +0100)]
constants: confd query types

Initially confd will support only two queries:

CONFD_REQ_NODE_ROLE_BYNAME
Given a node name, return its role.

CONFD_REQ_NODE_PIP_BY_INSTANCE_IP
Given an instance ip, return its node primary ip.
This rather weird query is the basis for ganeti nbma lookup.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Michael Hanselmann <hansmi@google.com>

14 years agodesign-2.1: detail confd wire protocol
Guido Trotter [Fri, 7 Aug 2009 10:05:04 +0000 (11:05 +0100)]
design-2.1: detail confd wire protocol

Until now it was being kept too vague, so here we give some real
examples of how things are going to be.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Michael Hanselmann <hansmi@google.com>

14 years agoSimpleConfigReader.Reload()
Guido Trotter [Mon, 3 Aug 2009 15:09:28 +0000 (16:09 +0100)]
SimpleConfigReader.Reload()

Rather than initializing the config statically at class creation time,
we load it every time Reload() is called.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoConfd{Request,Reply} objects
Guido Trotter [Wed, 5 Aug 2009 12:30:51 +0000 (13:30 +0100)]
Confd{Request,Reply} objects

These objects are used to store confd queries and replies.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoSerializer, remove salt_verifier functionality
Guido Trotter [Thu, 6 Aug 2009 13:44:58 +0000 (14:44 +0100)]
Serializer, remove salt_verifier functionality

The salt needs to be returned anyway, so we don't have to add another
key for the sender to recognize which request an answer is answering, so
all that infrastructure is useless. :(

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agopyinotify: configure checks and documentation
Guido Trotter [Thu, 6 Aug 2009 09:45:01 +0000 (10:45 +0100)]
pyinotify: configure checks and documentation

After 74d519e3b91845a17ae095eb7d58dd9e3d1303e8 Ganeti depends on
pyinotify. Updating the documentation accordingly and checking for its
presence at configure time.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoasycnotifier.AsyncNotifier
Guido Trotter [Thu, 6 Aug 2009 09:18:41 +0000 (10:18 +0100)]
asycnotifier.AsyncNotifier

AsyncNotifier is a special asyncore class that delivers inotify events
asynchronously.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoSimpleConfigReader: Handle errors when loading
Guido Trotter [Fri, 17 Jul 2009 12:52:31 +0000 (14:52 +0200)]
SimpleConfigReader: Handle errors when loading

Handling both IOErrors and ValueErrors (thrown by the simplejson loader)

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agossconf.CheckMasterCandidate
Guido Trotter [Tue, 14 Jul 2009 10:35:04 +0000 (12:35 +0200)]
ssconf.CheckMasterCandidate

This function checks that the current node is a master candidate, and
terminates otherwise. It will be used upon ganeti-confd startup.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoConvert ldisk_degraded to tri-state value
Michael Hanselmann [Thu, 6 Aug 2009 11:26:14 +0000 (13:26 +0200)]
Convert ldisk_degraded to tri-state value

This allows us to report “uncertain” states (LDS_UNKNOWN) for cases
where the code can't easily detect or report what's wrong with a
block device.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoAdd constants for local disk status
Michael Hanselmann [Thu, 6 Aug 2009 11:28:16 +0000 (13:28 +0200)]
Add constants for local disk status

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoHandle None result from BlockdevFind
Michael Hanselmann [Thu, 6 Aug 2009 11:27:27 +0000 (13:27 +0200)]
Handle None result from BlockdevFind

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoobjects.BlockDevStatus: Remove ToLegacyStatus
Michael Hanselmann [Wed, 5 Aug 2009 11:21:27 +0000 (13:21 +0200)]
objects.BlockDevStatus: Remove ToLegacyStatus

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoAdd master candidates IPs informations to ssconf
Luca Bigliardi [Wed, 5 Aug 2009 16:31:38 +0000 (17:31 +0100)]
Add master candidates IPs informations to ssconf

This will be used when querying confd, in order not to rely on DNS being
available.

Signed-off-by: Luca Bigliardi <shammash@google.com>
Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

14 years agoTestParameterNames: also check nic parameters
Guido Trotter [Wed, 5 Aug 2009 16:39:41 +0000 (17:39 +0100)]
TestParameterNames: also check nic parameters

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Michael Hanselmann <hansmi@google.com>

14 years agoConfigObject.ToDict() only export non-None values
Guido Trotter [Wed, 5 Aug 2009 12:46:43 +0000 (13:46 +0100)]
ConfigObject.ToDict() only export non-None values

The method is changed to a normal loop, to avoid calling getattr()
twice. Also __getstate__ is changed to just use ToDict() by default.

This should also make __getstate__ work for objects which have to
override the ToDict function because they contain other objects.

__setstate__ is probably still broken in this case, but so it was
before, and it's not used inside our code, so I'll pretend not to have
noticed, as there is no "nice" way to fix it, without overriding it all
over the place :(

Some unittests are added as a bonus, to make sure we behave well.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoAdd nodes IPs informations to ssconf
Luca Bigliardi [Wed, 5 Aug 2009 13:44:49 +0000 (14:44 +0100)]
Add nodes IPs informations to ssconf

Having a list of primary/secondary IPs of all the nodes in ssconf can be useful
for scripts/hooks which need to automatically configure network properties for
the whole cluster (e.g.: ipsec/netfilter rules) without relying on a
working DNS.

Signed-off-by: Luca Bigliardi <shammash@google.com>
Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

14 years agoserializer: fix a few docstrings
Guido Trotter [Wed, 5 Aug 2009 10:17:17 +0000 (11:17 +0100)]
serializer: fix a few docstrings

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Michael Hanselmann <hansmi@google.com>

14 years agoUse objects for blockdev_getmirrorstatus RPC call result
Michael Hanselmann [Tue, 4 Aug 2009 16:22:27 +0000 (18:22 +0200)]
Use objects for blockdev_getmirrorstatus RPC call result

This patch changes the return type for backend.BlockdevGetmirrorstatus from
a list of tuples to a list of objects.BlockDevStatus instances.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoUse object for blockdev_find RPC call result
Michael Hanselmann [Tue, 4 Aug 2009 16:21:13 +0000 (18:21 +0200)]
Use object for blockdev_find RPC call result

This patch changes the return type for backend.BlockdevFind to an object
(objects.BlockDevStatus). Before a tuple was used. Adding more values to
this tuple causes a lot of work.  Converting the result to an object with
properties will make this a bit simpler.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

14 years agognt-node physical-volumes: Add storage type parameter
Michael Hanselmann [Tue, 4 Aug 2009 11:31:45 +0000 (13:31 +0200)]
gnt-node physical-volumes: Add storage type parameter

This way the user can also show storage types other than lvm-pv.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agocmdlib: Fix parameters for storage.FileStorage
Michael Hanselmann [Tue, 4 Aug 2009 11:30:32 +0000 (13:30 +0200)]
cmdlib: Fix parameters for storage.FileStorage

It wants a list of directories, not a string.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoAdd “gnt-node modify-volume” command
Michael Hanselmann [Thu, 30 Jul 2009 14:44:21 +0000 (16:44 +0200)]
Add “gnt-node modify-volume” command

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

14 years agocmdlib: Add opcode to modify storage unit fields
Michael Hanselmann [Thu, 30 Jul 2009 14:38:14 +0000 (16:38 +0200)]
cmdlib: Add opcode to modify storage unit fields

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

14 years agoAdd RPC calls to modify storage fields
Michael Hanselmann [Thu, 30 Jul 2009 14:37:29 +0000 (16:37 +0200)]
Add RPC calls to modify storage fields

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

14 years agostorage: Add function to modify fields
Michael Hanselmann [Tue, 4 Aug 2009 09:43:03 +0000 (11:43 +0200)]
storage: Add function to modify fields

This allows the “allocatable” flag on LVM PVs to be changed.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

14 years agoMerge commit 'origin/branch-2.1' into feature/containers
Iustin Pop [Tue, 4 Aug 2009 08:52:10 +0000 (10:52 +0200)]
Merge commit 'origin/branch-2.1' into feature/containers

* commit 'origin/branch-2.1': (66 commits)
  Add automated disk repair changes to design doc
  Add review script
  Implement “gnt-node physical-volumes” command
  Add new opcode to list physical volumes
  storage: Use constants.py instead of local constants
  storage: Fix semantics for directory size
  Add “gnt-job watch” command
  jqueue: Fix error when WaitForJobChange gets invalid ID
  jqueue: Update message for cancelling running job
  cmdlib: Change tasklet logging to debug level
  rapi: Add /2/nodes/[node_name]/migrate resource
  gnt-node: Use new opcode to migrate node
  cmdlib: Add new opcode to migrate node
  rapi: Add default parameter to _checkIntVariable
  cmdlib: Add logging for tasklets
  cmdlib: Fix tasklets handling if no tasklets are added
  rapi: Add /2/[node_name]/evacuate resource
  Add information about storage units framework
  Add RPC calls for storage unit list
  Add first implementation of generic storage unit framework
  ...

14 years agoAdd automated disk repair changes to design doc
Michael Hanselmann [Mon, 3 Aug 2009 13:22:05 +0000 (15:22 +0200)]
Add automated disk repair changes to design doc

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoAdd review script
Michael Hanselmann [Mon, 3 Aug 2009 13:24:31 +0000 (15:24 +0200)]
Add review script

I've been using this script for a while to update commits before
pushing them to the main repository. It copies all commits in a
range to another branch using git cherry-pick and starts an editor
to modify the Reviewed-by: line(s) for each commit. The script is
certainly not perfect, but it does the job.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoImplement “gnt-node physical-volumes” command
Michael Hanselmann [Wed, 29 Jul 2009 16:01:44 +0000 (18:01 +0200)]
Implement “gnt-node physical-volumes” command

This command can be used to list all physical volumes on nodes.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoAdd new opcode to list physical volumes
Michael Hanselmann [Wed, 29 Jul 2009 16:01:06 +0000 (18:01 +0200)]
Add new opcode to list physical volumes

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agostorage: Use constants.py instead of local constants
Michael Hanselmann [Wed, 29 Jul 2009 13:57:20 +0000 (15:57 +0200)]
storage: Use constants.py instead of local constants

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agostorage: Fix semantics for directory size
Michael Hanselmann [Wed, 29 Jul 2009 13:52:00 +0000 (15:52 +0200)]
storage: Fix semantics for directory size

The actual directory size is "used" space, not the total space on
the filesystem.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoMerge branch 'next' into branch-2.1
Michael Hanselmann [Mon, 3 Aug 2009 09:25:06 +0000 (11:25 +0200)]
Merge branch 'next' into branch-2.1

* next:
  Add “gnt-job watch” command
  jqueue: Fix error when WaitForJobChange gets invalid ID
  jqueue: Update message for cancelling running job

14 years agoAdd “gnt-job watch” command
Michael Hanselmann [Fri, 31 Jul 2009 14:49:26 +0000 (16:49 +0200)]
Add “gnt-job watch” command

This command can be used to follow the output of a job. It's useful
together with the --submit parameter for other commands.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agojqueue: Fix error when WaitForJobChange gets invalid ID
Michael Hanselmann [Fri, 31 Jul 2009 14:48:27 +0000 (16:48 +0200)]
jqueue: Fix error when WaitForJobChange gets invalid ID

When JobQueue.WaitForJobChange gets an invalid or no longer existing job ID it
tries to return job_info and log_entries, both of which aren't defined yet.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agojqueue: Update message for cancelling running job
Michael Hanselmann [Fri, 31 Jul 2009 12:55:45 +0000 (14:55 +0200)]
jqueue: Update message for cancelling running job

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agocmdlib: Change tasklet logging to debug level
Michael Hanselmann [Fri, 31 Jul 2009 11:34:12 +0000 (13:34 +0200)]
cmdlib: Change tasklet logging to debug level

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

14 years agorapi: Add /2/nodes/[node_name]/migrate resource
Michael Hanselmann [Thu, 30 Jul 2009 16:02:33 +0000 (18:02 +0200)]
rapi: Add /2/nodes/[node_name]/migrate resource

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agognt-node: Use new opcode to migrate node
Michael Hanselmann [Thu, 30 Jul 2009 15:53:10 +0000 (17:53 +0200)]
gnt-node: Use new opcode to migrate node

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agocmdlib: Add new opcode to migrate node
Michael Hanselmann [Thu, 30 Jul 2009 15:52:49 +0000 (17:52 +0200)]
cmdlib: Add new opcode to migrate node

It migrates all primary instances from the node to their secondaries.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agorapi: Add default parameter to _checkIntVariable
Michael Hanselmann [Thu, 30 Jul 2009 16:00:31 +0000 (18:00 +0200)]
rapi: Add default parameter to _checkIntVariable

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agocmdlib: Add logging for tasklets
Michael Hanselmann [Thu, 30 Jul 2009 15:25:50 +0000 (17:25 +0200)]
cmdlib: Add logging for tasklets

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

14 years agocmdlib: Fix tasklets handling if no tasklets are added
Michael Hanselmann [Thu, 30 Jul 2009 15:02:46 +0000 (17:02 +0200)]
cmdlib: Fix tasklets handling if no tasklets are added

If no tasklets are added, self.tasklets evaluates to None. The LU base
class will throw an exception because it thinks the derived class doesn't
implement the right methods.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

14 years agorapi: Add /2/[node_name]/evacuate resource
Michael Hanselmann [Thu, 30 Jul 2009 10:46:23 +0000 (12:46 +0200)]
rapi: Add /2/[node_name]/evacuate resource

This can be used to evacuate a node.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoAdd information about storage units framework
Michael Hanselmann [Thu, 30 Jul 2009 09:40:02 +0000 (11:40 +0200)]
Add information about storage units framework

This updates the 2.1 design document with storage units framework information.

Signed-off-by: Iustin Pop <iustin@google.com>
Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Michael Hanselmann <hansmi@google.com>

14 years agoAdd RPC calls for storage unit list
Michael Hanselmann [Wed, 29 Jul 2009 12:24:59 +0000 (14:24 +0200)]
Add RPC calls for storage unit list

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoAdd first implementation of generic storage unit framework
Michael Hanselmann [Wed, 29 Jul 2009 10:49:53 +0000 (12:49 +0200)]
Add first implementation of generic storage unit framework

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoutils: Add functions to calc directory size and free space on filesystem
Michael Hanselmann [Tue, 28 Jul 2009 17:29:47 +0000 (19:29 +0200)]
utils: Add functions to calc directory size and free space on filesystem

These will be used by the new storage unit framework.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

14 years agoBuild HTML from Ganeti 2.1 design
Michael Hanselmann [Fri, 24 Jul 2009 13:31:34 +0000 (15:31 +0200)]
Build HTML from Ganeti 2.1 design

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

14 years agoCollapse SSL key checking/overriding for daemons
Guido Trotter [Sat, 25 Jul 2009 18:04:03 +0000 (20:04 +0200)]
Collapse SSL key checking/overriding for daemons

Signed-off-by: Guido Trotter <ultrotter@google.com>

14 years agoCollapse daemon's main function
Guido Trotter [Thu, 23 Jul 2009 15:46:37 +0000 (16:46 +0100)]
Collapse daemon's main function

With three ganeti daemons, and one or two more coming, the daemon's main
function started becoming too much cut&pasted code. Collapsing most of
it in a daemon.GenericMain function. Some more code could be collapsed
between the two http-based daemons, but since the new daemons won't be
http-based we won't do it right now.

As a bonus a functionality for overriding the network port on the
command line for all network based nodes is added.

Signed-off-by: Guido Trotter <ultrotter@google.com>

14 years agoRemove <DAEMON>_PID constants
Guido Trotter [Thu, 23 Jul 2009 16:23:06 +0000 (17:23 +0100)]
Remove <DAEMON>_PID constants

The <DAEMON>_PID constants were created to reference a daemon pid file,
but actually contain a daemon's name, because the various functions that
work with pidfiles abstract the filename from the daemon name
themselves. Removing the constants and using the actual daemon name
constants in their place.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Michael Hanselmann <hansmi@google.com>

14 years agoSlightly abstract the daemon logfile lookup
Guido Trotter [Thu, 23 Jul 2009 16:12:43 +0000 (17:12 +0100)]
Slightly abstract the daemon logfile lookup

The original LOG_<DAEMON_NAME> constants for daemon logfiles are gone.
In their place there is a DAEMONS_LOGFILES dict, indexed by daemon name.

This is a minor change with the objective to uniform most of the
daemon's main() functions code, which is very similar one to the other.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Michael Hanselmann <hansmi@google.com>

14 years agoMove rapi to GetDaemonPort
Guido Trotter [Thu, 23 Jul 2009 13:11:54 +0000 (14:11 +0100)]
Move rapi to GetDaemonPort

Currently rapi is the only daemon which accepts a port option, rather
than querying its own port from services, and failing back to the
default if not found. Changing this to conform to what other daemons do.

Also update the ganeti-rapi(8) manpage

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Michael Hanselmann <hansmi@google.com>

14 years agoChange GetNodeDaemonPort to GetDaemonPort in utils
Guido Trotter [Wed, 22 Jul 2009 16:57:26 +0000 (17:57 +0100)]
Change GetNodeDaemonPort to GetDaemonPort in utils

GetNodeDaemonPort is used to lookup the node daemon port in the services
file, and if not found to return the default one. We make it a generic
function, which accepts the daemon name in input, so that it can be used
by confd as well, to lookup its own udp port.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Michael Hanselmann <hansmi@google.com>

14 years agoMerge branch 'next' into branch-2.1
Guido Trotter [Fri, 24 Jul 2009 12:01:49 +0000 (14:01 +0200)]
Merge branch 'next' into branch-2.1

* next:
  lvmstrap: Change diskinfo to use GenerateTable
  Get rid of constants.RAPI_ENABLE
  Remove references to utils.debug
  ganeti-rapi, replace hardcoded exit value
  Add the bind-address option to ganeti-rapi
  noded: Abstract hard-coded sys.exit value
  Add an example "ethers" hook
  burnin: move batch init/commit into a decorator
  burnin: move instance alive checks to a decorator
  burnin: Implement retryable operations
  Ignore vim swap files
  burnin: fix removal errors hiding real errors

14 years agolvmstrap: Change diskinfo to use GenerateTable
Stephen Shirley [Thu, 23 Jul 2009 17:14:20 +0000 (19:14 +0200)]
lvmstrap: Change diskinfo to use GenerateTable

This way the produced table is formatted nicely.

Signed-off-by: Stephen Shirley <diamond@google.com>
Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Michael Hanselmann <hansmi@google.com>

14 years agoGet rid of constants.RAPI_ENABLE
Guido Trotter [Thu, 23 Jul 2009 13:41:02 +0000 (14:41 +0100)]
Get rid of constants.RAPI_ENABLE

This constant is unused, except in qa. Removing it since it's always True.

This patch also removes the unused qa_rapi.PrintRemoteAPIWarning
function, and removes a comment about temporary constants "until we have
cluster parameters".

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Michael Hanselmann <hansmi@google.com>

14 years agocmdlib: Add __init__ to Tasklet class
Michael Hanselmann [Thu, 23 Jul 2009 08:43:57 +0000 (10:43 +0200)]
cmdlib: Add __init__ to Tasklet class

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

14 years agoRemove references to utils.debug
Guido Trotter [Thu, 23 Jul 2009 08:58:33 +0000 (09:58 +0100)]
Remove references to utils.debug

Various modules set it to True when called in debugging mode, but the
utils module supports no such global.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Michael Hanselmann <hansmi@google.com>

14 years agoganeti-rapi, replace hardcoded exit value
Guido Trotter [Thu, 23 Jul 2009 07:55:53 +0000 (08:55 +0100)]
ganeti-rapi, replace hardcoded exit value

substitute exit(1) with exit(constants.EXIT_FAILURE).
Also fix a wrongly indented line.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Michael Hanselmann <hansmi@google.com>

14 years agoAdd the bind-address option to ganeti-rapi
Guido Trotter [Thu, 23 Jul 2009 07:48:14 +0000 (08:48 +0100)]
Add the bind-address option to ganeti-rapi

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Michael Hanselmann <hansmi@google.com>

14 years agocmdlib: Move LUMigrateInstance functionality to tasklet
Michael Hanselmann [Tue, 21 Jul 2009 17:24:47 +0000 (19:24 +0200)]
cmdlib: Move LUMigrateInstance functionality to tasklet

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

14 years agognt-node: Use new opcode to evacuate nodes
Michael Hanselmann [Tue, 21 Jul 2009 12:28:28 +0000 (14:28 +0200)]
gnt-node: Use new opcode to evacuate nodes

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoAdd new opcode to evacuate nodes
Michael Hanselmann [Wed, 22 Jul 2009 17:31:15 +0000 (19:31 +0200)]
Add new opcode to evacuate nodes

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

14 years agocmdlib: Convert _DiskReplacer to tasklet
Michael Hanselmann [Tue, 21 Jul 2009 16:17:20 +0000 (18:17 +0200)]
cmdlib: Convert _DiskReplacer to tasklet

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

14 years agocmdlib: Function to get all secondary instances on a certain node
Michael Hanselmann [Tue, 21 Jul 2009 15:45:45 +0000 (17:45 +0200)]
cmdlib: Function to get all secondary instances on a certain node

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agonoded: Abstract hard-coded sys.exit value
Guido Trotter [Wed, 22 Jul 2009 17:07:54 +0000 (18:07 +0100)]
noded: Abstract hard-coded sys.exit value

On machines without the ssl file noded exists '5'.
Changing this to constants.EXIT_NOTCLUSTER.

Also utils.GetNodeDaemonPort hasn't risen errors.ConfigurationError for
a while, so removing that try/except block.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Michael Hanselmann <hansmi@google.com>

14 years agocmdlib: Add tasklet support to logical unit base class
Michael Hanselmann [Wed, 22 Jul 2009 13:57:09 +0000 (15:57 +0200)]
cmdlib: Add tasklet support to logical unit base class

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

14 years agocmdlib: Add tasklet base class
Michael Hanselmann [Wed, 22 Jul 2009 11:01:20 +0000 (13:01 +0200)]
cmdlib: Add tasklet base class

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoAdd an example "ethers" hook
Guido Trotter [Tue, 21 Jul 2009 12:53:40 +0000 (13:53 +0100)]
Add an example "ethers" hook

This hook can be used to update /etc/ethers with instance's mac
addresses. A dhcp server on the nodes can then serve to the instances
their correct address. (This has been tested with dnsmasq's dhcp
implementation)

Signed-off-by: Guido Trotter <ultrotter@google.com>

14 years agoganeti-confd design doc
Guido Trotter [Thu, 16 Jul 2009 14:27:17 +0000 (16:27 +0200)]
ganeti-confd design doc

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoburnin: move batch init/commit into a decorator
Iustin Pop [Tue, 21 Jul 2009 09:55:19 +0000 (11:55 +0200)]
burnin: move batch init/commit into a decorator

Many burnin steps initialize the batch queue at the beginning and commit
it at the end of their operation. This patch moves this code to a
decorator, in order to reduce redundant code.

Signed-off-by: Iustin Pop <iustin@google.com>
Reviewed-by: Olivier Tharan <olive@google.com>

14 years agoburnin: move instance alive checks to a decorator
Iustin Pop [Tue, 21 Jul 2009 09:41:12 +0000 (11:41 +0200)]
burnin: move instance alive checks to a decorator

Many burn steps to a manual check of instance aliveness, via duplicate
code. This patch moves this code to a decorator.

Signed-off-by: Iustin Pop <iustin@google.com>
Reviewed-by: Michael Hanselmann <hansmi@google.com>

14 years agoburnin: Implement retryable operations
Iustin Pop [Tue, 21 Jul 2009 08:53:27 +0000 (10:53 +0200)]
burnin: Implement retryable operations

Some burnin steps are idempotent: e.g. reinstalling an instance (from
burning p.o.v.) can be done multiple times without any side-effects that
would affect later burnin steps. As such, failing the whole burnin
process due a reinstall failure is undesirable.

This patch modifies burnin by marking each opcode (in case of individual
execution) and job set retryable or not. Retryable actions will be
retried up to a number of times, after which we give up and return
failure.

One side-effect is that in case of full-failure in retryable job sets we
lose the original exception (but we do log its string format), so we
have a little bit less information in this case.

Signed-off-by: Iustin Pop <iustin@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

14 years agoGenerate a shared HMAC key at cluster init time
Guido Trotter [Thu, 16 Jul 2009 15:30:44 +0000 (17:30 +0200)]
Generate a shared HMAC key at cluster init time

This key is shared on all nodes (via cmdlib._RedistributeAncillaryFiles)
and will be used for HMAC authentication of confd messages.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoFix unittests broken by commit 2bb5c9115f
Michael Hanselmann [Mon, 20 Jul 2009 15:49:55 +0000 (17:49 +0200)]
Fix unittests broken by commit 2bb5c9115f

File "../test/ganeti.hooks_unittest.py", line 239, in setUp
  self.lu = FakeLU(FakeProc(), self.op, self.context, None)
File "…/ganeti/cmdlib.py", line 92, in __init__
  self.LogStep = processor.LogStep
AttributeError: FakeProc instance has no attribute 'LogStep'

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agocmdlib: Move code doing disk replacements into separate class
Michael Hanselmann [Mon, 20 Jul 2009 15:38:01 +0000 (17:38 +0200)]
cmdlib: Move code doing disk replacements into separate class

This class will be used for a new opcode to evacuate nodes.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>