ironic/doc/source/install/configure-nova-flavors.rst
Dmitry Tantsur c7d7f18ba2 Update the resource classes documentation based on recent progress
The feature works now, so we can remove uncertaincy from the docs. Also adds
an upgrade release note to populate the resource_class field before the upgrade.

Change-Id: I22234aafdd195dd76c621b93042a67cdb36f3e65
2017-08-11 17:38:56 +02:00

101 lines
3.5 KiB
ReStructuredText

.. _flavor-creation:
Create flavors for use with the Bare Metal service
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Scheduling based on properties
==============================
You'll need to create a special bare metal flavor in the Compute service.
The flavor is mapped to the bare metal node through the hardware specifications.
#. Change these to match your hardware:
.. code-block:: console
$ RAM_MB=1024
$ CPU=2
$ DISK_GB=100
$ ARCH={i686|x86_64}
#. Create the bare metal flavor by executing the following command:
.. code-block:: console
$ nova flavor-create my-baremetal-flavor auto $RAM_MB $DISK_GB $CPU
.. note:: You can replace ``auto`` with your own flavor id.
#. Set the architecture as extra_specs information of the flavor. This
will be used to match against the properties of bare metal nodes:
.. code-block:: console
$ nova flavor-key my-baremetal-flavor set cpu_arch=$ARCH
.. _scheduling-resource-classes:
Scheduling based on resource classes
====================================
The Newton release of the Bare Metal service includes a field on the node
resource called ``resource_class``. This field is available in version 1.21 of
the Bare Metal service API. Starting with the Pike release, this field has
to be populated for all nodes, as explained in :doc:`enrollment`.
As of the Pike release, a Compute service flavor is able to use this field
for scheduling, instead of the CPU, RAM, and disk properties defined in
the flavor above. A flavor can request *exactly one* instance of a bare metal
resource class.
To achieve that, the flavors, created as described in `Scheduling based on
properties`_, have to be associated with one custom resource class each.
A name of the custom resource class is the name of node's resource class, but
upper-cased, with ``CUSTOM_`` prefix prepended, and all punctuation replaced
with an underscore:
.. code-block:: console
$ nova flavor-key my-baremetal-flavor set resources:CUSTOM_<RESOURCE_CLASS>=1
Another set of flavor properties should be used to disable scheduling
based on standard properties for a bare metal flavor:
.. code-block:: console
$ nova flavor-key my-baremetal-flavor set resources:VCPU=0
$ nova flavor-key my-baremetal-flavor set resources:MEMORY_MB=0
$ nova flavor-key my-baremetal-flavor set resources:DISK_GB=0
.. warning::
The last step will be mandatory in the Queens release, as the Compute
service will stop providing standard resources for bare metal nodes.
Example
-------
If you want to define a class of nodes called ``baremetal.with-GPU``, start
with tagging some nodes with it:
.. code-block:: console
$ ironic --ironic-api-version=1.21 node-update $NODE_UUID \
replace resource_class=baremetal.with-GPU
.. warning::
It is possible to **add** a resource class to ``active`` nodes, but it is
not possiblre to **replace** an existing resource class on them.
Then you can update your flavor to request the resource class instead of
the standard properties:
.. code-block:: console
$ nova flavor-key my-baremetal-flavor set resources:CUSTOM_BAREMETAL_WITH_GPU=1
$ nova flavor-key my-baremetal-flavor set resources:VCPU=0
$ nova flavor-key my-baremetal-flavor set resources:MEMORY_MB=0
$ nova flavor-key my-baremetal-flavor set resources:DISK_GB=0
Note how ``baremetal.with-GPU`` in the node's ``resource_class`` field becomes
``CUSTOM_BAREMETAL_WITH_GPU`` in the flavor's properties.