Revert "Support truncated flag returned by keystone"
This reverts commit c28d408149.
This is causing stable keystone to fail. keystone has tests
that verify that the returned value of the list
operation == [], which fails since the return value is now
an object and not a list.
Change-Id: Ieb143574271b991d3e19e864497073fbedf46bcb
This commit is contained in:
@@ -20,7 +20,6 @@ Base utilities to build API operation managers and objects on top of.
|
||||
"""
|
||||
|
||||
import abc
|
||||
import collections
|
||||
import copy
|
||||
import functools
|
||||
import warnings
|
||||
@@ -77,23 +76,6 @@ def filter_kwargs(f):
|
||||
return func
|
||||
|
||||
|
||||
class KeystoneReturnedList(collections.Sequence):
|
||||
"""A list of entities with additional attributes."""
|
||||
|
||||
def __init__(self, collection, truncated=False):
|
||||
self.collection = collection
|
||||
self.truncated = truncated
|
||||
|
||||
def __getitem__(self, i):
|
||||
return self.collection[i]
|
||||
|
||||
def __len__(self):
|
||||
return len(self.collection)
|
||||
|
||||
def sort(self, *args, **kwargs):
|
||||
return self.collection.sort(*args, **kwargs)
|
||||
|
||||
|
||||
class Manager(object):
|
||||
"""Basic manager type providing common operations.
|
||||
|
||||
@@ -145,7 +127,6 @@ class Manager(object):
|
||||
obj_class = self.resource_class
|
||||
|
||||
data = body[response_key]
|
||||
truncated = body.get('truncated', False)
|
||||
# NOTE(ja): keystone returns values as list as {'values': [ ... ]}
|
||||
# unlike other services which just return the list...
|
||||
try:
|
||||
@@ -153,8 +134,7 @@ class Manager(object):
|
||||
except (KeyError, TypeError):
|
||||
pass
|
||||
|
||||
objects = [obj_class(self, res, loaded=True) for res in data if res]
|
||||
return KeystoneReturnedList(objects, truncated=truncated)
|
||||
return [obj_class(self, res, loaded=True) for res in data if res]
|
||||
|
||||
def _get(self, url, response_key, **kwargs):
|
||||
"""Get an object from collection.
|
||||
|
||||
@@ -195,16 +195,11 @@ class CrudTests(object):
|
||||
kwargs.setdefault(uuid.uuid4().hex, uuid.uuid4().hex)
|
||||
return kwargs
|
||||
|
||||
def encode(self, entity, truncated=None):
|
||||
encoded = {}
|
||||
if truncated is not None:
|
||||
encoded['truncated'] = truncated
|
||||
def encode(self, entity):
|
||||
if isinstance(entity, dict):
|
||||
encoded[self.key] = entity
|
||||
return encoded
|
||||
return {self.key: entity}
|
||||
if isinstance(entity, list):
|
||||
encoded[self.collection_key] = entity
|
||||
return encoded
|
||||
return {self.collection_key: entity}
|
||||
raise NotImplementedError('Are you sure you want to encode that?')
|
||||
|
||||
def stub_entity(self, method, parts=None, entity=None, id=None, **kwargs):
|
||||
@@ -295,22 +290,14 @@ class CrudTests(object):
|
||||
|
||||
self.assertRaises(TypeError, self.manager.list, **filter_kwargs)
|
||||
|
||||
def _test_list(self, ref_list=None, expected_path=None,
|
||||
expected_query=None, truncated=None, **filter_kwargs):
|
||||
def test_list(self, ref_list=None, expected_path=None,
|
||||
expected_query=None, **filter_kwargs):
|
||||
ref_list = ref_list or [self.new_ref(), self.new_ref()]
|
||||
expected_path = self._get_expected_path(expected_path)
|
||||
|
||||
# We want to catch all cases: when `truncated` is not returned by the
|
||||
# server, when it's False and when it's True.
|
||||
# Attribute `truncated` of the returned list-like object should exist
|
||||
# in all these cases. It should be False if the server returned a list
|
||||
# without the flag.
|
||||
expected_truncated = False
|
||||
if truncated:
|
||||
expected_truncated = truncated
|
||||
|
||||
self.requests_mock.get(urlparse.urljoin(self.TEST_URL, expected_path),
|
||||
json=self.encode(ref_list, truncated=truncated))
|
||||
json=self.encode(ref_list))
|
||||
|
||||
returned_list = self.manager.list(**filter_kwargs)
|
||||
self.assertEqual(len(ref_list), len(returned_list))
|
||||
[self.assertIsInstance(r, self.model) for r in returned_list]
|
||||
@@ -329,20 +316,6 @@ class CrudTests(object):
|
||||
for key in qs_args:
|
||||
self.assertIn(key, qs_args_expected)
|
||||
|
||||
self.assertEqual(expected_truncated, returned_list.truncated)
|
||||
|
||||
def test_list(self, ref_list=None, expected_path=None,
|
||||
expected_query=None, **filter_kwargs):
|
||||
# test simple list, without any truncation
|
||||
self._test_list(ref_list, expected_path, expected_query,
|
||||
**filter_kwargs)
|
||||
# test when a server returned a list with truncated=False
|
||||
self._test_list(ref_list, expected_path, expected_query,
|
||||
truncated=False, **filter_kwargs)
|
||||
# test when a server returned a list with truncated=True
|
||||
self._test_list(ref_list, expected_path, expected_query,
|
||||
truncated=True, **filter_kwargs)
|
||||
|
||||
def test_list_params(self):
|
||||
ref_list = [self.new_ref()]
|
||||
filter_kwargs = {uuid.uuid4().hex: uuid.uuid4().hex}
|
||||
|
||||
Reference in New Issue
Block a user