Change-Id: I007351039135bd7e46422ce743d694363b2aa6aa
4.5 KiB
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/