Ganeti automatic instance allocation
====================================
-Documents Ganeti version 2.1
+Documents Ganeti version 2.4
.. contents::
``multi-relocate`` or ``multi-evacuate``. The ``allocate`` request
is used when a new instance needs to be placed on the cluster. The
``relocate`` request is used when an existing instance needs to be
- moved within its node group, while the ``multi-relocate`` one is
- able to relocate multiple instances across multiple node groups. The
- ``multi-evacuate`` protocol requests that the script computes the
- optimal relocate solution for all secondary instances of the given
- nodes.
+ moved within its node group.
+
+ The ``multi-evacuate`` protocol used to request that the script
+ computes the optimal relocate solution for all secondary instances
+ of the given nodes. It is now deprecated and should no longer be
+ used.
+
+ The ``change-group`` request is used to relocate multiple instances
+ across multiple node groups. ``node-evacuate`` evacuates instances
+ off their node(s). These are described in a separate :ref:`design
+ document <multi-reloc-detailed-design>`.
For both allocate and relocate mode, the following extra keys are needed
in the ``request`` dictionary:
name
the name of the instance; if the request is a realocation, then this
name will be found in the list of instances (see below), otherwise
- is the FQDN of the new instance
+ is the FQDN of the new instance; type *string*
required_nodes
how many nodes should the algorithm return; while this information
can be deduced from the instace's disk template, it's better if
this computation is left to Ganeti as then allocator scripts are
- less sensitive to changes to the disk templates
+ less sensitive to changes to the disk templates; type *integer*
disk_space_total
the total disk space that will be used by this instance on the
(new) nodes; again, this information can be computed from the list
of instance disks and its template type, but Ganeti is better
- suited to compute it
+ suited to compute it; type *integer*
+
+.. pyassert::
+
+ constants.DISK_ACCESS_SET == set([constants.DISK_RDONLY,
+ constants.DISK_RDWR])
Allocation needs, in addition:
instance (in the order they are exported to the hypervisor):
mode
- either ``r`` or ``w`` denoting if the disk is read-only or
+ either :pyeval:`constants.DISK_RDONLY` or
+ :pyeval:`constants.DISK_RDWR` denoting if the disk is read-only or
writable
size
relocate_from
a list of nodes to move the instance away from (note that with
Ganeti 2.0, this list will always contain a single node, the
- current secondary of the instance)
+ current secondary of the instance); type *list of strings*
-As for ``multi-relocate``, it needs the three following request
-arguments:
+As for ``node-evacuate``, it needs the following request arguments:
instances
- a list of instance names to relocate
+ a list of instance names to evacuate; type *list of strings*
- reloc_mode
- a string indicating the relocation mode; there are three possible
- values for this string: *keep_group*, *change_group*, and
- *any_group*, the semantics or which are explained in :ref:`the
- design doc <multi-reloc-detailed-design>`
+ evac_mode
+ specify which instances to evacuate; one of ``primary-only``,
+ ``secondary-only``, ``all``, type *string*
+
+
+``change-group`` needs the following request arguments:
+
+ instances
+ a list of instance names whose group to change; type
+ *list of strings*
target_groups
- this argument is only accepted when ``reloc_mode``, as explained
- above, is *change_group*; if present, it must either be the empty
- list, or contain a list of group UUIDs that should be considered for
- relocating instances to
+ must either be the empty list, or contain a list of group UUIDs that
+ should be considered for relocating instances to; type
+ *list of strings*
Finally, in the case of multi-evacuate, there's one single request
argument (in addition to ``type``):
evac_nodes
- the names of the nodes to be evacuated
+ the names of the nodes to be evacuated; type *list of strings*
Response message
~~~~~~~~~~~~~~~~
entry in the input message, otherwise Ganeti will consider the result
as failed
- for multi-relocate mode, this is a list of 2-tuples in which the first
- element of the tuple will be an instance name, and the second element
- a list of operations to perform in order to relocate the instance
+ for multi-relocate mode, this is a list of lists of serialized
+ opcodes. See the :ref:`design document <multi-reloc-result>` for a
+ detailed dscription.
for multi-evacuation mode, this is a list of lists; each element of
the list is a list of instance name and the new secondary node