Merge "Support new facet response format"
This commit is contained in:
@@ -64,7 +64,12 @@ class ListFacet(command.Lister):
|
|||||||
data = search_client.facets.list(**params)
|
data = search_client.facets.list(**params)
|
||||||
result = []
|
result = []
|
||||||
for resource_type, values in six.iteritems(data):
|
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 = []
|
options = []
|
||||||
for o in s.get('options', []):
|
for o in s.get('options', []):
|
||||||
options.append(
|
options.append(
|
||||||
|
@@ -26,7 +26,7 @@ ResourceType = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Facet = {
|
OldFacet = {
|
||||||
"OS::Nova::Server":
|
"OS::Nova::Server":
|
||||||
[
|
[
|
||||||
{"type": "string", "name": "id"},
|
{"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 = {
|
Resource = {
|
||||||
"hits":
|
"hits":
|
||||||
{"hits":
|
{"hits":
|
||||||
|
@@ -21,10 +21,9 @@ class TestFacet(searchlight_fakes.TestSearchv1):
|
|||||||
self.facet_client = self.app.client_manager.search.facets
|
self.facet_client = self.app.client_manager.search.facets
|
||||||
|
|
||||||
|
|
||||||
class TestFacetList(TestFacet):
|
class TestFacetListBase(TestFacet):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestFacetList, self).setUp()
|
super(TestFacetListBase, self).setUp()
|
||||||
self.cmd = facet.ListFacet(self.app, None)
|
self.cmd = facet.ListFacet(self.app, None)
|
||||||
self.facet_client.list.return_value = searchlight_fakes.Facet
|
self.facet_client.list.return_value = searchlight_fakes.Facet
|
||||||
|
|
||||||
@@ -42,6 +41,8 @@ class TestFacetList(TestFacet):
|
|||||||
)
|
)
|
||||||
self.assertEqual(datalist, tuple(data))
|
self.assertEqual(datalist, tuple(data))
|
||||||
|
|
||||||
|
|
||||||
|
class TestFacetList(TestFacetListBase):
|
||||||
def test_list(self):
|
def test_list(self):
|
||||||
self._test_list([], all_projects=False, limit_terms=None, type=None)
|
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'],
|
self._test_list(['--limit-terms', 'fake_limit'],
|
||||||
all_projects=False,
|
all_projects=False,
|
||||||
limit_terms='fake_limit', type=None)
|
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)
|
||||||
|
@@ -37,7 +37,8 @@ class FacetsManager(base.BaseManager):
|
|||||||
that support facet terms.
|
that support facet terms.
|
||||||
:param type: Request facets for a particular type by adding a type
|
:param type: Request facets for a particular type by adding a type
|
||||||
query parameter.
|
query parameter.
|
||||||
:rtype: list of :class:`Facets`
|
:rtype: dict of {resource_type: {'facets': [:class:`Facets`],
|
||||||
|
'doc_count':, :class:int}}
|
||||||
"""
|
"""
|
||||||
params = {}
|
params = {}
|
||||||
if kwargs.get('index'):
|
if kwargs.get('index'):
|
||||||
|
Reference in New Issue
Block a user