diff --git a/releasenotes/notes/loggable-resource-client-5977d46a7ea52199.yaml b/releasenotes/notes/loggable-resource-client-5977d46a7ea52199.yaml new file mode 100644 index 0000000000..ac83eaf677 --- /dev/null +++ b/releasenotes/notes/loggable-resource-client-5977d46a7ea52199.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + Lists neutron's Loggable resources API service clients are available in + ``tempest/lib/services/network/loggable_resource_client.py`` module. \ No newline at end of file diff --git a/tempest/api/network/base.py b/tempest/api/network/base.py index 260ba74042..47a8590772 100644 --- a/tempest/api/network/base.py +++ b/tempest/api/network/base.py @@ -85,6 +85,7 @@ class BaseNetworkTest(tempest.test.BaseTestCase): cls.service_providers_client = cls.os_primary.service_providers_client cls.tags_client = cls.os_primary.tags_client cls.log_resource_client = cls.os_primary.log_resource_client + cls.loggable_resource_client = cls.os_primary.loggable_resource_client @classmethod def resource_setup(cls): diff --git a/tempest/clients.py b/tempest/clients.py index ebf2540444..bf98e0373e 100644 --- a/tempest/clients.py +++ b/tempest/clients.py @@ -74,6 +74,7 @@ class Manager(clients.ServiceClients): self.segments_client = self.network.SegmentsClient() self.trunks_client = self.network.TrunksClient() self.log_resource_client = self.network.LogResourceClient() + self.loggable_resource_client = self.network.LoggableResourceClient() def _set_image_clients(self): if CONF.service_available.glance: diff --git a/tempest/lib/services/network/__init__.py b/tempest/lib/services/network/__init__.py index fc85140d13..d55337386f 100644 --- a/tempest/lib/services/network/__init__.py +++ b/tempest/lib/services/network/__init__.py @@ -16,6 +16,8 @@ from tempest.lib.services.network.agents_client import AgentsClient from tempest.lib.services.network.extensions_client import ExtensionsClient from tempest.lib.services.network.floating_ips_client import FloatingIPsClient from tempest.lib.services.network.log_resource_client import LogResourceClient +from tempest.lib.services.network.loggable_resource_client import \ + LoggableResourceClient from tempest.lib.services.network.metering_label_rules_client import \ MeteringLabelRulesClient from tempest.lib.services.network.metering_labels_client import \ @@ -46,4 +48,5 @@ __all__ = ['AgentsClient', 'ExtensionsClient', 'FloatingIPsClient', 'QosClient', 'QosMinimumBandwidthRulesClient', 'QuotasClient', 'RoutersClient', 'SecurityGroupRulesClient', 'SecurityGroupsClient', 'SegmentsClient', 'ServiceProvidersClient', 'SubnetpoolsClient', - 'SubnetsClient', 'TagsClient', 'TrunksClient', 'LogResourceClient'] + 'SubnetsClient', 'TagsClient', 'TrunksClient', 'LogResourceClient', + 'LoggableResourceClient'] diff --git a/tempest/lib/services/network/loggable_resource_client.py b/tempest/lib/services/network/loggable_resource_client.py new file mode 100644 index 0000000000..774046fe46 --- /dev/null +++ b/tempest/lib/services/network/loggable_resource_client.py @@ -0,0 +1,29 @@ +# Copyright 2021 Red Hat, Inc. +# All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from tempest.lib.services.network import base + + +class LoggableResourceClient(base.BaseNetworkClient): + + def list_loggable_resources(self, **filters): + """List Loggable resources. + + For a full list of available parameters, please refer to the official + API reference: + https://docs.openstack.org/api-ref/network/v2/index.html#list-loggable-resources + """ + uri = '/log/loggable-resources' + return self.list_resources(uri, **filters) diff --git a/tempest/tests/lib/services/network/test_loggable_resource_client.py b/tempest/tests/lib/services/network/test_loggable_resource_client.py new file mode 100644 index 0000000000..232775b61b --- /dev/null +++ b/tempest/tests/lib/services/network/test_loggable_resource_client.py @@ -0,0 +1,53 @@ +# Copyright 2021 Red Hat, Inc. +# All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from tempest.lib.services.network import loggable_resource_client +from tempest.tests.lib import fake_auth_provider +from tempest.tests.lib.services import base + + +class TestLoggableResourceClient(base.BaseServiceTest): + + FAKE_LOGS = { + "loggable_resources": [ + { + "type": "security_group" + }, + { + "type": "none" + } + ] + } + + def setUp(self): + super(TestLoggableResourceClient, self).setUp() + fake_auth = fake_auth_provider.FakeAuthProvider() + self.loggable_resource_client = \ + loggable_resource_client.LoggableResourceClient( + fake_auth, "network", "regionOne") + + def _test_list_loggable_resources(self, bytes_body=False): + self.check_service_client_function( + self.loggable_resource_client.list_loggable_resources, + "tempest.lib.common.rest_client.RestClient.get", + self.FAKE_LOGS, + bytes_body, + 200) + + def test_list_loggable_resources_with_str_body(self): + self._test_list_loggable_resources() + + def test_list_loggable_resources_with_bytes_body(self): + self._test_list_loggable_resources(bytes_body=True)