Merge "Support new facet response format"

This commit is contained in:
Jenkins 2016-07-26 18:59:25 +00:00 committed by Gerrit Code Review
commit 92bfa24853
4 changed files with 36 additions and 6 deletions

View File

@ -64,7 +64,12 @@ class ListFacet(command.Lister):
data = search_client.facets.list(**params)
result = []
for resource_type, values in six.iteritems(data):
for s in values:
if isinstance(values, list):
# Cope with pre-1.0 service APIs
facets = values
else:
facets = values['facets']
for s in facets:
options = []
for o in s.get('options', []):
options.append(

View File

@ -26,7 +26,7 @@ ResourceType = {
}
Facet = {
OldFacet = {
"OS::Nova::Server":
[
{"type": "string", "name": "id"},
@ -35,6 +35,20 @@ Facet = {
}
# The alternate facet format introduced in
# https://blueprints.launchpad.net/searchlight/+spec/count-endpoint
Facet = {
"OS::Nova::Server":
{
"doc_count": 2,
"facets": [
{"type": "string", "name": "id"},
{"type": "date", "name": "created_at"},
]
}
}
Resource = {
"hits":
{"hits":

View File

@ -21,10 +21,9 @@ class TestFacet(searchlight_fakes.TestSearchv1):
self.facet_client = self.app.client_manager.search.facets
class TestFacetList(TestFacet):
class TestFacetListBase(TestFacet):
def setUp(self):
super(TestFacetList, self).setUp()
super(TestFacetListBase, self).setUp()
self.cmd = facet.ListFacet(self.app, None)
self.facet_client.list.return_value = searchlight_fakes.Facet
@ -42,6 +41,8 @@ class TestFacetList(TestFacet):
)
self.assertEqual(datalist, tuple(data))
class TestFacetList(TestFacetListBase):
def test_list(self):
self._test_list([], all_projects=False, limit_terms=None, type=None)
@ -58,3 +59,12 @@ class TestFacetList(TestFacet):
self._test_list(['--limit-terms', 'fake_limit'],
all_projects=False,
limit_terms='fake_limit', type=None)
class TestOldFacetList(TestFacetListBase):
def setUp(self):
super(TestOldFacetList, self).setUp()
self.facet_client.list.return_value = searchlight_fakes.OldFacet
def test_list(self):
self._test_list([], all_projects=False, limit_terms=None, type=None)

View File

@ -37,7 +37,8 @@ class FacetsManager(base.BaseManager):
that support facet terms.
:param type: Request facets for a particular type by adding a type
query parameter.
:rtype: list of :class:`Facets`
:rtype: dict of {resource_type: {'facets': [:class:`Facets`],
'doc_count':, :class:int}}
"""
params = {}
if kwargs.get('index'):