ganeti-local
11 years agoopcodes: Replace manual loop with map
Michael Hanselmann [Thu, 29 Nov 2012 11:33:46 +0000 (12:33 +0100)]
opcodes: Replace manual loop with map

Also remove a superfluous empty line in test file.

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

11 years agoFix type descriptions in RAPI documentation
Michael Hanselmann [Thu, 29 Nov 2012 11:23:50 +0000 (12:23 +0100)]
Fix type descriptions in RAPI documentation

This patch adds descriptors to the “_CheckCIDR*” functions in opcodes
and improves the descriptions generated by “ht.TInstanceOf”, thereby
indirectly fixing bad type descriptions in the RAPI documentation.

Before this patch:
- (String and (<function _CheckCIDRAddrNotation at 0x2f…>))
- (Instance of (<class 'ganeti.opcodes.OpInstanceCreate'>))

After this patch:
- (String and (IPv4 address))
- (Instance of (ganeti.opcodes.OpInstanceCreate))

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoFixing crash when removing disks
Helga Velroyen [Thu, 29 Nov 2012 10:06:42 +0000 (11:06 +0100)]
Fixing crash when removing disks

This bug was introduced by my commit "Check ispecs against ipolicy on
instance modify", because I did not filter for the 'add' action. Thus it
would try to read the size parameter also when removing disks.

Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Michael Hanselmann <hansmi@google.com>

11 years agolocking: Change locking order, move NAL after instances
Michael Hanselmann [Thu, 29 Nov 2012 09:19:17 +0000 (10:19 +0100)]
locking: Change locking order, move NAL after instances

Some opcodes, for example LUInstanceFailover and LUInstanceMigrate,
can't know whether they need to acquire all nodes until they have a lock
on the instance. In turn they would have to acquire the node allocation
lock “just in case” and could only release it once the instance had been
acquired.

Since there is no good reason for the node allocation lock to be before
instances in the locking order, this patch changes the order so that
instances are locked first.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoFix Attoparsec test coverage check compatibility
Michele Tartara [Thu, 29 Nov 2012 09:36:40 +0000 (10:36 +0100)]
Fix Attoparsec test coverage check compatibility

The hpc tool, on squeeze, does not handle utf8 encoded files correctly.
The Attoparsec test is just needed to verify whether the parser handles
uft8 correctly, so the solution is to exclude it from coverage checks.

Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

11 years agoAdd constant for node certificate mode
Michael Hanselmann [Thu, 29 Nov 2012 07:40:04 +0000 (08:40 +0100)]
Add constant for node certificate mode

A new utility for configuring the node daemon will have to write the
node certificate as well. To not split information about the certificate
file even more, the constant is added to “pathutils”.

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

11 years agoMove cluster verification out of prepare-node-join
Michael Hanselmann [Wed, 28 Nov 2012 09:03:40 +0000 (10:03 +0100)]
Move cluster verification out of prepare-node-join

A new tool for configuring the node daemon will also have to verify the
cluster name, so it's better to have this function in a central place.
In the process of moving it to ssconf it is also changed to use
“SimpleStore” instead of reading the ssconf directly. Tests are updated.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agossconf: Verify file size when reading, add some tests
Michael Hanselmann [Wed, 28 Nov 2012 08:23:28 +0000 (09:23 +0100)]
ssconf: Verify file size when reading, add some tests

Until now ssconf would limit the amount read from files to 128 KiB and
silently ignored files larger than that. With this patch a check is
added by using fstat(2) on the file descriptor while it's being read.

There were no tests file ssconf at all, so some are added.

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

11 years agoFix pylint error introduced in commit 9675661
Michael Hanselmann [Wed, 28 Nov 2012 06:40:19 +0000 (07:40 +0100)]
Fix pylint error introduced in commit 9675661

Missing spaces around operator.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>

11 years agossconf: Move class-level constants to module
Michael Hanselmann [Tue, 27 Nov 2012 11:44:03 +0000 (12:44 +0100)]
ssconf: Move class-level constants to module

There is no good reason why these two constants should be inside the
class. This patch moves them to the module so they can be used without
“self”.

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

11 years agoRemove ssconf.SimpleConfigReader
Michael Hanselmann [Tue, 27 Nov 2012 11:45:46 +0000 (12:45 +0100)]
Remove ssconf.SimpleConfigReader

Commit b0dcdc1 removed the last user of this class.

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

11 years agossconf: Small error message fixes
Michael Hanselmann [Tue, 27 Nov 2012 11:27:38 +0000 (12:27 +0100)]
ssconf: Small error message fixes

- Include filename in error message
- s/ip/IP/
- Stop using superfluous variable

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

11 years agoFix network query for extra stats fields
Helga Velroyen [Tue, 27 Nov 2012 17:33:40 +0000 (18:33 +0100)]
Fix network query for extra stats fields

Extend _GetNetworkStatsField() to accept 4 arguments.
This fixes Issue 323.

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoExport UUID and serial no in network queries
Dimitris Aragiorgis [Tue, 27 Nov 2012 12:54:42 +0000 (14:54 +0200)]
Export UUID and serial no in network queries

Add uuid and serial_no to _NETWORK_SIMPLE_FIELDS in order to export
them in network queries. Modify gnt-network to list them too.

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Reviewed-by: Michael Hanselmann <hansmi@google.com>

11 years agossconf: Remove unused regular expression
Michael Hanselmann [Tue, 27 Nov 2012 11:40:36 +0000 (12:40 +0100)]
ssconf: Remove unused regular expression

RE_VALID_SSCONF_NAME is not used anywhere.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>

11 years agoFix build after commit 9b7e05a
Michael Hanselmann [Tue, 27 Nov 2012 09:30:04 +0000 (10:30 +0100)]
Fix build after commit 9b7e05a

Commit 9b7e05a didn't quite work as expected: glm.is_owned expects a
locking level, not a lock name.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoFactorize code to load and verify JSON
Michael Hanselmann [Tue, 27 Nov 2012 10:43:07 +0000 (11:43 +0100)]
Factorize code to load and verify JSON

A new tool to configure the node daemon will also have to load and
verify JSON data.

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

11 years agoFactorize logging setup in tools
Michael Hanselmann [Tue, 27 Nov 2012 09:27:00 +0000 (10:27 +0100)]
Factorize logging setup in tools

Most tools had their own “SetupLogging” function, but they were all
essentially the same. This patch adds a generic version to “utils.log”
and provides unit tests.

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

11 years agoSmall improvements to the DRBD parser and tests
Michele Tartara [Fri, 23 Nov 2012 13:26:46 +0000 (14:26 +0100)]
Small improvements to the DRBD parser and tests

* Now the parser completely consumes the input, up to the end of the text.
* Name of the test suite module changed to adhere to naming conventions.
* Some reformatting of the source code.

Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

11 years agoLUNodeQueryStorage: Use node allocation lock
Michael Hanselmann [Fri, 23 Nov 2012 03:42:09 +0000 (04:42 +0100)]
LUNodeQueryStorage: Use node allocation lock

Block instance allocations when all node locks will be acquired.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>

11 years agocmdlib: Don't pass processor to _ComputeNics
Michael Hanselmann [Tue, 27 Nov 2012 07:01:37 +0000 (08:01 +0100)]
cmdlib: Don't pass processor to _ComputeNics

The execution context ID can be passed right away.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agocmdlib.LUInstanceRename: Another assertion for BGL
Michael Hanselmann [Tue, 27 Nov 2012 06:57:28 +0000 (07:57 +0100)]
cmdlib.LUInstanceRename: Another assertion for BGL

Check whether the BGL is actually held instead of just testing
“REQ_BGL”.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agocmdlib: Stop using proc.Log*
Michael Hanselmann [Tue, 27 Nov 2012 06:55:56 +0000 (07:55 +0100)]
cmdlib: Stop using proc.Log*

The Log* functions are re-exported through the LU. Inline use of string
formatting (“%”) was converted to additional arguments to Log* (unlike
“feedback_fn”, these functions support it). Some punctuation has been
removed from messages, as well as some small re-wordings.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agocmdlib: Use CommaJoin where appropriate
Michael Hanselmann [Tue, 27 Nov 2012 07:49:07 +0000 (08:49 +0100)]
cmdlib: Use CommaJoin where appropriate

Don't use inline versions of CommaJoin.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoLUNetwork*: Build dictionaries right away
Michael Hanselmann [Tue, 27 Nov 2012 07:52:52 +0000 (08:52 +0100)]
LUNetwork*: Build dictionaries right away

… instead of constructing an object, only to fill it separately.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>

11 years agolocking: Method to check if LockSet is fully acquired
Michael Hanselmann [Mon, 26 Nov 2012 05:34:52 +0000 (06:34 +0100)]
locking: Method to check if LockSet is fully acquired

A new method is added to check whether the LockSet-internal lock is
held. This is the case after LockSet.acquire was called with
locking.ALL_SET.

Unit tests are updated, including one where the list of names must be
empty.

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

11 years agomcpu: Start locking at correct level
Michael Hanselmann [Mon, 26 Nov 2012 06:02:39 +0000 (07:02 +0100)]
mcpu: Start locking at correct level

Commit 8716b1d added a new lock level, LEVEL_NODE_ALLOC. It is ahead of
LEVEL_INSTANCE. The latter was hardcoded in mcpu to be locked right
after the BGL, effectively ignoring LEVEL_NODE_ALLOC.

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

11 years agoFix wrong edge case in a QuickChek Drbd property
Michele Tartara [Fri, 23 Nov 2012 16:36:37 +0000 (16:36 +0000)]
Fix wrong edge case in a QuickChek Drbd property

The bug was in the test itself, not in the tested code.

Also, fixed a line longer than 80 characters in the same file.

Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

11 years agoAdd new lock level for node allocations
Michael Hanselmann [Thu, 22 Nov 2012 21:41:44 +0000 (22:41 +0100)]
Add new lock level for node allocations

The new lock is similar to the BGL in the sense that it has its own
level and there is only one. It is called “node allocation lock”.
Logical units will use it to synchronize with instance creations, which
in turn will start using opportunistic locks on nodes.

Additionally, an assertion in GanetiLockManager gained a message.

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

11 years agoQuickCheck Tests for the commaIntParser, part of DRBD Parser
Michele Tartara [Wed, 21 Nov 2012 11:53:00 +0000 (11:53 +0000)]
QuickCheck Tests for the commaIntParser, part of DRBD Parser

These new tests substitute the HTests, as by the suggestion
received after submitting the previous patch.

Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

11 years agoAdd gnt-network to .gitignore
Michael Hanselmann [Fri, 23 Nov 2012 01:47:39 +0000 (02:47 +0100)]
Add gnt-network to .gitignore

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

11 years agoCorrected network design doc regarding user interface
Helga Velroyen [Fri, 23 Nov 2012 13:46:45 +0000 (14:46 +0100)]
Corrected network design doc regarding user interface

This patch fixes some inconsistencies betwen the network
design doc and the actual user interface. Adding reserved
ips works with option --add-reserved-ips and removing them
with --remove-reserved-ips. There is no toggling of the
reservation status of ips.

Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

11 years agoFix network opcode parameters
Iustin Pop [Wed, 21 Nov 2012 17:03:13 +0000 (18:03 +0100)]
Fix network opcode parameters

Commit 32e3d8b1 (“opcodes: Network parameter improvements and fixes”)
changed a few parameters in the network add, connect and set params
opcodes, but some of the changes are buggy. The patch changed the type
to TMaybe(), whereas the default should have been changed from None to
NoDefault - the network, mode and link are required. It also wrongly
unified all types as _CheckCIDRNetNotation, whereas some are
AddrNotation.

The patch fixes these (correctly, I hope) and also add some new
aliases for readability.

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

11 years agoIntroduce a TMaybe combinator
Iustin Pop [Wed, 21 Nov 2012 17:28:36 +0000 (18:28 +0100)]
Introduce a TMaybe combinator

We have many cases in the code where we write TOr(TNone, a), so let's
introduce a combinator that simplifies this case.

Beside replacing the above with TMaybe(a), I did a few other parameter
fixes:

- noop change TOr(TNone, TDict) to TMaybeDict
- noop change TOr(TNone, TNonEmptyString) to TMaybeString
- OpClusterSetParams, change master netmask from any integer to a
  non-negative integer

(I can move the last one to a separate patch if desired)

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

11 years agoReplace dict() with {}
Iustin Pop [Wed, 21 Nov 2012 16:14:36 +0000 (17:14 +0100)]
Replace dict() with {}

The network patches and an existing test added function-call based
dict construction as opposed to literal sintax.

Signed-off-by: Iustin Pop <iustin@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>

11 years agoExport network in FinalizeExport()
Dimitris Aragiorgis [Fri, 23 Nov 2012 08:32:49 +0000 (10:32 +0200)]
Export network in FinalizeExport()

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Signed-off-by: Iustin Pop <iustin@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

11 years agoFix bug in OpNetworkQuery result check
Dimitris Aragiorgis [Fri, 23 Nov 2012 08:32:48 +0000 (10:32 +0200)]
Fix bug in OpNetworkQuery result check

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Signed-off-by: Iustin Pop <iustin@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

11 years agoFix bug in network module
Dimitris Aragiorgis [Fri, 23 Nov 2012 08:32:47 +0000 (10:32 +0200)]
Fix bug in network module

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Signed-off-by: Iustin Pop <iustin@google.com>
[iustin@google.com: slightly improved code flow]
Reviewed-by: Iustin Pop <iustin@google.com>

11 years agoAdd design for simplified node-add process
Michael Hanselmann [Mon, 19 Nov 2012 15:59:01 +0000 (16:59 +0100)]
Add design for simplified node-add process

Instead of initiating many SSH connections to copy files using “scp”, a
JSON structure is passed to a program running on the node to be added.
The design is similar to the one used for SSH setup.

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

11 years agoImplement the correct handling of numbers without commas
Michele Tartara [Wed, 21 Nov 2012 17:25:53 +0000 (17:25 +0000)]
Implement the correct handling of numbers without commas

commaInt now recognizes only the first 3 digits for numbers without commas.

It was erroneously recognizing numbers of any size before the first comma.

Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

11 years agoMake ipolicy violations a warning
Helga Velroyen [Wed, 21 Nov 2012 17:55:50 +0000 (18:55 +0100)]
Make ipolicy violations a warning

So far, when running 'gnt-cluster verify' on a cluster which
has instances that violate the instance policy, those
violations were shown as an error. This patch makes them a
warning.

Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Iustin Pop <iusin@google.com>

11 years agoSmall style fixes (' vs ") in network code
Iustin Pop [Wed, 21 Nov 2012 15:27:51 +0000 (16:27 +0100)]
Small style fixes (' vs ") in network code

This is just trivial fixes; I think I caught all of them.

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

11 years agoA few more hlint fixes
Iustin Pop [Wed, 21 Nov 2012 12:14:05 +0000 (13:14 +0100)]
A few more hlint fixes

I'm ignoring the use of Control.Arrow.*** since it's a non-obvious
function, and we're not widely using Arrows in the code base, so I
think switching to it would make the code less readable to most
people.

Signed-off-by: Iustin Pop <iustin@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoFix OpCode arbitrary generation w.r.t. non-ASCII chars
Iustin Pop [Wed, 21 Nov 2012 11:55:46 +0000 (12:55 +0100)]
Fix OpCode arbitrary generation w.r.t. non-ASCII chars

Since we generate arbitrary strings and then we send them over a pipe
to Python, we can (and will) generate non-ascii chars, which means
when run in a non-UTF8 locale, this will break with ghc 6.12 and
later. It didn't break on my workstation, since I have a "nice"
locale.

So to fix this, we replace all name generations with explicit
genName/genNameNE and similar, to ensure we only send "nice" strings.

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

11 years agoBulk add of remaining cluster/node opcodes
Iustin Pop [Mon, 19 Nov 2012 15:55:30 +0000 (16:55 +0100)]
Bulk add of remaining cluster/node opcodes

These are tested for equivalence with the Python code using existing
tests. These tests are not perfect - for many "TDict" we simply send
empty dicts, as we don't have a way to generate proper data, but the
tests did catch many trivial errors during writing of this patch
series.

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

11 years agoConvert a few existing opcode parameters to safer types
Iustin Pop [Mon, 19 Nov 2012 15:39:52 +0000 (16:39 +0100)]
Convert a few existing opcode parameters to safer types

This does a partial conversion of existing opcodes to the new
non-empty string type, which is needed so that we don't add even more
opcodes without this safety net (and to have consistent "target_node",
etc. in opcodes).

By partial I mean that only the opcode are changed, and not the entire
htools types/workflow, so we use error to abort if, when submitting
the opcodes, we detect an empty node name. FIXME added.

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

11 years agoAdd many more opcode parameters
Iustin Pop [Mon, 19 Nov 2012 15:35:45 +0000 (16:35 +0100)]
Add many more opcode parameters

This is a bulk add of all node parameters needed for node and cluster
opcodes. The parameters are defined with a few helper functions in
this module, and, opposite from opcodes.py, there won't be any (new)
opcode attributes declared in-line (without a separate field
definition).

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

11 years agoAdd two more basic types
Iustin Pop [Mon, 19 Nov 2012 15:21:44 +0000 (16:21 +0100)]
Add two more basic types

These are needed for completing the node opcode parameters.

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

11 years agoAdd an arbitrary set generator helper
Iustin Pop [Mon, 19 Nov 2012 15:20:00 +0000 (16:20 +0100)]
Add an arbitrary set generator helper

This makes it easy to generate sets of "things" that don't even need
to have arbitrary instances, but which have bounded/enum instances.

Signed-off-by: Iustin Pop <iustin@google.com>
Reviewed-by: Adeodato Simo <dato@google.com>

11 years agoMove StorageType from RPC.hs to Types.hs
Iustin Pop [Mon, 19 Nov 2012 15:19:18 +0000 (16:19 +0100)]
Move StorageType from RPC.hs to Types.hs

This fixes a FIXME actually recommending this move :)

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

11 years agoSplit 'Query.Language.ItemType' in two sub-types
Iustin Pop [Mon, 19 Nov 2012 12:15:23 +0000 (13:15 +0100)]
Split 'Query.Language.ItemType' in two sub-types

The QR_VIA_OP/QR_VIA_LUXI types in Python are using yet another
validation mode: QR_VIA_OP is the base type, and QR_VIA_LUXI extends
it (when doing luxi queries). But on the wire they have the same
representation.

To accommodate this properly, we split the ItemType in two: a
QueryTypeOp and a QueryTypeLuxi, joining them back together in
ItemType itself. This requires custom serialisation/deserialisation,
but allows us to express correctly that at opcode level, we only
accept a QueryTypeOp, but at Luxi query level, we accept either of
them.

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

11 years agoMove the 'Hypervisor' type from Objects to Types
Iustin Pop [Mon, 19 Nov 2012 09:46:50 +0000 (10:46 +0100)]
Move the 'Hypervisor' type from Objects to Types

This is a very basic type and 'Objects' is a heavy-weight module. By
moving it to 'types' we simplify (in the future) the import chains.

Signed-off-by: Iustin Pop <iustin@google.com>
Reviewed-by: Adeodato Simo <dato@google.com>

11 years agoGeneralise the JSON "Container" type
Iustin Pop [Fri, 16 Nov 2012 13:32:53 +0000 (14:32 +0100)]
Generalise the JSON "Container" type

Currently, we have some types that we kept as dictionaries in the
objects representation (due to inconsistent behaviour, or other
technical reasons). This should be improved in the future, but in the
meantime we can improve the Container type by allowing its keys to be
non-strings; this is needed, for example, for better safe in
DiskParams type, where we don't want arbitrary strings as keys, but
only the actually defined types.

To implement this change, we generalise the type (Container →
GenericContainer), and in the process we introduce a type class for
"things that can be represented as strings". This is very similar to a
combination of Read and Show, but with custom string
representation. The new type class is needed because in JSON
representation, object keys must be strings, so we need to be able to
serialised/deserialise the generic keys to/from plain strings.

We also add the instance for DiskTemplate at the same time.

Signed-off-by: Iustin Pop <iustin@google.com>
Reviewed-by: Adeodato Simo <dato@google.com>

11 years agoAdd more basic Ganeti types
Iustin Pop [Fri, 16 Nov 2012 13:31:09 +0000 (14:31 +0100)]
Add more basic Ganeti types

These are needed both in opcodes and (potentially) outside, so we add
them in the main Types module.

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

11 years agoRename leftovers from remote to restricted commands
Michael Hanselmann [Tue, 20 Nov 2012 05:04:26 +0000 (06:04 +0100)]
Rename leftovers from remote to restricted commands

As per Iustin Pop's suggestion in <20121115131730.GX824@google.com> on
<ganeti-devel@googlegroups.com>.

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

11 years agobackend: Rename RunRemoteCommand to RunRestrictedCmd
Michael Hanselmann [Tue, 20 Nov 2012 04:53:12 +0000 (05:53 +0100)]
backend: Rename RunRemoteCommand to RunRestrictedCmd

As per Iustin Pop's suggestion in <20121115131730.GX824@google.com> on
<ganeti-devel@googlegroups.com>.

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

11 years agoRename constants and directory for restricted commands
Michael Hanselmann [Tue, 20 Nov 2012 04:47:39 +0000 (05:47 +0100)]
Rename constants and directory for restricted commands

As per Iustin Pop's suggestion in <20121115131730.GX824@google.com> on
<ganeti-devel@googlegroups.com>.

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

11 years agoRename configure option for restricted commands
Michael Hanselmann [Fri, 16 Nov 2012 17:11:57 +0000 (18:11 +0100)]
Rename configure option for restricted commands

It is no longer “--enable-remote-commands”, but rather
“--enable-restricted-commands”.

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

11 years agoAdd command line interface for running commands remotely
Michael Hanselmann [Thu, 15 Nov 2012 10:16:32 +0000 (11:16 +0100)]
Add command line interface for running commands remotely

This patch adds a new command, “gnt-node restricted-command”. Since the
semantics are different from “gnt-cluster command”, the same subcommand
shouldn't be re-used.

The included man page update also includes a small description of how to
configure and use remote commands.

Restricted commands can be run on a whole node group or on any number of
manually chosen nodes.

The output is similar to “gnt-cluster command”.

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

11 years agoRemove delayed iallocator call in TLReplaceDisks
Michael Hanselmann [Wed, 21 Nov 2012 07:44:27 +0000 (08:44 +0100)]
Remove delayed iallocator call in TLReplaceDisks

By setting the “delay_iallocator” parameter one could delay the call to
the instance allocator. This was not used for some time now, but the
code was still there.

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

11 years agocmdlib: Merge duplicated code for TLMigrateInstance
Michael Hanselmann [Wed, 21 Nov 2012 07:36:37 +0000 (08:36 +0100)]
cmdlib: Merge duplicated code for TLMigrateInstance

LUInstanceFailover and LUInstanceMigrate use TLMigrateInstance and had
the essentially same code for expanding names and declaring locks. In
LUInstanceMigrate.ExpandNames there was a mistake which led to node
resource locks not being declared properly. The two DeclareLocks methods
were exactly the same, down to the byte.

TLMigrateInstance had a lot of keyword parameters. Since it is only used
on two places, all parameters were made positional, making it easier to
determine the value of a parameter.

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

11 years agoFix lint error about too many variables
Helga Velroyen [Wed, 21 Nov 2012 10:35:18 +0000 (11:35 +0100)]
Fix lint error about too many variables

Lint complains about too many variables in the CheckPrereq
method. While I think that this method/class would need
some refactoring in general, at least this patch makes lint
shut up for now.

Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>
Signed-off-by: Iustin Pop <iustin@google.com>

11 years agoCheck ispecs against ipolicy on instance modify
Helga Velroyen [Tue, 20 Nov 2012 17:16:29 +0000 (18:16 +0100)]
Check ispecs against ipolicy on instance modify

When modifying an instance, so far the specs were not checked against
the ipolicy. This patch fixes this issue.

Note that for backend parameters which have a minimum and a maximum
value (currently only memory), it checks both limits against the
ipolicy. Because locking of the instance's node group was necessary, a
TODO of commit b8925b86 was fixed as well.

Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Michael Hanselmann <hansmi@google.com>

11 years agolocking.LockSet: Replace boolean parameter with constants
Michael Hanselmann [Mon, 19 Nov 2012 21:34:12 +0000 (22:34 +0100)]
locking.LockSet: Replace boolean parameter with constants

Upcoming changes will add opportunistic locking to “locking.LockSet”.
Doing so will require additional code in “LockSet.__acquire_inner”, at
which point the existing “want_all” parameter does not always apply.
This patch replaces it with a “mode” parameter. For opportunistic
locking a new mode will be added.

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

11 years agoRAPI: Clarify non-exhaustive nature of examples
Michael Hanselmann [Wed, 21 Nov 2012 05:14:32 +0000 (06:14 +0100)]
RAPI: Clarify non-exhaustive nature of examples

The examples given in the RAPI documentation are not exhaustive. This
patch tries to clarify this by adding ellipses where appropriate. One
example's indentation is also fixed.

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

11 years agoAdd tests for __repr__ in locking classes
Michael Hanselmann [Wed, 21 Nov 2012 05:07:01 +0000 (06:07 +0100)]
Add tests for __repr__ in locking classes

“locking.PipeCondition” and “locking.SharedLock” define “__repr__”,
which until now was not tested at all.

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

11 years agotest/*.py: s/'/"/
Michael Hanselmann [Wed, 21 Nov 2012 04:57:22 +0000 (05:57 +0100)]
test/*.py: s/'/"/

Now that 2.6 is essentially finished and 2.7 going to be branched
soon-ish, I thought it would be a good moment to replace some single
quotes in test/*.py. Merge pains should be limited.

In one place in test/ganeti.locking_unittest.py, spaces are added for
assignments.

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

11 years agonetwork: Style updates
Michael Hanselmann [Wed, 21 Nov 2012 01:42:17 +0000 (02:42 +0100)]
network: Style updates

- Quote characters
- Docstrings

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

11 years agoDocument requirement for ipaddr and bitarray modules
Michael Hanselmann [Wed, 21 Nov 2012 01:42:00 +0000 (02:42 +0100)]
Document requirement for ipaddr and bitarray modules

Also update configure.ac.

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

11 years agoht: Complain if TNone isn't listed first for TOr/TAnd
Michael Hanselmann [Wed, 21 Nov 2012 04:08:09 +0000 (05:08 +0100)]
ht: Complain if TNone isn't listed first for TOr/TAnd

Some type descriptions are rather long. If "None" is listed at the end
or somewhere in between it is easily missed. Therefore it should be at
the beginning, e.g. "None or (long description)".

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

11 years agoAdd unit test for default parameter default values
Michael Hanselmann [Wed, 21 Nov 2012 03:52:06 +0000 (04:52 +0100)]
Add unit test for default parameter default values

Fails if the default value of an opcode parameter doesn't verify.

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

11 years agoopcodes: Network parameter improvements and fixes
Michael Hanselmann [Wed, 21 Nov 2012 04:06:08 +0000 (05:06 +0100)]
opcodes: Network parameter improvements and fixes

- Use variables for checks for IP addresses (makes them more consistent,
  too)
- Fix checks to accept default values
- Small description improvements (e.g. s/IP/IP address/)

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

11 years agoMerge branch 'devel-2.6'
Michael Hanselmann [Wed, 21 Nov 2012 05:51:40 +0000 (06:51 +0100)]
Merge branch 'devel-2.6'

* devel-2.6:
  Fix opcode validation for OpOobCommand.command
  Fix typo in manpage for gnt-os
  gnt-instance.8: Add index to disk and nic removal

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

11 years agoMerge branch 'stable-2.6' into devel-2.6
Michael Hanselmann [Wed, 21 Nov 2012 03:52:29 +0000 (04:52 +0100)]
Merge branch 'stable-2.6' into devel-2.6

* stable-2.6:
  Fix opcode validation for OpOobCommand.command
  Fix typo in manpage for gnt-os
  gnt-instance.8: Add index to disk and nic removal

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

11 years agolocking: Use frozenset instead of utils.UniqueSequence
Michael Hanselmann [Mon, 19 Nov 2012 21:09:47 +0000 (22:09 +0100)]
locking: Use frozenset instead of utils.UniqueSequence

In this case “frozenset” is good enough as the result's order doesn't
matter--it is the input to “sorted” (“utils.UniqueSequence” preserves
the order). “frozenset” is ca. 25% faster for this use-case.

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

11 years agolocking: Add test for downgrade without names
Michael Hanselmann [Tue, 20 Nov 2012 03:19:12 +0000 (04:19 +0100)]
locking: Add test for downgrade without names

Until now there was no test for calling “LockSet.downgrade” without
specifying any names.

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

11 years agoFix some more hlint warnings
Iustin Pop [Tue, 20 Nov 2012 18:00:13 +0000 (19:00 +0100)]
Fix some more hlint warnings

Sorry…

Signed-off-by: Iustin Pop <iustin@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoFix tools/move-instance after networks addition
Iustin Pop [Tue, 20 Nov 2012 16:44:26 +0000 (17:44 +0100)]
Fix tools/move-instance after networks addition

Commits d4117a72 (“Modify LUInstanceCreate to support networks”) and
09a3d21f (“Pass detailed network info in hooks“) expanded the nic
information as computed by _NICToTuple, which means that the format of
the result value from LUInstanceQueryData has changed, and
move-instance has not been changed to deal with this.

A proper fix needs to support correctly importing from old clusters,
right now this is a temporary fix to ensure QA still passes.

Signed-off-by: Iustin Pop <iustin@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoMove _BuildNetworkEnv() at top-level
Dimitris Aragiorgis [Tue, 30 Oct 2012 15:51:42 +0000 (17:51 +0200)]
Move _BuildNetworkEnv() at top-level

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Reviewed-by: Iustin Pop <iustin@google.com>

11 years agoUse bitarray 0.8 interface
Dimitris Aragiorgis [Tue, 30 Oct 2012 11:00:57 +0000 (13:00 +0200)]
Use bitarray 0.8 interface

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Reviewed-by: Iustin Pop <iustin@google.com>

11 years agoMinor fix in query.py
Dimitris Aragiorgis [Tue, 30 Oct 2012 01:31:02 +0000 (03:31 +0200)]
Minor fix in query.py

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Reviewed-by: Iustin Pop <iustin@google.com>

11 years agoMinor fix in ovf
Dimitris Aragiorgis [Tue, 30 Oct 2012 01:10:31 +0000 (03:10 +0200)]
Minor fix in ovf

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Reviewed-by: Iustin Pop <iustin@google.com>

11 years agoFix a few docstrings
Dimitris Aragiorgis [Mon, 29 Oct 2012 19:11:59 +0000 (21:11 +0200)]
Fix a few docstrings

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Reviewed-by: Iustin Pop <iustin@google.com>

11 years agoSimplify GenerateFree in network module
Dimitris Aragiorgis [Mon, 29 Oct 2012 19:00:06 +0000 (21:00 +0200)]
Simplify GenerateFree in network module

GenerateFree now returns the first available IP in the network
or raises AddressPoolError if it is full.

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Reviewed-by: Iustin Pop <iustin@google.com>

11 years agoReplace string values with proper constants
Dimitris Aragiorgis [Mon, 29 Oct 2012 18:39:58 +0000 (20:39 +0200)]
Replace string values with proper constants

_UnlockedCommitIp is used either for releasing or reserving an
IP inside a network. New constants RELEASE_ACTION/RESERVE_ACTION
are used to decide which is the case.

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Reviewed-by: Iustin Pop <iustin@google.com>

11 years agoAdd docstring to the GetECReserved config method
Dimitris Aragiorgis [Mon, 29 Oct 2012 18:31:54 +0000 (20:31 +0200)]
Add docstring to the GetECReserved config method

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Reviewed-by: Iustin Pop <iustin@google.com>

11 years agoSimplify mac generation funtions
Dimitris Aragiorgis [Mon, 29 Oct 2012 18:10:04 +0000 (20:10 +0200)]
Simplify mac generation funtions

Introduce new config method _UnlockedGetNetworkMACPrefix and refactor
original _GenerateOneMAC so that it takes prefix as an optional
argument and returns a function that actually generates a MAC. If
prefix is not given or None it uses the cluster level default.

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Reviewed-by: Iustin Pop <iustin@google.com>

11 years agoFix _ComputeNics to include network slot
Dimitris Aragiorgis [Tue, 16 Oct 2012 05:46:51 +0000 (08:46 +0300)]
Fix _ComputeNics to include network slot

This bug was introduced after rebasing master branch.

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Reviewed-by: Iustin Pop <iustin@google.com>

11 years agoFixes to pass py-apidoc (make commit-check)
Dimitris Aragiorgis [Fri, 12 Oct 2012 18:37:41 +0000 (21:37 +0300)]
Fixes to pass py-apidoc (make commit-check)

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Reviewed-by: Iustin Pop <iustin@google.com>

11 years agoFixes to pass pep8 (make lint)
Dimitris Aragiorgis [Fri, 12 Oct 2012 14:49:06 +0000 (17:49 +0300)]
Fixes to pass pep8 (make lint)

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Reviewed-by: Iustin Pop <iustin@google.com>

11 years agoFixes to pass pylint (make lint)
Dimitris Aragiorgis [Fri, 12 Oct 2012 11:18:28 +0000 (14:18 +0300)]
Fixes to pass pylint (make lint)

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Reviewed-by: Iustin Pop <iustin@google.com>

11 years agoFixes to pass unittests (make check)
Dimitris Aragiorgis [Thu, 11 Oct 2012 13:30:04 +0000 (15:30 +0200)]
Fixes to pass unittests (make check)

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Reviewed-by: Iustin Pop <iustin@google.com>

11 years agoCheck for existing networks/groups in Network LUs
Dimitris Aragiorgis [Wed, 3 Oct 2012 15:35:42 +0000 (18:35 +0300)]
Check for existing networks/groups in Network LUs

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Reviewed-by: Iustin Pop <iustin@google.com>

11 years agoAdd tags in network objects
Dimitris Aragiorgis [Fri, 27 Jul 2012 07:50:04 +0000 (10:50 +0300)]
Add tags in network objects

Support:
 - gnt-network add --tags.
 - gnt-network list-tags/add-tags/remove-tags/.
 - gnt-network list -o +tags

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Reviewed-by: Iustin Pop <iustin@google.com>

11 years agoChange default fields for network listing
Dimitris Aragiorgis [Mon, 18 Jun 2012 16:05:28 +0000 (19:05 +0300)]
Change default fields for network listing

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Reviewed-by: Iustin Pop <iustin@google.com>

11 years agoPass detailed network info in hooks
Dimitris Aragiorgis [Thu, 7 Jun 2012 15:51:34 +0000 (18:51 +0300)]
Pass detailed network info in hooks

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Reviewed-by: Iustin Pop <iustin@google.com>

11 years agoPass netinfo in rpcs
Dimitris Aragiorgis [Wed, 6 Jun 2012 12:57:37 +0000 (15:57 +0300)]
Pass netinfo in rpcs

If a nic has a network field then encapsulate a network object in
netinfo slot for every rpc. This is needed to pass network info to
scripts managing nics (kvm-vif-bridge).

Introduce _BuildNetworkEnv().

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Reviewed-by: Iustin Pop <iustin@google.com>

11 years agocfgupgrade for networks
Dimitris Aragiorgis [Tue, 5 Jun 2012 23:08:11 +0000 (02:08 +0300)]
cfgupgrade for networks

Add networks slot in config data.
Add networks slot in nodegroups.

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Reviewed-by: Iustin Pop <iustin@google.com>

11 years agoUse network's mac prefix
Dimitris Aragiorgis [Tue, 5 Jun 2012 23:03:08 +0000 (02:03 +0300)]
Use network's mac prefix

Modify existing GenerateMAC so that it takes network as an argument.

Substitute _GenerateOneMAC with a decorator _GenerateMACPrefix that
chooses the prefix (network's or cluster's) and wraps
_GenerateMACSuffix that generates the three remaining bytes.

Check mac prefix validity when adding/modifing a network.

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Reviewed-by: Iustin Pop <iustin@google.com>

11 years agoInclude networks in Makefile and bash completion
Apollon Oikonomopoulos [Mon, 4 Jun 2012 20:52:31 +0000 (23:52 +0300)]
Include networks in Makefile and bash completion

Signed-off-by: Apollon Oikonomopoulos <apollon@noc.grnet.gr>
Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Reviewed-by: Iustin Pop <iustin@google.com>