Fix 'limit' and 'marker' error in provider listing
Currently, providers API's parameters like 'limit' and 'marker' are not really used, but python-karborclient use them. This patch will add the processing of 'limit' and 'marker' in providers API. Change-Id: I6a6206948adc1c417177a1b9c0f54aa2c0b8ef7e Closes-Bug: #1717827
This commit is contained in:
parent
bd1887ff44
commit
99283590e7
|
@ -197,11 +197,23 @@ class ProviderRegistry(object):
|
|||
|
||||
def list_providers(self, marker=None, limit=None, sort_keys=None,
|
||||
sort_dirs=None, filters=None):
|
||||
# TODO(wangliuan) How to use the list option
|
||||
return [dict(id=provider.id, name=provider.name,
|
||||
# TODO(jiaopengju) How to use sort_keys, sort_dirs and filters
|
||||
provider_ids = sorted(self.providers.keys())
|
||||
provider_list = sorted(
|
||||
self.providers.values(), key=lambda item: item.id)
|
||||
if marker is not None and marker in provider_ids:
|
||||
provider_list = provider_list[provider_ids.index(marker) + 1:]
|
||||
valid_providers = []
|
||||
for provider in provider_list:
|
||||
valid_providers.append(
|
||||
dict(id=provider.id,
|
||||
name=provider.name,
|
||||
description=provider.description,
|
||||
extended_info_schema=provider.extended_info_schema)
|
||||
for provider in self.providers.values()]
|
||||
extended_info_schema=provider.extended_info_schema
|
||||
))
|
||||
if limit is not None and len(valid_providers) == limit:
|
||||
return valid_providers
|
||||
return valid_providers
|
||||
|
||||
def show_provider(self, provider_id):
|
||||
try:
|
||||
|
|
|
@ -36,6 +36,31 @@ resource_graph = {
|
|||
}
|
||||
|
||||
|
||||
def set_provider_list(provider_registry):
|
||||
provider_registry.providers = {
|
||||
'fake_provider_id_1': FakeProvider(
|
||||
id='fake_provider_id_1',
|
||||
name='fake_provider_name_1',
|
||||
description='',
|
||||
extended_info_schema=''
|
||||
),
|
||||
'fake_provider_id_2': FakeProvider(
|
||||
id='fake_provider_id_2',
|
||||
name='fake_provider_name_2',
|
||||
description='',
|
||||
extended_info_schema=''
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
class FakeProvider(object):
|
||||
def __init__(self, id, name, description, extended_info_schema):
|
||||
self.id = id
|
||||
self.name = name
|
||||
self.description = description
|
||||
self.extended_info_schema = extended_info_schema
|
||||
|
||||
|
||||
class ProviderRegistryTest(base.TestCase):
|
||||
def setUp(self):
|
||||
super(ProviderRegistryTest, self).setUp()
|
||||
|
@ -67,6 +92,18 @@ class ProviderRegistryTest(base.TestCase):
|
|||
pr = provider.ProviderRegistry()
|
||||
self.assertEqual(1, len(pr.list_providers()))
|
||||
|
||||
def test_list_provider_with_marker(self):
|
||||
pr = provider.ProviderRegistry()
|
||||
set_provider_list(pr)
|
||||
self.assertEqual(
|
||||
1, len(pr.list_providers(marker='fake_provider_id_1')))
|
||||
|
||||
def test_list_provider_with_limit(self):
|
||||
pr = provider.ProviderRegistry()
|
||||
set_provider_list(pr)
|
||||
self.assertEqual(
|
||||
1, len(pr.list_providers(limit=1)))
|
||||
|
||||
def test_show_provider(self):
|
||||
pr = provider.ProviderRegistry()
|
||||
provider_list = pr.list_providers()
|
||||
|
|
Loading…
Reference in New Issue