Use uuid for id in os-services API

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
This commit is contained in:
Dan Peschman
2017-07-18 13:54:47 -04:00
committed by Matt Riedemann
parent 430ec6504b
commit 2f7bf29d47
33 changed files with 968 additions and 26 deletions
+4 -1
View File
@@ -124,6 +124,9 @@ REST_API_VERSION_HISTORY = """REST API Version History:
non-admins can see instance action event details except for the
traceback field.
* 2.52 - Adds support for applying tags when creating a server.
* 2.53 - Service database ids are hidden. The os-services API now returns
a uuid in the id field, and takes a uuid in
DELETE /services/{service_uuid}.
"""
# The minimum and maximum versions of the API supported
@@ -132,7 +135,7 @@ REST_API_VERSION_HISTORY = """REST API Version History:
# Note(cyeoh): This only applies for the v2.1 API once microversions
# support is fully merged. It does not affect the V2 API.
_MIN_API_VERSION = "2.1"
_MAX_API_VERSION = "2.52"
_MAX_API_VERSION = "2.53"
DEFAULT_API_VERSION = _MIN_API_VERSION
# Almost all proxy APIs which related to network, images and baremetal