ganeti-local
14 years agoFix lint warnings after my last changes
Michael Hanselmann [Fri, 22 Jan 2010 15:51:43 +0000 (16:51 +0100)]
Fix lint warnings after my last changes

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

14 years agoRemove http.HttpJsonConverter
Michael Hanselmann [Wed, 2 Dec 2009 16:53:19 +0000 (17:53 +0100)]
Remove http.HttpJsonConverter

With the move of the content-type handling to the various users of the HTTP
layer, this class isn't really useful anymore.

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

14 years agorapi: Don't access request's private object directly
Michael Hanselmann [Wed, 20 Jan 2010 11:41:18 +0000 (12:41 +0100)]
rapi: Don't access request's private object directly

This way the request handlers don't need as much knowledge
about the inside of the request and context objects and it
makes the code a bit shorter.

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

14 years agohttp.server: No longer enfore JSON encoding for body
Michael Hanselmann [Wed, 2 Dec 2009 16:48:55 +0000 (17:48 +0100)]
http.server: No longer enfore JSON encoding for body

The HTTP layer shouldn't care about the contents of the request data or
responses. This requires further changes in the RAPI code to handle client
requests correctly.

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

14 years agohttp.server: Refuse HTTP/1.1 request without Host header
Michael Hanselmann [Thu, 3 Dec 2009 15:20:34 +0000 (16:20 +0100)]
http.server: Refuse HTTP/1.1 request without Host header

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

14 years agoganeti-rapi: Remove serial number/ETag code
Michael Hanselmann [Wed, 2 Dec 2009 16:53:05 +0000 (17:53 +0100)]
ganeti-rapi: Remove serial number/ETag code

It was never used as intended.

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

14 years agohttp: Add two new exceptions, one constant
Michael Hanselmann [Wed, 2 Dec 2009 16:36:44 +0000 (17:36 +0100)]
http: Add two new exceptions, one constant

These will be useful in the future in case we don't enfore JSON encoding
anymore in the http.server module. The HTTP 1.1 RFC recommends error 415
(Unsupported Media Type) to be returned in case the client requests an
unsupported content-type. If the client doesn't send a “Content-Type” in
the request, a content-type of “application/octet-stream” is implied.

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

14 years agoFactorize LUXI parsing and handling code
Michael Hanselmann [Mon, 18 Jan 2010 15:43:41 +0000 (16:43 +0100)]
Factorize LUXI parsing and handling code

Also fix a typo in http/__init__.py and add unittests
for the LUXI parsing and formatting functions.

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

14 years agoSimplify LUXI exceptions
Michael Hanselmann [Wed, 2 Dec 2009 10:59:36 +0000 (11:59 +0100)]
Simplify LUXI exceptions

Having only one exception hierarchy makes catching them simpler. Before
ProtocolError would derive directly from Exception, but with this patch
it'll also be in the hierarchy defined by the ganeti.errors module.
Separating encoding and decoding errors is not necessary at this point
as they're never handled separately, and merging them removes a few
lines from the code.

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

14 years agoMerge remote branch 'devel-2.1'
Iustin Pop [Mon, 4 Jan 2010 10:54:59 +0000 (11:54 +0100)]
Merge remote branch 'devel-2.1'

* devel-2.1: (40 commits)
  Fix unused imports or add silences where needed
  bdev: Add a TODO and a pylint silence
  confd: add a TODO and a pylint disable
  pylint: Temporarily disable W0201
  Disable R0922 in pylint
  Further pylint disables, mostly for Unused args
  pylint: disable the similarities checker
  LUDiagnoseOS._DiagnoseByOS: remove unused arg
  daemons: handle arguments correctly and uniformly
  hv_xen/_GetConfigFileDiskData: remove unused arg
  jqueue/_CheckRpcResult: log the whole operation
  Optparse extenders have to obey a given API
  backend._OSOndiskAPIVersion: remove obsolete arg
  pylint cleanups: dangerous initializers
  Convert to static methods (where appropriate)
  Remove more unused variables
  Add targeted pylint disables
  burnin: move decorators out of classes
  Rename an ConfdInotifyEventHandler init argument
  Introduce a makefile lint rule
  ...

Conflicts:
daemons/ganeti-confd  - removed imports
daemons/ganeti-noded  - fixed new GenericMain

14 years agoFix unused imports or add silences where needed
Iustin Pop [Tue, 29 Dec 2009 18:03:22 +0000 (19:03 +0100)]
Fix unused imports or add silences where needed

In some cases pylint doesn't parse the import correctly, so we add
silences; but there are also many cases of unused imports, which we
simply remove.

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

14 years agobdev: Add a TODO and a pylint silence
Iustin Pop [Tue, 29 Dec 2009 18:01:33 +0000 (19:01 +0100)]
bdev: Add a TODO and a pylint silence

A piece of old code in bdev.py uses a for loop over a single variable
because we can 'break' out of the loop or exit on the 'else' path. This
is not a nice usage of the for loop, it should be converted to a
standard if...elif...else structure.

In the meantime we silence a warning from pylint (it is actually
invalid, IMHO) and add a TODO.

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

14 years agoconfd: add a TODO and a pylint disable
Iustin Pop [Tue, 29 Dec 2009 18:00:42 +0000 (19:00 +0100)]
confd: add a TODO and a pylint disable

Two variables are used in a strange way in ExecConfd. Until that is
clarified, add a TODO and a silence for the unused variable warning.

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

14 years agopylint: Temporarily disable W0201
Iustin Pop [Tue, 29 Dec 2009 17:58:25 +0000 (18:58 +0100)]
pylint: Temporarily disable W0201

There seems to be a bug in pylint relating to W0201 (“Attribute '%r'
defined outside __init__”) being re-enabled by simple comments and not
being able to be disabled again.

Until that is fixed, we disable this warning.

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

14 years agoDisable R0922 in pylint
Iustin Pop [Tue, 29 Dec 2009 17:52:29 +0000 (18:52 +0100)]
Disable R0922 in pylint

R0922, “Abstract class is only referenced 1 times”, cannot be disabled
in the source code, and thus
lib/http/auth.py:HttpServerRequestAuthentication gives this warning
(it's actually also referenced from the tests, but we do not include
them).

Therefore we need to disable it at pylintrc level.

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

14 years agoFurther pylint disables, mostly for Unused args
Iustin Pop [Tue, 29 Dec 2009 16:53:57 +0000 (17:53 +0100)]
Further pylint disables, mostly for Unused args

Many of our functions have to follow a given API, and thus we have to
keep a given signature, but pylint doesn't understand this. Therefore,
we silence this warning.

The patch does a few other cleanups.

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

14 years agopylint: disable the similarities checker
Iustin Pop [Tue, 29 Dec 2009 16:49:36 +0000 (17:49 +0100)]
pylint: disable the similarities checker

This is a very slow checker, estimated to be O(n²) by its author; so
using it all the time is not good. It can be re-enabled on the command
line via “--disable-checker=”.

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

14 years agoLUDiagnoseOS._DiagnoseByOS: remove unused arg
Iustin Pop [Tue, 29 Dec 2009 16:21:19 +0000 (17:21 +0100)]
LUDiagnoseOS._DiagnoseByOS: remove unused arg

The node_list argument to _DiagnoseByOS is not used, and is obsoleted by
the fact that the rlist argument already has the valid nodes as keys
(assuming RPC behaviour didn't change). Thus, we remove it and silence
the warning.

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

14 years agodaemons: handle arguments correctly and uniformly
Iustin Pop [Tue, 29 Dec 2009 16:05:23 +0000 (17:05 +0100)]
daemons: handle arguments correctly and uniformly

Of all daemons, only rapi did abort when given argument. None of our
daemons use any arguments, but they accepted them blindly. This is a
very bad experience for the user.

This patch adds checking and exiting in all daemons, in a uniform way.
One other option would have been to add a flag to GenericMain
(noargs=True).

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

14 years agohv_xen/_GetConfigFileDiskData: remove unused arg
Iustin Pop [Tue, 29 Dec 2009 15:40:23 +0000 (16:40 +0100)]
hv_xen/_GetConfigFileDiskData: remove unused arg

The disk template is not needed, all that's used is the disk data. As
such, remove this parameter from the function.

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

14 years agojqueue/_CheckRpcResult: log the whole operation
Iustin Pop [Tue, 29 Dec 2009 15:33:11 +0000 (16:33 +0100)]
jqueue/_CheckRpcResult: log the whole operation

Currently only the rpc call, but not its description (which also shows
the argument) is logged. We change this to log failmsg too, and this
also silences a warning.

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

14 years agoOptparse extenders have to obey a given API
Iustin Pop [Tue, 29 Dec 2009 15:16:33 +0000 (16:16 +0100)]
Optparse extenders have to obey a given API

So we just silence the warning.

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

14 years agobackend._OSOndiskAPIVersion: remove obsolete arg
Iustin Pop [Tue, 29 Dec 2009 15:12:44 +0000 (16:12 +0100)]
backend._OSOndiskAPIVersion: remove obsolete arg

The 'name' argument is not used anymore, probably since before 2.0.
Since this is an internal function, we can just remove it (from its
caller too).

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

14 years agopylint cleanups: dangerous initializers
Iustin Pop [Tue, 29 Dec 2009 15:05:19 +0000 (16:05 +0100)]
pylint cleanups: dangerous initializers

Plus a silence for a wrong "uninitialized var".

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

14 years agoConvert to static methods (where appropriate)
Iustin Pop [Tue, 29 Dec 2009 15:04:31 +0000 (16:04 +0100)]
Convert to static methods (where appropriate)

Many methods are simple pure functions, and not depending on the object
state. We convert these to staticmethods.

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

14 years agoRemove more unused variables
Iustin Pop [Tue, 29 Dec 2009 15:03:44 +0000 (16:03 +0100)]
Remove more unused variables

This removes unused variables in the rest of the code (outside lib/).

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

14 years agoAdd targeted pylint disables
Iustin Pop [Tue, 29 Dec 2009 15:01:57 +0000 (16:01 +0100)]
Add targeted pylint disables

This patch should have only:

- pylint disables
- docstring changes
- whitespace changes

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

14 years agoburnin: move decorators out of classes
Iustin Pop [Tue, 29 Dec 2009 14:02:32 +0000 (15:02 +0100)]
burnin: move decorators out of classes

Similar to commit c881c5, we move the decorators out of classes, such
that they become simple functions instead of methods. This more clean,
since only the wrapped functions need to be methods/have access to
‘self’.

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

14 years agoRename an ConfdInotifyEventHandler init argument
Iustin Pop [Tue, 29 Dec 2009 11:18:20 +0000 (12:18 +0100)]
Rename an ConfdInotifyEventHandler init argument

'file' is a builtin keyword/type. Like many others, it should not be
used as a variable/argument name.

No code is actually passing in this argument so renaming it is simple.

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

14 years agoIntroduce a makefile lint rule
Iustin Pop [Tue, 29 Dec 2009 11:04:27 +0000 (12:04 +0100)]
Introduce a makefile lint rule

This runs pylint over all the python files. Yes, it takes a long while,
but it's the only way to properly analyze the source codes as only in
this way pylint can see all uses of the various modules/classes/etc.

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

14 years agoImplement all hv functions in hv_chroot/hv_fake
Iustin Pop [Tue, 29 Dec 2009 10:23:32 +0000 (11:23 +0100)]
Implement all hv functions in hv_chroot/hv_fake

The chroot and fake hypervisors were missing:

- the powercycle node functionality
- proper handling of migration requests

The powercycle was just used as in the other hypervisors (use the
standard linux powercycle). The migration for chroot was disabled
explicitly, whereas for the fake one it was implemented to simulate
correctly. This required some work on the fake hypervisor, but now the
implementation of start/stop/etc. is much more clean.

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

14 years agoUpdate the _autoconf.py make rule for pylint
Iustin Pop [Tue, 29 Dec 2009 09:43:44 +0000 (10:43 +0100)]
Update the _autoconf.py make rule for pylint

This adds targeted pylint disables, but since _autoconf.py is
autogenerated we need to do this in Makefile.am (hence the separate
patch).

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

14 years agoDisable TODO warnings in pylint
Iustin Pop [Mon, 28 Dec 2009 16:40:52 +0000 (17:40 +0100)]
Disable TODO warnings in pylint

We don't get any useful out of this - a git grep is as effective, and
these only pollute the pylint output.

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

14 years agoAdd some stubs to bdev.FileStorage
Iustin Pop [Mon, 28 Dec 2009 16:03:56 +0000 (17:03 +0100)]
Add some stubs to bdev.FileStorage

This patch adds explicit errors (instead of notimplemented) in
FileStorage (and the associated TODOs).

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

14 years agoFix indentation issues
Iustin Pop [Mon, 28 Dec 2009 14:43:37 +0000 (15:43 +0100)]
Fix indentation issues

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

14 years agoFix two bugs in ConfigWriter._EnsureUUID
Iustin Pop [Mon, 28 Dec 2009 14:17:45 +0000 (15:17 +0100)]
Fix two bugs in ConfigWriter._EnsureUUID

Wrong argument name and wrong number of arguments in string formatting.

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

14 years agoKVM: Abstract/rework instance up checks
Iustin Pop [Mon, 28 Dec 2009 13:54:33 +0000 (14:54 +0100)]
KVM: Abstract/rework instance up checks

This patch abstract the check "is instance stopped" into a separate
function, and thus simplifies a couple of higher-level functions. It
also moves from manual read of the pidfile to use the (correct
abstraction of) _InstancePidAlive.

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

14 years agoKVM: Split out the pidfile computation
Iustin Pop [Mon, 28 Dec 2009 13:48:26 +0000 (14:48 +0100)]
KVM: Split out the pidfile computation

In some cases we only need the pidfile, but not the pid or the alive
status.

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

14 years agoFix an error message
Iustin Pop [Mon, 28 Dec 2009 13:41:39 +0000 (14:41 +0100)]
Fix an error message

Detected by an 'Unused variable' warning.

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

14 years agoRemove many 'Unused variable' warnings
Iustin Pop [Mon, 28 Dec 2009 13:39:20 +0000 (14:39 +0100)]
Remove many 'Unused variable' warnings

Note there are some cases left which need extra cleanup.

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

14 years agoFix use of the logging functions
Iustin Pop [Mon, 28 Dec 2009 12:55:29 +0000 (13:55 +0100)]
Fix use of the logging functions

The logging functions expand the arguments themselves, thus it's safer
to let them do it rather than manual string formatting.

Also re-wraps one comment.

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

14 years agoMerge branch 'devel-2.0' into devel-2.1
Iustin Pop [Mon, 28 Dec 2009 12:05:40 +0000 (13:05 +0100)]
Merge branch 'devel-2.0' into devel-2.1

* devel-2.0:
  Fix indentation in hv_kvm
  Implement BuildHooksEnv for NoHooksLU
  Clarifiy some more wide pylint disables
  Fix two bugs in seldom-used codepaths
  Update pylintrc
  Add targetted pylint disables
  Partial cherry-pick of 6c881c5 from the 2.1 branch
  Add a release script
  Fix a typo in the doc string

Conflicts:
lib/cli.py
lib/cmdlib.py
lib/hypervisor/hv_kvm.py
lib/jstore.py
lib/locking.py
lib/mcpu.py
lib/rapi/rlib2.py

Many of the conflicts were on code removed from 2.1, so the resolving was
trivial.

14 years agoFix indentation in hv_kvm
Iustin Pop [Mon, 21 Dec 2009 16:08:13 +0000 (17:08 +0100)]
Fix indentation in hv_kvm

Per pylint warnings.

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

14 years agoImplement BuildHooksEnv for NoHooksLU
Iustin Pop [Mon, 21 Dec 2009 15:51:40 +0000 (16:51 +0100)]
Implement BuildHooksEnv for NoHooksLU

This just adds a stub function that raises an assertion error; this
accomplishes two things:

- silences many pylint warnings
- if we ever stumble upon this, a specific assertion error is
  (hopefully) clearer than just a not implemented error

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

14 years agoClarifiy some more wide pylint disables
Iustin Pop [Mon, 21 Dec 2009 15:44:21 +0000 (16:44 +0100)]
Clarifiy some more wide pylint disables

This removes/updates some module-wide pylint disables.

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

14 years agoFix two bugs in seldom-used codepaths
Iustin Pop [Mon, 21 Dec 2009 15:21:07 +0000 (16:21 +0100)]
Fix two bugs in seldom-used codepaths

New version of pylint, new bugs found!

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

14 years agoUpdate pylintrc
Iustin Pop [Mon, 21 Dec 2009 15:19:35 +0000 (16:19 +0100)]
Update pylintrc

Since the current pylintrc is in now way good for our style, we update
it:

- remove docstring checks, since we have too many cases where a
  docstring doesn't make sense
- relax naming rules to cover more alternatives (but not break the
  naming rules)
- increase many of the limits

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

14 years agoAdd targetted pylint disables
Iustin Pop [Mon, 21 Dec 2009 15:12:43 +0000 (16:12 +0100)]
Add targetted pylint disables

This patch adds targeted pylint disables, where it makes sense (either
due to limitations in pylint or due to historical usage), and also a few
blanket ones in rapi where all the names are… “different”.

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

14 years agoPartial cherry-pick of 6c881c5 from the 2.1 branch
Iustin Pop [Wed, 4 Nov 2009 13:09:53 +0000 (14:09 +0100)]
Partial cherry-pick of 6c881c5 from the 2.1 branch

This cherry-picks the utils.FieldSet.Matches changes and the significant
jqueue.py change. These are stable in the 2.1 branch and therefore make
sense to backport to 2.0 (are basically cleanups).

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

14 years agoAdd a release script
Iustin Pop [Fri, 18 Dec 2009 13:09:44 +0000 (14:09 +0100)]
Add a release script

Currently releases are done via the manual procedure on
http://code.google.com/p/ganeti/wiki/ReleaseProcess, but that is not
very reliable, and breaks for rc releases. The 1.2.9/2.0.5/2.1.0~rc2
releases were done with this new script that eases the process.

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

14 years agoFix a typo in the doc string
René Nussbaumer [Fri, 18 Dec 2009 12:59:12 +0000 (13:59 +0100)]
Fix a typo in the doc string

MaybeRaise in lib/errors.py had a typo in the doc string

Signed-off-by: René Nussbaumer <rn@google.com>
Signed-off-by: Iustin Pop <iustin@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

14 years agoMerge branch 'devel-2.1'
Iustin Pop [Wed, 16 Dec 2009 14:10:18 +0000 (15:10 +0100)]
Merge branch 'devel-2.1'

* devel-2.1:
  Bump version to 2.1.0~rc2
  Update NEWS file and release Ganeti 2.0.5
  Doc updates for --no-name-check
  burnin: add --no-name-check support
  CreateInstance: allow no ip check with start mode
  Command line/RAPI support for --no-name-check
  Op/LUCreateInstance support for (no) name checks
  Pass --fqdn to ssh hostname checks
  Security issue: add validation of script names
  Move the hooks file mask into constants.py
  Improve LUQueryNodes for lockless case
  Ship rapi.rst/rapi.html in the dist archive

14 years agoMerge branch 'stable-2.1' into devel-2.1
Iustin Pop [Wed, 16 Dec 2009 14:10:04 +0000 (15:10 +0100)]
Merge branch 'stable-2.1' into devel-2.1

* stable-2.1:
  Bump version to 2.1.0~rc2
  Update NEWS file and release Ganeti 2.0.5
  Security issue: add validation of script names
  Move the hooks file mask into constants.py
  Improve LUQueryNodes for lockless case
  Ship rapi.rst/rapi.html in the dist archive

14 years agoBump version to 2.1.0~rc2 v2.1.0rc2
Iustin Pop [Wed, 16 Dec 2009 14:07:58 +0000 (15:07 +0100)]
Bump version to 2.1.0~rc2

14 years agoMerge branch 'stable-2.0' into stable-2.1
Iustin Pop [Wed, 16 Dec 2009 13:51:41 +0000 (14:51 +0100)]
Merge branch 'stable-2.0' into stable-2.1

* stable-2.0:
  Update NEWS file and release Ganeti 2.0.5
  Security issue: add validation of script names
  Move the hooks file mask into constants.py
  Improve LUQueryNodes for lockless case
  Ship rapi.rst/rapi.html in the dist archive

Conflicts:
Makefile.am    (reverted, not needed)
NEWS           (simple fix for RST-ification)
configure.ac   (reverted, not needed)
lib/backend.py (adapted to new RPC result style)

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

14 years agoUpdate NEWS file and release Ganeti 2.0.5 v2.0.5
Iustin Pop [Wed, 16 Dec 2009 13:20:48 +0000 (14:20 +0100)]
Update NEWS file and release Ganeti 2.0.5

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

14 years agoDoc updates for --no-name-check
Iustin Pop [Mon, 14 Dec 2009 16:56:57 +0000 (17:56 +0100)]
Doc updates for --no-name-check

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

14 years agoburnin: add --no-name-check support
Iustin Pop [Mon, 14 Dec 2009 17:07:05 +0000 (18:07 +0100)]
burnin: add --no-name-check support

This patch modifies burnin to accept the --no-name-check option and also
adds --no-ip-check (which was always set to True before).

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

14 years agoCreateInstance: allow no ip check with start mode
Iustin Pop [Mon, 14 Dec 2009 16:54:58 +0000 (17:54 +0100)]
CreateInstance: allow no ip check with start mode

Since gnt-instance start doesn't do any checks on the IP, it doesn't
make much sense to do so in instance create (with start) if the user
expressly passes in ‘--no-ip-check’. Removing this requirement eases the
no-name-check mode (otherwise one would have to create --no-start and
then only start).

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

14 years agoCommand line/RAPI support for --no-name-check
Iustin Pop [Mon, 14 Dec 2009 16:51:31 +0000 (17:51 +0100)]
Command line/RAPI support for --no-name-check

This patch adds --no-name-check to gnt-instance add and gnt-backup
import. This is opposite to the opcode parameter (name_check) as it is
similar to ip_check and start.

It also adds it to RAPI and gnt-instance batch-create as a parameter in
the input (JSON-formatted) file.

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

14 years agoOp/LUCreateInstance support for (no) name checks
Iustin Pop [Mon, 14 Dec 2009 16:48:53 +0000 (17:48 +0100)]
Op/LUCreateInstance support for (no) name checks

This adds a new opcode parameter ‘name_check’ (similar to ip_check) that
is not required to be present (to easy backwards compatibility for
tools).

It also adds a CheckArguments to LUCreateInstance and changes the
workflow related to instance IP checks and NIC initialisation based on
it.

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

14 years agoPass --fqdn to ssh hostname checks
Iustin Pop [Mon, 14 Dec 2009 17:14:31 +0000 (18:14 +0100)]
Pass --fqdn to ssh hostname checks

The cluster verify checks for fqdn are done via address lookups, and
there we actually use the FQDN. However, for the ssh hostname check
which is done at node add time, we rely on the default of the “hostname”
command. And Debian for example recently changed the default to return
the shortname unless one passes ‘--fqdn’.

This patch is imported from the Debian packaging.

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

14 years agoSecurity issue: add validation of script names
Iustin Pop [Tue, 1 Dec 2009 14:08:29 +0000 (15:08 +0100)]
Security issue: add validation of script names

This patch unifies the search for external script to always go through
utils.FindFile and implements in that function a restriction on valid
chars in file names and (additionally) that the passed name is the
basename of the final (absolute) name.

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

14 years agoMove the hooks file mask into constants.py
Iustin Pop [Tue, 1 Dec 2009 13:02:12 +0000 (14:02 +0100)]
Move the hooks file mask into constants.py

This will allow reuse of the same mask for multiple validations.

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

14 years agoImprove LUQueryNodes for lockless case
Iustin Pop [Mon, 14 Dec 2009 15:26:48 +0000 (16:26 +0100)]
Improve LUQueryNodes for lockless case

In most uses of LUQueryNodes, we don't take a lock. This means that the
instance data is not protected across GetInstanceList and
GetInstanceInfo, and this can lead to instances not existing anymore.

Switching to GetAllInstanceInfo means that we get a single,
semi-consistent snapshot (since instances can still be modified, but
it's much better).

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

14 years agoMerge branch 'devel-2.1'
Guido Trotter [Thu, 10 Dec 2009 14:49:49 +0000 (14:49 +0000)]
Merge branch 'devel-2.1'

* devel-2.1:
  Add disk cache control parameter for KVM
  Change pyinotify import for broader compatibility
  ClusterMasterQuery: add primary ip field
  confd ClusterMasterQuery: allow fields request
  Simplify utils.ReadFile
  DRBD: ignore unreadable meta devices
  gnt-cluster verify: Warn if node time diverges too far
  KVM: fail when a routed nic has no ip
  Enable batch mode for devel/upload
  cmdlib: Work around race condition in DRBD before version 8.0.13

14 years agoAdd disk cache control parameter for KVM
Iustin Pop [Wed, 25 Nov 2009 10:04:56 +0000 (11:04 +0100)]
Add disk cache control parameter for KVM

This patch adds the 'cache' parameter for KVM; currently this is only
customisable at the hypervisor level, so it's the same for all drives
(except any CDROM image, which gets the default).

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

14 years agoChange pyinotify import for broader compatibility
Guido Trotter [Thu, 10 Dec 2009 13:46:48 +0000 (13:46 +0000)]
Change pyinotify import for broader compatibility

On some distributions pyinotify is installed in a different way, and the
actual module just contains an internal pyinotify entry, which is the
actual library. On others the main pyinotify module contains the library
itself. We'll try both, in order to be more compatible.

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

14 years agoShip rapi.rst/rapi.html in the dist archive
Iustin Pop [Fri, 4 Dec 2009 20:04:45 +0000 (21:04 +0100)]
Ship rapi.rst/rapi.html in the dist archive

Patch 4352bf6 changed RAPI docs to RST from the previous SGML format
(the last file to be converted to RST).

However, it didn't add rapi.rst to the docrst Makefile variable, and as
such rapi.html was neither build nor shipped in the archive. We fix this
and we also distribute doc/rapi-resources.gen since otherwise “make
distcheck” has issues (since this file is built and thus lives in _built
whereas rapi.rst is shipped and lives in topsrcdir).

Note: yes, this means that no 2.0 release until now had a rapi.html file
(in the .tar.gz archive).

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

14 years agoClusterMasterQuery: add primary ip field
Guido Trotter [Wed, 2 Dec 2009 14:01:08 +0000 (15:01 +0100)]
ClusterMasterQuery: add primary ip field

By allowing also the primary ip field to be fetched directly, we avoid
one more confd lookup, or dns request, to find out which address the
master node lives at.

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

14 years agoconfd ClusterMasterQuery: allow fields request
Guido Trotter [Wed, 2 Dec 2009 12:51:58 +0000 (13:51 +0100)]
confd ClusterMasterQuery: allow fields request

Change the ClusterMasterQuery to allow a query, and if present accept a
list of fields to be returned. Currently only name and ip are accepted.

This feature will be used by NLD to route the cluster ip over the nbma.

Backwards compatibility is preserved.

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

14 years agoInter-node RPC timeout design
Michael Hanselmann [Fri, 27 Nov 2009 16:09:02 +0000 (17:09 +0100)]
Inter-node RPC timeout design

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

14 years agodaemon.GenericMain: Don't use dict for SSL paths, improve CLI options
Michael Hanselmann [Fri, 27 Nov 2009 16:05:27 +0000 (17:05 +0100)]
daemon.GenericMain: Don't use dict for SSL paths, improve CLI options

Pass SSL certificate and key paths from ganeti-* instead of using a dict. The
patch also improves the --ssl-{key,cert} options by giving the default in
--help output and changes the validation a bit.

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

14 years agodaemon.GenericMain: Don't use list of multithreaded daemons
Michael Hanselmann [Fri, 27 Nov 2009 16:13:06 +0000 (17:13 +0100)]
daemon.GenericMain: Don't use list of multithreaded daemons

Passing it in as a parameter seems more logical.

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

14 years agodaemon.GenericMain: Improve --bind and --port options a bit
Michael Hanselmann [Fri, 27 Nov 2009 15:46:12 +0000 (16:46 +0100)]
daemon.GenericMain: Improve --bind and --port options a bit

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

14 years agoSimplify utils.ReadFile
Iustin Pop [Tue, 1 Dec 2009 09:17:46 +0000 (10:17 +0100)]
Simplify utils.ReadFile

The documentation for file objects' read method states that if the size
is "negative or ommitted", all data is read; thus we can simplify it to
have size=-1 by default and not have the if test.

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

14 years agoDRBD: ignore unreadable meta devices
Iustin Pop [Fri, 27 Nov 2009 14:25:00 +0000 (15:25 +0100)]
DRBD: ignore unreadable meta devices

The DRBD driver can ignore dead disks but not dead meta devices (for
which it refuses to configure the minor). To handle this case, we check
that the meta device is readable and if not we ignore it (the same as
when backend._RecursiveAssembleBD didn't find it).

A needed change is the move of some checks and initialisers before this
test (which is before the super().__init__ call), but that should be
fine.

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

14 years agoA few style updates
Michael Hanselmann [Fri, 27 Nov 2009 15:42:48 +0000 (16:42 +0100)]
A few style updates

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

14 years agognt-cluster verify: Warn if node time diverges too far
Michael Hanselmann [Mon, 30 Nov 2009 13:09:28 +0000 (14:09 +0100)]
gnt-cluster verify: Warn if node time diverges too far

The warning will be generated if the clocks diverge by more
than 150 seconds. Due to the way the RPC system works, we
cannot get exact time differences, e.g. if one of the
queried nodes is broken. The comparision is done using a
time window.

Confd queries will fail if the clock on the client and server
are more than 300 seconds from each other. This check helps
keeping at least the nodes of a cluster in sync.

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

14 years agoAdd template Ganeti 2.2 design doc
Guido Trotter [Fri, 27 Nov 2009 11:12:26 +0000 (12:12 +0100)]
Add template Ganeti 2.2 design doc

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

14 years agoKVM: fail when a routed nic has no ip
Guido Trotter [Thu, 26 Nov 2009 16:37:02 +0000 (17:37 +0100)]
KVM: fail when a routed nic has no ip

This shouldn't happen, but if it does it's better to fail at this level,
rather than create a broken NIC script, which is hard to debug.

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

14 years agoEnable batch mode for devel/upload
Iustin Pop [Thu, 26 Nov 2009 16:11:36 +0000 (17:11 +0100)]
Enable batch mode for devel/upload

Since the rsync/ssh calls are done in parallel, they can't read properly a
password or confirmation about keys from stdin. As such, it's better to enable
batch mode so that they fail right away instead of prompting and then timing
out after a long while.

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

14 years agocmdlib: Work around race condition in DRBD before version 8.0.13
Michael Hanselmann [Thu, 26 Nov 2009 15:17:42 +0000 (16:17 +0100)]
cmdlib: Work around race condition in DRBD before version 8.0.13

DRBD goes into sync mode for a short amount of time after
executing the "resize" command. DRBD 8.x below version
8.0.13 contains a bug whereby calling "resize" in sync
mode fails.

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

14 years agoAdd disk cache control parameter for KVM
Iustin Pop [Wed, 25 Nov 2009 10:04:56 +0000 (11:04 +0100)]
Add disk cache control parameter for KVM

This patch adds the 'cache' parameter for KVM; currently this is only
customisable at the hypervisor level, so it's the same for all drives
(except any CDROM image, which gets the default).

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

14 years agoBump version to 2.1.0~rc1 v2.1.0rc1
Michael Hanselmann [Wed, 25 Nov 2009 14:23:43 +0000 (15:23 +0100)]
Bump version to 2.1.0~rc1

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

14 years agoRemove testJsonIndent unittest
Michael Hanselmann [Wed, 25 Nov 2009 14:24:57 +0000 (15:24 +0100)]
Remove testJsonIndent unittest

It can't work on older distributions where simplejson
doesn't have indentation support.

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

14 years agoQA: improve usability with cluster-init: False
Iustin Pop [Wed, 25 Nov 2009 14:26:16 +0000 (15:26 +0100)]
QA: improve usability with cluster-init: False

When not initialising the cluster, consider all nodes are added, so that
multi-node tests (e.g. export, replace) work correctly (if there are
nodes, of course).

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

14 years agoRemove quotes from CommaJoin and convert to it
Iustin Pop [Wed, 25 Nov 2009 12:01:05 +0000 (13:01 +0100)]
Remove quotes from CommaJoin and convert to it

This patch removes the quotes from CommaJoin and converts most of the
callers (that I could find) to it. Since CommaJoin does str(i) for i in
param, we can remove these, thus simplifying slightly a few calls.

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

14 years agoRe-add “nic.bridges” field to RAPI bulk instance list
Michael Hanselmann [Wed, 25 Nov 2009 11:27:22 +0000 (12:27 +0100)]
Re-add “nic.bridges” field to RAPI bulk instance list

Commit 495cfdf0 removed “nic.bridges” from the default
list for bulk instance list RAPI requests.

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

14 years agobuild-bash-completion: Check for None before comparing
Michael Hanselmann [Wed, 25 Nov 2009 11:19:58 +0000 (12:19 +0100)]
build-bash-completion: Check for None before comparing

Comparing a number with None is not a good idea:

  >>> (0 < None, 0 > None)
  (False, True)

This patch also adds build-bash-completion to the list
of checked Python scripts and wraps one line of more
than 80 characters.

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

14 years agoRevert "Get rid of utils.CommaJoin"
Iustin Pop [Wed, 25 Nov 2009 11:26:20 +0000 (12:26 +0100)]
Revert "Get rid of utils.CommaJoin"

This reverts commit 6915bc28fe053e92aa16cf2d974d205f1140219c based on thread on
ganeti-devel.

Conflicts:

lib/cmdlib.py (due to the error code classification, trivial)

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

14 years agoAdd check for OpenSSL entropy status
Michael Hanselmann [Tue, 24 Nov 2009 14:55:03 +0000 (15:55 +0100)]
Add check for OpenSSL entropy status

By checking for this explicitly, the errors (SSLEAY_RAND_BYTES, “PRNG
not seeded”) will happen in the start-up phase of the daemon and not
only when executing remote procedure calls.

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

14 years agoA couple of doc updates
Iustin Pop [Tue, 24 Nov 2009 09:57:35 +0000 (10:57 +0100)]
A couple of doc updates

Clarify the fact that temporary HV/BE params in instance start override
and do not extend the configured parameters; and change the instance
list headers from HVM_* to * since many of the parameters apply to KVM
too. Also fix a typo in the rapi documention for '/2/nodes'.

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

14 years agoHandle EEXIST in utils.RenameFile
Michael Hanselmann [Thu, 19 Nov 2009 15:13:12 +0000 (16:13 +0100)]
Handle EEXIST in utils.RenameFile

This should fix an issue I've seen exactly once during testing. It might have
been caused by parallel RPC calls to archive jobs.

[…] ganeti-noded:112 ERROR Error in RPC call […]
 File "/usr/lib/python2.4/site-packages/ganeti/backend.py", line 2365, in JobQueueRename
   utils.RenameFile(old, new, mkdir=True)
 File "/usr/lib/python2.4/site-packages/ganeti/utils.py", line 322, in RenameFile
   os.makedirs(os.path.dirname(new), mkdir_mode)
 File "/usr/lib/python2.4/os.py", line 159, in makedirs
   mkdir(name, mode)
OSError: [Errno 17] File exists: '/var/lib/ganeti/queue/archive/0'

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

14 years agoRemove unused parameter “unlock” from cmdlib._WaitForSync
Michael Hanselmann [Thu, 19 Nov 2009 16:30:03 +0000 (17:30 +0100)]
Remove unused parameter “unlock” from cmdlib._WaitForSync

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

14 years agoFix off-by-one error when modifying instance NIC
Michael Hanselmann [Mon, 16 Nov 2009 14:52:53 +0000 (15:52 +0100)]
Fix off-by-one error when modifying instance NIC

For an instance with exactly one NIC:

$ gnt-instance modify --net 1:ip=1.2.3.4 inst1
Failure: prerequisites not met for this operation:
error type: wrong_input, error details:
Invalid NIC index 1, valid values are 0 to 1

For an instance with no NIC at all, it fails with “Invalid NIC index 0, valid
values are 0 to 0”. This is fixed by this patch.

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

14 years agoRe-add check for duplicate instance IP
Michael Hanselmann [Mon, 16 Nov 2009 13:51:29 +0000 (14:51 +0100)]
Re-add check for duplicate instance IP

This was originally implemented in 0ce8f948 and partially
rolled back in 9b65e0d4. Apart from re-adding the check,
this patch does some housekeeping by renaming the “_helper”
function to “_AddIpAddress”.

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

14 years agoFix gnt-instance list documentation
Guido Trotter [Mon, 16 Nov 2009 11:02:13 +0000 (11:02 +0000)]
Fix gnt-instance list documentation

(1) Both the man page and the online help report the link and mode
fields, which are in the code called nic_link and nic_mode.
(2) Add missing fields to the online help.

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

14 years agoconfig: Style fixes
Michael Hanselmann [Fri, 13 Nov 2009 12:53:06 +0000 (13:53 +0100)]
config: Style fixes

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

14 years agoAdd packaging notes to documentation
Michael Hanselmann [Thu, 12 Nov 2009 16:38:40 +0000 (17:38 +0100)]
Add packaging notes to documentation

This includes a few paragraphs about daemon-util.

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