31794c8546
Change-Id: I81d36e7d0d082423a4c8e31e9a01f5e0285431be
157 lines
5.2 KiB
PHP
157 lines
5.2 KiB
PHP
============================
|
|
Resource provider aggregates
|
|
============================
|
|
|
|
Each resource provider can be associated with one or more other
|
|
resource providers in groups called aggregates. API calls in this
|
|
section are used to list and update the aggregates that are associated
|
|
with one resource provider.
|
|
|
|
Provider aggregates are used for modeling relationships among providers.
|
|
Examples may include:
|
|
|
|
* A shared storage pool providing DISK_GB resources to compute node providers
|
|
that provide VCPU and MEMORY_MB resources.
|
|
* Affinity/anti-affinity relationships such as physical location, power failure
|
|
domains, or other reliability/availability constructs.
|
|
* Groupings of compute host providers *corresponding to* Nova host aggregates
|
|
or availability zones.
|
|
|
|
.. note:: Placement aggregates are *not* the same as Nova host
|
|
aggregates and should not be considered equivalent.
|
|
|
|
The primary differences between Nova's host aggregates and placement
|
|
aggregates are the following:
|
|
|
|
* In Nova, a host aggregate associates a *nova-compute service* with
|
|
other nova-compute services. Placement aggregates are not specific
|
|
to a nova-compute service and are, in fact, not
|
|
compute-specific at all. A resource provider in the Placement API is
|
|
generic, and placement aggregates are simply groups of generic
|
|
resource providers. This is an important difference especially for
|
|
Ironic, which when used with Nova, has many Ironic baremetal nodes
|
|
attached to a single nova-compute service. In the Placement API,
|
|
each Ironic baremetal node is its own resource provider and can
|
|
therefore be associated to other Ironic baremetal nodes via a
|
|
placement aggregate association.
|
|
* In Nova, a host aggregate may have *metadata* key/value pairs
|
|
attached to it. All nova-compute services associated with a Nova
|
|
host aggregate share the same metadata. Placement aggregates have no
|
|
such metadata because placement aggregates *only* represent the
|
|
grouping of resource providers. In the Placement API, resource
|
|
providers are individually decorated with *traits* that provide
|
|
qualitative information about the resource provider.
|
|
* In Nova, a host aggregate dictates the *availability zone* within
|
|
which one or more nova-compute services reside. While placement aggregates
|
|
may be used to *model* availability zones, they have no inherent concept
|
|
thereof.
|
|
|
|
.. note:: Aggregates API requests are available starting from version 1.1.
|
|
|
|
List resource provider aggregates
|
|
=================================
|
|
|
|
.. rest_method:: GET /resource_providers/{uuid}/aggregates
|
|
|
|
Return a list of aggregates associated with the resource provider
|
|
identified by `{uuid}`.
|
|
|
|
Normal Response Codes: 200
|
|
|
|
Error response codes: itemNotFound(404) if the provider does not exist. (If the
|
|
provider has no aggregates, the result is 200 with an empty aggregate list.)
|
|
|
|
Request
|
|
-------
|
|
|
|
.. rest_parameters:: parameters.yaml
|
|
|
|
- uuid: resource_provider_uuid_path
|
|
|
|
Response (microversions 1.1 - 1.18)
|
|
-----------------------------------
|
|
|
|
.. rest_parameters:: parameters.yaml
|
|
|
|
- aggregates: aggregates
|
|
|
|
Response Example (microversions 1.1 - 1.18)
|
|
-------------------------------------------
|
|
|
|
.. literalinclude:: ./samples/aggregates/get-aggregates.json
|
|
:language: javascript
|
|
|
|
Response (microversions 1.19 - )
|
|
--------------------------------
|
|
|
|
.. rest_parameters:: parameters.yaml
|
|
|
|
- aggregates: aggregates
|
|
- resource_provider_generation: resource_provider_generation
|
|
|
|
Response Example (microversions 1.19 - )
|
|
----------------------------------------
|
|
|
|
.. literalinclude:: ./samples/aggregates/get-aggregates-1.19.json
|
|
:language: javascript
|
|
|
|
Update resource provider aggregates
|
|
===================================
|
|
|
|
Associate a list of aggregates with the resource provider identified by `{uuid}`.
|
|
|
|
.. rest_method:: PUT /resource_providers/{uuid}/aggregates
|
|
|
|
Normal Response Codes: 200
|
|
|
|
Error response codes: badRequest(400), itemNotFound(404), conflict(409)
|
|
|
|
Request (microversion 1.1 - 1.18)
|
|
---------------------------------
|
|
|
|
.. rest_parameters:: parameters.yaml
|
|
|
|
- uuid: resource_provider_uuid_path
|
|
- aggregates: aggregates
|
|
|
|
Request example (microversion 1.1 - 1.18)
|
|
-----------------------------------------
|
|
|
|
.. literalinclude:: ./samples/aggregates/update-aggregates-request.json
|
|
:language: javascript
|
|
|
|
Request (microversion 1.19 - )
|
|
---------------------------------
|
|
|
|
.. rest_parameters:: parameters.yaml
|
|
|
|
- uuid: resource_provider_uuid_path
|
|
- aggregates: aggregates
|
|
- resource_provider_generation: resource_provider_generation
|
|
|
|
Request example (microversion 1.19 - )
|
|
-----------------------------------------
|
|
|
|
.. literalinclude:: ./samples/aggregates/update-aggregates-request-1.19.json
|
|
:language: javascript
|
|
|
|
Response (microversion 1.1 - )
|
|
------------------------------
|
|
|
|
.. rest_parameters:: parameters.yaml
|
|
|
|
- aggregates: aggregates
|
|
- resource_provider_generation: resource_provider_generation_v1_19
|
|
|
|
Response Example (microversion 1.1 - 1.18)
|
|
------------------------------------------
|
|
|
|
.. literalinclude:: ./samples/aggregates/update-aggregates.json
|
|
:language: javascript
|
|
|
|
Response Example (microversion 1.19 - )
|
|
------------------------------------------
|
|
|
|
.. literalinclude:: ./samples/aggregates/update-aggregates-1.19.json
|
|
:language: javascript
|