diff --git a/nova/api/openstack/placement/handlers/root.py b/nova/api/openstack/placement/handlers/root.py index 2f9c6861f2bc..298dab3816e0 100644 --- a/nova/api/openstack/placement/handlers/root.py +++ b/nova/api/openstack/placement/handlers/root.py @@ -32,6 +32,18 @@ def home(req): 'id': 'v%s' % min_version, 'max_version': max_version, 'min_version': min_version, + # for now there is only ever one version, so it must be CURRENT + 'status': 'CURRENT', + 'links': [{ + # Point back to this same URL as the root of this version. + # NOTE(cdent): We explicitly want this to be a relative-URL + # representation of "this same URL", otherwise placement needs + # to keep track of proxy addresses and the like, which we have + # avoided thus far, in order to construct full URLs. Placement + # is much easier to scale if we never track that stuff. + 'rel': 'self', + 'href': '', + }], } version_json = jsonutils.dumps({'versions': [version_data]}) req.response.body = encodeutils.to_utf8(version_json) diff --git a/nova/tests/functional/api/openstack/placement/gabbits/microversion.yaml b/nova/tests/functional/api/openstack/placement/gabbits/microversion.yaml index 83df248c1e57..462dd7ec0c6a 100644 --- a/nova/tests/functional/api/openstack/placement/gabbits/microversion.yaml +++ b/nova/tests/functional/api/openstack/placement/gabbits/microversion.yaml @@ -22,6 +22,8 @@ tests: $.versions[0].max_version: /^\d+\.\d+$/ $.versions[0].min_version: /^\d+\.\d+$/ $.versions[0].id: v1.0 + $.versions[0].status: CURRENT + $.versions[0].links[?rel = 'self'].href: '' - name: unavailable microversion raises 406 GET: / diff --git a/placement-api-ref/source/parameters.yaml b/placement-api-ref/source/parameters.yaml index a6cf8607d6d1..22f0f54abcae 100644 --- a/placement-api-ref/source/parameters.yaml +++ b/placement-api-ref/source/parameters.yaml @@ -538,6 +538,12 @@ version_id: required: true description: > A common name for the version being described. Informative only. +version_links: + type: array + in: body + required: true + description: > + A list of links related to and describing this version. version_max: type: string in: body @@ -550,6 +556,13 @@ version_min: required: true description: > The minimum microversion that is supported. +version_status: + type: string + in: body + required: true + description: > + The status of the version being described. With placement this is + "CURRENT". versions: type: array in: body diff --git a/placement-api-ref/source/root.inc b/placement-api-ref/source/root.inc index f27edf40c1fb..92532b051137 100644 --- a/placement-api-ref/source/root.inc +++ b/placement-api-ref/source/root.inc @@ -41,6 +41,8 @@ Response - id: version_id - min_version: version_min - max_version: version_max + - status: version_status + - links: version_links Response Example ---------------- diff --git a/placement-api-ref/source/samples/root/get-root.json b/placement-api-ref/source/samples/root/get-root.json index bdb92c3decea..513aceefac35 100644 --- a/placement-api-ref/source/samples/root/get-root.json +++ b/placement-api-ref/source/samples/root/get-root.json @@ -3,7 +3,14 @@ { "min_version" : "1.0", "id" : "v1.0", - "max_version" : "1.2" + "max_version" : "1.28", + "status": "CURRENT", + "links": [ + { + "href": "", + "rel": "self" + } + ] } ] }