ganeti-local
11 years agoMerge remote-tracking branch 'origin/stable-2.8'
Michele Tartara [Fri, 3 May 2013 13:23:22 +0000 (13:23 +0000)]
Merge remote-tracking branch 'origin/stable-2.8'

Conflicts:
lib/bdev.py
lib/cmdlib.py

Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

11 years agoDisk templates are "allowed" and not "enabled" in ipolicies
Bernardo Dal Seno [Fri, 3 May 2013 10:31:44 +0000 (12:31 +0200)]
Disk templates are "allowed" and not "enabled" in ipolicies

The way disk templates were displayed in instance policies became confusing
since the introduction of the enabled_disk_templates cluster parameter.

Fix issue 440.

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

11 years agoUnit test for FillIPolicy keeping unknown keys
Bernardo Dal Seno [Fri, 3 May 2013 09:51:06 +0000 (11:51 +0200)]
Unit test for FillIPolicy keeping unknown keys

This makes sure that issue 401 doesn't come back.

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoReuse current spindles in design for partitioned
Bernardo Dal Seno [Thu, 2 May 2013 20:38:15 +0000 (22:38 +0200)]
Reuse current spindles in design for partitioned

Renaming the current parameters dealing with spindles is nice, as their
meaning would be clearer, but that would mean changing a lot of code,
change external interfaces, and renaming internal variables for little
benefit. Also, instance policies would end up containing two related
parameters, one used when exclusive_storage is enabled, and the other when
disabled. Reusing the existing parameters by changing slightly their
semantics makes more sense.

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

11 years agoFix white spaces in partitioned design doc
Bernardo Dal Seno [Thu, 2 May 2013 21:37:39 +0000 (23:37 +0200)]
Fix white spaces in partitioned design doc

Bullet lists start after a blank line.

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

11 years agoMerge stable-2.7 into stable-2.8
Michele Tartara [Fri, 3 May 2013 08:10:43 +0000 (10:10 +0200)]
Merge stable-2.7 into stable-2.8

Conflicts:
INSTALL
NEWS
configure.ac
src/Ganeti/Query/Group.hs
test/hs/Test/Ganeti/Objects.hs
test/hs/Test/Ganeti/Query/Query.hs

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

11 years agoCleanup of the INSTALL file
Michele Tartara [Fri, 3 May 2013 07:07:06 +0000 (09:07 +0200)]
Cleanup of the INSTALL file

Curl is not optional anymore. Remove reference to it in the optional libraries
section.

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

11 years agoSupport DRBD 8.4.3 command syntax
Thomas Thrainer [Thu, 2 May 2013 15:10:32 +0000 (17:10 +0200)]
Support DRBD 8.4.3 command syntax

DRBD 8.4.3 does not support specifying volume ids directly while
creating the meta device. It requires a slightly different syntax (using
flex-external as volume id) which is fortunately also supported by (at
least) DRBD 8.4.2.

Signed-off-by: Thomas Thrainer <thomasth@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

11 years agognt-cluster modify: check vg name only on vm-capable nodes
Helga Velroyen [Thu, 2 May 2013 13:21:27 +0000 (15:21 +0200)]
gnt-cluster modify: check vg name only on vm-capable nodes

This fixes issue 432: when setting the volume group name, the presence
of the volume group was checked on all nodes. This patch now restricts
the check only to the vm-capable ones.

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

11 years agoDisable inter-cluster instance move for file instances
Helga Velroyen [Thu, 2 May 2013 12:35:39 +0000 (14:35 +0200)]
Disable inter-cluster instance move for file instances

Inter-cluster instance moves depends on exporting an instance. For file-based
instance, exporting is not supported. Therefore, this patch disables
inter-cluster instance moves for file-based instances and informs the user
with an expressive error message.

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

11 years agoImprove error message for file instance creation
Helga Velroyen [Thu, 2 May 2013 09:04:50 +0000 (11:04 +0200)]
Improve error message for file instance creation

Currently, when creating an instance with file storage fails,
the error message is rather general. This patch adds a hint
on what to do as a possible fix.

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

11 years agoUpdate NEWS for 2.7.0 rc1
Guido Trotter [Thu, 2 May 2013 10:20:09 +0000 (12:20 +0200)]
Update NEWS for 2.7.0 rc1

Move the "main" 2.7 section up to rc1, and just leave the delta in
beta3. Then add a new beta3 to rc1 delta.

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

11 years agoadmin guide updates for 2.7
Guido Trotter [Thu, 2 May 2013 09:10:32 +0000 (11:10 +0200)]
admin guide updates for 2.7

- Mention the file-storage-paths config file
- Add information about sharedfile and ext storage types
- Change one manpage reference to a proper link

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

11 years agoMention file-storage-paths in UPGRADE
Guido Trotter [Thu, 2 May 2013 09:01:52 +0000 (11:01 +0200)]
Mention file-storage-paths in UPGRADE

It was in NEWS, but not mentioned at all in the upgrade notes.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

11 years agokvm: use -machine type,accel= for newer qemu
Guido Trotter [Wed, 1 May 2013 10:03:54 +0000 (12:03 +0200)]
kvm: use -machine type,accel= for newer qemu

-enable-kvm and -disable-kvm are deprecated in favor of accel=kvm passed
as a machine specification. This fixes compatibility with newer qemu
versions.

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

11 years agokvm: Move parameter validation before use
Guido Trotter [Wed, 1 May 2013 09:56:12 +0000 (11:56 +0200)]
kvm: Move parameter validation before use

We had parameter validation when the runtime is generated, but in the
middle of the function. Move up, before any parameter is accessed.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>

11 years agokvm: Use -display none rather than -nographic
Guido Trotter [Wed, 1 May 2013 09:37:54 +0000 (11:37 +0200)]
kvm: Use -display none rather than -nographic

Newer versions of kvm (from 1.4) don't support -nographic with
-daemonize. When -display exists, use -display none instead.

This fixes Issue 389.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>

11 years agoINSTALL updates for wheezy, and fixes
Guido Trotter [Tue, 30 Apr 2013 13:53:11 +0000 (15:53 +0200)]
INSTALL updates for wheezy, and fixes

- Remove mention of python 2.4 specific modules, as that version
  is not supported anymore
- Add bitarray and ipaddr
- Remove a double space
- Add mandatory C library packages too
- Mention the option of using drbd modules directly from your kernel

This also fixes Issue 372.

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

11 years agoDisable compiling mon-collector if monitoring is disabled
Michele Tartara [Tue, 30 Apr 2013 14:15:44 +0000 (14:15 +0000)]
Disable compiling mon-collector if monitoring is disabled

Mon-collector kept being compiled even if monitoring was disabled during
configure.

Fixes Issue 441.

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

11 years agoAdd confd as a dependency of monitoring
Michele Tartara [Tue, 30 Apr 2013 14:01:42 +0000 (14:01 +0000)]
Add confd as a dependency of monitoring

Some data collectors require confd data information. Therefore, monitoring is
dependent on confd, but this was not checked.

This commit introduces such a check and partially fixes Issue 441.

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

11 years agoAdd reason trail to haskell opcode format
Michele Tartara [Thu, 25 Apr 2013 07:19:49 +0000 (07:19 +0000)]
Add reason trail to haskell opcode format

The haskell type definition of opcodes should remain aligned with the python
one.

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

11 years agoAdd the reason trail type definition in Haskell
Michele Tartara [Thu, 25 Apr 2013 07:16:03 +0000 (07:16 +0000)]
Add the reason trail type definition in Haskell

It will be added to the haskell definition of opcodes, to keep it aligned to
the python one, and it will be used for fetching the reason trail by the
instance status data collector.

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

11 years agoUpdate "reason" field in instance status design
Michele Tartara [Wed, 24 Apr 2013 15:19:52 +0000 (15:19 +0000)]
Update "reason" field in instance status design

Now the reason field is implemented according to the reason trail design
document.

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

11 years agoRemove outdated TODO comment
Michele Tartara [Wed, 24 Apr 2013 10:59:54 +0000 (10:59 +0000)]
Remove outdated TODO comment

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

11 years agoAdd proper error management to monitoring daemon
Michele Tartara [Wed, 24 Apr 2013 10:20:29 +0000 (10:20 +0000)]
Add proper error management to monitoring daemon

Produce a personalized 404 error when the requested resource is not available.

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

11 years agoProduce a report for all the data collectors
Michele Tartara [Wed, 24 Apr 2013 09:24:16 +0000 (09:24 +0000)]
Produce a report for all the data collectors

Implement the API function of the monitoring daemon that provides the report
of all the data collectors.

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

11 years agoGenerate report for a single collector
Michele Tartara [Mon, 29 Apr 2013 14:49:51 +0000 (14:49 +0000)]
Generate report for a single collector

Allow to ask the monitoring daemon for the report of one specific data
collector.

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

11 years agoExport the full report from DRBD data collector
Michele Tartara [Wed, 24 Apr 2013 09:41:45 +0000 (09:41 +0000)]
Export the full report from DRBD data collector

Export the full report instead of just the data from the DRBD data collector.

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

11 years agoAdd monitoring daemon to the masterd group
Michele Tartara [Wed, 24 Apr 2013 08:44:52 +0000 (08:44 +0000)]
Add monitoring daemon to the masterd group

The hmac.key file is owned by group masterd and is required to communicate with
the confd.

The monitoring daemon need to communicate with the confd so it has to be part of
the masterd group.

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

11 years agoUpdate JSON serialization for "category"
Michele Tartara [Thu, 28 Mar 2013 09:14:46 +0000 (09:14 +0000)]
Update JSON serialization for "category"

Change the JSON serialization for the "category" field of data collectors,
in accordance to the latest version of the design document.

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

11 years agoImprove monitoring agent design document
Michele Tartara [Thu, 28 Mar 2013 09:13:08 +0000 (09:13 +0000)]
Improve monitoring agent design document

Specify more precisely the format of the category names.

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

11 years agoImplement the "list collectors" API in monitoring
Michele Tartara [Fri, 15 Mar 2013 17:40:12 +0000 (17:40 +0000)]
Implement the "list collectors" API in monitoring

Implement the handler for outputting the list of collectors
(name, category, kind) in JSON format.

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

11 years agoFix bug in group queries related to node/instance fields
Iustin Pop [Mon, 25 Feb 2013 16:18:36 +0000 (17:18 +0100)]
Fix bug in group queries related to node/instance fields

Since we use the primitive string type for group UUIDs, the group
fields have a bug where we pass the group name as filter for node
tests, whereas the nodes themselves use the group UUID. This results
in zero node count, empty node list, and no instances being reported
as assigned to groups.

The patch fixes this and adds a test for the node count. It does some
test generation improvement, and also cleans up whitespace issues in
Test/G/Q/Query.hs (the functions case_queryNode_allfields,
prop_queryGroup_noUnknown and case_queryGroup_allfields are unchanged
but simply have indentation fixed).

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

Cherry-pick of e7124835, fixes issue 436
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

Conflicts:
test/hs/Test/Ganeti/Objects.hs
test/hs/Test/Ganeti/Query/Query.hs

11 years agoman gnt-instance: new hypervisor parameter 'vif_type'
Helga Velroyen [Mon, 29 Apr 2013 16:43:39 +0000 (18:43 +0200)]
man gnt-instance: new hypervisor parameter 'vif_type'

This patch extends the man page of the 'gnt-instance' command
by describing the newly implemented hypervisor parameter
'vif_type'.

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

11 years agognt-instance: new hypervisor parameter 'vif_type'
Helga Velroyen [Mon, 29 Apr 2013 15:04:29 +0000 (17:04 +0200)]
gnt-instance: new hypervisor parameter 'vif_type'

This patch fixes issue 247. It empowers the user to specify
explicitly the vif type of a nic configuration of a Xen HVM
instance. This includes the option of setting it to '' on the
commandline, causing Ganeti to leave out the 'type' parameter
in the vif configuration completely.

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

11 years agoMerge branch 'stable-2.8' into master
Bernardo Dal Seno [Mon, 29 Apr 2013 16:48:52 +0000 (18:48 +0200)]
Merge branch 'stable-2.8' into master

* stable-2.8: (42 commits)
  Add shelltests for hspace allocation
  hspace: Handle multiple ipolicy specs
  QA: Test multiple instance specs
  QA: Handle multiple instance specs
  Unit test for cli.FormatPolicyInfo()
  Add command-line support for multiple specs in ipolicy
  Add multiple min/max specs in instance policy
  Separate checks for std spec compliance
  QA: Transpose instance specs
  Improve check for  "unreleased" versions in NEWS
  Update documentation for text format
  Add missing fields in htools text-backend documentation
  cfgupgrade: Remove enabled_disk_templates on downgrade
  Reason trail implementation for "start"
  Reason trail implementation for "shutdown"
  QA: More tests for instance policies in groups
  QA: Split function to set and parse instance policies
  QA: Update tests for new ipolicy specs command-line options
  Add unit tests for cfgupgrade with a real configuration
  Split functions in cfupgrade unit tests
  ...

Conflicts:
        lib/backend.py
        lib/bdev.py
        man/gnt-cluster.rst

lib/bdev.py was renamed to lib/block/bdev.py in master, so I've manually
applied the bc3427b7 commit to the new file. The other two are
straightforward conflicts.

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

11 years agoCleanup DRBD 8.4 devices properly during QA
Thomas Thrainer [Mon, 29 Apr 2013 11:51:29 +0000 (13:51 +0200)]
Cleanup DRBD 8.4 devices properly during QA

QA cleans up DRBD 8.4 devices via drbdsetup, which currently only worked
for DRBD 8.3. This (rather ugly) command makes sure that DRBD 8.4
devices are cleaned up as well.

Signed-off-by: Thomas Thrainer <thomasth@google.com>
Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>

11 years agoAdd command generator for DRBD 8.4
Thomas Thrainer [Mon, 29 Apr 2013 11:51:28 +0000 (13:51 +0200)]
Add command generator for DRBD 8.4

The DRBD84CmdGenerator class, which generates commands suited for DRBD
8.4, is added. A common baseclass for DRBD83CmdGenerator and
DRBD84CmdGenerator is introduced as well.

Signed-off-by: Thomas Thrainer <thomasth@google.com>
Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>

11 years agoAdd test for version dispatching code
Thomas Thrainer [Mon, 29 Apr 2013 12:02:39 +0000 (14:02 +0200)]
Add test for version dispatching code

Based on the version of DRBD (as reported through /proc/drbd), the DRBD8
class chooses helper objects which adapt for the differences between
DRBD <= 8.3 and DRBD 8.4. This new test verifies that the proper objects
are created.

Signed-off-by: Thomas Thrainer <thomasth@google.com>
Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>

11 years agoAdd dependency on python-mock
Thomas Thrainer [Mon, 29 Apr 2013 11:51:27 +0000 (13:51 +0200)]
Add dependency on python-mock

Python Mock (http://www.voidspace.org.uk/python/mock/) is a mocking
library for Python. It is included in the standard Python distribution
as of Python 3.3, but has been around for quite a while. Debian unstable
contains a version we require.

Signed-off-by: Thomas Thrainer <thomasth@google.com>
Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>

11 years agoExtract DRBD related tests
Thomas Thrainer [Mon, 29 Apr 2013 11:51:26 +0000 (13:51 +0200)]
Extract DRBD related tests

As the DRBD code was extracted from bdev.py, the corresponding tests
should as well be extracted into their own file. That's what this patch
performs.

Signed-off-by: Thomas Thrainer <thomasth@google.com>
Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>

11 years agoExtract command generation logic from DRBD8
Thomas Thrainer [Mon, 29 Apr 2013 11:51:25 +0000 (13:51 +0200)]
Extract command generation logic from DRBD8

In order to easily support the DRBD 8.4 command syntax, this patch
extracts all command generation logic (i.e. where calls to `drbdsetup`
are assembled) into a new class DRBD83CmdGenerator.

Signed-off-by: Thomas Thrainer <thomasth@google.com>
Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>

11 years agoUse DRBD84ShowInfo based on DRBD version
Thomas Thrainer [Mon, 29 Apr 2013 11:51:24 +0000 (13:51 +0200)]
Use DRBD84ShowInfo based on DRBD version

Now the DRBD8 class actually checks which version of DRBD is running on
the system and chooses the right class to parse the `drbdsetup show`
output.

Signed-off-by: Thomas Thrainer <thomasth@google.com>
Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>

11 years agoAdd `drbdsetup show` parser for DRBD 8.4
Thomas Thrainer [Mon, 29 Apr 2013 11:51:24 +0000 (13:51 +0200)]
Add `drbdsetup show` parser for DRBD 8.4

Common functionality between the DRBD 8.3 and DRBD 8.4 parser has been
extracted into BaseShowInfo. A test which verifies the behaviour is
included, but the DRBD84ShowInfo class is not yet used within the DRBD8
class.

Signed-off-by: Thomas Thrainer <thomasth@google.com>
Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>

11 years agoExtract DRBD info parsing into drbd_info.py
Thomas Thrainer [Mon, 29 Apr 2013 11:51:23 +0000 (13:51 +0200)]
Extract DRBD info parsing into drbd_info.py

Parsing the status (/proc/drbd) and `drbdsetup show` output takes quite
a bit of code, which has to be augmented by even more with the DRBD 8.4
support. So extract all the related classes into their own file.

Signed-off-by: Thomas Thrainer <thomasth@google.com>
Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>

11 years agoExtract DRBD8ShowInfo class
Thomas Thrainer [Mon, 29 Apr 2013 11:51:22 +0000 (13:51 +0200)]
Extract DRBD8ShowInfo class

This class parses the `drbdsetup show` output and represents it in an
easily accessible format. It got extracted so that 1) the DRBD8 class
can focus more on DRBD logic rather than parsing and 2) it's easier to
adapt the parser to new formats.

Signed-off-by: Thomas Thrainer <thomasth@google.com>
Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>

11 years agoAdd test for DRBD 8.4 /proc/drbd parsing
Thomas Thrainer [Mon, 29 Apr 2013 11:51:21 +0000 (13:51 +0200)]
Add test for DRBD 8.4 /proc/drbd parsing

The current parser already supports the output of DRBD 8.4 /proc/drbd,
so add tests which actually verify this behaviour.
Note that the empty lines in proc_drbd84.txt are actually present in the
output of DRBD 8.4, they always appear when minors are not contiguous.

Signed-off-by: Thomas Thrainer <thomasth@google.com>
Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>

11 years agoAdd test for empty version in /proc/drbd
Thomas Thrainer [Mon, 29 Apr 2013 11:51:21 +0000 (13:51 +0200)]
Add test for empty version in /proc/drbd

The previous patch removed a (rather implicit) test for /proc/drbd not
containing a version line. This adds an explicit test for this case.

Signed-off-by: Thomas Thrainer <thomasth@google.com>
Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>

11 years agoRename _JoinProcDataPerMinor to _JoinLinesPerMinor
Thomas Thrainer [Mon, 29 Apr 2013 11:51:20 +0000 (13:51 +0200)]
Rename _JoinProcDataPerMinor to _JoinLinesPerMinor

In the new context of the DRBD8Info class, the name
_JoinProcDataPerMinor doesn't fit any more. _JoinLinesPerMinor reflects
more precisely what's done, and doesn't imply that the data comes from
/proc/drbd.

Signed-off-by: Thomas Thrainer <thomasth@google.com>
Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>

11 years agoExtract /proc/drbd parsing code into DRBD8Info
Thomas Thrainer [Mon, 29 Apr 2013 11:51:19 +0000 (13:51 +0200)]
Extract /proc/drbd parsing code into DRBD8Info

As the DRBD8 class got bigger due to the previous merge of BaseDRBD, now
parts of it are ripped out into DRBD8Info. This new class parses
/proc/drbd and exposes the information in an easily accessible way. This
allowed to simplify some methods in DRBD8 and do make the tests more
concise.

Signed-off-by: Thomas Thrainer <thomasth@google.com>
Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>

11 years agoRemove BaseDRBD
Thomas Thrainer [Wed, 24 Apr 2013 14:59:11 +0000 (16:59 +0200)]
Remove BaseDRBD

BaseDRBD was probably useful when DRBD 0.7 and DRBD 8 were supported.
However, there is only one subclass of BaseDRBD remaining (DRBD8), and
the separation of responsibilities between those two classes was rather
randomly chosen.

The unification into one class also eases the introduction of
DRBD 8.4 support, as the responsibilities of the class(es) will be
distributed anew.

Signed-off-by: Thomas Thrainer <thomasth@google.com>
Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>

11 years agoRename _MassageProcData to _JoinProcDataPerMinor
Thomas Thrainer [Wed, 24 Apr 2013 14:59:04 +0000 (16:59 +0200)]
Rename _MassageProcData to _JoinProcDataPerMinor

That's what the method actually does, so there is no reason why we
should use a funny but unreadable name.

Signed-off-by: Thomas Thrainer <thomasth@google.com>
Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>

11 years agoAdd shelltests for hspace allocation
Bernardo Dal Seno [Wed, 24 Apr 2013 01:15:14 +0000 (03:15 +0200)]
Add shelltests for hspace allocation

Both tiered and standard allocations are tested, with a single and a double
min/max instance specification.

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agohspace: Handle multiple ipolicy specs
Bernardo Dal Seno [Tue, 23 Apr 2013 21:11:01 +0000 (23:11 +0200)]
hspace: Handle multiple ipolicy specs

With tiered allocation, hspace uses all the max specs in turn as the
initial instance spec.

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoQA: Test multiple instance specs
Bernardo Dal Seno [Tue, 23 Apr 2013 14:37:41 +0000 (16:37 +0200)]
QA: Test multiple instance specs

The test of the interaction between policy and instances is extended.

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoQA: Handle multiple instance specs
Bernardo Dal Seno [Mon, 22 Apr 2013 23:24:25 +0000 (01:24 +0200)]
QA: Handle multiple instance specs

Existing tests are updated to cope with the new instance specs format.

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoUnit test for cli.FormatPolicyInfo()
Bernardo Dal Seno [Mon, 22 Apr 2013 14:59:58 +0000 (16:59 +0200)]
Unit test for cli.FormatPolicyInfo()

We try to parse the string obtained by formatting a policy, and see if we
get the same policy.

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoAdd command-line support for multiple specs in ipolicy
Bernardo Dal Seno [Mon, 15 Apr 2013 23:24:22 +0000 (01:24 +0200)]
Add command-line support for multiple specs in ipolicy

Command line options accept multiple min/max specifications in instance
policies. The output of show-ispecs-cmd is updated accordingly.

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoAdd multiple min/max specs in instance policy
Bernardo Dal Seno [Mon, 15 Apr 2013 09:03:38 +0000 (11:03 +0200)]
Add multiple min/max specs in instance policy

Now instance policies can contain more than one min/max specs.  This is the
main element of the "Constrained instance sizes" section in the
"Partitioned Ganeti" design doc.

This is a big patch, but changing the type of a configuration item requires
to change all the code that handles it.

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoSeparate checks for std spec compliance
Bernardo Dal Seno [Tue, 16 Apr 2013 11:49:48 +0000 (13:49 +0200)]
Separate checks for std spec compliance

This is needed to be able to validate the std spec against multiple min/max
spec pairs (appearing in next patches).

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoQA: Transpose instance specs
Bernardo Dal Seno [Mon, 22 Apr 2013 23:21:01 +0000 (01:21 +0200)]
QA: Transpose instance specs

The format used to store instance specs in QA is changed to better handle
multiple instance specs, a feature contained in the following patches.

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoLog at info level the success of a luxi query
Klaus Aehlig [Mon, 29 Apr 2013 12:08:17 +0000 (14:08 +0200)]
Log at info level the success of a luxi query

So far, any successful query was only logged at debug level, thus leaving
no traces in the logs, unless debugging was enabled. Therefore, we add
a notes about successful completion at info level. Also, repeat a failed
request at WARN level, so that, even if debugging disabled, the request
is available together with the error message in the logs.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoFix typo in documentation string
Klaus Aehlig [Mon, 29 Apr 2013 12:17:07 +0000 (14:17 +0200)]
Fix typo in documentation string

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoImprove gnt-instance documentation
Thomas Thrainer [Mon, 29 Apr 2013 07:03:08 +0000 (09:03 +0200)]
Improve gnt-instance documentation

Explain the relationship of the ip and network parameter in
`gnt-instance add --net` better.

Signed-off-by: Thomas Thrainer <thomasth@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

11 years agoFix unclear error when replacing a nic's ip
Guido Trotter [Fri, 26 Apr 2013 12:37:19 +0000 (14:37 +0200)]
Fix unclear error when replacing a nic's ip

The current error message ends up saying something like
'192.168.5.5' != 'network1', which is sort of non-intuitive (yes, of
course they are different). Fix this by explaining better what the
erroneous condition actually is.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>

11 years agoMake DEFAULT_ENABLED_DISK_TEMPLATES a list
Helga Velroyen [Fri, 26 Apr 2013 13:59:33 +0000 (15:59 +0200)]
Make DEFAULT_ENABLED_DISK_TEMPLATES a list

This patch makes the constant DEFAULT_ENABLED_DISK_TEMPLATES
a list instead of a set, because the order of the elements actually matters
as the first one is planned to be the default disk template for instance
creation. Also, this constant is always used like a list and thus providing it
as a set complicates the code that uses it.

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

11 years agoDocument the --drbd-usermode-helper in man gnt-cluster
Helga Velroyen [Fri, 12 Apr 2013 20:21:08 +0000 (22:21 +0200)]
Document the --drbd-usermode-helper in man gnt-cluster

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

11 years agoNEWS: removal of --no-lvm-storage
Helga Velroyen [Fri, 12 Apr 2013 20:24:05 +0000 (22:24 +0200)]
NEWS: removal of --no-lvm-storage

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

11 years agoRemove '--no-lvm-storage' from 'gnt-cluster' man page
Helga Velroyen [Fri, 12 Apr 2013 20:15:35 +0000 (22:15 +0200)]
Remove '--no-lvm-storage' from 'gnt-cluster' man page

This updates the man page of 'gnt-cluster' regarding the
removal of the '--no-lvm-storage'.

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

11 years agoFix lint error in cmdlib
Helga Velroyen [Fri, 26 Apr 2013 14:07:09 +0000 (16:07 +0200)]
Fix lint error in cmdlib

Was accidentally introduced by commit 912737ba.

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

11 years agognt-cluster modify/init: deprecate --no-lvm-storage
Helga Velroyen [Tue, 2 Apr 2013 11:16:46 +0000 (13:16 +0200)]
gnt-cluster modify/init: deprecate --no-lvm-storage

This patch does three things:

1. It deprecates the option '--no-lvm-storage' of 'gnt-cluster modify'
and 'gnt-cluster init'. Technically, it is not fully removed, but kept in order
to warn the user that it is no longer supported and that she should use
--enabled-disk-templates instead.

2. The consistency check between '--no-lvm-storage' and '--vg-name' is replaced
by checks between '--enabled-disk-templates' and '--vg-name'. There are these
cases:
- vg name, lvm disk template enabled = ok
- no vg name, lvm disk template enabled = error
- vg name, no lvm enabled = warning
- no vg name, no lvm enabled = ok
I added quite a lot of tests for all these and the transitions from each case
to another to the QA.

3. The check whether or not the volume group is available on all nodes is now
done only in these cases:
- the volume group name gets set and lvm is already enabled
- lvm is getting enabled and the volume group was set before

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

11 years agoUtility functions for storage
Helga Velroyen [Tue, 2 Apr 2013 13:20:47 +0000 (15:20 +0200)]
Utility functions for storage

This patch add a couple of utility functions dealing with
storage types and disk templates.

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

11 years agoIn plain to drbd conversion, rename LVs back on failure
Klaus Aehlig [Tue, 23 Apr 2013 09:35:18 +0000 (11:35 +0200)]
In plain to drbd conversion, rename LVs back on failure

Currently, if converting an instance from plain to drbd fails after
renaming the original LVs, the instance is left in an inconsistent
state. This commit tries to undo the renaming if a failure occurs
on assembling a DRBD device, e.g., when device minor numbers are
exhausted. (Issue 229)

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>

11 years agoMerge branch 'stable-2.7' into stable-2.8
Guido Trotter [Thu, 25 Apr 2013 10:25:50 +0000 (12:25 +0200)]
Merge branch 'stable-2.7' into stable-2.8

This fixes the problem with the distcheck-release target failing needlessly.

* stable-2.7:
  Improve check for  "unreleased" versions in NEWS

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

11 years agoImprove check for "unreleased" versions in NEWS
Guido Trotter [Thu, 25 Apr 2013 08:37:29 +0000 (10:37 +0200)]
Improve check for  "unreleased" versions in NEWS

Currently this is checked only when distcheck-release is called.
Check it in check-news instead, for all versions before the "current"
one (as defined by configure.ac)

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

11 years agoUpdate documentation for text format
Klaus Aehlig [Thu, 25 Apr 2013 08:31:48 +0000 (10:31 +0200)]
Update documentation for text format

In commit 000ca91a the text format was extended to also include
information about the master node. This commit updates the
htools man page to reflect this change.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>

11 years agoMerge branch 'stable-2.7' into stable-2.8
Klaus Aehlig [Wed, 24 Apr 2013 16:30:26 +0000 (18:30 +0200)]
Merge branch 'stable-2.7' into stable-2.8

Conflicts:
NEWS
doc/rapi.rst

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

11 years agoAdd missing fields in htools text-backend documentation
Bernardo Dal Seno [Wed, 24 Apr 2013 12:40:35 +0000 (14:40 +0200)]
Add missing fields in htools text-backend documentation

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

11 years agocfgupgrade: Remove enabled_disk_templates on downgrade
Bernardo Dal Seno [Wed, 24 Apr 2013 14:08:10 +0000 (16:08 +0200)]
cfgupgrade: Remove enabled_disk_templates on downgrade

Remove enabled_disk_templates instead of the deprecated
enabled_storage_types.

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

11 years agoReason trail implementation for "start"
Michele Tartara [Tue, 23 Apr 2013 11:38:44 +0000 (13:38 +0200)]
Reason trail implementation for "start"

Opcode-specific implementation of the reason trail for the instance
startup operation.

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

11 years agoReason trail implementation for "shutdown"
Michele Tartara [Mon, 22 Apr 2013 15:26:29 +0000 (15:26 +0000)]
Reason trail implementation for "shutdown"

Opcode-specific implementation of the reason trail for the instance shutdown
operation.

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

11 years agoQA: More tests for instance policies in groups
Bernardo Dal Seno [Fri, 12 Apr 2013 13:53:24 +0000 (15:53 +0200)]
QA: More tests for instance policies in groups

Instance policies are changed and checked for changes.

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoQA: Split function to set and parse instance policies
Bernardo Dal Seno [Fri, 12 Apr 2013 08:22:35 +0000 (10:22 +0200)]
QA: Split function to set and parse instance policies

The main parts, moved to qa_util, will be used for node groups too.

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoQA: Update tests for new ipolicy specs command-line options
Bernardo Dal Seno [Mon, 4 Mar 2013 23:30:33 +0000 (00:30 +0100)]
QA: Update tests for new ipolicy specs command-line options

The old command-line options weren't working any more. Utility functions
are updated, and broken tests are removed (new tests are coming in the
following patches).

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoAdd unit tests for cfgupgrade with a real configuration
Bernardo Dal Seno [Mon, 15 Apr 2013 09:52:04 +0000 (11:52 +0200)]
Add unit tests for cfgupgrade with a real configuration

Test upgrade and downgrade from a realistic 2.7 configuration.

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoSplit functions in cfupgrade unit tests
Bernardo Dal Seno [Wed, 10 Apr 2013 23:06:24 +0000 (01:06 +0200)]
Split functions in cfupgrade unit tests

This makes easier to test real configurations.

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agocfgupgrade: Limit specs in ipolicy are always complete
Bernardo Dal Seno [Mon, 8 Apr 2013 18:42:59 +0000 (20:42 +0200)]
cfgupgrade: Limit specs in ipolicy are always complete

Partial specs are filled with cluster defaults.

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoLimit specs in ipolicy command lines are always complete
Bernardo Dal Seno [Mon, 8 Apr 2013 18:40:40 +0000 (20:40 +0200)]
Limit specs in ipolicy command lines are always complete

Command line options are brought in line with the specs change of previous
patch. Old options are still allowed in gnt-cluster init, where the
semantic will remain non-ambiguous even after introducing multiple specs.

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoLimit specs in instance policies are always complete
Bernardo Dal Seno [Mon, 8 Apr 2013 18:36:34 +0000 (20:36 +0200)]
Limit specs in instance policies are always complete

Specs used to specify limits in instance policies are always complete, even
at group level (only the whole limit set can be overridden). This is in
preparation for introducing multiple limits.

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoRefactor tests in ipolicy validation
Bernardo Dal Seno [Tue, 9 Apr 2013 15:37:00 +0000 (17:37 +0200)]
Refactor tests in ipolicy validation

This makes the code more modular, in preparation for the following patches.

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoQA for --ipolicy-xxx-specs and show-ispecs-cmd
Bernardo Dal Seno [Fri, 5 Apr 2013 15:56:41 +0000 (17:56 +0200)]
QA for --ipolicy-xxx-specs and show-ispecs-cmd

The tests check the interactions between the two commands.

Also refactored group QA code to separate tests about ipolicy, as those
tests are going to grow in complexity.

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoAdd command to print ipolicy options
Bernardo Dal Seno [Thu, 4 Apr 2013 20:30:59 +0000 (22:30 +0200)]
Add command to print ipolicy options

The output of this command can be used to create an exact copy of the
current instance policy specs. The command could be expanded to print all
the options used to create a group or the cluster.

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

11 years agoAdd --ipolicy-xxx-specs options
Bernardo Dal Seno [Mon, 11 Mar 2013 14:12:21 +0000 (15:12 +0100)]
Add --ipolicy-xxx-specs options

These options allow to specify whole instance policy specs. This is needed
for the upcoming changes that tend to threat specs as monolithic objects.

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoNew CLI input type: list of key/value pairs
Bernardo Dal Seno [Wed, 6 Mar 2013 12:03:44 +0000 (13:03 +0100)]
New CLI input type: list of key/value pairs

This will be used for the new instance specs options.

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoAllow "default" as a value for ipolicy templates
Bernardo Dal Seno [Mon, 8 Apr 2013 17:59:25 +0000 (19:59 +0200)]
Allow "default" as a value for ipolicy templates

Previously the string value was being corrupted.

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoDocument all --ipolicy-... options
Bernardo Dal Seno [Fri, 5 Apr 2013 12:48:26 +0000 (14:48 +0200)]
Document all --ipolicy-... options

They were missing from the man pages.

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

11 years agoExtract DRBD-related classes into block/drbd.py
Thomas Thrainer [Tue, 23 Apr 2013 12:04:23 +0000 (14:04 +0200)]
Extract DRBD-related classes into block/drbd.py

This is in preparation to introducing support for DRBD8.4.
base.py had to be extracted as well in order to avoid cylic imports
between bdev.py and drbd.py. It now contains the BlockDev class and
utility functions needed by bdev.py and drbd.py.

Signed-off-by: Thomas Thrainer <thomasth@google.com>
Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>

11 years agoMove lib/bdev.py to lib/block/bdev.py
Thomas Thrainer [Tue, 23 Apr 2013 12:04:22 +0000 (14:04 +0200)]
Move lib/bdev.py to lib/block/bdev.py

That's in preparation of extracting DRBD related code from bdev.py. As
bdev.py is already rather long, new features will require to split it
into more manageable pieces. That's why it's moved in an own directory.

Signed-off-by: Thomas Thrainer <thomasth@google.com>
Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>

11 years agoFix a few unclear sentences in gnt-cluster(8)
Guido Trotter [Tue, 23 Apr 2013 12:05:28 +0000 (14:05 +0200)]
Fix a few unclear sentences in gnt-cluster(8)

The renew-crypto entry had a few obscure sentences. Improve it by
rephrasing it.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

11 years agoMake burnin compatible with the reason trail
Michele Tartara [Tue, 23 Apr 2013 08:42:03 +0000 (08:42 +0000)]
Make burnin compatible with the reason trail

The burnin uses its own option list, different from the one of all other
command line programs, and uses it as a parameter to a function that now
requires the "--reason" option to be present.

This commit updates the burnin option list to be compatible with the reason
trail implementation.

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