ganeti-local
15 years agoUse the new utils.CheckBEParams function
Guido Trotter [Tue, 2 Dec 2008 10:53:25 +0000 (10:53 +0000)]
Use the new utils.CheckBEParams function

Where we used/forgot to validate beparams we now use the new common function.

Reviewed-by: imsnah

15 years agoAdd utils.CheckBEParams
Guido Trotter [Tue, 2 Dec 2008 10:53:14 +0000 (10:53 +0000)]
Add utils.CheckBEParams

This function will be used in LUCreateInstance, LUSetInstanceParams,
LUSetClusterParams and InitCluster to check the backend parameters
validity and convert the relevant values to integer, without duplicating
code. It lives in utils as bootstrap.py is calling it too.

Reviewed-by: imsnah

15 years agoAdd constants.VALUE_TRUE and VALUE_FALSE
Guido Trotter [Tue, 2 Dec 2008 10:53:01 +0000 (10:53 +0000)]
Add constants.VALUE_TRUE and VALUE_FALSE

Reviewed-by: imsnah

15 years agoHandle default/none values in hv/be params
Guido Trotter [Tue, 2 Dec 2008 10:25:48 +0000 (10:25 +0000)]
Handle default/none values in hv/be params

When a value is set to constants.VALUE_DEFAULT we have to remove it from
the specific instance dict, as this way it will be populated from the
cluster before. If instead it's specified as constants.VALUE_NONE we'll
explicitely set it to None, to override its presence with a different
values in such defaults. However, currently, we handle None values only
for hvparams, that have a real use case for them.

Reviewed-by: imsnah

15 years agoSetInstanceParams: handle default/none values
Guido Trotter [Tue, 2 Dec 2008 10:25:34 +0000 (10:25 +0000)]
SetInstanceParams: handle default/none values

If the hv/be parameter lowercase value is set to "default" we'll pass
constants.VALUE_DEFAULT, if it's set to "none" we'll pass
constants.VALUE_NONE.

Reviewed-by: imsnah

15 years agoUpdate gnt-backup online help
Guido Trotter [Tue, 2 Dec 2008 10:19:43 +0000 (10:19 +0000)]
Update gnt-backup online help

--src-node and --src-dir are not mandatory anymore

Reviewed-by: iustinp

15 years agoImportExport: make src_node and src_path optional
Guido Trotter [Tue, 2 Dec 2008 10:19:30 +0000 (10:19 +0000)]
ImportExport: make src_node and src_path optional

If src_node is not there we'll default to using the currently exported
instance name as src_path. Also, if src_path is not absolute we'll look
for it in EXPORT_DIR.

Reviewed-by: iustinp

15 years agoLUCreateInstance: handle import without src_node
Guido Trotter [Tue, 2 Dec 2008 10:19:16 +0000 (10:19 +0000)]
LUCreateInstance: handle import without src_node

If we get called with no source node we'll thread src_path as an
instance name exported in EXPORT_DIR in one of the nodes and look for
it with the export_list rpc call.

Reviewed-by: iustinp

15 years agoLUCreateInstance: keep src node lock on import
Guido Trotter [Tue, 2 Dec 2008 10:19:02 +0000 (10:19 +0000)]
LUCreateInstance: keep src node lock on import

Currently the node lock also guards against removing the import at the
wrong time, so if we're importing an instance image we want to keep the
source node locked. In the future we might want to put export locks at a
different level than node locks.

Reviewed-by: iustinp

15 years agoFix master failover
Iustin Pop [Tue, 2 Dec 2008 05:07:01 +0000 (05:07 +0000)]
Fix master failover

The ssconf files were not updated by the master failover. We need to
push them, and since we already have RPC initialized, we can use the
standard ConfigWriter to do so - this will take care of both the config
file and the ssconf files.

Reviewed-by: imsnah

15 years agoAdjust cluster-verify to check for candidate role
Iustin Pop [Tue, 2 Dec 2008 05:06:47 +0000 (05:06 +0000)]
Adjust cluster-verify to check for candidate role

Currently cluster verify checks all nodes for the same set of files,
even if the nodes are not master candidates.

This patch adds back checking of ssconf files for consistency and splits
the checksum check into different error reporting messages based on
candidate role.

Reviewed-by: imsnah

15 years agoAdd candidate pool size checks in verify
Iustin Pop [Tue, 2 Dec 2008 05:06:34 +0000 (05:06 +0000)]
Add candidate pool size checks in verify

Reviewed-by: imsnah

15 years agoPrevent demotion from candidate based on pool size
Iustin Pop [Tue, 2 Dec 2008 05:06:21 +0000 (05:06 +0000)]
Prevent demotion from candidate based on pool size

In gnt-cluster modify we prevent demotion from the candidate role if
there are not enough master candidates left.

Reviewed-by: imsnah

15 years agoAdd cluster candidate pool size parameter
Iustin Pop [Tue, 2 Dec 2008 05:06:08 +0000 (05:06 +0000)]
Add cluster candidate pool size parameter

This patch adds a new cluster paramater "candidate_pool_size" which
tracks the desired size of the list of nodes with the master_candidate
flag set.

Reviewed-by: imsnah

15 years agoPrevent master failover to a non candidate node
Iustin Pop [Tue, 2 Dec 2008 05:05:53 +0000 (05:05 +0000)]
Prevent master failover to a non candidate node

Reviewed-by: imsnah

15 years agoAdd the list of master candidates to ssconf
Iustin Pop [Tue, 2 Dec 2008 05:05:40 +0000 (05:05 +0000)]
Add the list of master candidates to ssconf

Reviewed-by: imsnah

15 years agoRestrict job propagation to master candidates only
Iustin Pop [Tue, 2 Dec 2008 05:05:25 +0000 (05:05 +0000)]
Restrict job propagation to master candidates only

This patch restricts the job propagation to master candidates only, by
not registering non-candidates in the job queue node lists.

Note that we do intentionally purge the job queue if a node is toggled
to non-master status.

Reviewed-by: imsnah

15 years agoRestrict config replication to master candidates
Iustin Pop [Tue, 2 Dec 2008 05:05:12 +0000 (05:05 +0000)]
Restrict config replication to master candidates

This patch restricts the config data replication to master candidates
only.

Reviewed-by: imsnah

15 years agoAdd a gnt-node modify operation
Iustin Pop [Tue, 2 Dec 2008 05:05:01 +0000 (05:05 +0000)]
Add a gnt-node modify operation

This patch adds the OpCode, LogicalUnit and gnt-node command for
modifying node parameters, more specifically the master candidate flag
for a node.

Reviewed-by: imsnah

15 years agoAdd master/master_candidate fields to node list
Iustin Pop [Tue, 2 Dec 2008 05:04:44 +0000 (05:04 +0000)]
Add master/master_candidate fields to node list

This patch adds listing of the master_candidate field (as Y/N) and of
the master role (again Y/N) for nodes.

Reviewed-by: imsnah

15 years agoIntroduce a new 'master_candidate' node attribute
Iustin Pop [Tue, 2 Dec 2008 05:04:28 +0000 (05:04 +0000)]
Introduce a new 'master_candidate' node attribute

The field is not yet used.

Reviewed-by: imsnah

15 years agoSimplify a little the ssconf update
Iustin Pop [Tue, 2 Dec 2008 05:04:17 +0000 (05:04 +0000)]
Simplify a little the ssconf update

We have (again) the KeyToFilename function, so we move the writing of
the files to a method under SimpleStore.

Reviewed-by: imsnah

15 years agoReplicate the node list in ssconf
Iustin Pop [Tue, 2 Dec 2008 05:04:05 +0000 (05:04 +0000)]
Replicate the node list in ssconf

This patch adds node_list in the list of replicated values from
ConfigWriter.

Reviewed-by: imsnah

15 years agoRevert "Get rid of ssconf"
Iustin Pop [Tue, 2 Dec 2008 05:03:52 +0000 (05:03 +0000)]
Revert "Get rid of ssconf"

This partially reverts the "Get rid of ssconf" patch.

It adds back a simpler version of the SimpleStore class, and drops the
WritableSimpleStore class. The new version of the class also has
node_list as a new key, and increases the size of the keys so that big
clusters will fit the node list. Also, the SS_* constants are moved to
constants.py, since the ConfigWriter class will need them too in order
to generate the values dictionary.

It also changes the GetMasterAndMyself function to use the SimpleStore
by default, and the backend._GetConfig to use it too (it has all the
needed keys).

Reviewed-by: imsnah

15 years agoburnin: fix usage of diskless template
Iustin Pop [Tue, 2 Dec 2008 01:41:00 +0000 (01:41 +0000)]
burnin: fix usage of diskless template

This allows burnin to work with diskless instances (since we cannot pass
right now no disks to it).

Reviewed-by: imsnah

15 years agoUpdate QA scripts to new cluster parameters
Michael Hanselmann [Mon, 1 Dec 2008 20:52:31 +0000 (20:52 +0000)]
Update QA scripts to new cluster parameters

There are still issues, especially with "gnt-instance modify" and
resetting values. However, this is a start.

Reviewed-by: ultrotter

15 years agognt-instance add: Remove "--os-size" and "--swap-size"
Michael Hanselmann [Mon, 1 Dec 2008 20:52:17 +0000 (20:52 +0000)]
gnt-instance add: Remove "--os-size" and "--swap-size"

They're not used anymore.

Reviewed-by: ultrotter

15 years agoFix RpcRunner._StaticSingleNodeCall
Michael Hanselmann [Mon, 1 Dec 2008 20:52:03 +0000 (20:52 +0000)]
Fix RpcRunner._StaticSingleNodeCall

Unfortunately, a rpc.Client object was passed as the first parameter,
causing the function to always fail.

Found during QA testing.

Reviewed-by: ultrotter

15 years agoInitCluster: initialize master node serial_no
Guido Trotter [Mon, 1 Dec 2008 15:47:12 +0000 (15:47 +0000)]
InitCluster: initialize master node serial_no

Currently it was left alone, and thus its value was "null".

Reviewed-by: imsnah

15 years agoFix errors when the node info RPC is incomplete
Iustin Pop [Mon, 1 Dec 2008 06:02:06 +0000 (06:02 +0000)]
Fix errors when the node info RPC is incomplete

[Forward-port from the 1.2 branch]

If ganeti starts before xend, the node information will not have all the
fields filled in. The patch changes so that missing keys will be treated
as unknown (this applies to other cases as well, not only xend not
started).

Reviewed-by: ultrotter

15 years agoRAPI:Fix root list and unittest for it.
Oleksiy Mishchenko [Fri, 28 Nov 2008 13:58:58 +0000 (13:58 +0000)]
RAPI:Fix root list and unittest for it.

Reviewed-by: imsnah

15 years agoRAPI: Switch from opcodes to no native 2.0 queries.
Oleksiy Mishchenko [Fri, 28 Nov 2008 12:02:16 +0000 (12:02 +0000)]
RAPI: Switch from opcodes to no native 2.0 queries.

Reviewed-by: imsnah

15 years agojqueue: Always print message for 100% when inspecting queue
Michael Hanselmann [Fri, 28 Nov 2008 10:29:04 +0000 (10:29 +0000)]
jqueue: Always print message for 100% when inspecting queue

Reviewed-by: iustinp

15 years agognt-job: Print message from CancelJob to standard output
Michael Hanselmann [Fri, 28 Nov 2008 10:28:43 +0000 (10:28 +0000)]
gnt-job: Print message from CancelJob to standard output

Reviewed-by: iustinp

15 years agojqueue: Allow jobs waiting for locks to be canceled
Michael Hanselmann [Fri, 28 Nov 2008 10:28:31 +0000 (10:28 +0000)]
jqueue: Allow jobs waiting for locks to be canceled

- Add new "canceling" status
- Notify clients when job is canceled
- Give a return value from CancelJob
- Handle it in the client library

Reviewed-by: iustinp

15 years agoImprove the node add operation
Iustin Pop [Thu, 27 Nov 2008 10:38:41 +0000 (10:38 +0000)]
Improve the node add operation

Currently, the node add operation uses a job to query the node name and
the bootstrap function directly reads the config file for the cluster
name.

This patch changes to that both the cluster name and the verification of
the node is done via queries to the master.

Reviewed-by: ultrotter

15 years agoFix logic bug in rev 2072
Iustin Pop [Thu, 27 Nov 2008 10:21:46 +0000 (10:21 +0000)]
Fix logic bug in rev 2072

In revision 2072 "ConfigWriter: change cluster serial meaning" I misread
the serial_no update logic: it was about updating the serial number on
the object itself, not on the cluster.

So we don't actually have at all cluster serial number increase when a
node is changed (not removed/added).

This patch revers to the original always increase the target serial
number and adds increase of the cluster serial number in case a node has
been changed.

Reviewed-by: ultrotter

15 years agojqueue: fix a bug in an error path
Iustin Pop [Thu, 27 Nov 2008 03:13:49 +0000 (03:13 +0000)]
jqueue: fix a bug in an error path

Dictionaries raise KeyError, and not ValueError when invalid keys are
passes to del.

Reviewed-by: imsnah

15 years agoConfigWriter: change cluster serial meaning
Iustin Pop [Thu, 27 Nov 2008 03:13:37 +0000 (03:13 +0000)]
ConfigWriter: change cluster serial meaning

Currently, we increase the cluster serial number for instance additions,
removals and renames. This is conforming with the REST paradigm, however
it means that for each of these operations, we need to push ssconf
updates to all nodes.

In order to support future cases with reduced set of master-eligible
nodes, we want to reduce the ssconf pushes (which need to be to all
nodes). This patch changes the meaning for the cluster serial number so
that it doesn't track instance operations at all.

This means that addition of an instance can fail due to concurrent
additions, even if the cluster serial has not changed. It slightly
breaks the REST paradigm, but IMHO it's better for actual usage.

Reviewed-by: ultrotter

15 years agoinstance import: adapt to multi-disk/nic world
Iustin Pop [Thu, 27 Nov 2008 03:13:27 +0000 (03:13 +0000)]
instance import: adapt to multi-disk/nic world

This is mostly a copy from gnt-instance add; import works, but it's not
optimal - device count/parametrs should be able to be reused.

Reviewed-by: ultrotter

15 years agoFix gnt-backup export
Iustin Pop [Thu, 27 Nov 2008 03:13:17 +0000 (03:13 +0000)]
Fix gnt-backup export

This patch fixes a bug in disk calculation for gnt-backup export, which
completely broke one-disk instance export.

The patch also corrects some error messages and style issues.

Reviewed-by: ultrotter

15 years agoFix a message in LUExportInstance
Iustin Pop [Thu, 27 Nov 2008 03:13:05 +0000 (03:13 +0000)]
Fix a message in LUExportInstance

We never verified the node name before, so this is most likely not a
non-retrieve but a wrong name case.

Reviewed-by: ultrotter

15 years agoAllow network-less instances
Iustin Pop [Thu, 27 Nov 2008 03:12:53 +0000 (03:12 +0000)]
Allow network-less instances

Currently there's no way to specify no NICs for an instance, even though
this is a supported configuration.

The patch adds a --no-nics option to gnt-instance add.

Reviewed-by: amishchenko

15 years agoFix gnt-job submit
Iustin Pop [Thu, 27 Nov 2008 03:12:43 +0000 (03:12 +0000)]
Fix gnt-job submit

The submit function was using a very old API. This patch brings it up to
date.

Reviewed-by: imsnah

15 years agoSmall change to job failure output
Iustin Pop [Thu, 27 Nov 2008 03:12:31 +0000 (03:12 +0000)]
Small change to job failure output

Currently, job failures are done by raising OpExecError(job result). For
a one-opcode job that failed, this is very non-intuitive:
Failure: command execution error:
[u'Disk size change not possible, use grow-disk']

This patch changes the output in two ways:
 - for a job which didn't have opcodes which succeeded, it changes it
   to:
   Failure: command execution error:
   Disk size change not possible, use grow-disk
 - for a job with partial completion, to:
   Failure: command execution error:
   partial failure (opcode 1): Cannot remove the last disk of an
   instance

The actual error type is not changed. A job that doesn't have at least
an error-ed opcode is shown as before.

Reviewed-by: imsnah

15 years agoFix file-based block devices
Iustin Pop [Thu, 27 Nov 2008 03:12:18 +0000 (03:12 +0000)]
Fix file-based block devices

We changed a while ago the protocol for opening block devices, but
FileStorage was not changed. This patch makes it work again.

Reviewed-by: imsnah

15 years agoFix instance creation
Iustin Pop [Thu, 27 Nov 2008 03:12:07 +0000 (03:12 +0000)]
Fix instance creation

This patch fixes the diskless and drbd/file based instances. Sorry :(

Reviewed-by: ultrotter

15 years agoganeti-masterd: create RUN_GANETI_DIR as well
Guido Trotter [Wed, 26 Nov 2008 16:49:33 +0000 (16:49 +0000)]
ganeti-masterd: create RUN_GANETI_DIR as well

Since we're not sure ganeti-noded has started yet, we need to create
RUN_GANETI_DIR before SOCKET_DIR as well, with the proper permissions.

Reviewed-by: imsnah

15 years agoconvert run dir mode to constant
Guido Trotter [Wed, 26 Nov 2008 16:49:19 +0000 (16:49 +0000)]
convert run dir mode to constant

ganeti-noded used to create all directories under /var/run with an
hard-coded mode. convert it to a constant.

Reviewed-by: imsnah

15 years agojqueue: Log progress and load jobs one by one
Michael Hanselmann [Wed, 26 Nov 2008 16:16:03 +0000 (16:16 +0000)]
jqueue: Log progress and load jobs one by one

By logging more information, a user can see how far it is in inspecting
the queue. This can be useful with a large number of jobs. Also, instead
of loading all jobs in one go, load only the list of job IDs and then
load jobs one by one.

Reviewed-by: ultrotter

15 years agojqueue: Shutdown workerpool in case of a problem
Michael Hanselmann [Wed, 26 Nov 2008 16:15:34 +0000 (16:15 +0000)]
jqueue: Shutdown workerpool in case of a problem

Reviewed-by: ultrotter

15 years agoRAPI: Make calls safier
Oleksiy Mishchenko [Wed, 26 Nov 2008 11:25:34 +0000 (11:25 +0000)]
RAPI: Make calls safier

Reviewed-by: imsnah

15 years agoReduce duplication of work in rpc.Client
Iustin Pop [Wed, 26 Nov 2008 01:23:04 +0000 (01:23 +0000)]
Reduce duplication of work in rpc.Client

This patch removes the duplicate serialization and calls to
utils.GetNodeDaemonPort in rpc.Client, and instead moves them to calling
functions (the _*NodeCall ones recently introduced).

Reviewed-by: ultrotter

15 years agoMove the MASTER_SOCKET to SOCKET_DIR
Guido Trotter [Tue, 25 Nov 2008 17:11:27 +0000 (17:11 +0000)]
Move the MASTER_SOCKET to SOCKET_DIR

Before it was in the abstract linux namespace, where unfortunately we
couldn't easily check from python the credentials of the connecting
clients. Now we also have to remove the file on exit and when starting.

Reviewed-by: imsnah

15 years agoganeti-masterd: create SOCKET_DIR
Guido Trotter [Tue, 25 Nov 2008 17:11:13 +0000 (17:11 +0000)]
ganeti-masterd: create SOCKET_DIR

If SOCKET_DIR doesn't exist we create it in the master daemon, before
trying to put a socket inside it.

Reviewed-by: imsnah

15 years agoAdd SOCKET_DIR_MODE constant
Guido Trotter [Tue, 25 Nov 2008 17:10:58 +0000 (17:10 +0000)]
Add SOCKET_DIR_MODE constant

We want the socket dir to have a restricted permission.

Reviewed-by: imsnah

15 years agoAdd SOCKET_DIR constant
Guido Trotter [Tue, 25 Nov 2008 17:10:45 +0000 (17:10 +0000)]
Add SOCKET_DIR constant

This new directory under /var/run will be used for file based unix
sockets.

Reviewed-by: imsnah

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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

15 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