request
Ganeti will by default reject non-standard instance sizes (lower than
-``min_ispec`` or greater than ``max_ispec``), but as usual a ``--force``
-option on the command line or in the RAPI request will override these
-constraints. The ``std_spec`` structure will be used to fill in missing
-instance specifications on create.
+``min_ispec`` or greater than ``max_ispec``), but as usual a
+``--ignore-ipolicy`` option on the command line or in the RAPI request
+will override these constraints. The ``std_spec`` structure will be used
+to fill in missing instance specifications on create.
Each of the ispec structures will be a dictionary, since the contents
can change over time. Initially, we will define the following variables
+---------------+----------------------------------+--------------+
|Name |Description |Type |
+===============+==================================+==============+
-|mem_min |Minimum memory size allowed |int |
-+---------------+----------------------------------+--------------+
-|mem_max |Maximum allowed memory size |int |
+|mem_size |Allowed memory size |int |
+---------------+----------------------------------+--------------+
|cpu_count |Allowed vCPU count |int |
+---------------+----------------------------------+--------------+
At JSON level, since the object key has to be a string, the keys can be
encoded via a separator (e.g. slash), or by having two dict levels.
-+--------+-------------+-------------------------+---------------------+------+
-|Disk |Name |Description |Current status |Type |
-|template| | | | |
-+========+=============+=========================+=====================+======+
-|plain |stripes |How many stripes to use |Configured at |int |
-| | |for newly created (plain)|./configure time, not| |
-| | |logical voumes |overridable at | |
-| | | |runtime | |
-+--------+-------------+-------------------------+---------------------+------+
-|drbd |data-stripes |How many stripes to use |Same as for |int |
-| | |for data volumes |plain/stripes | |
-+--------+-------------+-------------------------+---------------------+------+
-|drbd |metavg |Default volume group for |Same as the main |string|
-| | |the metadata LVs |volume group, | |
-| | | |overridable via | |
-| | | |'metavg' key | |
-+--------+-------------+-------------------------+---------------------+------+
-|drbd |meta-stripes |How many stripes to use |Same as for lvm |int |
-| | |for meta volumes |'stripes', suboptimal| |
-| | | |as the meta LVs are | |
-| | | |small | |
-+--------+-------------+-------------------------+---------------------+------+
-|drbd |disk_barriers|What kind of barriers to |Either all enabled or|string|
-| | |*disable* for disks; |all disabled, per | |
-| | |either "n" or a string |./configure time | |
-| | |containing a subset of |option | |
-| | |"bfd" | | |
-+--------+-------------+-------------------------+---------------------+------+
-|drbd |meta_barriers|Whether barriers are |Handled together with|bool |
-| | |enabled or not for the |disk_barriers | |
-| | |meta volume | | |
-+--------+-------------+-------------------------+---------------------+------+
-|drbd |resync_rate |The (static) resync rate |Hardcoded in |int |
-| | |for drbd, when using the |constants.py, not | |
-| | |static syncer, in MiB/s |changeable via Ganeti| |
-+--------+-------------+-------------------------+---------------------+------+
-|drbd |disk_custom |Free-form string that |Not supported |string|
-| | |will be appended to the | | |
-| | |drbdsetup disk command | | |
-| | |line, for custom options | | |
-| | |not supported by Ganeti | | |
-| | |itself | | |
-+--------+-------------+-------------------------+---------------------+------+
-|drbd |net_custom |Free-form string for |Not supported |string|
-| | |custom net setup options | | |
-+--------+-------------+-------------------------+---------------------+------+
-
-Note that the DRBD parameters might change once Ganeti supports DRBD 8.4, in
-which the :command:`drbdsetup` syntax has changed significantly.
-Moreover, new parameters for the dynamic synchronization algorithm will
-be added for DRBD versions >= 8.3.9.
+When needed, the unit of measurement is expressed inside square
+brackets.
+
++--------+--------------+-------------------------+---------------------+------+
+|Disk |Name |Description |Current status |Type |
+|template| | | | |
++========+==============+=========================+=====================+======+
+|plain |stripes |How many stripes to use |Configured at |int |
+| | |for newly created (plain)|./configure time, not| |
+| | |logical voumes |overridable at | |
+| | | |runtime | |
++--------+--------------+-------------------------+---------------------+------+
+|drbd |data-stripes |How many stripes to use |Same as for |int |
+| | |for data volumes |plain/stripes | |
++--------+--------------+-------------------------+---------------------+------+
+|drbd |metavg |Default volume group for |Same as the main |string|
+| | |the metadata LVs |volume group, | |
+| | | |overridable via | |
+| | | |'metavg' key | |
++--------+--------------+-------------------------+---------------------+------+
+|drbd |meta-stripes |How many stripes to use |Same as for lvm |int |
+| | |for meta volumes |'stripes', suboptimal| |
+| | | |as the meta LVs are | |
+| | | |small | |
++--------+--------------+-------------------------+---------------------+------+
+|drbd |disk-barriers |What kind of barriers to |Either all enabled or|string|
+| | |*disable* for disks; |all disabled, per | |
+| | |either "n" or a string |./configure time | |
+| | |containing a subset of |option | |
+| | |"bfd" | | |
++--------+--------------+-------------------------+---------------------+------+
+|drbd |meta-barriers |Whether to disable or not|Handled together with|bool |
+| | |the barriers for the meta|disk-barriers | |
+| | |volume | | |
++--------+--------------+-------------------------+---------------------+------+
+|drbd |resync-rate |The (static) resync rate |Hardcoded in |int |
+| | |for drbd, when using the |constants.py, not | |
+| | |static syncer, in KiB/s |changeable via Ganeti| |
++--------+--------------+-------------------------+---------------------+------+
+|drbd |dynamic-resync|Whether to use the |Not supported. |bool |
+| | |dynamic resync speed | | |
+| | |controller or not. If | | |
+| | |enabled, c-plan-ahead | | |
+| | |must be non-zero and all | | |
+| | |the c-* parameters will | | |
+| | |be used by DRBD. | | |
+| | |Otherwise, the value of | | |
+| | |resync-rate will be used | | |
+| | |as a static resync speed.| | |
++--------+--------------+-------------------------+---------------------+------+
+|drbd |c-plan-ahead |Agility factor of the |Not supported. |int |
+| | |dynamic resync speed | | |
+| | |controller. (the higher, | | |
+| | |the slower the algorithm | | |
+| | |will adapt the resync | | |
+| | |speed). A value of 0 | | |
+| | |(that is the default) | | |
+| | |disables the controller | | |
+| | |[ds] | | |
++--------+--------------+-------------------------+---------------------+------+
+|drbd |c-fill-target |Maximum amount of |Not supported. |int |
+| | |in-flight resync data | | |
+| | |for the dynamic resync | | |
+| | |speed controller | | |
+| | |[sectors] | | |
++--------+--------------+-------------------------+---------------------+------+
+|drbd |c-delay-target|Maximum estimated peer |Not supported. |int |
+| | |response latency for the | | |
+| | |dynamic resync speed | | |
+| | |controller [ds] | | |
++--------+--------------+-------------------------+---------------------+------+
+|drbd |c-max-rate |Upper bound on resync |Not supported. |int |
+| | |speed for the dynamic | | |
+| | |resync speed controller | | |
+| | |[KiB/s] | | |
++--------+--------------+-------------------------+---------------------+------+
+|drbd |c-min-rate |Minimum resync speed for |Not supported. |int |
+| | |the dynamic resync speed | | |
+| | |controller [KiB/s] | | |
++--------+--------------+-------------------------+---------------------+------+
+|drbd |disk-custom |Free-form string that |Not supported |string|
+| | |will be appended to the | | |
+| | |drbdsetup disk command | | |
+| | |line, for custom options | | |
+| | |not supported by Ganeti | | |
+| | |itself | | |
++--------+--------------+-------------------------+---------------------+------+
+|drbd |net-custom |Free-form string for |Not supported |string|
+| | |custom net setup options | | |
++--------+--------------+-------------------------+---------------------+------+
+
+Currently Ganeti supports only DRBD 8.0.x, 8.2.x, 8.3.x. It will refuse
+to work with DRBD 8.4 since the :command:`drbdsetup` syntax has changed
+significantly.
+
+The barriers-related parameters have been introduced in different DRBD
+versions; please make sure that your version supports all the barrier
+parameters that you pass to Ganeti. Any version later than 8.3.0
+implements all of them.
+
+The minimum DRBD version for using the dynamic resync speed controller
+is 8.3.9, since previous versions implement different parameters.
+
+A more detailed discussion of the dynamic resync speed controller
+parameters is outside the scope of the present document. Please refer to
+the ``drbdsetup`` man page
+(`8.3 <http://www.drbd.org/users-guide-8.3/re-drbdsetup.html>`_ and
+`8.4 <http://www.drbd.org/users-guide/re-drbdsetup.html>`_). An
+interesting discussion about them can also be found in a
+`drbd-user mailing list post
+<http://lists.linbit.com/pipermail/drbd-user/2011-August/016739.html>`_.
All the above parameters are at cluster and node group level; as in
other parts of the code, the intention is that all nodes in a node group
which are queried directly on the node (without hypervisor
involvment). The are stored in a separate attribute (``disk_state``),
which is indexed per storage type and name; currently this will be just
-``LD_LV`` and the volume name as key.
+``DT_PLAIN`` and the volume name as key.
+-------------+-------------------------+--------------------+--------+
|Name |Description |Current state |Type |