Skip to content

Commit

Permalink
Fix response format 'total' for v2 dataframes API
Browse files Browse the repository at this point in the history
Based on [1], the response for v2 dataframes is {"total": 3}. However,
for Elasticsearch search response [2], the "hits.total" in the response
body is {"value": 3, "relation": "eq"}, which does not match the API
response schema.

[1]: https://docs.openstack.org/cloudkitty/latest/api-reference/v2/index.html?expanded=get-dataframes-from-the-storage-backend-detail#response-example
[2]: https://www.elastic.co/guide/en/elasticsearch/reference/8.3/search-your-data.html

Story: 2010219
Task: 45967

Change-Id: Ie2c8fd1b146138efc085d7c844afd27b7e10f3f3
Co-Authored-By: Rafael Weingärtner <[email protected]>
Signed-off-by: Ning Yao <[email protected]>
(cherry picked from commit 3ba19ed)
  • Loading branch information
Ning Yao authored and priteau committed Feb 24, 2023
1 parent a43e223 commit c7851e9
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 1 deletion.
9 changes: 8 additions & 1 deletion cloudkitty/storage/v2/elasticsearch/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -308,7 +308,14 @@ def retrieve(self, begin, end, filters, metric_types,

scroll_id = resp['_scroll_id']
self._scroll_ids.add(scroll_id)
total = resp['hits']['total']
total_hits = resp['hits']['total']

if isinstance(total_hits, dict):
LOG.debug("Total hits [%s] is a dict. Therefore, we only extract "
"the 'value' attribute as the total option.", total_hits)
total_hits = total_hits.get("value")

total = total_hits
chunk = resp['hits']['hits']

output = chunk[offset:offset+limit if paginate else len(chunk)]
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
fixes:
- |
Fix response format ``total`` for v2 dataframes API. The response for v2
dataframes is ``{"total": 3}``. However, for Elasticsearch search response,
the ``"hits.total"`` in the response body is ``{"value": 3, "relation":
"eq"}``, which does not match the API response schema.

0 comments on commit c7851e9

Please sign in to comment.