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>