Iustin Pop [Mon, 20 Oct 2008 18:01:28 +0000 (18:01 +0000)]
Generalize the reading of test file data
Currently we have two methods in ganeti.bdev_unittest.py of computing
the test data file name - and, of course, they don't give the same
results.
The patch moves the functions to compute the test file name and reading
of its contents to the GanetiTestCase class in testutils, which allows
running the tests from the command line as well.
We also change assertFileContent to use utils.ReadFile.
Reviewed-by: imsnah
Alexander Schreiber [Mon, 20 Oct 2008 16:38:28 +0000 (16:38 +0000)]
Set default hypervisor at cluster init
During cluster init, set the default hypervisor to be used for instances.
Ensure that the default hypervisor belongs to the set enabled hypervisors
for this cluster. Also fix a small bug with setting the default enabled
hypervisor list.
Reviewed-by: imsnah
Iustin Pop [Mon, 20 Oct 2008 14:47:17 +0000 (14:47 +0000)]
Convert the job queue rpcs to address-based
The two main multi-node job queue RPC calls (jobqueue_update,
jobqueue_rename) are converted to address-based calls, in order to speed
up queue changes. For this, we need to change the _nodes attribute on
the jobqueue to be a dict {name: ip}, instead of a set.
Reviewed-by: imsnah
Iustin Pop [Mon, 20 Oct 2008 14:47:07 +0000 (14:47 +0000)]
Convert rpc.call_upload_file to use addresses
This patch allows rpc.call_upload_file to use addresses (if passed), and
also converts the ConfigWriter._DistributeConfig to pass them, since
this is an often-done operation.
Reviewed-by: imsnah
Iustin Pop [Mon, 20 Oct 2008 14:47:00 +0000 (14:47 +0000)]
Convert non-static rpc calls to use addresses
This patch converts all non-staticmethods rpc calls to pass addresses to
the Client calls.
This is done via two new small helpers. These functions also deal with
nodes that are not (yet) in the configuration file, and pass None for
the address instead (which allow NodeControllers to do resolving).
Reviewed-by: imsnah
Iustin Pop [Mon, 20 Oct 2008 14:46:52 +0000 (14:46 +0000)]
Add infrastructure for using addresses in rpc.py
The patch adds support for passing node addresses to NodeController
objects, which should speed up the connect sequence.
The patch also adds another very small optimization of computing the
content-length header value in the parent Client class instead of each
NodeController.
Reviewed-by: imsnah
Iustin Pop [Mon, 20 Oct 2008 14:46:44 +0000 (14:46 +0000)]
Improve conformance with the style guide for rpc.py
This patch renames some internal function to camel case, for compliance
with the style guide.
It also fixes the module docstring (how old was that?).
Reviewed-by: imsnah
Guido Trotter [Mon, 20 Oct 2008 13:44:45 +0000 (13:44 +0000)]
Use constants.VALUE_AUTO for ip comparison too
Forward-port-of: r1889, Reviewed-by: imsnah
Reviewed-by: imsnah
Guido Trotter [Mon, 20 Oct 2008 13:44:32 +0000 (13:44 +0000)]
Document mac option for gnt-backup import
Forward-port-of: (r1888, r1891), Reviewed-by: (iustinp, imsnah)
Reviewed-by: imsnah
Guido Trotter [Mon, 20 Oct 2008 13:44:19 +0000 (13:44 +0000)]
LUCreateInstance: reuse mac address on import
When importing an instance with the same name as the exported one if the
mac address is "auto" we try to reuse the previous mac address. One can
still force generation of a new one with mac="generate".
Forward-port-of: r1887, Reviewed-by: iustinp
Reviewed-by: imsnah
Guido Trotter [Mon, 20 Oct 2008 13:44:06 +0000 (13:44 +0000)]
LUCreateInstance: accept mac = VALUE_GENERATE
VALUE_GENERATE is handled exactly the same as VALUE_AUTO and the mac
address is generated randomly.
Forward-port-of: r1886, Reviewed-by: iustinp
Reviewed-by: imsnah
Guido Trotter [Mon, 20 Oct 2008 13:43:54 +0000 (13:43 +0000)]
Add mac option to gnt-backup import
Before 'auto' was the only allowed possibility
Forward-port-of: r1885, Reviewed-by: iustinp
Reviewed-by: imsnah
Guido Trotter [Mon, 20 Oct 2008 13:43:34 +0000 (13:43 +0000)]
Add VALUE_AUTO and VALUE_GENERATE constants
'auto' is used in multiple place in the code with a meaning similar to
'default', 'generate' will be used to force generation of mac addresses
when the default would be to reuse an old one.
Forward-port-of: r1884, Reviewed-by: iustinp
Reviewed-by: imsnah
Iustin Pop [Mon, 20 Oct 2008 12:50:50 +0000 (12:50 +0000)]
Remove the logger.py module
Since now we use only one function from the logger module
(SetupLogging), we move it to utils.py (which is already imported by all
users of this function), and we remove the module.
Reviewed-by: imsnah
Iustin Pop [Mon, 20 Oct 2008 12:50:37 +0000 (12:50 +0000)]
Convert http.py to use the logging module
Reviewed-by: imsnah
Iustin Pop [Mon, 20 Oct 2008 12:50:29 +0000 (12:50 +0000)]
Convert cmdlib.py to use the logging module
Note that many uses of logger.Error were used in 1.2 for their
side-effect of logging to stderr, where the user will see the messages,
and not for having the entry in the log. As such, we need to go over and
review every use of logging.* and decide if it should use feedback_fn
instead of being a logging call.
Reviewed-by: imsnah
Iustin Pop [Mon, 20 Oct 2008 12:50:22 +0000 (12:50 +0000)]
Convert hv_xen.py to use the logging module
Reviewed-by: imsnah
Iustin Pop [Mon, 20 Oct 2008 12:50:14 +0000 (12:50 +0000)]
Convert mcpu.py to use the logging module
Reviewed-by: imsnah
Iustin Pop [Mon, 20 Oct 2008 12:50:06 +0000 (12:50 +0000)]
Convert ssh.py to use the logging module
Reviewed-by: imsnah
Iustin Pop [Mon, 20 Oct 2008 12:49:59 +0000 (12:49 +0000)]
Convert rpc.py to use the logging module
Reviewed-by: imsnah
Iustin Pop [Mon, 20 Oct 2008 12:33:35 +0000 (12:33 +0000)]
Fix some pylint-detected issues on the scripts
Some names were wrong, and similar stuff detected by pylint.
gnt-debug.GenericOpCode is still broken.
Reviewed-by: imsnah
Iustin Pop [Mon, 20 Oct 2008 12:33:25 +0000 (12:33 +0000)]
Convert the gnt scripts to ToStdout/err
Currently the gnt-* scripts are using a mix of print, logger.ToStd* and
sys.stderr.write. We convert them all to using cli.ToStdout/err. This
way, we can easily change the implementation for all at once.
Reviewed-by: imsnah
Iustin Pop [Mon, 20 Oct 2008 12:33:15 +0000 (12:33 +0000)]
Convert cli.py to logging
We also add two function for printing messages, so that scripts won't
have to import logger to get these. They are a simple extension over the
logger ones, as they accept the call style from logging:
ToStdout("Message: %s", msg)
(instead of requiring formatting by the client.
Reviewed-by: imsnah
Iustin Pop [Mon, 20 Oct 2008 12:16:38 +0000 (12:16 +0000)]
Fix gnt-instance modify with beparams
The gnt-instance modify didn't work correctly w.r.t the be parameters.
There was also a typo in the corresponding LU.
Reviewed-by: imsnah
Alexander Schreiber [Mon, 20 Oct 2008 11:09:11 +0000 (11:09 +0000)]
Update gnt-cluster man page for removal of --hypervisor-type.
We no longer use a single, cluster-wide hypervisor, but configure the
actual to be used hypervisor on the instance level. The option has already
been removed from gnt-cluster.
Reviewed-by: imsnah
Michael Hanselmann [Mon, 20 Oct 2008 11:04:11 +0000 (11:04 +0000)]
Remove old HTTP server code
All users of this code have been migrated to the new and shiny HttpServer
class.
It also fixes a typo in the ApacheLogfile unittests. It has not yet been
decided whether we should keep ApacheLogfile or not, hence leaving it in.
Reviewed-by: ultrotter
Alexander Schreiber [Mon, 20 Oct 2008 10:47:06 +0000 (10:47 +0000)]
Remove --hypervisor-type from gnt-cluster.
We no longer use a single, cluster-wide hypervisor, but configure the
actual to be used hypervisor on the instance level.
Reviewed-by: imsnah
Alexander Schreiber [Sat, 18 Oct 2008 22:27:43 +0000 (22:27 +0000)]
Fix gnt-cluster init to set cluster defaults.
Reviewed-by: iustinp
Alexander Schreiber [Sat, 18 Oct 2008 22:26:56 +0000 (22:26 +0000)]
Add constants for cluster defaults
Reviewed-by: iustinp
Guido Trotter [Fri, 17 Oct 2008 14:37:00 +0000 (14:37 +0000)]
Cleanup os_add/rename rpc for OS API 10
- remove now unused osdev and swapdev arguments from backend, noded,
rpc, cmdlib
- convert docstrings to epydoc
Reviewed-by: iustinp
Guido Trotter [Fri, 17 Oct 2008 14:36:45 +0000 (14:36 +0000)]
Temporarily explicitely break import/export
Since they're not converted to API 10 yet, we temporarily disable the
import/export functions.
Reviewed-by: iustinp
Guido Trotter [Fri, 17 Oct 2008 14:36:35 +0000 (14:36 +0000)]
AddOSToInstance: convert to api10
Reviewed-by: iustinp
Guido Trotter [Fri, 17 Oct 2008 14:36:23 +0000 (14:36 +0000)]
RunRenameInstance: convert to api10
Reviewed-by: iustinp
Guido Trotter [Fri, 17 Oct 2008 14:36:12 +0000 (14:36 +0000)]
Add new OSEnvironment function
This function calculates the basic environment for OS scripts in API
version 10.
Reviewed-by: iustinp
Guido Trotter [Fri, 17 Oct 2008 14:35:59 +0000 (14:35 +0000)]
Bump up the OS API version
Reviewed-by: iustinp
Guido Trotter [Fri, 17 Oct 2008 14:35:43 +0000 (14:35 +0000)]
OSFromDisk: use script names from constants
Reviewed-by: iustinp
Guido Trotter [Fri, 17 Oct 2008 14:35:31 +0000 (14:35 +0000)]
Change OSFromDisk's docstring to epydoc
Plus update it with the real variable name
Reviewed-by: iustinp
Guido Trotter [Fri, 17 Oct 2008 14:35:17 +0000 (14:35 +0000)]
Add LDS_BLOCK for block device backed dev types
Reviewed-by: iustinp
Guido Trotter [Fri, 17 Oct 2008 14:35:04 +0000 (14:35 +0000)]
Create constants to replace os scripts names
Reviewed-by: iustinp
Oleksiy Mishchenko [Fri, 17 Oct 2008 13:06:04 +0000 (13:06 +0000)]
ETag passing support.
Reviewed-by: imsnah
Guido Trotter [Fri, 17 Oct 2008 11:08:10 +0000 (11:08 +0000)]
Mainloop: handle sigterm
This fixes removals of the pid files and clean exit in the init script
Reviewed-by: iustinp
Guido Trotter [Fri, 17 Oct 2008 11:07:57 +0000 (11:07 +0000)]
Mainloop: init sigchld_handler as None
There is no point in initializing sigchld_handler as an empty dict, when
it will be overwritten by an instance of utils.SignalHandler
immediately after.
Reviewed-by: iustinp
Michael Hanselmann [Fri, 17 Oct 2008 09:47:44 +0000 (09:47 +0000)]
Fix remote API unittest
I broke it with rev 1864. This patch also removes whitespace at
line endings.
Reviewed-by: amishchenko
Iustin Pop [Thu, 16 Oct 2008 20:39:38 +0000 (20:39 +0000)]
Enable gnt-cluster modify to hv/beparams
This patch enables the cluster modify to change:
- enabled hypervisor list
- hvparams (per hypervisor)
- beparams (only the default group)
Syntax:
gnt-cluster modify -B vcpus=3 -H xen-pvm:no_initrd_path
Validation for parameters is somewhat missing - the individual
hypervisors will be checked for syntax and validation, but beparams
doesn't have validation yes (nowhere), it should be added here once we
have a global method (will come soon).
Reviewed-by: imsnah
Michael Hanselmann [Thu, 16 Oct 2008 16:54:02 +0000 (16:54 +0000)]
rapi: Convert to new HTTP server class
Requests are no longer logged to a separate file.
Reviewed-by: amishchenko
Guido Trotter [Thu, 16 Oct 2008 16:38:32 +0000 (16:38 +0000)]
design-2.0-cluster-parameters: escape final _
In rst a final _ is used for linking. Escaping it prevents an error at
compile time on design-2.0-cluster-parameters.rst
Reviewed-by: iustinp
Iustin Pop [Thu, 16 Oct 2008 16:26:04 +0000 (16:26 +0000)]
Show the cluster parametrs in gnt-cluster info
This is just a raw update without any special formatting.
Reviewed-by: imsnah
Oleksiy Mishchenko [Thu, 16 Oct 2008 14:40:33 +0000 (14:40 +0000)]
RAPI: Instance add/delete implementation.
Reviewed-by: iustinp
Guido Trotter [Thu, 16 Oct 2008 13:35:15 +0000 (13:35 +0000)]
OS Design: invert new and old name
Internally in ganeti we already have renamed the instance, so it's
better to pass the new name in INSTANCE_NAME and the old one in
OLD_INSTANCE_NAME rather than the old name in INSTANCE_NAME and the new
one in NEW_INSTANCE_NAME as this reflects what the cluster thinks.
Reviewed-by: iustinp
Iustin Pop [Thu, 16 Oct 2008 13:05:18 +0000 (13:05 +0000)]
Really fix with the zombie test (hopefully)
So, instead of any timeouts for synchronization, we move to actual
events. We still have one (huge) timeout for pathological cases (just to
cleanup), but we don't sleep at all in normal usage.
The patch moves the zombie/cleaned up child creation out from setUp(),
and to on-demand by the functions. We remove all signal handler usage,
instead we rely on the fact that when a process is cleaned up, its FDs
are closed, so the read end of a pipe will get an event.
Reviewed-by: imsnah
Iustin Pop [Thu, 16 Oct 2008 12:08:47 +0000 (12:08 +0000)]
Fix job queue behaviour when loading jobs
Currently, if loading a job fails, the job queue code raises an
exception and prevents the proper processing of the jobs in the queue.
We change this so that unparseable jobs are instead archived (if not
already).
Reviewed-by: imsnah
Iustin Pop [Thu, 16 Oct 2008 11:36:52 +0000 (11:36 +0000)]
Prevent master failover if we have wrong data
If we don't actually know the current master (as determined via voting),
we prevent the failover.
The patch also changes some messages (capitalization, typos).
Reviewed-by: ultrotter
Iustin Pop [Thu, 16 Oct 2008 11:36:17 +0000 (11:36 +0000)]
Improvements to the master startup checks
In order to account for future improvements to master failover, we move
the actual data gathering capabilities from ganeti-masterd into
bootstrap.py, and we leave only the verification into masterd.
The verification procedure is then changed to retry multiple times (up
to one minute) in case most nodes do not respond, and also the algorithm
is changed to require at least half (but not half+1) votes, since our
vote also should count (and we vote for ourselves).
Example for consistent (config-wise) cluster:
- 5 node cluster, 2 nodes down: still start
- 4 node cluster, 2 nodes down: retry for one minute, abort
Reviewed-by: ultrotter
René Nussbaumer [Thu, 16 Oct 2008 08:37:14 +0000 (08:37 +0000)]
Provide example for backend parameters
Update the design about cluster parameters and provide
some example of backend parameters. By now this includes
all supported parameters.
Reviewed-by: iustinp, ultrotter
Iustin Pop [Thu, 16 Oct 2008 08:37:00 +0000 (08:37 +0000)]
Add an interface for the drain flag changes/query
This adds the set/reset in the jqueue and luxi modules, and a way to
query it in OpQueryConfigValues, and also the comand line interface for
it:
$ gnt-cluster queue info
The drain flag is unset
$ gnt-cluster queue drain
$ gnt-cluster queue info
The drain flag is set
$ gnt-cluster queue undrain
$ gnt-cluster queue info
The drain flag is unset
The choice of making the setting via luxi and not an opcode is that
opcodes can't be executed when drained, but we don't query via luxi
since in the future it might become a cluster property as opposed to a
node one.
Reviewed-by: imsnah
René Nussbaumer [Wed, 15 Oct 2008 13:38:49 +0000 (13:38 +0000)]
Adding batch-create to gnt-instance
This change is part of the integration of tools/batcher from
Ganeti 1.2 into Ganeti 2.0 core code. It has a compatible
submission interface to the version from 1.2 with these differences:
* it's integrated into Ganeti directly: gnt-instance batch-create
* iallocator is now provided by the instance specs
* log is now held within Ganeti
* no force needed
* no sleep needed
* memory and vcpus goes now into beparams
* missing stuff from the TODO (see below)
Open TODOs:
* Implement notification about creation status/interactive part (top like)
* Backup instance allocation specs?
* Document usage and spec format
Reviewed-by: iustinp
Iustin Pop [Wed, 15 Oct 2008 13:13:36 +0000 (13:13 +0000)]
Add a rpc call for changing the drain flag
A new multi-node call is added that sets/resets the drain flag.
Reviewed-by: imsnah
Iustin Pop [Wed, 15 Oct 2008 10:52:07 +0000 (10:52 +0000)]
Implement the job queue drain flag
We add a (per-node) queue drain flag that blocks new job submission.
There is not yet an interface to add/remove the flag (will come in next
patches).
Reviewed-by: imsnah
Iustin Pop [Wed, 15 Oct 2008 10:51:51 +0000 (10:51 +0000)]
Implement transport of ganeti errors across luxi
This patch adds a generic method to identify the ganeti error given its
class name, and implements this across the luxi protocol.
Reviewed-by: imsnah
Iustin Pop [Wed, 15 Oct 2008 10:51:14 +0000 (10:51 +0000)]
Change the JobQueueError parent class
Currently this is not derived from GenericError, but there's no reason
for it to be so.
Reviewed-by: imsnah
Michael Hanselmann [Wed, 15 Oct 2008 10:13:01 +0000 (10:13 +0000)]
rapi: Don't throw class as an exception
Reviewed-by: ultrotter
Michael Hanselmann [Wed, 15 Oct 2008 08:22:54 +0000 (08:22 +0000)]
rapi: Whitespace fixes
Reviewed-by: ultrotter
Guido Trotter [Tue, 14 Oct 2008 16:34:04 +0000 (16:34 +0000)]
gnt-backup: update for cluster parameters
- add backend and hypervisor parameters
- fix beparams validation/passing
- pass hypervisor and hvparams
- remove deprecated flags
Reviewed-by: iustinp
Guido Trotter [Tue, 14 Oct 2008 16:33:53 +0000 (16:33 +0000)]
gnt-instance fix ValidateBeParams call
ValidateBeParams does not return, but its return value is assigned to a
variable which is never used. Avoid this assignment.
Reviewed-by: iustinp
Guido Trotter [Tue, 14 Oct 2008 16:33:41 +0000 (16:33 +0000)]
gnt-instance remove deprecated flags
kernel, initrd, hvm_boot_order and vnc_bind_address are now hypervisor
parameters and should not have their own flag. Moreover querying of
vnc_bind_address should of course pass through the hv/ namespace.
Reviewed-by: iustinp
Iustin Pop [Tue, 14 Oct 2008 16:23:02 +0000 (16:23 +0000)]
grow-disk: wait until resync is completed
The patch adds a new ‘--no-wait-for-sync’ parameter to grow-disk similar
to the one in instance add, and changes the default to wait.
This is cleaner as at the moment when the command returns, we either
have a fully synced disk or there is an error.
This is a forward-port of rev 1183 on the 1.2 branch.
Reviewed-by: ultrotter
Iustin Pop [Tue, 14 Oct 2008 16:22:14 +0000 (16:22 +0000)]
Burnin OpGrowDisk
With this patch both the os and the swap disk are grown during
burnin. You can pass an increase size of 0 to skip this operation.
and:
burnin: don't try to grow diskless instances
When burnin is run on a diskless instance, it fails when trying
GrowDisk, because a non-existant disk cannot be grown. This patch
disables the test for that disk template.
This is a forward-port of revisions 1181 and 1606 on the 1.2 branch.
Original author: ultrotter
Reviewed-by: ultrotter
Iustin Pop [Tue, 14 Oct 2008 14:47:32 +0000 (14:47 +0000)]
Convert the KVM hypervisor to hvparams
I'm not sure which parameters it should use, I took all I saw in the
code. Update: ultrotter says the list is OK for now.
Reviewed-by: ultrotter
Iustin Pop [Tue, 14 Oct 2008 14:42:49 +0000 (14:42 +0000)]
Some fixes related to auto_balance
Change the constant name to match the value (autobalance ->
auto_balance).
Also add the auto_balance header so that gnt-instance can list it.
Reviewed-by: ultrotter
Iustin Pop [Tue, 14 Oct 2008 14:42:39 +0000 (14:42 +0000)]
Fix auto_balance and memory modification
The secondary nodes should not be checked for free memory in case of non
auto-balanced instances.
This is a forward-port from rev 1567 on the 1.2 branch.
Reviewed-by: ultrotter
Iustin Pop [Tue, 14 Oct 2008 14:42:31 +0000 (14:42 +0000)]
Use the auto_balance in cluster verify
This patch changes the cluster verify in two ways:
- do not use instances marked with auto_balance=False in N+1 memory
checks
- report, if any, the number of instances with auto_balance=False
Forward port from rev 1562 on the 1.2 branch.
Reviewed-by: ultrotter
Iustin Pop [Tue, 14 Oct 2008 14:42:23 +0000 (14:42 +0000)]
Fix ordering of instance/nodes
After the locking changes, and the partial locking of nodes, the
instance/node list is not ordered anymore. Reorder so that it behaves as
before.
Reviewed-by: ultrotter
Iustin Pop [Tue, 14 Oct 2008 11:30:03 +0000 (11:30 +0000)]
Remove old instance attributes
Reviewed-by: ultrotter
Iustin Pop [Tue, 14 Oct 2008 11:29:55 +0000 (11:29 +0000)]
Change over to beparams
This big patch changes the master code to use the beparams. Errors might
have crept in, but it passes a small burnin.
Reviewed-by: ultrotter
Iustin Pop [Tue, 14 Oct 2008 11:29:44 +0000 (11:29 +0000)]
Change the backend to use the beparams
The backend.FinalizeExport function is changed to use the beparams
instead of the instance attributes. Future enhancements should be done
in order to export and import/reuse the whole be/hv params.
Reviewed-by: ultrotter
Iustin Pop [Tue, 14 Oct 2008 11:29:36 +0000 (11:29 +0000)]
Change hypervisors to use the beparams
This patch changes the hypervisor functions to use the beparams dict
instead of the instance attributes.
Reviewed-by: ultrotter
Iustin Pop [Tue, 14 Oct 2008 11:29:28 +0000 (11:29 +0000)]
Correctly fill the beparams too over RPC
As for the hvparams, we need to replace the sent instance beparams.
Reviewed-by: ultrotter
Iustin Pop [Tue, 14 Oct 2008 11:29:20 +0000 (11:29 +0000)]
Add cli function for beparams validation
This is used to validate the parameters in both “gnt-instance add” and
“gnt-backup import”.
Reviewed-by: ultrotter
Iustin Pop [Tue, 14 Oct 2008 11:29:12 +0000 (11:29 +0000)]
Modify the beparams constants
Memory is renamed for easier use.
Reviewed-by: ultrotter
Iustin Pop [Tue, 14 Oct 2008 10:21:20 +0000 (10:21 +0000)]
Fix a bug with instance creation and hvparameters
When creating an instance, we need to check not the opcode hvparams, but
the final, filled hvparams against validity. While we do this for the
remote node calls (i.e. ValidateParams), we didn't do this for
CheckParameterSyntax.
Reviewed-by: imsnah
Iustin Pop [Tue, 14 Oct 2008 10:21:12 +0000 (10:21 +0000)]
Allow instance info to only query the config file
This patch adds a new '-s' parameter to ‘gnt-instance info’ that makes
it return only 'static' information. This is much faster, especially for
drbd instances.
This is a forward-port of rev 1570 on the ganeti-1.2 branch, resending
due to some conflicts.
Reviewed-by: imsnah
Iustin Pop [Tue, 14 Oct 2008 10:21:00 +0000 (10:21 +0000)]
Convert gnt-instance info to the hvparams model
Some informations are not printed nicely (e.g. “virtual CDROM: False”),
but this is the first step.
Reviewed-by: imsnah
Iustin Pop [Tue, 14 Oct 2008 10:20:50 +0000 (10:20 +0000)]
Change gnt-instance modify to the hvparams model
Reviewed-by: imsnah
Iustin Pop [Tue, 14 Oct 2008 10:20:32 +0000 (10:20 +0000)]
Change gnt-instance list to the hvparams model
This is just a change of the various hvm_ and pvm parameters to the hv
model. Parameters are queried via hv/$name or via the whole dict as
returned by hvparams.
Reviewed-by: ultrotter,imsnah
Iustin Pop [Tue, 14 Oct 2008 10:20:21 +0000 (10:20 +0000)]
Switch instance hypervisor parameters to hvparams
This big patch changes instance create to the new hvparams structure.
Old parameters are removed, so old jobs or old instances file will break
current clusters.
Reviewed-by: ultrotter
Iustin Pop [Tue, 14 Oct 2008 10:20:10 +0000 (10:20 +0000)]
Temporary fix for dual hvm/pvm instances
We have a problem with the current model of combining instance lists
from multiple hypervisors: we don't allow duplicates, but "xm list"
gives the same output for both pvm and hvm. This is a lack in the actual
xen hypervisor implementation/split between pvm and hvm, but for now we
implement a weak workaround: identical instance params will be allowed,
and merged. This breaks because there is a delta in listing, and should
be treated as temporary workaround only.
Note that there are two cases for duplicate instance: the above one (xen
is the same, whether pvm or hvm), and the other case, the real error,
when we have two different hypervisors reporting the same instance name.
The latter case needs to be handled better (not by refusing to list the
instances in the backend).
Reviewed-by: ultrotter
Iustin Pop [Tue, 14 Oct 2008 10:20:01 +0000 (10:20 +0000)]
Implement FillHV for instance-related rpc calls
We fill the instance hvparams with cluster defaults, and send a modified
dict over the wire to the node methods - they don't know anything about
cluster defaults versus instance parameters.
Reviewed-by: ultrotter
Iustin Pop [Tue, 14 Oct 2008 10:19:52 +0000 (10:19 +0000)]
Export the hypervisor.ValidateParameters over RPC
The newly-added node-specific ValidateParams hypervisor method is
exported over RPC, using the semi-standard (success, message) return
value. Multi-node call, so that we call on both primary and secondary at
once.
Reviewed-by: ultrotter
Iustin Pop [Tue, 14 Oct 2008 10:19:40 +0000 (10:19 +0000)]
Implement the new hypervisor API in base/xen
This patch adds the new methods CheckParameterSyntax and the
ValidateParameters in the base and xen hypervisors. It also changes the
xen hypervisor to use the new hvparams field on instance.
Reviewed-by: imsnah
Michael Hanselmann [Tue, 14 Oct 2008 08:24:52 +0000 (08:24 +0000)]
Get rid of httperror module
This was a leftover from the early days of the remote API in Ganeti 1.2.
Reviewed-by: ultrotter
Iustin Pop [Tue, 14 Oct 2008 06:38:44 +0000 (06:38 +0000)]
Implement parameter removal in SplitKeyVal
This patch adds paramter removal in SplitKeyVal, by prefixing a
value-less key with "-"; this is needed in resetting parameters back to
cluster defaults, but care must be applied now that None can come from
the parser.
Reviewed-by: imsnah
Iustin Pop [Tue, 14 Oct 2008 06:36:39 +0000 (06:36 +0000)]
Add the hv/be params object attributes
This patch adds the instance and cluster be/hvparams attributes, and the
Fill* methods on the cluster object. Nothing else is changes, except
that these attributes exist now on the objects.
Reviewed-by: ultrotter
Iustin Pop [Tue, 14 Oct 2008 06:36:31 +0000 (06:36 +0000)]
Add constants for the HV/BE parameter names
Since we don't want the string values of the parameters (e.g.
“kernel_path”) spread over the code, we introduce constants for these.
Reviewed-by: ultrotter,schreiberal
Iustin Pop [Mon, 13 Oct 2008 13:49:50 +0000 (13:49 +0000)]
Fix a few rpc-related errors
This fixes:
- whitespace change, double lines between methods
- duplication of call_upload_file, introduced by mistake in rev 1795
and which went undetected because of the many changes in that ref
(only diff -b shows it clearly)
- call_instance_info didn't pass the hypervisor name parameter, but
the backend requires it
Reviewed-by: ultrotter
Iustin Pop [Mon, 13 Oct 2008 12:17:12 +0000 (12:17 +0000)]
Add two new options types for CLI usage
For the new 2.0-style command line options, we need to parse strings of
the type:
ident:key=val[,...]
and
key=val[,...]
This patch adds two new option builders for these two, which return
(ident, {key=val,}) and {key=val,} for the above two formats. It also
handles specially constructs of type “key” (val is set to True) and
“no_key” (val is set to False, and the ‘no_’ prefix is stripped).
Reviewed-by: imsnah
Iustin Pop [Mon, 13 Oct 2008 12:15:58 +0000 (12:15 +0000)]
Some small typos on design docs
Reviewed-by: imsnah
Iustin Pop [Mon, 13 Oct 2008 09:19:31 +0000 (09:19 +0000)]
Update the cluster parameters design doc
As discussed, we update the design doc with the three classes of
parameters and other changes.
Reviewed-by: imsnah
Iustin Pop [Sun, 12 Oct 2008 20:40:44 +0000 (20:40 +0000)]
Abstract checking own address into a function
Currently, we check if we have a given ip address (i.e. it's alive on
one of our interfaces) but manually calling TcpPing(source=localhost).
This works, but having it spread all over the code makes it hard to
change the implementation.
The patch abstracts this into a separate utils.OwnIpAddress(addr)
function. We add a rpc call for it, which we use instead of the
(single-use of) call_node_tcp_ping. We leave node_tcp_ping in, as seems
useful and eventually it should be removed in a separate patch.
Reviewed-by: imsnah
Michael Hanselmann [Fri, 10 Oct 2008 17:08:09 +0000 (17:08 +0000)]
Mark call_node_leave_cluster as a static method
Reviewed-by: iustinp
Guido Trotter [Fri, 10 Oct 2008 16:04:43 +0000 (16:04 +0000)]
OS API: support for multiple versions in an OS
Allow multiple api versions in an OS. This is according to the OS API
changes design doc, by which an OS can support multiple versions of the
Ganeti API and if one is supported by Ganeti it will work. Since up to
version 5 of the API mandates an OS could support only one version, this
change is retrocompatible with it and requires no version bump up.
Reviewed-by: iustinp