ganeti-github.git
12 years agoAdd very basic online help to devel/upload
Guido Trotter [Tue, 25 Nov 2008 17:10:33 +0000 (17:10 +0000)]
Add very basic online help to devel/upload

Reviewed-by: imsnah

12 years agoImplement support for multi devices changes
Iustin Pop [Tue, 25 Nov 2008 12:57:29 +0000 (12:57 +0000)]
Implement support for multi devices changes

This big patch adds support for:
  - changing NIC/disks in the multi-device model
  - adding/removing NICs
  - adding/removing disks

The patch is big and not very nice; the error checking paths are not
very clear.

The biggest problem is that from a simple instance.ATTR=VAL change
(which didn't throw errors before) now we are creating and removing
disks in this LU.

Reviewed-by: imsnah

12 years agoSlight change to the LU initialization code
Iustin Pop [Tue, 25 Nov 2008 12:57:13 +0000 (12:57 +0000)]
Slight change to the LU initialization code

This patch adds support for a separate LU.CheckArguments() method which
should do syntactic checks without holding locks and without polluting
the ExpandNames which is a lock-related function. See for example the
FIXME in LUSetInstanceParams.CheckPrereq.

The patch also removes the REQ_MASTER and IsCluster checks since with
the current architecture, inside LU code we are always in a valid
cluster and we are always running on the master node.

Reviewed-by: ultrotter

12 years agoFix a bug in LUSetInstanceParams
Iustin Pop [Tue, 25 Nov 2008 12:51:02 +0000 (12:51 +0000)]
Fix a bug in LUSetInstanceParams

The wrong names were reused in a copy-paste.

Reviewed-by: imsnah

12 years agoShow disk access mode in gnt-instance info
Iustin Pop [Tue, 25 Nov 2008 12:50:49 +0000 (12:50 +0000)]
Show disk access mode in gnt-instance info

The mode parameter needs to be exported and shown in the info output.

Reviewed-by: imsnah

12 years agoChange _GenerateDiskTemplate iv_name generation
Iustin Pop [Tue, 25 Nov 2008 12:50:35 +0000 (12:50 +0000)]
Change _GenerateDiskTemplate iv_name generation

Currently the _GenerateDiskTemplate assumes it does initial creation of
disks (i.e. it starts with index 0).

For dynamic disk adds, we need to pass an additional offset. This patch
adds this offset and modifies its sole current caller.

Reviewed-by: imsnah

12 years agoSlighly improve multi-nic in gnt-instance info
Iustin Pop [Tue, 25 Nov 2008 12:50:23 +0000 (12:50 +0000)]
Slighly improve multi-nic in gnt-instance info

Previously we had only one nic, so the NIC information was all on one
line. This patch changes it to:

    - NICs:
      - nic/0: MAC: aa:00:00:e8:b2:ef, IP: None, bridge: None
      - nic/1: MAC: aa:00:00:53:ca:92, IP: None, bridge: xen-br0
      - nic/2: MAC: aa:00:00:ba:e5:30, IP: None, bridge: None

Reviewed-by: ultrotter

12 years agoPass ssconf values from master to node
Michael Hanselmann [Tue, 25 Nov 2008 12:37:13 +0000 (12:37 +0000)]
Pass ssconf values from master to node

Instead of parsing the configuration on the node, we pass the ssconf
values from the master.

Reviewed-by: iustinp

12 years agoganeti.http: Don't reuse key and cert objects
Michael Hanselmann [Tue, 25 Nov 2008 11:18:58 +0000 (11:18 +0000)]
ganeti.http: Don't reuse key and cert objects

Reusing the private key and certificate objects gave us problems. This
patch changes the code to only cache the PEM data, but the objects
themselves. For every socket, the private key and certificate objects
are created again.

Reviewed-by: iustinp

12 years agoFix unittests broken by rev 2015
Michael Hanselmann [Mon, 24 Nov 2008 15:39:23 +0000 (15:39 +0000)]
Fix unittests broken by rev 2015

Ssconf files shouldn't be updated when running unittests.

Reviewed-by: ultrotter

12 years agoganeti.rpc: Read SSL certificate and key only once per request
Michael Hanselmann [Mon, 24 Nov 2008 13:38:06 +0000 (13:38 +0000)]
ganeti.rpc: Read SSL certificate and key only once per request

There's no need to read the SSL certificate and key for every node
in a request. Also add a TODO for better error reporting.

Reviewed-by: amishchenko

12 years agoDocumentation updates for mcpu.py
Iustin Pop [Mon, 24 Nov 2008 11:01:24 +0000 (11:01 +0000)]
Documentation updates for mcpu.py

This is the only change needed to make mcpu epydoc-compliant.

Reviewed-by: ultrotter

12 years agoLUCreateInstance: Fix import mac AUTO mode
Guido Trotter [Mon, 24 Nov 2008 09:48:11 +0000 (09:48 +0000)]
LUCreateInstance: Fix import mac AUTO mode

Previously on import LUCreateInstance used to recycle the mac if the instance
name was the same than the one used at export time. Now we do the same, but
apply the setting separately for each nic.

Reviewed-by: iustinp

12 years agoBurner: fix ImportExport
Guido Trotter [Mon, 24 Nov 2008 09:47:58 +0000 (09:47 +0000)]
Burner: fix ImportExport

Update the call to CreateInstance used in ImportExport to the new API for
multidisk/nic.

Reviewed-by: iustinp

12 years agoLUCreateInstance unlock all nodes mid-way
Guido Trotter [Mon, 24 Nov 2008 09:47:45 +0000 (09:47 +0000)]
LUCreateInstance unlock all nodes mid-way

When creating a new instance, after saving the instance data to the config file
and creating the disks, but before waiting for sync and installing the OS, we
release the node locks, to allow for more instance creations to proceed in
parallel.

Reviewed-by: iustinp

12 years agoIAllocator: subtract down instances from free mem
Guido Trotter [Mon, 24 Nov 2008 09:47:32 +0000 (09:47 +0000)]
IAllocator: subtract down instances from free mem

Currently free_memory just reports the amount of free ram, as seen by the
hypervisor. We adjust this amount by subtracting the memory for any instance
which is down, and the difference for any instance which is configured to have
more memory than the amount it's currently running at.

Reviewed-by: iustinp

12 years agoCorrect GetAllInstancesInfo rtype
Guido Trotter [Mon, 24 Nov 2008 09:46:49 +0000 (09:46 +0000)]
Correct GetAllInstancesInfo rtype

GetAllInstancesInfo, in the backend, returns just a dict, not a dict of dicts.

Reviewed-by: iustinp

12 years agoIAllocator: use the right hypervisor
Guido Trotter [Mon, 24 Nov 2008 09:46:21 +0000 (09:46 +0000)]
IAllocator: use the right hypervisor

Since the hypervisor is instance dependent we'll get one on instance creation,
and use the one in the instance config on relocation.

Reviewed-by: iustinp

12 years agoIAllocator: fill i_list in a more proper way
Guido Trotter [Mon, 24 Nov 2008 09:46:05 +0000 (09:46 +0000)]
IAllocator: fill i_list in a more proper way

- reuse the previously called cluster_info, rather than calling it again
- get all the instances from the config atomically, to prevent race conditions
- use a list comprehension, for simplicity

Reviewed-by: iustinp

12 years agoParallelize instance operations on the same node
Guido Trotter [Mon, 24 Nov 2008 09:45:11 +0000 (09:45 +0000)]
Parallelize instance operations on the same node

With static minors we don't have a race condition anymore when
starting/stopping/rebooting/reinstalling more than one instance on the same
node, so we'll drop node locking altogether.

Reviewed-by: iustinp

12 years agoConvert iallocator to the new _ComputeDiskSize
Guido Trotter [Mon, 24 Nov 2008 09:44:29 +0000 (09:44 +0000)]
Convert iallocator to the new _ComputeDiskSize

_ComputeDiskSize's API was changed for multidisk support in r2010, but
iallocator's call to it were not fixed. Converting them now.

Reviewed-by: iustinp

12 years agoDocumentation updates for cmdlib.py
Iustin Pop [Sun, 23 Nov 2008 15:35:26 +0000 (15:35 +0000)]
Documentation updates for cmdlib.py

This makes cmdlib.py not throw epydoc errors anymore.

Reviewed-by: ultrotter

12 years agoSlight change to the apidoc build
Iustin Pop [Sun, 23 Nov 2008 15:35:14 +0000 (15:35 +0000)]
Slight change to the apidoc build

Currently the temporary directory used for modules is under the current
directory; this patch changes it so a temp directory is used; so we
could build the apidocs with a R/O filesystem.

Reviewed-by: ultrotter

12 years agoOnly update ssconf on cluster serial change
Iustin Pop [Sun, 23 Nov 2008 15:35:02 +0000 (15:35 +0000)]
Only update ssconf on cluster serial change

There is no need to update ssconf if the cluster serial number has not
changed.

Reviewed-by: ultrotter

12 years agoEnable auto-unit formatting in script output
Iustin Pop [Sun, 23 Nov 2008 15:34:50 +0000 (15:34 +0000)]
Enable auto-unit formatting in script output

This patch enables by default the old 'human-readable' option, but in a
slightly different model.

The option is now called "units" and takes either:
 - 'h' for automatic formatting
 - 'm', 'g' or 't' for mebi/gibi/tebibytes

If 'h' is used, we add a unit suffix, otherwise nothing is added so that
parsing is easy.

The default value of this unit is:
  - 'h' if a separator is not passed
  - 'm' if a separator is passed

Reviewed-by: ultrotter

12 years agoImprovements to CLI output
Iustin Pop [Sun, 23 Nov 2008 15:34:30 +0000 (15:34 +0000)]
Improvements to CLI output

This patch adds nicer formatting for some gnt-instance list operations.

Reviewed-by: ultrotter

12 years agoRAPI: Cancel a job
Oleksiy Mishchenko [Fri, 21 Nov 2008 15:55:25 +0000 (15:55 +0000)]
RAPI: Cancel a job

Reviewed-by: imsnah

12 years agoMake cli.py use FieldSet for matching fields
Iustin Pop [Fri, 21 Nov 2008 15:36:08 +0000 (15:36 +0000)]
Make cli.py use FieldSet for matching fields

This changes cli.py to FieldSet usage so that gnt-instance list will
format nicely the disk.size/*, and the count of disks/nics.

Reviewed-by: ultrotter

12 years agoMove FieldSet class to utils.py
Iustin Pop [Fri, 21 Nov 2008 15:35:52 +0000 (15:35 +0000)]
Move FieldSet class to utils.py

Since we can use the FieldSet class in cli.py to nicely format disk
sizes and such, we move it to utils.py and also move its associated
unittest. I didn't remove the cmdlib.py unittest file as that's not the
good direction :)

Reviewed-by: ultrotter

12 years agoSmall burnin info message change
Iustin Pop [Fri, 21 Nov 2008 15:35:30 +0000 (15:35 +0000)]
Small burnin info message change

This looks beter than '0 disk'.

Reviewed-by: ultrotter

12 years agoburnin: fix default growth parameter
Iustin Pop [Fri, 21 Nov 2008 15:35:18 +0000 (15:35 +0000)]
burnin: fix default growth parameter

Reviewed-by: ultrotter

12 years agoChange disk index validation to FindDisk
Iustin Pop [Fri, 21 Nov 2008 15:35:06 +0000 (15:35 +0000)]
Change disk index validation to FindDisk

This patch replaces the hand validation of the disk index with the
instance.FindDisk method (actually reverting to previous method, before
the multi-disk, but now with indexes).

Reviewed-by: ultrotter

12 years agoChange GrowDisk to work with multi-disk
Iustin Pop [Fri, 21 Nov 2008 15:34:53 +0000 (15:34 +0000)]
Change GrowDisk to work with multi-disk

This patch changes the instance.FindDisk method to take index arguments
(instead of iv_names), and changes GrowDisk and list instances
accordingly.

Reviewed-by: ultrotter

12 years agoUse SSL for master/node RPC
Michael Hanselmann [Fri, 21 Nov 2008 10:47:15 +0000 (10:47 +0000)]
Use SSL for master/node RPC

This patch enables SSL between masterd and noded.

Reviewed-by: iustinp

12 years agoGet rid of node daemon password
Michael Hanselmann [Fri, 21 Nov 2008 10:46:58 +0000 (10:46 +0000)]
Get rid of node daemon password

With the new SSL client certificate stuff it's no longer needed.

Reviewed-by: iustinp

12 years agoganeti.http: Add another class to contain SSL key and certificate
Michael Hanselmann [Fri, 21 Nov 2008 10:46:34 +0000 (10:46 +0000)]
ganeti.http: Add another class to contain SSL key and certificate

Otherwise we would read them for every request the HTTP client
makes against a server and this is not needed.

Reviewed-by: iustinp

12 years agoganeti-masterd: Remove PID file at the end
Michael Hanselmann [Fri, 21 Nov 2008 10:46:12 +0000 (10:46 +0000)]
ganeti-masterd: Remove PID file at the end

Removing the PID file should be the last thing done. This patch makes
sure it's also removed when master.server_cleanup() throws an exception.

Also initialize logging only after writing the PID file.

Reviewed-by: iustinp

12 years agoReuse HTTP client pool for RPC
Michael Hanselmann [Fri, 21 Nov 2008 10:45:56 +0000 (10:45 +0000)]
Reuse HTTP client pool for RPC

ganeti-masterd: Add initialization and shutdown of RPC pool. It needs
to be shutdown before forking.

ganeti.cli: Add decorator function to initialize and shutdown RPC pool.

ganeti.rpc: Add functions to initialize and shutdown RPC pool. Throw
exception when used without proper initialization.

gnt-cluster, gnt-node: Use decorator function to initialize and shutdown
RPC pool.

Reviewed-by: iustinp

12 years agoWrite ssconf files when updating configuration
Michael Hanselmann [Fri, 21 Nov 2008 10:42:37 +0000 (10:42 +0000)]
Write ssconf files when updating configuration

Reviewed-by: ultrotter

12 years agoAdd RPC call to update ssconf files
Michael Hanselmann [Fri, 21 Nov 2008 10:42:07 +0000 (10:42 +0000)]
Add RPC call to update ssconf files

Reviewed-by: iustinp

12 years agoChange replace secondary to work with multi-disk
Iustin Pop [Fri, 21 Nov 2008 06:22:01 +0000 (06:22 +0000)]
Change replace secondary to work with multi-disk

Also fix an error in the CheckPrereq.

Reviewed-by: imsnah

12 years agoganeti.ssconf: Add function to write ssconf files
Michael Hanselmann [Thu, 20 Nov 2008 12:50:54 +0000 (12:50 +0000)]
ganeti.ssconf: Add function to write ssconf files

This function will be used to write ssconf files from the node daemon.
By creating a lock file, we synchronize different child processes of
ganeti-noded to not overwrite each other's changes. Also, external
processes could use this lock to make sure they don't read ssconf
files while changes are going on.

The socket module is not used (anymore) in ganeti.ssconf, removing it.

Reviewed-by: iustinp

12 years agoConvert replace-disks (same nodes) to multi-disk
Iustin Pop [Thu, 20 Nov 2008 06:22:52 +0000 (06:22 +0000)]
Convert replace-disks (same nodes) to multi-disk

This patch changes the drbd8 replace disk only (no secondary change) to
work in with multi-disk. This mode of replaces works correctly with
replacing only a subset of disks.

Reviewed-by: imsnah

12 years agoInitial multi-disk/multi-nic support
Iustin Pop [Thu, 20 Nov 2008 06:22:39 +0000 (06:22 +0000)]
Initial multi-disk/multi-nic support

This patch adds support for mult-disk/multi-nic in:
  - instance add
  - burnin

The start/stop/failover/cluster verify work as expected. Replace disk
and grow disk are TODO.

There's also a change gnt-job to allow dictionaries to be listed in
gnt-job info.

Reviewed-by: imsnah

12 years agoAdd more disk/nic listing options in gnt-instance
Iustin Pop [Thu, 20 Nov 2008 06:19:19 +0000 (06:19 +0000)]
Add more disk/nic listing options in gnt-instance

This adds some more listing cases (useful for scripting/rapi):
  - disk.sizes for a list of all sizes
  - nic.(ips|macs|bridges)

Reviewed-by: imsnah

12 years agoChange Xen hypervisor to not use iv_name
Iustin Pop [Thu, 20 Nov 2008 06:18:45 +0000 (06:18 +0000)]
Change Xen hypervisor to not use iv_name

Currently the iv_name is very linux-specific, and will break with the
multi-disk changes.

The patch changes this to generate sdX names based on the disk index in
the disks structure, instead of relying on the iv_name.

Reviewed-by: imsnah

12 years agoganeti.rpc: Use central functions for actual RPC calls
Michael Hanselmann [Wed, 19 Nov 2008 13:18:41 +0000 (13:18 +0000)]
ganeti.rpc: Use central functions for actual RPC calls

Before we had lots, lots and lots of code duplication. This patch
changes the code to use four central functions.

Reviewed-by: iustinp

12 years agoMake HttpClientManager threadsafe
Michael Hanselmann [Wed, 19 Nov 2008 13:18:08 +0000 (13:18 +0000)]
Make HttpClientManager threadsafe

This allows a single HttpClientManager to be used from more than one
thread at the same time. We discussed having one HttpClientManager
per job queue thread. Assuming there should be one HTTP thread per
node, this would mean quadratic growth with the number of nodes. By
being able to reuse the manager, this problem is a defused a bit.

This patch also fixes a typo in HttpClientRequestExecutor.

Reviewed-by: iustinp

12 years agoHTTP server: Do not decode empty entity body
Oleksiy Mishchenko [Wed, 19 Nov 2008 12:59:08 +0000 (12:59 +0000)]
HTTP server: Do not decode empty entity body

Reviewed-by: imsnah

12 years agoRAPI: Instance modify.
Oleksiy Mishchenko [Wed, 19 Nov 2008 11:09:26 +0000 (11:09 +0000)]
RAPI: Instance modify.

Split parameters filter to the separate function and reuse it in instance creation.

12 years agoSkip another testWaitingXblocksY
Iustin Pop [Tue, 18 Nov 2008 11:30:26 +0000 (11:30 +0000)]
Skip another testWaitingXblocksY

The waiting sharer blocks exclusive is another not-possible to test
right now.

Sorry for missing it the first time; there are no other testWaiting...
tests.

Reviewed-by: ultrotter

12 years agoAllow querying of variable number of parameters
Iustin Pop [Tue, 18 Nov 2008 10:06:01 +0000 (10:06 +0000)]
Allow querying of variable number of parameters

This patch adds support for querying in gnt-instance list of:
  - disk.count
  - nic.count
  - disk.size/$N
  - nic.(ip|mac|bridge)/$N

The patch also disables the exception raised when the header description
is missing, that should be fixed in the future (together with better
handling of variable numeric fields).

Reviewed-by: imsnah

12 years agoConvert cmdlib.py to _FieldSet
Iustin Pop [Tue, 18 Nov 2008 10:04:34 +0000 (10:04 +0000)]
Convert cmdlib.py to _FieldSet

This patch converts the current usage of _CheckOutputFields to the
FieldSet class, but it doesn't start to use its variable matching
features.

Reviewed-by: ultrotter

12 years agoAdd a FieldSet class for variable parameter sets
Iustin Pop [Tue, 18 Nov 2008 10:00:28 +0000 (10:00 +0000)]
Add a FieldSet class for variable parameter sets

This patch adds a _FieldSet class that can be used for the new variable
parameter sets: e.g. the sda_size will change to disk/0.size (or
similar) and we need to both check validity and extract the index of the
parameter easily.

The patch also sorts the unittest list in Makefile.am.

Reviewed-by: ultrotter

12 years agoSkip the waitingExclusiveBlockSharer test
Iustin Pop [Tue, 18 Nov 2008 09:58:07 +0000 (09:58 +0000)]
Skip the waitingExclusiveBlockSharer test

Until we have a way to properly test this, we'll skip the test.

Reviewed-by: imsnah

12 years agoMore updates to the documentation
Iustin Pop [Mon, 17 Nov 2008 11:30:42 +0000 (11:30 +0000)]
More updates to the documentation

This patch removes the client-api.txt document (since it's obsoleted by
the documentation inside the design-2.0.rst document) and adds many
updates to the latter.

Reviewed-by: imsnah

12 years agoFix distcheck with the new dot/png rules
Iustin Pop [Mon, 17 Nov 2008 11:30:21 +0000 (11:30 +0000)]
Fix distcheck with the new dot/png rules

Adding a new filetype/make rule requires more work than the previous
patch. Sorry! Now pases distcheck.

Reviewed-by: imsnah

12 years agoAdd a cluster architecture diagram
Iustin Pop [Sun, 16 Nov 2008 06:24:27 +0000 (06:24 +0000)]
Add a cluster architecture diagram

This adds a simple diagram for the cluster architecture and also adds a
dependency on graphviz (both doc and in configure).

Reviewed-by: imsnah

12 years agoCombine the 2.0 design documents into one
Iustin Pop [Sun, 16 Nov 2008 06:24:08 +0000 (06:24 +0000)]
Combine the 2.0 design documents into one

This patch combines all the design documents for 2.0 except the
security one into a single document, in order to ease reading and reduce
duplication of information.

Future patches will start removing wrong pointers to old document names
and some better integration between the sections.

Reviewed-by: imsnah

12 years agoRAPI: Instance startup/shutdown resources
Oleksiy Mishchenko [Fri, 14 Nov 2008 16:59:23 +0000 (16:59 +0000)]
RAPI: Instance startup/shutdown resources

Reviewed-by: imsnah

12 years agoRAPI: Implement an instance reboot
Oleksiy Mishchenko [Fri, 14 Nov 2008 10:34:34 +0000 (10:34 +0000)]
RAPI: Implement an instance reboot

Reviewed-by: imsnah

12 years agoUse utils.ReadFile to read SSL certificate
Michael Hanselmann [Wed, 12 Nov 2008 12:52:18 +0000 (12:52 +0000)]
Use utils.ReadFile to read SSL certificate

Reviewed-by: iustinp

12 years agoganeti.rpc: Use utils.ReadFile instead of reading file directly
Michael Hanselmann [Wed, 12 Nov 2008 12:52:07 +0000 (12:52 +0000)]
ganeti.rpc: Use utils.ReadFile instead of reading file directly

Reviewed-by: iustinp

12 years agoutils.SetupLogging: Remove previously setup handlers
Michael Hanselmann [Wed, 12 Nov 2008 12:51:54 +0000 (12:51 +0000)]
utils.SetupLogging: Remove previously setup handlers

If a logging function is called before the logging module is setup
using utils.SetupLogging, it calls logging.basicConfig, which adds
a StreamHandler, on its own. If we leave it in, all log output will
be printed twice on stderr. This patch makes sure to remove all
handlers before adding our own.

Reviewed-by: iustinp

12 years agojqueue: Always use rpc.RpcRunner
Michael Hanselmann [Wed, 12 Nov 2008 12:51:39 +0000 (12:51 +0000)]
jqueue: Always use rpc.RpcRunner

"from ganeti.rpc import RpcRunner" does not conform to the style guide.

Reviewed-by: iustinp

12 years agobootstrap: Always use rpc.RpcRunner
Michael Hanselmann [Wed, 12 Nov 2008 12:51:28 +0000 (12:51 +0000)]
bootstrap: Always use rpc.RpcRunner

"from ganeti.rpc import RpcRunner" does not conform to the style guide.

Reviewed-by: iustinp

12 years agoganeti.rpc: Convert to ganeti.serializer
Michael Hanselmann [Wed, 12 Nov 2008 12:50:53 +0000 (12:50 +0000)]
ganeti.rpc: Convert to ganeti.serializer

This is one of the last places where the simplejson module is
used directly.

Reviewed-by: iustinp

12 years agoConvert RPC module to new HTTP client
Michael Hanselmann [Wed, 12 Nov 2008 12:50:41 +0000 (12:50 +0000)]
Convert RPC module to new HTTP client

Currently, HttpClientManager is instantiated for every RPC call. This
will be changed with another patch, as will the use of SSL. The “Run”
method is no longer needed.

Reviewed-by: iustinp

12 years agoConvert the locking unittests to repetition-test
Iustin Pop [Wed, 12 Nov 2008 06:25:11 +0000 (06:25 +0000)]
Convert the locking unittests to repetition-test

Currently the locking tests are using timeouts to ensure an event will
'never happen'. However, this is suboptimal.

The patch converts all of these to instead: not wait, but sequence the
operations logically and expect that they execute as such. In case of
not so, they will timeout with a big (60s) timeout.

The 'never happen' is tested by multiple repetitions of the same test -
this is not perfect, but again 'X will never happen' is not actually
testable.

This patch reduces the runtime of the tests from ~5.4 to ~0.8 seconds
(with 8 repetitions of each test thas has 'never happen' situations).

Reviewed-by: imsnah

12 years agoFix utils.KillProcess
Iustin Pop [Wed, 12 Nov 2008 03:43:12 +0000 (03:43 +0000)]
Fix utils.KillProcess

Rev 1978 introduced a breakage on the SIGKILL finall signal to the
process, due to mistyped variable.

Reviewed-by: francis.perron

12 years agoganeti.http: Implement SSL for HTTP client
Michael Hanselmann [Tue, 11 Nov 2008 16:16:08 +0000 (16:16 +0000)]
ganeti.http: Implement SSL for HTTP client

Implementing SSL for the HTTP client required more work than I expected.
For correct error handling, quite a lot of code is needed. To avoid
code duplication, I moved a lot of the socket handling code into a
single function named _SocketOperation. It takes care of the polling
and error handling for OpenSSL. At the same time, the functions calling
it become a lot smaller.

This patch brings a few more changes:
- Error handling for socket.connect_ex (e.g. name resolution failures)
- Rename "ResponseError" exception class to "_HttpClientError" --
  it's an internal class anyway

Reviewed-by: iustinp

12 years agoganeti.daemon: Add timers to Mainloop
Michael Hanselmann [Tue, 11 Nov 2008 11:02:49 +0000 (11:02 +0000)]
ganeti.daemon: Add timers to Mainloop

This is a fallout from my work on the HTTP client class. Repeating
timers are prepared, but not yet implemented.

Reviewed-by: iustinp

12 years agoConvert trunk to posix-compatibility
Iustin Pop [Tue, 11 Nov 2008 10:58:50 +0000 (10:58 +0000)]
Convert trunk to posix-compatibility

We change two functions to use RunCmd without shell, and the other
(which needs a ssh command line) is changed to the '>... 2>&1' syntax.

Reviewed-by: imsnah

12 years agoAbstract runtime creation of dirs into a function
Iustin Pop [Tue, 11 Nov 2008 10:58:39 +0000 (10:58 +0000)]
Abstract runtime creation of dirs into a function

Currently the dir creation in ganeti-noded is in the main function. This
is not nice: we move it into a separate function and also add creation
of the OS_LOG_DIR (with different permissions, but in the same way).
This will permit cleanup of the creation of the OS_LOG_DIR from the
backend module (it's done multiple places currently).

Reviewed-by: imsnah

12 years agoRemove zombie special case from IsProcessAlive
Iustin Pop [Tue, 11 Nov 2008 10:58:28 +0000 (10:58 +0000)]
Remove zombie special case from IsProcessAlive

Based on the discussion on the mailing list, we remove the special
casing of zombie processes.

Note we don't use kill -0 since that has a different meaning than "check
process is alive", so this function is still linux-specific.

Reviewed-by: imsnah

12 years agoAdd cleanup of processes to utils.KillProcess
Iustin Pop [Tue, 11 Nov 2008 10:58:14 +0000 (10:58 +0000)]
Add cleanup of processes to utils.KillProcess

In case the process we want to signal is our own process, and the signal
we send is a deadly one, we should also cleanup after the process.

This patch adds a new parameter waitpid to this function that does this,
and changes its unittest to pass this new parameter.

Reviewed-by: imsnah

12 years agoFix instance rename
Iustin Pop [Tue, 11 Nov 2008 10:58:00 +0000 (10:58 +0000)]
Fix instance rename

As can be seen from the patch, we remove from the locking manager
inst.name. However, we do this right after cfg.RenameInstance, which
changes inst.name to the new name. So we need to remove old_name not
the new name.

The real question is why does the glm allow me to remove a not-existing
instance name...

The symptom before the patch was: run rename, then:
$ gnt-instance list
Unhandled protocol error while talking to the master daemon:
Caught exception: 'NoneType' object has no attribute 'primary_node'

Reviewed-by: imsnah

12 years agoMake the makefile not recreate ganeti every time
Iustin Pop [Tue, 11 Nov 2008 10:57:49 +0000 (10:57 +0000)]
Make the makefile not recreate ganeti every time

Currently the makefile always recreates the ganeti symlink. Make it so
that it does only when it doesn't exist or it's not a symlink.

Reviewed-by: imsnah

12 years agoFix gnt-instance reinstall
Iustin Pop [Tue, 11 Nov 2008 03:12:17 +0000 (03:12 +0000)]
Fix gnt-instance reinstall

Commit 1881 changed a rpc call but didn't fix all its users. This should
fix it (but I can't test as HTTP is broken).

Reviewed-by: imsnah

12 years agoImplement working directory for utils.RunCmd
Iustin Pop [Tue, 11 Nov 2008 03:12:05 +0000 (03:12 +0000)]
Implement working directory for utils.RunCmd

In order to replace usage of the shell just for 'cd %s; ...' we need to
be able to specify the working directory for childs.

The patch also changes the default working directory (when not
specified) to "/", as opposed to the current dir; since the daemos run
with cwd=/ anyway, this should not change things.

Reviewed-by: imsnah

12 years agoganeti.http: Move SSL socket creation into base class
Michael Hanselmann [Mon, 10 Nov 2008 12:38:26 +0000 (12:38 +0000)]
ganeti.http: Move SSL socket creation into base class

The same code will be used by the HTTP client.

Reviewed-by: iustinp

12 years agoganeti.daemon: Make Mainloop more flexible
Michael Hanselmann [Mon, 10 Nov 2008 12:37:49 +0000 (12:37 +0000)]
ganeti.daemon: Make Mainloop more flexible

While working on the HTTP client class, I wanted to use Mainloop
before deciding to use threads instead.

- Add docstrings
- Rename "quit" to "running", move it to a local variable
- Support adding and removing I/O listeners while running
  (e.g. to add/remove listeners from OnIO(…) calls)
- Allow user of the class to disable signal handlers
- Flag to exit once all listeners are gone

Reviewed-by: iustinp

12 years agoganeti.http: Add constant for "Unexpected EOF"
Michael Hanselmann [Mon, 10 Nov 2008 10:14:08 +0000 (10:14 +0000)]
ganeti.http: Add constant for "Unexpected EOF"

This is an expected error message and will be used in two places.

Reviewed-by: iustinp

12 years agoFix gnt-cluster init without cluster parameters
Alexander Schreiber [Fri, 7 Nov 2008 11:32:52 +0000 (11:32 +0000)]
Fix gnt-cluster init without cluster parameters

Reviewed-by: imsnah

12 years agoAdd new HTTP client class
Michael Hanselmann [Thu, 6 Nov 2008 11:25:10 +0000 (11:25 +0000)]
Add new HTTP client class

It is based on the WorkerPool class which is already used for the job
queue and master daemon. Each request must be encapsulated in an
instance of HttpClientRequest, which will then be passed to
HttpClientManager for processing. Upon completion, the request object
contains the response or error message.

While not yet enabled, the HTTP client implementation has been designed
with HTTP/1.1 and keep-alive in mind. For now it only uses HTTP/1.0,
though.

HttpClientManager will likely need more changes when integrating with
the RPC layer. SSL will also be integrated in a second step.

Reviewed-by: iustinp, ultrotter

12 years agoganeti.http: Use 411 Length Required in server code
Michael Hanselmann [Thu, 6 Nov 2008 11:24:49 +0000 (11:24 +0000)]
ganeti.http: Use 411 Length Required in server code

Reviewed-by: iustinp

12 years agoUpdate LUGrowDisk _WaitForSync call
Guido Trotter [Wed, 5 Nov 2008 16:37:51 +0000 (16:37 +0000)]
Update LUGrowDisk _WaitForSync call

The _WaitForSync call changed in r1794 but the GrowDisk call wasn't updated
then. This makes GrowDisk work in trunk.

Reviewed-by: iustinp

12 years agoganeti.http: Add more constants
Michael Hanselmann [Wed, 5 Nov 2008 14:04:04 +0000 (14:04 +0000)]
ganeti.http: Add more constants

As a preparation for the new HTTP client class, add more constants
to ganeti.http.

Reviewed-by: iustinp

12 years agoSmall documentation updates for workerpool.py
Iustin Pop [Mon, 27 Oct 2008 23:21:29 +0000 (23:21 +0000)]
Small documentation updates for workerpool.py

Reviewed-by: imsnah

12 years agoDocumentation updates for jqueue.py
Iustin Pop [Mon, 27 Oct 2008 23:21:11 +0000 (23:21 +0000)]
Documentation updates for jqueue.py

Reviewed-by: imsnah

12 years agoYet another bug found while reviewing docs
Iustin Pop [Mon, 27 Oct 2008 23:20:57 +0000 (23:20 +0000)]
Yet another bug found while reviewing docs

The newer_than variable can be either None or an int, and we normalize
it to an integer previously and save it in the 'serial' variable, which
should be used instead.

Reviewed-by: imsnah

12 years agoDocumentation updates for utils.py
Iustin Pop [Mon, 27 Oct 2008 23:20:25 +0000 (23:20 +0000)]
Documentation updates for utils.py

Reviewed-by: imsnah

12 years agoDocumentation updates for gnt-debug and gnt-os
Iustin Pop [Mon, 27 Oct 2008 23:20:10 +0000 (23:20 +0000)]
Documentation updates for gnt-debug and gnt-os

Reviewed-by: imsnah

12 years agoDocumentation updates for gnt-job
Iustin Pop [Mon, 27 Oct 2008 23:19:58 +0000 (23:19 +0000)]
Documentation updates for gnt-job

Reviewed-by: imsnah

12 years agoDocumentation updates for gnt-backup
Iustin Pop [Mon, 27 Oct 2008 23:19:45 +0000 (23:19 +0000)]
Documentation updates for gnt-backup

Reviewed-by: imsnah

12 years agoChange exit code of gnt-backup list
Iustin Pop [Mon, 27 Oct 2008 23:19:22 +0000 (23:19 +0000)]
Change exit code of gnt-backup list

Currently gnt-backup list exits with the same error code even if can't
contact som nodes for backup information.

The patch changes it to return 1 instead in this case.

Reviewed-by: imsnah

12 years agoDocumentation updates for gnt-node
Iustin Pop [Mon, 27 Oct 2008 23:18:45 +0000 (23:18 +0000)]
Documentation updates for gnt-node

The patch also adds a 'return 0' to a function that was missing it.

Reviewed-by: imsnah

12 years agoDocumentation updates for gnt-cluster
Iustin Pop [Mon, 27 Oct 2008 23:18:26 +0000 (23:18 +0000)]
Documentation updates for gnt-cluster

Reviewed-by: imsnah

12 years agoDocumentation updates for gnt-instance
Iustin Pop [Mon, 27 Oct 2008 23:18:11 +0000 (23:18 +0000)]
Documentation updates for gnt-instance

Reviewed-by: imsnah

12 years agoUpdate backend.py docstrings
Iustin Pop [Sat, 25 Oct 2008 00:37:25 +0000 (00:37 +0000)]
Update backend.py docstrings

This patch converts all of backend.py to epydoc formatting.

Reviewed-by: imsnah