Add a v2 API endpoint to retrieve the state of different scopes¶
https://storyboard.openstack.org/#!/story/2005395
Note
This spec is the detailed implementation of one part of a larger spec. If you haven’t read it yet, please see https://review.opendev.org/#/c/657393/
Problem Description¶
For now, there is no way for admins to know until which date a scope’s data has
been processed, except by looking at the cloudkitty_storage_states
SQL
table. This is, however, critical information to have before an invoice/report
is generated, as you have to make sure that the whole period you’re billing
for has been processed.
Proposed Change¶
This information should be made available through the API. This describes a V2 API endpoint. It will only be available to admins.
Alternatives¶
None.
Data model impact¶
None.
REST API impact¶
This will add an endpoint on /v2/scope
with support for the GET
HTTP method.
A GET
request on this endpoint returns a paginated list of all scopes,
with support for optional filters on the scope, the fetcher, the collector
and/or the scope_key.
The method will support the following parameters:
offset
: (optional, defaults to 0) The offset of the first scope that should be returned.limit
: (optional, defaults to 100) The maximal number or results to return.scope_id
: (optional) Can be specified several times. One or several scope_ids to filter on.collector
: (optional) Can be specified several times. One or several collectors to filter on.fetcher
: (optional) Can be specified several times. One or several fetchers to filter on.scope_key
: (optional) Can be specified several times. One or several scope_keys to filter on.
The response will have the following format:
{
"results": [
{
"collector": "gnocchi",
"fetcher": "keystone",
"scope_id": "7a7e5183264644a7a79530eb56e59941",
"scope_key": "project_id",
"state": "2019-05-09 10:00:00"
},
{
"collector": "gnocchi",
"fetcher": "keystone",
"scope_id": "9084fadcbd46481788e0ad7405dcbf12",
"scope_key": "project_id",
"state": "2019-05-08 03:00:00"
},
{
"collector": "gnocchi",
"fetcher": "keystone",
"scope_id": "1f41d183fca5490ebda5c63fbaca026a",
"scope_key": "project_id",
"state": "2019-05-06 22:00:00"
}
]
}
The expected HTTP success response code for a GET
request on this endpoint
is 200 OK
.
Expected HTTP error response codes for a GET
request on this endpoint are:
400 Bad Request
: Malformed request.403 Forbidden
: The user hasn’t the necessary rights to retrieve the state of the scopes.404 Not Found
: No scope was found for the provided filters.
This endpoint will only be authorized for admins.
Security impact¶
Any user with access to this endpoint will be able to retrieve information about the state of all scopes rated by cloudkitty. Thus, access to this endpoint should be granted to non-admin users with parsimony.
Notifications Impact¶
None.
Other end user impact¶
The client will also be updated in order to include a function and a CLI command allowing to retrieve information about the state of the different scopes.
Performance Impact¶
None.
Other deployer impact¶
Scope state information will be easier to retrieve for admins and deployers.
Developer impact¶
None.
Implementation¶
Assignee(s)¶
- Primary assignee:
<peschk_l>
Work Items¶
Implement the API endpoint with unit tests
Add tempest tests
Support this endpoint in the client.
Dependencies¶
None.
Testing¶
Tempest tests for this endpoint will be added.
Documentation Impact¶
The endpoint will be added to the API reference.
References¶
Spec to get/reset the state of a scope: https://review.opendev.org/#/c/657393/