There are quite a few changes here as this is not only handling
uuids for the hypervisor id but it's also a refactor in several
APIs for consistency.
The main changes are detailed in the REST API Version History
doc in this change, but to summarize the changes:
* Hypervisor and service IDs are handled as the UUIDs for those
resources; this is necessary for accurately working with these
resources across multiple cells.
* The 'servers' and 'search' routes are deprecated and folded into
the index and detail methods as query parameters, validated using
json schema.
* The show method will also be able to return the list of servers
hosted on the given hypervisor using the with_servers query
parameter.
* The marker used when paging over lists of hypervisors is the
compute node UUID.
* Using the hypervisor_hostname_pattern query parameter will not
work with paging parameters.
* API reference docs are updated for the detailed changes.
* Functional and unit tests are provided for all changes.
Part of blueprint service-hyper-uuid-in-api
Change-Id: I828350c179df8bcfa4739910abeafaba2f96982b
This patch introduces a new microversion to identify services by uuid
instead of id, to ensure uniqueness across cells. GET /os-services
returns uuid in the id field, and uuid must be provided to delete a
service with DELETE /os-services/{service_uuid}.
The old PUT /os-services/* APIs are now capped and replaced
with a new PUT /os-services/{service_uuid} which takes a uuid path
parameter to uniquely identify the service to update. It also restricts
updates to nova-compute services only, since disabling or forcing-down
a non-compute service like nova-scheduler doesn't make sense as it
doesn't do anything.
The new update() method in this microversion also avoids trying to
re-use the existing private action methods like _enable and _disable
since those are predicated on looking up the service by host/binary,
are confusing to follow for code flow, and just don't really make sense
with a pure PUT resource update method.
Part of blueprint service-hyper-uuid-in-api
Co-Authored-By: Matt Riedemann <mriedem.os@gmail.com>
Change-Id: I45494a4df7ee4454edb3ef8e7c5817d8c4e9e5ad