Add a revised design document for networks

This design doc describes how to extend the existing network
management and make it more flexible and able to deal with more
generic use cases. It proposes support for:

 - Networks with multiple subnets
 - Subnets with multiple IP pools
 - NICs with multiple IPs from various subnets of a single network

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Reviewed-by: Helga Velroyen <helgav@google.com>
Adds configuration option "interval" to data collector

* Adds requesting the configuration to collector thread.
* Adds interval to data collector config in bootstrap and cfgupgrade.

Signed-off-by: Aaron Karper <akarper@google.com>
Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>
Adds gnt-cluster modify option for data collector intervals

The configuration for the data collector intervals is settable via
gnt-cluster modify. The info is visible in gnt-cluster info.

Signed-off-by: Aaron Karper <akarper@google.com>
Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>
Update NEWS: Mond variable interval monitoring

The NEWS file describes the reason for the new dependency and the new
feature.

Signed-off-by: Aaron Karper <akarper@google.com>
Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>
Query.Filter: Improve haddocks for `evaluateFilterM`

This makes clearer what the two type variables are.

Signed-off-by: Niklas Hambuechen <niklash@google.com>
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
Ganeti Filter Language: Delete `qlangOpNotEqual` (!=)

It was never supported. We already have "equals" and "not".

See issue #954.

Signed-off-by: Niklas Hambuechen <niklash@google.com>
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
qa: Fix lint errors

They were not found so far because of files forgotten in the Makefile.

Signed-off-by: Niklas Hambuechen <niklash@google.com>
Reviewed-by: Hrvoje Ribicic <riba@google.com>
Makefile: Add missing qa_scripts

Unfortunately we have nothing that can notice this automatically yet.

Signed-off-by: Niklas Hambuechen <niklash@google.com>
Reviewed-by: Hrvoje Ribicic <riba@google.com>
qa: Add missing commands to TestGanetiCommands

They were apparently forgotten.

Signed-off-by: Niklas Hambuechen <niklash@google.com>
Reviewed-by: Hrvoje Ribicic <riba@google.com>
qa_rapi: Fix filter arguments being passed in wrong order

We can now also remove the "Filtering locks didn't fail" test
because filtering locks is actually supported.

Signed-off-by: Niklas Hambuechen <niklash@google.com>
Reviewed-by: Hrvoje Ribicic <riba@google.com>
qa_rapi: Clean up PUT testing

This makes it clear where `trivial_filter` is actually used.

Signed-off-by: Niklas Hambuechen <niklash@google.com>
Reviewed-by: Hrvoje Ribicic <riba@google.com>
qa_rapi: Use `namefield`, not "name" hardcode

Signed-off-by: Niklas Hambuechen <niklash@google.com>
Reviewed-by: Hrvoje Ribicic <riba@google.com>
Revert "Ganeti Filter Language: Delete `qlangOpNotEqual`"

This reverts commit 97e7ea3fa918369c9dd6163fa021b8ca5e93891d.

The "!=" operation never worked on the command line, but it did work
in 2.10 via RAPI.

Thus we decided to not remove "!=", but instead try to make it work
as a proper alias of "not (... == ...)".

Signed-off-by: Niklas Hambuechen <niklash@google.com>
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
Remove Mond Server compilation for test if Mond is disabled

The autogenerated TestImports.hs depends on all HS_LIB_SRCS files and
thus the build process breaks if the dependencies of Mond are not
fulfilled, even if it is disabled.

Signed-off-by: Aaron Karper <akarper@google.com>
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
Compile htest only if HTEST is set

test/hs/htest needs only be compiled if the tests are supposed to be
run.

Signed-off-by: Aaron Karper <akarper@google.com>
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
ReasonRateLimiting: Generalize `slotMapFromJob` a bit

This function doesn't need to take a `JobWithStat`, the `QueuedJob`
inside it is sufficient.

Signed-off-by: Niklas Hambuechen <niklash@google.com>
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
ReasonRateLimiting: Refactor: Extract `queueSlotMap`

Makes `reasonRateLimit` easier to read.

Signed-off-by: Niklas Hambuechen <niklash@google.com>
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
Generalize SlotMap

This turns the existing `SlotMap` from the structure

  Map (label :: String, limit :: Int) (occupied :: Int)

into

  Map (label :: a) (occupied :: Int, limit :: Int)

and extracts it into its own module; this makes it possible to use
`SlotMap`s for cases outside of reason rate limiting.

There is also a semantic clean-up (not affecting how reason rate limiting
works): `joinSlotMap` (now `occupySlots`) no longer takes a `SlotMap`
as second argument, removing the need to decide how the limits of the
second `SlotMap` affect the return value.

Before `c = joinSlotMap a b`  allowed to have keys in `b` that don't appear
in `a`, and those would appear in `c` with the limits from `b` (so `a` does
not constrain them).
In the new `occupySlots`, such keys have a limit of 0 instead.

Signed-off-by: Niklas Hambuechen <niklash@google.com>
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
Always distribute src/Ganeti/Monitoring/Server.hs

Depending on the value of ENABLE_MOND it is part of the
haskell library base or not; however, in any case it should
end up in the distribution tar ball. Also, do not have whitespace
in front of Make-variable assignments.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>
adapting tools/users-setup to be used also on Gentoo

Signed-off-by: Guido Serra <guido@gaikai.com>
Reviewed-by: Hrvoje Ribicic <riba@google.com>