Merge "Add the initial documentation for the placement API"
This commit is contained in:
commit
0f0d7584e0
@ -149,6 +149,7 @@ Open Development.
|
|||||||
addmethod.openstackapi
|
addmethod.openstackapi
|
||||||
conductor
|
conductor
|
||||||
notifications
|
notifications
|
||||||
|
placement
|
||||||
|
|
||||||
Architecture Evolution Plans
|
Architecture Evolution Plans
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
160
doc/source/placement.rst
Normal file
160
doc/source/placement.rst
Normal file
@ -0,0 +1,160 @@
|
|||||||
|
..
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
not use this file except in compliance with the License. You may obtain
|
||||||
|
a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
License for the specific language governing permissions and limitations
|
||||||
|
under the License.
|
||||||
|
|
||||||
|
===============
|
||||||
|
Placement API
|
||||||
|
===============
|
||||||
|
|
||||||
|
Overview
|
||||||
|
========
|
||||||
|
|
||||||
|
Nova introduced the placement API service in the 14.0.0 Newton release. This
|
||||||
|
is a separate REST API stack and data model used to track resource provider
|
||||||
|
inventories and usages, along with different classes of resources. For example,
|
||||||
|
a resource provider can be a compute node, a shared storage pool, or an IP
|
||||||
|
allocation pool. The placement service tracks the inventory and usage of each
|
||||||
|
provider. For example, an instance created on a compute node may be a consumer
|
||||||
|
of resources such as RAM and CPU from a compute node resource provider, DISK
|
||||||
|
from an external shared storage pool resource provider and IP addresses from
|
||||||
|
an external IP pool resource provider.
|
||||||
|
|
||||||
|
The types of resources consumed are tracked as **classes**. The service
|
||||||
|
provides a set of standard resource classes but provides the ability to define
|
||||||
|
custom resource classes as needed.
|
||||||
|
|
||||||
|
References
|
||||||
|
~~~~~~~~~~
|
||||||
|
|
||||||
|
The following specifications are based on Newton work and while they present
|
||||||
|
the idea or overview for the design, implementation details may have changed
|
||||||
|
or be partially complete at this time.
|
||||||
|
|
||||||
|
* `Generic Resource Pools <https://specs.openstack.org/openstack/nova-specs/specs/newton/implemented/generic-resource-pools.html>`_
|
||||||
|
* `Compute Node Inventory <https://specs.openstack.org/openstack/nova-specs/specs/newton/implemented/compute-node-inventory-newton.html>`_
|
||||||
|
* `Resource Provider Allocations <https://specs.openstack.org/openstack/nova-specs/specs/newton/implemented/resource-providers-allocations.html>`_
|
||||||
|
* `Resource Provider Base Models <https://specs.openstack.org/openstack/nova-specs/specs/newton/implemented/resource-providers.html>`_
|
||||||
|
|
||||||
|
The following specifications are based on Ocata work and are subject to change.
|
||||||
|
|
||||||
|
* `Nested Resource Providers <https://review.openstack.org/#/c/386710/>`_
|
||||||
|
* `Custom Resource Classes <https://review.openstack.org/#/c/312696/>`_
|
||||||
|
* `Scheduler Filters in DB <https://review.openstack.org/#/c/300178/>`_
|
||||||
|
|
||||||
|
|
||||||
|
Deployment
|
||||||
|
==========
|
||||||
|
|
||||||
|
The placement-api service must be deployed at some point after you have
|
||||||
|
upgraded to the 14.0.0 Newton release but before you can upgrade to the 15.0.0
|
||||||
|
Ocata release. This is so that the resource tracker in the nova-compute service
|
||||||
|
can populate resource provider (compute node) inventory and allocation
|
||||||
|
information which will be used by the nova-scheduler service in Ocata.
|
||||||
|
|
||||||
|
Steps
|
||||||
|
~~~~~
|
||||||
|
|
||||||
|
**1. Deploy the API service**
|
||||||
|
|
||||||
|
At this time the placement API code is still in Nova alongside the compute
|
||||||
|
REST API code (nova-api). So once you have upgraded nova-api to Newton you
|
||||||
|
already have the placement API code, you just need to install the service.
|
||||||
|
Nova provides a ``nova-placement-api`` WSGI script for running the service
|
||||||
|
with Apache.
|
||||||
|
|
||||||
|
.. note:: The placement API service is currently developed within Nova but
|
||||||
|
it is designed to be as separate as possible from the existing code so
|
||||||
|
that it can be eventually split into a separate project.
|
||||||
|
|
||||||
|
**2. Synchronize the database**
|
||||||
|
|
||||||
|
In the Newton release the Nova **api** database is the only deployment
|
||||||
|
option for the placement API service and the resources it manages. After
|
||||||
|
upgrading the nova-api service for Newton and running the
|
||||||
|
``nova-manage api_db sync`` command the placement tables will be created.
|
||||||
|
|
||||||
|
.. note:: There are plans to add the ability to run the placement service
|
||||||
|
with a separate **placement** database that would just have the tables
|
||||||
|
necessary for that service and not everything else that goes into the
|
||||||
|
Nova **api** database.
|
||||||
|
|
||||||
|
**3. Create accounts and update the service catalog**
|
||||||
|
|
||||||
|
Create a **placement** service user with an **admin** role in Keystone.
|
||||||
|
|
||||||
|
The placement API is a separate service and thus should be registered under
|
||||||
|
a **placement** service type in the service catalog as that is what the
|
||||||
|
resource tracker in the nova-compute node will use to look up the endpoint.
|
||||||
|
|
||||||
|
Devstack sets up the port used in the endpoint URL as 8778 which is
|
||||||
|
intentionally different from the 8774 port used with the compute endpoint.
|
||||||
|
|
||||||
|
**4. Configure and restart nova-compute services**
|
||||||
|
|
||||||
|
The 14.0.0 Newton nova-compute service code will begin reporting resource
|
||||||
|
provider inventory and usage information as soon as the placement API
|
||||||
|
service is in place and can respond to requests via the endpoint registered
|
||||||
|
in the service catalog.
|
||||||
|
|
||||||
|
.. note:: After upgrading nova-compute code to Newton and restarting the
|
||||||
|
service, the nova-compute service will attempt to make a connection
|
||||||
|
to the placement API and if that is not yet available a warning will
|
||||||
|
be logged and the service will no longer make an attempt to connect
|
||||||
|
until the service is restarted. nova.conf on the compute nodes will
|
||||||
|
need to be updated in the ``[placement]`` group for credentials to
|
||||||
|
make requests from nova-compute to the placement-api service.
|
||||||
|
|
||||||
|
References
|
||||||
|
~~~~~~~~~~
|
||||||
|
|
||||||
|
The following changes were made to devstack (from oldest to newest) to enable
|
||||||
|
the placement-api service and can serve as a guide for your own deployment.
|
||||||
|
|
||||||
|
https://review.openstack.org/#/c/342362/
|
||||||
|
|
||||||
|
https://review.openstack.org/#/c/363335/
|
||||||
|
|
||||||
|
https://review.openstack.org/#/c/363724/
|
||||||
|
|
||||||
|
|
||||||
|
REST API
|
||||||
|
========
|
||||||
|
|
||||||
|
The placement API service has its own REST API and data model.
|
||||||
|
|
||||||
|
API Reference
|
||||||
|
~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
A full API reference is forthcoming, but until then one can get a sample of the
|
||||||
|
REST API via the functional test `gabbits`_.
|
||||||
|
|
||||||
|
.. _gabbits: http://git.openstack.org/cgit/openstack/nova/tree/nova/tests/functional/api/openstack/placement/gabbits
|
||||||
|
|
||||||
|
Microversions
|
||||||
|
~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
The placement API uses microversions for making incremental changes to the
|
||||||
|
API which client requests must opt into.
|
||||||
|
|
||||||
|
The rules around `when a microversion is needed`_ are the same as for the
|
||||||
|
compute REST API.
|
||||||
|
|
||||||
|
.. _when a microversion is needed: http://docs.openstack.org/developer/nova/api_microversion_dev.html#when-do-i-need-a-new-microversion
|
||||||
|
|
||||||
|
It is especially important to keep in mind that nova-compute is a client of
|
||||||
|
the placement REST API and based on how Nova supports rolling upgrades the
|
||||||
|
nova-compute service could be Newton level code making requests to an Ocata
|
||||||
|
placement API, and vice-versa, an Ocata compute service in a cells v2 cell
|
||||||
|
could be making requests to a Newton placement API.
|
||||||
|
|
||||||
|
|
||||||
|
.. include:: ../../nova/api/openstack/placement/rest_api_version_history.rst
|
19
nova/api/openstack/placement/rest_api_version_history.rst
Normal file
19
nova/api/openstack/placement/rest_api_version_history.rst
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
REST API Version History
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
This documents the changes made to the REST API with every
|
||||||
|
microversion change. The description for each version should be a
|
||||||
|
verbose one which has enough information to be suitable for use in
|
||||||
|
user documentation.
|
||||||
|
|
||||||
|
1.0 (Maximum in Newton)
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
This is the initial version of the placement REST API that was released in
|
||||||
|
Nova 14.0.0 (Newton). This contains the following routes:
|
||||||
|
|
||||||
|
* /resource_providers
|
||||||
|
* /resource_providers/allocations
|
||||||
|
* /resource_providers/inventories
|
||||||
|
* /resource_providers/usages
|
||||||
|
* /allocations
|
Loading…
x
Reference in New Issue
Block a user