Merge "Revert "Support truncated flag returned by keystone""

This commit is contained in:
Jenkins
2016-01-14 00:56:53 +00:00
committed by Gerrit Code Review
2 changed files with 8 additions and 55 deletions

View File

@@ -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.

View File

@@ -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}