Remove xen data collectors from KVM cluster

Generally a data collector can be deactivated in the config and each
data collector defines own conditions to show/hide it.

A hidden data collector is not shown in /1/list/collectors,
/1/report/all. The relevant config is requested from the RConfD.

   * Added new constant dataCollectorNames: The consistency is checked
     at compile time thanks to template haskell.
   * cfgupgrade: add datacollectors section in cluster. The section
     currently has a single entry: 'active'
   * Added Arbitrary instances for the relevant types
   * Move Ganeti.Monitoring.{Server,Types}.DataCollector
   * Move {Monitoring.Server,DataCollectors.Types}.DataCollector

Implements Issue 870: inst-status-xen should not be shown for KVM
cluster.

Signed-off-by: Aaron Karper <akarper@google.com>
Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>
Add `gnt-cluster modify --[dis|en]able-data-collector`

In order to modify the data collectors displayed, there are the options
--enable-data-collector=[inst-status-xen ..] and
--disable-data-collector=[inst-status-xen ..]

Includes bootstrap.py and cfgupgrade.py setting data_collectors config
values.

Signed-off-by: Aaron Karper <akarper@google.com>
Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>
Extend evacDrbdAllInner to honor AlgorithmOptions

Extend the Ganeti.HTools.Cluster-internal function evacDrbAllInner
to accept and honor AlgorithmOptions; in particular the option
to ignore soft errors will be honored.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>
Make tryNodeEvac pass AlgorithmOptions to evacDrbdAllInner

In this way, the IAlloc backend can pass parameters, in
particular on whether to ignore soft errors.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>
Make evacOneNodeOnly honor AlgorithmOptions

...in particular algIgnoreSoftErrors.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>
Make evacOneNodeOnly provide more complete error message

The way the function foldl'ed over, evacOneNodeInner, accumulated
the Result, only the last error message was kept. When trying to
debug why an evacuation is not possible, however, complete information
about all failure reasons is needed. Hence combine all the error
messages.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>
Make hail support --ignore-soft-errors

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>
Document hail --ignore-soft-errors

...saying we can still chose the best of all bad
options that don't violate hard constraints.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>
Add a test for hail --ignore-soft-errors

Add a variant of the relocation hail request where the nodes
where the disk can be relocated to have a lot less memory. So any
of the relocation moves would render a node not N+1 happy.
However, there are enough resources to do it, if we accept
soft errors.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>
JSON: Improve haddocks for `MaybeForJSON`

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