-
Michael Hanselmann authored
While working on a function to submit jobsets, I realized that we actually don't need them anymore. With the new job dependencies, the iallocator plugin can just generate the right dependencies and gets the same effect as with jobsets. This saves us from having to implement jobsets in Ganeti core. Signed-off-by:
Michael Hanselmann <hansmi@google.com> Reviewed-by:
Iustin Pop <iustin@google.com>
fda24caf
Moving instances accross node groups
This design document explains the changes needed in Ganeti to perform instance moves across node groups. Reader familiarity with the following existing documents is advised:
- :doc:`Current IAllocator specification <iallocator>`
- :doc:`Shared storage model in 2.3+ <design-shared-storage>`
Motivation and and design proposal
At the moment, moving instances away from their primary or secondary
nodes with the relocate
and multi-evacuate
IAllocator calls
restricts target nodes to those on the same node group. This ensures a
mobility domain is never crossed, and allows normal operation of each
node group to be confined within itself.
It is desirable, however, to have a way of moving instances across node groups so that, for example, it is possible to move a set of instances to another group for policy reasons, or completely empty a given group to perform maintenance operations.
To implement this, we propose the addition of new IAllocator calls to compute inter-group instance moves and group-aware node evacuation, taking into account mobility domains as appropriate. The interface proposed below should be enough to cover the use cases mentioned above.
With the implementation of this design proposal, the previous
multi-evacuate
mode will be deprecated.
Detailed design
All requests honor the groups' alloc_policy
attribute.
Changing instance's groups
Takes a list of instances and a list of node group UUIDs; the instances will be moved away from their current group, to any of the groups in the target list. All instances need to have their primary node in the same group, which may not be a target group. If the target group list is empty, the request is simply "change group" and the instances are placed in any group but their original one.
Node evacuation
Evacuates instances off their primary nodes. The evacuation mode
can be given as primary-only
, secondary-only
or
all
. The call is given a list of instances whose primary nodes need
to be in the same node group. The returned nodes need to be in the same
group as the original primary node.