diff --git a/karbor/services/protection/provider.py b/karbor/services/protection/provider.py old mode 100644 new mode 100755 index 63f967d3..d092ad16 --- a/karbor/services/protection/provider.py +++ b/karbor/services/protection/provider.py @@ -203,14 +203,22 @@ class ProviderRegistry(object): 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:] + filters = filters if filters else {} 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 - )) + provider_dict = dict( + id=provider.id, + name=provider.name, + description=provider.description, + extended_info_schema=provider.extended_info_schema + ) + for key, value in filters.items(): + if key in provider_dict.keys() and \ + value != provider_dict[key]: + break + else: + valid_providers.append(provider_dict) + if limit is not None and len(valid_providers) == limit: return valid_providers return valid_providers diff --git a/karbor/tests/unit/protection/test_provider.py b/karbor/tests/unit/protection/test_provider.py old mode 100644 new mode 100755 index 04df24a7..c9f84765 --- a/karbor/tests/unit/protection/test_provider.py +++ b/karbor/tests/unit/protection/test_provider.py @@ -41,13 +41,13 @@ def set_provider_list(provider_registry): 'fake_provider_id_1': FakeProvider( id='fake_provider_id_1', name='fake_provider_name_1', - description='', + description='Fake provider 1 description', extended_info_schema='' ), 'fake_provider_id_2': FakeProvider( id='fake_provider_id_2', name='fake_provider_name_2', - description='', + description='Fake provider 2 description', extended_info_schema='' ) } @@ -90,7 +90,8 @@ class ProviderRegistryTest(base.TestCase): def test_list_provider(self): pr = provider.ProviderRegistry() - self.assertEqual(1, len(pr.list_providers())) + set_provider_list(pr) + self.assertEqual(2, len(pr.list_providers())) def test_list_provider_with_marker(self): pr = provider.ProviderRegistry() @@ -104,6 +105,12 @@ class ProviderRegistryTest(base.TestCase): self.assertEqual( 1, len(pr.list_providers(limit=1))) + def test_list_provider_with_filters(self): + pr = provider.ProviderRegistry() + set_provider_list(pr) + filters = {'name': 'fake_provider_name_1'} + self.assertEqual(1, len(pr.list_providers(filters=filters))) + def test_show_provider(self): pr = provider.ProviderRegistry() provider_list = pr.list_providers()