.. [#pwhash] Using the MD5 hash of username, realm and password is
- described in :rfc:`2617` ("HTTP Authentication"), sections 3.2.2.2 and
- 3.3. The reason for using it over another algorithm is forward
+ described in :rfc:`2617` ("HTTP Authentication"), sections 3.2.2.2
+ and 3.3. The reason for using it over another algorithm is forward
compatibility. If ``ganeti-rapi`` were to implement HTTP Digest
authentication in the future, the same hash could be used.
In the current version ``ganeti-rapi``'s realm, ``Ganeti Remote
``/``
+++++
-The root resource.
-
-It supports the following commands: ``GET``.
-
-``GET``
-~~~~~~~
-
-Shows the list of mapped resources.
-
-Returns: a dictionary with 'name' and 'uri' keys for each of them.
+The root resource. Has no function, but for legacy reasons the ``GET``
+method is supported.
``/2``
++++++
-The ``/2`` resource, the root of the version 2 API.
-
-It supports the following commands: ``GET``.
-
-``GET``
-~~~~~~~
-
-Show the list of mapped resources.
-
-Returns: a dictionary with ``name`` and ``uri`` keys for each of them.
+Has no function, but for legacy reasons the ``GET`` method is supported.
``/2/info``
+++++++++++
(i.e ``?bulk=1``), the output contains detailed information about node
groups as a list.
+Returned fields: :pyeval:`utils.CommaJoin(sorted(rlib2.G_FIELDS))`
+
Example::
[
Returns information about a node group, similar to the bulk output from
the node group list.
+Returned fields: :pyeval:`utils.CommaJoin(sorted(rlib2.G_FIELDS))`
+
``DELETE``
~~~~~~~~~~
.. opcode_params:: OP_GROUP_SET_PARAMS
:exclude: group_name
+Job result:
+
+.. opcode_result:: OP_GROUP_SET_PARAMS
+
``/2/groups/[group_name]/rename``
+++++++++++++++++++++++++++++++++
.. opcode_params:: OP_GROUP_RENAME
:exclude: group_name
+Job result:
+
+.. opcode_result:: OP_GROUP_RENAME
+
``/2/groups/[group_name]/assign-nodes``
+++++++++++++++++++++++++++++++++++++++
(i.e ``?bulk=1``), the output contains detailed information about
instances as a list.
+Returned fields: :pyeval:`utils.CommaJoin(sorted(rlib2.I_FIELDS))`
+
Example::
[
been replaced by ``instance_name`` and ``os_type`` to match the
underlying opcode. The old names can still be used.
+Job result:
+
+.. opcode_result:: OP_INSTANCE_CREATE
+
``/2/instances/[instance_name]``
++++++++++++++++++++++++++++++++
Returns information about an instance, similar to the bulk output from
the instance list.
+Returned fields: :pyeval:`utils.CommaJoin(sorted(rlib2.I_FIELDS))`
+
``DELETE``
~~~~~~~~~~
``POST``
~~~~~~~~
-Takes the parameters ``mode`` (one of ``replace_on_primary``,
-``replace_on_secondary``, ``replace_new_secondary`` or
-``replace_auto``), ``disks`` (comma separated list of disk indexes),
-``remote_node`` and ``iallocator``.
+Returns a job ID.
+
+Body parameters:
-Either ``remote_node`` or ``iallocator`` needs to be defined when using
-``mode=replace_new_secondary``.
+.. opcode_params:: OP_INSTANCE_REPLACE_DISKS
+ :exclude: instance_name
-``mode`` is a mandatory parameter. ``replace_auto`` tries to determine
-the broken disk(s) on its own and replacing it.
+Ganeti 2.4 and below used query parameters. Those are deprecated and
+should no longer be used.
``/2/instances/[instance_name]/activate-disks``
Takes no parameters.
+``/2/instances/[instance_name]/recreate-disks``
++++++++++++++++++++++++++++++++++++++++++++++++++
+
+Recreate disks of an instance. Supports the following commands:
+``POST``.
+
+``POST``
+~~~~~~~~
+
+Returns a job ID.
+
+Body parameters:
+
+.. opcode_params:: OP_INSTANCE_RECREATE_DISKS
+ :exclude: instance_name
+
+
``/2/instances/[instance_name]/disk/[disk_index]/grow``
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
.. opcode_params:: OP_INSTANCE_RENAME
:exclude: instance_name
+Job result:
+
+.. opcode_result:: OP_INSTANCE_RENAME
+
``/2/instances/[instance_name]/modify``
++++++++++++++++++++++++++++++++++++++++
.. opcode_params:: OP_INSTANCE_SET_PARAMS
:exclude: instance_name
+Job result:
+
+.. opcode_result:: OP_INSTANCE_SET_PARAMS
+
``/2/instances/[instance_name]/console``
++++++++++++++++++++++++++++++++++++++++
Returns a dictionary containing information about the instance's
console. Contained keys:
+.. pyassert::
+
+ constants.CONS_ALL == frozenset([
+ constants.CONS_MESSAGE,
+ constants.CONS_SSH,
+ constants.CONS_VNC,
+ constants.CONS_SPICE,
+ ])
+
``instance``
Instance name.
``kind``
- Console type, one of ``ssh``, ``vnc`` or ``msg``.
+ Console type, one of :pyeval:`constants.CONS_SSH`,
+ :pyeval:`constants.CONS_VNC`, :pyeval:`constants.CONS_SPICE`
+ or :pyeval:`constants.CONS_MESSAGE`.
``message``
- Message to display (``msg`` type only).
+ Message to display (:pyeval:`constants.CONS_MESSAGE` type only).
``host``
- Host to connect to (``ssh`` and ``vnc`` only).
+ Host to connect to (:pyeval:`constants.CONS_SSH`,
+ :pyeval:`constants.CONS_VNC` or :pyeval:`constants.CONS_SPICE` only).
``port``
- TCP port to connect to (``vnc`` only).
+ TCP port to connect to (:pyeval:`constants.CONS_VNC` or
+ :pyeval:`constants.CONS_SPICE` only).
``user``
- Username to use (``ssh`` only).
+ Username to use (:pyeval:`constants.CONS_SSH` only).
``command``
- Command to execute on machine (``ssh`` only)
+ Command to execute on machine (:pyeval:`constants.CONS_SSH` only)
``display``
- VNC display number (``vnc`` only).
+ VNC display number (:pyeval:`constants.CONS_VNC` only).
``/2/instances/[instance_name]/tags``
(i.e. ``?bulk=1``), the output contains detailed information about jobs
as a list.
+Returned fields for bulk requests (unlike other bulk requests, these
+fields are not the same as for per-job requests):
+:pyeval:`utils.CommaJoin(sorted(rlib2.J_FIELDS_BULK))`
+
``/2/jobs/[job_id]``
++++++++++++++++++++
``GET``
~~~~~~~
-Returns a job status.
-
-Returns: a dictionary with job parameters.
+Returns a dictionary with job parameters, containing the fields
+:pyeval:`utils.CommaJoin(sorted(rlib2.J_FIELDS))`.
The result includes:
}
]
-If the optional 'bulk' argument is provided and set to 'true' value (i.e
-'?bulk=1'), the output contains detailed information about nodes as a
-list.
+If the optional bool *bulk* argument is provided and set to a true value
+(i.e ``?bulk=1``), the output contains detailed information about nodes
+as a list.
+
+Returned fields: :pyeval:`utils.CommaJoin(sorted(rlib2.N_FIELDS))`
Example::
It supports the following commands: ``GET``.
+Returned fields: :pyeval:`utils.CommaJoin(sorted(rlib2.N_FIELDS))`
+
+``/2/nodes/[node_name]/powercycle``
++++++++++++++++++++++++++++++++++++
+
+Powercycles a node. Supports the following commands: ``POST``.
+
+``POST``
+~~~~~~~~
+
+Returns a job ID.
+
+
``/2/nodes/[node_name]/evacuate``
+++++++++++++++++++++++++++++++++
longer supported. The new request can be detected by the presence of the
:pyeval:`rlib2._NODE_EVAC_RES1` feature string.
+Job result:
+
+.. opcode_result:: OP_NODE_EVACUATE
+
``/2/nodes/[node_name]/migrate``
+++++++++++++++++++++++++++++++++
and should no longer be used. The new request format can be detected by
the presence of the :pyeval:`rlib2._NODE_MIGRATE_REQV1` feature string.
+Job result:
+
+.. opcode_result:: OP_NODE_MIGRATE
+
``/2/nodes/[node_name]/role``
+++++++++++++++++++++++++++++
It supports the bool ``force`` argument.
+
+``/2/nodes/[node_name]/modify``
++++++++++++++++++++++++++++++++
+
+Modifies the parameters of a node. Supports the following commands:
+``POST``.
+
+``POST``
+~~~~~~~~
+
+Returns a job ID.
+
+Body parameters:
+
+.. opcode_params:: OP_NODE_SET_PARAMS
+ :exclude: node_name
+
+Job result:
+
+.. opcode_result:: OP_NODE_SET_PARAMS
+
+
``/2/nodes/[node_name]/storage``
++++++++++++++++++++++++++++++++