From 5b5e81c6a1cd3a9b0d4d2354f55f0cb5e23012df Mon Sep 17 00:00:00 2001 From: Ghanshyam Mann Date: Fri, 4 Aug 2023 15:12:34 -0700 Subject: [PATCH] Remove nova-network tests nova-network was removed in rocky release and tempest master does not support rocky so we can remove those tests now. Along with the tests, it also removes the below service clients: * floating_ip_pools_client * floating_ips_bulk_client * fixed_ips_client * list_virtual_interfaces Change-Id: I682ebb0e3ea0d7ef0e429ad32899c406e46ffae7 --- ...e-nova-network-tests-f694bcd30a97a4ca.yaml | 11 ++ tempest/api/compute/admin/test_fixed_ips.py | 72 ------------- .../compute/admin/test_fixed_ips_negative.py | 101 ------------------ .../compute/admin/test_floating_ips_bulk.py | 85 --------------- tempest/api/compute/base.py | 31 ------ tempest/api/compute/floating_ips/base.py | 1 - .../floating_ips/test_list_floating_ips.py | 7 -- .../servers/test_virtual_interfaces.py | 66 ------------ .../test_virtual_interfaces_negative.py | 50 --------- tempest/clients.py | 3 - .../response/compute/v2_1/fixed_ips.py | 41 ------- .../response/compute/v2_1/floating_ips.py | 85 --------------- .../response/compute/v2_1/servers.py | 27 ----- tempest/lib/services/compute/__init__.py | 12 +-- .../lib/services/compute/fixed_ips_client.py | 42 -------- .../compute/floating_ip_pools_client.py | 36 ------- .../compute/floating_ips_bulk_client.py | 51 --------- .../lib/services/compute/servers_client.py | 8 -- .../services/compute/test_fixedIPs_client.py | 58 ---------- .../compute/test_floating_ip_pools_client.py | 46 -------- .../compute/test_floating_ips_bulk_client.py | 88 --------------- .../services/compute/test_servers_client.py | 15 --- 22 files changed, 14 insertions(+), 922 deletions(-) create mode 100644 releasenotes/notes/remove-nova-network-tests-f694bcd30a97a4ca.yaml delete mode 100644 tempest/api/compute/admin/test_fixed_ips.py delete mode 100644 tempest/api/compute/admin/test_fixed_ips_negative.py delete mode 100644 tempest/api/compute/admin/test_floating_ips_bulk.py delete mode 100644 tempest/api/compute/servers/test_virtual_interfaces.py delete mode 100644 tempest/api/compute/servers/test_virtual_interfaces_negative.py delete mode 100644 tempest/lib/api_schema/response/compute/v2_1/fixed_ips.py delete mode 100644 tempest/lib/services/compute/fixed_ips_client.py delete mode 100644 tempest/lib/services/compute/floating_ip_pools_client.py delete mode 100644 tempest/lib/services/compute/floating_ips_bulk_client.py delete mode 100644 tempest/tests/lib/services/compute/test_fixedIPs_client.py delete mode 100644 tempest/tests/lib/services/compute/test_floating_ip_pools_client.py delete mode 100644 tempest/tests/lib/services/compute/test_floating_ips_bulk_client.py diff --git a/releasenotes/notes/remove-nova-network-tests-f694bcd30a97a4ca.yaml b/releasenotes/notes/remove-nova-network-tests-f694bcd30a97a4ca.yaml new file mode 100644 index 0000000000..6ee569106f --- /dev/null +++ b/releasenotes/notes/remove-nova-network-tests-f694bcd30a97a4ca.yaml @@ -0,0 +1,11 @@ +--- +prelude: > + Tempest remove the nova-network tests and service clients. + The nova-network was removed from Rocky release and current + Tempest master does not support the Rocky release. Below are + the service clients have been removed: + + * floating_ip_pools_client + * floating_ips_bulk_client + * fixed_ips_client + * list_virtual_interfaces diff --git a/tempest/api/compute/admin/test_fixed_ips.py b/tempest/api/compute/admin/test_fixed_ips.py deleted file mode 100644 index 9de3da9eb6..0000000000 --- a/tempest/api/compute/admin/test_fixed_ips.py +++ /dev/null @@ -1,72 +0,0 @@ -# Copyright 2013 IBM Corp -# 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.api.compute import base -from tempest.common import utils -from tempest import config -from tempest.lib import decorators - -CONF = config.CONF - - -class FixedIPsTestJson(base.BaseV2ComputeAdminTest): - """Test fixed ips API""" - - @classmethod - def skip_checks(cls): - super(FixedIPsTestJson, cls).skip_checks() - if CONF.service_available.neutron: - msg = ("%s skipped as neutron is available" % cls.__name__) - raise cls.skipException(msg) - if not utils.get_service_list()['network']: - raise cls.skipException("network service not enabled.") - - @classmethod - def setup_clients(cls): - super(FixedIPsTestJson, cls).setup_clients() - cls.client = cls.os_admin.fixed_ips_client - - @classmethod - def resource_setup(cls): - super(FixedIPsTestJson, cls).resource_setup() - server = cls.create_test_server(wait_until='ACTIVE') - server = cls.servers_client.show_server(server['id'])['server'] - cls.ip = None - for ip_set in server['addresses']: - for ip in server['addresses'][ip_set]: - if ip['OS-EXT-IPS:type'] == 'fixed': - cls.ip = ip['addr'] - break - if cls.ip: - break - if cls.ip is None: - raise cls.skipException("No fixed ip found for server: %s" - % server['id']) - - @decorators.idempotent_id('16b7d848-2f7c-4709-85a3-2dfb4576cc52') - def test_list_fixed_ip_details(self): - """Test getting fixed ip details""" - fixed_ip = self.client.show_fixed_ip(self.ip) - self.assertEqual(fixed_ip['fixed_ip']['address'], self.ip) - - @decorators.idempotent_id('5485077b-7e46-4cec-b402-91dc3173433b') - def test_set_reserve(self): - """Test reserving fixed ip""" - self.client.reserve_fixed_ip(self.ip, reserve="None") - - @decorators.idempotent_id('7476e322-b9ff-4710-bf82-49d51bac6e2e') - def test_set_unreserve(self): - """Test unreserving fixed ip""" - self.client.reserve_fixed_ip(self.ip, unreserve="None") diff --git a/tempest/api/compute/admin/test_fixed_ips_negative.py b/tempest/api/compute/admin/test_fixed_ips_negative.py deleted file mode 100644 index 1629faadaa..0000000000 --- a/tempest/api/compute/admin/test_fixed_ips_negative.py +++ /dev/null @@ -1,101 +0,0 @@ -# Copyright 2013 NEC Corporation. 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.api.compute import base -from tempest.common import utils -from tempest import config -from tempest.lib import decorators -from tempest.lib import exceptions as lib_exc - -CONF = config.CONF - - -class FixedIPsNegativeTestJson(base.BaseV2ComputeAdminTest): - """Negative tests of fixed ips API""" - - @classmethod - def skip_checks(cls): - super(FixedIPsNegativeTestJson, cls).skip_checks() - if CONF.service_available.neutron: - msg = ("%s skipped as neutron is available" % cls.__name__) - raise cls.skipException(msg) - if not utils.get_service_list()['network']: - raise cls.skipException("network service not enabled.") - - @classmethod - def setup_clients(cls): - super(FixedIPsNegativeTestJson, cls).setup_clients() - cls.client = cls.os_admin.fixed_ips_client - cls.non_admin_client = cls.fixed_ips_client - - @classmethod - def resource_setup(cls): - super(FixedIPsNegativeTestJson, cls).resource_setup() - server = cls.create_test_server(wait_until='ACTIVE') - server = cls.servers_client.show_server(server['id'])['server'] - cls.ip = None - for ip_set in server['addresses']: - for ip in server['addresses'][ip_set]: - if ip['OS-EXT-IPS:type'] == 'fixed': - cls.ip = ip['addr'] - break - if cls.ip: - break - if cls.ip is None: - raise cls.skipException("No fixed ip found for server: %s" - % server['id']) - - @decorators.attr(type=['negative']) - @decorators.idempotent_id('9f17f47d-daad-4adc-986e-12370c93e407') - def test_list_fixed_ip_details_with_non_admin_user(self): - """Test listing fixed ip with detail by non-admin user is forbidden""" - self.assertRaises(lib_exc.Forbidden, - self.non_admin_client.show_fixed_ip, self.ip) - - @decorators.attr(type=['negative']) - @decorators.idempotent_id('ce60042c-fa60-4836-8d43-1c8e3359dc47') - def test_set_reserve_with_non_admin_user(self): - """Test reserving fixed ip by non-admin user is forbidden""" - self.assertRaises(lib_exc.Forbidden, - self.non_admin_client.reserve_fixed_ip, - self.ip, reserve="None") - - @decorators.attr(type=['negative']) - @decorators.idempotent_id('f1f7a35b-0390-48c5-9803-5f27461439db') - def test_set_unreserve_with_non_admin_user(self): - """Test unreserving fixed ip by non-admin user is forbidden""" - self.assertRaises(lib_exc.Forbidden, - self.non_admin_client.reserve_fixed_ip, - self.ip, unreserve="None") - - @decorators.attr(type=['negative']) - @decorators.idempotent_id('f51cf464-7fc5-4352-bc3e-e75cfa2cb717') - def test_set_reserve_with_invalid_ip(self): - """Test reserving invalid fixed ip should fail""" - # NOTE(maurosr): since this exercises the same code snippet, we do it - # only for reserve action - # NOTE(eliqiao): in Juno, the exception is NotFound, but in master, we - # change the error code to BadRequest, both exceptions should be - # accepted by tempest - self.assertRaises((lib_exc.NotFound, lib_exc.BadRequest), - self.client.reserve_fixed_ip, - "my.invalid.ip", reserve="None") - - @decorators.attr(type=['negative']) - @decorators.idempotent_id('fd26ef50-f135-4232-9d32-281aab3f9176') - def test_fixed_ip_with_invalid_action(self): - """Test operating fixed ip with invalid action should fail""" - self.assertRaises(lib_exc.BadRequest, - self.client.reserve_fixed_ip, - self.ip, invalid_action="None") diff --git a/tempest/api/compute/admin/test_floating_ips_bulk.py b/tempest/api/compute/admin/test_floating_ips_bulk.py deleted file mode 100644 index 786c7f03ab..0000000000 --- a/tempest/api/compute/admin/test_floating_ips_bulk.py +++ /dev/null @@ -1,85 +0,0 @@ -# Copyright 2014 NEC Technologies India Ltd. -# 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. - -import netaddr - -from tempest.api.compute import base -from tempest.common import utils -from tempest import config -from tempest.lib.common.utils import test_utils -from tempest.lib import decorators -from tempest.lib import exceptions - -CONF = config.CONF - - -# TODO(stephenfin): Remove this test class once the nova queens branch goes -# into extended maintenance mode. -class FloatingIPsBulkAdminTestJSON(base.BaseV2ComputeAdminTest): - """Tests Floating IPs Bulk APIs that require admin privileges. - - API documentation - http://docs.openstack.org/api/openstack-compute/2/ - content/ext-os-floating-ips-bulk.html - """ - max_microversion = '2.35' - depends_on_nova_network = True - - @classmethod - def setup_clients(cls): - super(FloatingIPsBulkAdminTestJSON, cls).setup_clients() - cls.client = cls.os_admin.floating_ips_bulk_client - - @classmethod - def resource_setup(cls): - super(FloatingIPsBulkAdminTestJSON, cls).resource_setup() - cls.ip_range = CONF.validation.floating_ip_range - cls.verify_unallocated_floating_ip_range(cls.ip_range) - - @classmethod - def verify_unallocated_floating_ip_range(cls, ip_range): - # Verify whether configure floating IP range is not already allocated. - body = cls.client.list_floating_ips_bulk()['floating_ip_info'] - allocated_ips_list = map(lambda x: x['address'], body) - for ip_addr in netaddr.IPNetwork(ip_range).iter_hosts(): - if str(ip_addr) in allocated_ips_list: - msg = ("Configured unallocated floating IP range is already " - "allocated. Configure the correct unallocated range " - "as 'floating_ip_range'") - raise exceptions.InvalidConfiguration(msg) - return - - @decorators.idempotent_id('2c8f145f-8012-4cb8-ac7e-95a587f0e4ab') - @utils.services('network') - def test_create_list_delete_floating_ips_bulk(self): - """Creating, listing and deleting the Floating IPs Bulk""" - pool = 'test_pool' - # NOTE(GMann): Reserving the IP range but those are not attached - # anywhere. Using the below mentioned interface which is not ever - # expected to be used. Clean Up has been done for created IP range - interface = 'eth0' - body = (self.client.create_floating_ips_bulk(self.ip_range, - pool, - interface) - ['floating_ips_bulk_create']) - self.addCleanup(test_utils.call_and_ignore_notfound_exc, - self.client.delete_floating_ips_bulk, self.ip_range) - self.assertEqual(self.ip_range, body['ip_range']) - ips_list = self.client.list_floating_ips_bulk()['floating_ip_info'] - self.assertNotEmpty(ips_list) - for ip in netaddr.IPNetwork(self.ip_range).iter_hosts(): - self.assertIn(str(ip), map(lambda x: x['address'], ips_list)) - body = (self.client.delete_floating_ips_bulk(self.ip_range) - ['floating_ips_bulk_delete']) - self.assertEqual(self.ip_range, body) diff --git a/tempest/api/compute/base.py b/tempest/api/compute/base.py index ce6cd60921..e29ccfc4cf 100644 --- a/tempest/api/compute/base.py +++ b/tempest/api/compute/base.py @@ -79,7 +79,6 @@ class BaseV2ComputeTest(api_version_utils.BaseMicroversionTest, cls.flavors_client = cls.os_primary.flavors_client cls.compute_images_client = cls.os_primary.compute_images_client cls.extensions_client = cls.os_primary.extensions_client - cls.floating_ip_pools_client = cls.os_primary.floating_ip_pools_client cls.floating_ips_client = cls.os_primary.compute_floating_ips_client cls.keypairs_client = cls.os_primary.keypairs_client cls.security_group_rules_client = ( @@ -94,7 +93,6 @@ class BaseV2ComputeTest(api_version_utils.BaseMicroversionTest, cls.snapshots_extensions_client =\ cls.os_primary.snapshots_extensions_client cls.interfaces_client = cls.os_primary.interfaces_client - cls.fixed_ips_client = cls.os_primary.fixed_ips_client cls.availability_zone_client = cls.os_primary.availability_zone_client cls.agents_client = cls.os_primary.agents_client cls.aggregates_client = cls.os_primary.aggregates_client @@ -120,35 +118,6 @@ class BaseV2ComputeTest(api_version_utils.BaseMicroversionTest, raise lib_exc.InvalidConfiguration( 'Either api_v1 or api_v2 must be True in ' '[image-feature-enabled].') - cls._check_depends_on_nova_network() - - @classmethod - def _check_depends_on_nova_network(cls): - # Since nova-network APIs were removed from Nova in the Rocky release, - # determine, based on the max version from the version document, if - # the compute API is >Queens and if so, skip tests that rely on - # nova-network. - if not getattr(cls, 'depends_on_nova_network', False): - return - versions = cls.versions_client.list_versions()['versions'] - # Find the v2.1 version which will tell us our max version for the - # compute API we're testing against. - for version in versions: - if version['id'] == 'v2.1': - max_version = api_version_request.APIVersionRequest( - version['version']) - break - else: - LOG.warning( - 'Unable to determine max v2.1 compute API version: %s', - versions) - return - - # The max compute API version in Queens is 2.60 so we cap - # at that version. - queens = api_version_request.APIVersionRequest('2.60') - if max_version > queens: - raise cls.skipException('nova-network is gone') @classmethod def resource_setup(cls): diff --git a/tempest/api/compute/floating_ips/base.py b/tempest/api/compute/floating_ips/base.py index 262a3c1492..d6c302dcf9 100644 --- a/tempest/api/compute/floating_ips/base.py +++ b/tempest/api/compute/floating_ips/base.py @@ -41,4 +41,3 @@ class BaseFloatingIPsTest(base.BaseV2ComputeTest): def setup_clients(cls): super(BaseFloatingIPsTest, cls).setup_clients() cls.client = cls.floating_ips_client - cls.pools_client = cls.floating_ip_pools_client diff --git a/tempest/api/compute/floating_ips/test_list_floating_ips.py b/tempest/api/compute/floating_ips/test_list_floating_ips.py index 6bfee95a72..fcbea2f94d 100644 --- a/tempest/api/compute/floating_ips/test_list_floating_ips.py +++ b/tempest/api/compute/floating_ips/test_list_floating_ips.py @@ -66,10 +66,3 @@ class FloatingIPDetailsTestJSON(base.BaseFloatingIPsTest): self.assertEqual(floating_ip_fixed_ip, body['fixed_ip']) self.assertEqual(floating_ip_id, body['id']) - - @decorators.idempotent_id('df389fc8-56f5-43cc-b290-20eda39854d3') - def test_list_floating_ip_pools(self): - """Test listing floating ip pools""" - floating_ip_pools = self.pools_client.list_floating_ip_pools() - self.assertNotEmpty(floating_ip_pools['floating_ip_pools'], - "Expected floating IP Pools. Got zero.") diff --git a/tempest/api/compute/servers/test_virtual_interfaces.py b/tempest/api/compute/servers/test_virtual_interfaces.py deleted file mode 100644 index b2e02c594b..0000000000 --- a/tempest/api/compute/servers/test_virtual_interfaces.py +++ /dev/null @@ -1,66 +0,0 @@ -# Copyright 2013 OpenStack Foundation -# 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. - -import netaddr -import testtools - -from tempest.api.compute import base -from tempest.common import utils -from tempest import config -from tempest.lib import decorators -from tempest.lib import exceptions - -CONF = config.CONF - - -# TODO(mriedem): Remove this test class once the nova queens branch goes into -# extended maintenance mode. -class VirtualInterfacesTestJSON(base.BaseV2ComputeTest): - """Test virtual interfaces API with compute microversion less than 2.44""" - - max_microversion = '2.43' - - depends_on_nova_network = True - - create_default_network = True - - @classmethod - def setup_clients(cls): - super(VirtualInterfacesTestJSON, cls).setup_clients() - cls.client = cls.servers_client - - @classmethod - def resource_setup(cls): - super(VirtualInterfacesTestJSON, cls).resource_setup() - cls.server = cls.create_test_server(wait_until='ACTIVE') - - @decorators.idempotent_id('96c4e2ef-5e4d-4d7f-87f5-fed6dca18016') - @utils.services('network') - def test_list_virtual_interfaces(self): - """Test listing virtual interfaces of a server""" - if CONF.service_available.neutron: - with testtools.ExpectedException(exceptions.BadRequest): - self.client.list_virtual_interfaces(self.server['id']) - else: - output = self.client.list_virtual_interfaces(self.server['id']) - virt_ifaces = output['virtual_interfaces'] - self.assertNotEmpty(virt_ifaces, - 'Expected virtual interfaces, got 0 ' - 'interfaces.') - for virt_iface in virt_ifaces: - mac_address = virt_iface['mac_address'] - self.assertTrue(netaddr.valid_mac(mac_address), - "Invalid mac address detected. mac address: %s" - % mac_address) diff --git a/tempest/api/compute/servers/test_virtual_interfaces_negative.py b/tempest/api/compute/servers/test_virtual_interfaces_negative.py deleted file mode 100644 index 5667281112..0000000000 --- a/tempest/api/compute/servers/test_virtual_interfaces_negative.py +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright 2013 OpenStack Foundation -# 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.api.compute import base -from tempest.common import utils -from tempest.lib.common.utils import data_utils -from tempest.lib import decorators -from tempest.lib import exceptions as lib_exc - - -# TODO(mriedem): Remove this test class once the nova queens branch goes into -# extended maintenance mode. -class VirtualInterfacesNegativeTestJSON(base.BaseV2ComputeTest): - """Negative tests of virtual interfaces API - - Negative tests of virtual interfaces API for compute microversion less - than 2.44. - """ - - max_microversion = '2.43' - - depends_on_nova_network = True - - @classmethod - def setup_credentials(cls): - # For this test no network resources are needed - cls.set_network_resources() - super(VirtualInterfacesNegativeTestJSON, cls).setup_credentials() - - @decorators.attr(type=['negative']) - @decorators.idempotent_id('64ebd03c-1089-4306-93fa-60f5eb5c803c') - @utils.services('network') - def test_list_virtual_interfaces_invalid_server_id(self): - """Test listing virtual interfaces of an invalid server should fail""" - invalid_server_id = data_utils.rand_uuid() - self.assertRaises(lib_exc.NotFound, - self.servers_client.list_virtual_interfaces, - invalid_server_id) diff --git a/tempest/clients.py b/tempest/clients.py index 1aa34d0d54..e0cc3dde51 100644 --- a/tempest/clients.py +++ b/tempest/clients.py @@ -124,15 +124,12 @@ class Manager(clients.ServiceClients): self.quota_classes_client = self.compute.QuotaClassesClient() self.flavors_client = self.compute.FlavorsClient() self.extensions_client = self.compute.ExtensionsClient() - self.floating_ip_pools_client = self.compute.FloatingIPPoolsClient() - self.floating_ips_bulk_client = self.compute.FloatingIPsBulkClient() self.compute_floating_ips_client = self.compute.FloatingIPsClient() self.compute_security_group_rules_client = ( self.compute.SecurityGroupRulesClient()) self.compute_security_groups_client = ( self.compute.SecurityGroupsClient()) self.interfaces_client = self.compute.InterfacesClient() - self.fixed_ips_client = self.compute.FixedIPsClient() self.availability_zone_client = self.compute.AvailabilityZoneClient() self.aggregates_client = self.compute.AggregatesClient() self.services_client = self.compute.ServicesClient() diff --git a/tempest/lib/api_schema/response/compute/v2_1/fixed_ips.py b/tempest/lib/api_schema/response/compute/v2_1/fixed_ips.py deleted file mode 100644 index a653213f05..0000000000 --- a/tempest/lib/api_schema/response/compute/v2_1/fixed_ips.py +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright 2014 NEC Corporation. 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.api_schema.response.compute.v2_1 import parameter_types - -get_fixed_ip = { - 'status_code': [200], - 'response_body': { - 'type': 'object', - 'properties': { - 'fixed_ip': { - 'type': 'object', - 'properties': { - 'address': parameter_types.ip_address, - 'cidr': {'type': 'string'}, - 'host': {'type': 'string'}, - 'hostname': {'type': 'string'} - }, - 'additionalProperties': False, - 'required': ['address', 'cidr', 'host', 'hostname'] - } - }, - 'additionalProperties': False, - 'required': ['fixed_ip'] - } -} - -reserve_unreserve_fixed_ip = { - 'status_code': [202] -} diff --git a/tempest/lib/api_schema/response/compute/v2_1/floating_ips.py b/tempest/lib/api_schema/response/compute/v2_1/floating_ips.py index 0c665905fe..274540c07a 100644 --- a/tempest/lib/api_schema/response/compute/v2_1/floating_ips.py +++ b/tempest/lib/api_schema/response/compute/v2_1/floating_ips.py @@ -58,91 +58,6 @@ create_get_floating_ip = { } } -list_floating_ip_pools = { - 'status_code': [200], - 'response_body': { - 'type': 'object', - 'properties': { - 'floating_ip_pools': { - 'type': 'array', - 'items': { - 'type': 'object', - 'properties': { - 'name': {'type': 'string'} - }, - 'additionalProperties': False, - 'required': ['name'], - } - } - }, - 'additionalProperties': False, - 'required': ['floating_ip_pools'], - } -} - add_remove_floating_ip = { 'status_code': [202] } - -create_floating_ips_bulk = { - 'status_code': [200], - 'response_body': { - 'type': 'object', - 'properties': { - 'floating_ips_bulk_create': { - 'type': 'object', - 'properties': { - 'interface': {'type': ['string', 'null']}, - 'ip_range': {'type': 'string'}, - 'pool': {'type': ['string', 'null']}, - }, - 'additionalProperties': False, - 'required': ['interface', 'ip_range', 'pool'], - } - }, - 'additionalProperties': False, - 'required': ['floating_ips_bulk_create'], - } -} - -delete_floating_ips_bulk = { - 'status_code': [200], - 'response_body': { - 'type': 'object', - 'properties': { - 'floating_ips_bulk_delete': {'type': 'string'} - }, - 'additionalProperties': False, - 'required': ['floating_ips_bulk_delete'], - } -} - -list_floating_ips_bulk = { - 'status_code': [200], - 'response_body': { - 'type': 'object', - 'properties': { - 'floating_ip_info': { - 'type': 'array', - 'items': { - 'type': 'object', - 'properties': { - 'address': parameter_types.ip_address, - 'instance_uuid': {'type': ['string', 'null']}, - 'interface': {'type': ['string', 'null']}, - 'pool': {'type': ['string', 'null']}, - 'project_id': {'type': ['string', 'null']}, - 'fixed_ip': parameter_types.ip_address - }, - 'additionalProperties': False, - # NOTE: fixed_ip is introduced after JUNO release, - # So it is not defined as 'required'. - 'required': ['address', 'instance_uuid', 'interface', - 'pool', 'project_id'], - } - } - }, - 'additionalProperties': False, - 'required': ['floating_ip_info'], - } -} diff --git a/tempest/lib/api_schema/response/compute/v2_1/servers.py b/tempest/lib/api_schema/response/compute/v2_1/servers.py index bd42afd2da..14e2d3b33b 100644 --- a/tempest/lib/api_schema/response/compute/v2_1/servers.py +++ b/tempest/lib/api_schema/response/compute/v2_1/servers.py @@ -250,33 +250,6 @@ rescue_server_with_admin_pass['response_body'].update( rescue_server_with_admin_pass['response_body'].update( {'required': ['adminPass']}) - -list_virtual_interfaces = { - 'status_code': [200], - 'response_body': { - 'type': 'object', - 'properties': { - 'virtual_interfaces': { - 'type': 'array', - 'items': { - 'type': 'object', - 'properties': { - 'id': {'type': 'string'}, - 'mac_address': parameter_types.mac_address, - 'OS-EXT-VIF-NET:net_id': {'type': 'string'} - }, - 'additionalProperties': False, - # 'OS-EXT-VIF-NET:net_id' is API extension So it is - # not defined as 'required' - 'required': ['id', 'mac_address'] - } - } - }, - 'additionalProperties': False, - 'required': ['virtual_interfaces'] - } -} - common_attach_volume_info = { 'type': 'object', 'properties': { diff --git a/tempest/lib/services/compute/__init__.py b/tempest/lib/services/compute/__init__.py index da800af8d6..10ec9beee9 100644 --- a/tempest/lib/services/compute/__init__.py +++ b/tempest/lib/services/compute/__init__.py @@ -24,12 +24,7 @@ from tempest.lib.services.compute.certificates_client import \ CertificatesClient from tempest.lib.services.compute.extensions_client import \ ExtensionsClient -from tempest.lib.services.compute.fixed_ips_client import FixedIPsClient from tempest.lib.services.compute.flavors_client import FlavorsClient -from tempest.lib.services.compute.floating_ip_pools_client import \ - FloatingIPPoolsClient -from tempest.lib.services.compute.floating_ips_bulk_client import \ - FloatingIPsBulkClient from tempest.lib.services.compute.floating_ips_client import \ FloatingIPsClient from tempest.lib.services.compute.hosts_client import HostsClient @@ -69,10 +64,9 @@ from tempest.lib.services.compute.volumes_client import \ __all__ = ['AgentsClient', 'AggregatesClient', 'AssistedVolumeSnapshotsClient', 'AvailabilityZoneClient', 'BaremetalNodesClient', - 'CertificatesClient', 'ExtensionsClient', 'FixedIPsClient', - 'FlavorsClient', 'FloatingIPPoolsClient', - 'FloatingIPsBulkClient', 'FloatingIPsClient', 'HostsClient', - 'HypervisorClient', 'ImagesClient', 'InstanceUsagesAuditLogClient', + 'CertificatesClient', 'ExtensionsClient', 'FlavorsClient', + 'FloatingIPsClient', 'HostsClient', 'HypervisorClient', + 'ImagesClient', 'InstanceUsagesAuditLogClient', 'InterfacesClient', 'KeyPairsClient', 'LimitsClient', 'MigrationsClient', 'NetworksClient', 'QuotaClassesClient', 'QuotasClient', 'SecurityGroupDefaultRulesClient', diff --git a/tempest/lib/services/compute/fixed_ips_client.py b/tempest/lib/services/compute/fixed_ips_client.py deleted file mode 100644 index 098c856878..0000000000 --- a/tempest/lib/services/compute/fixed_ips_client.py +++ /dev/null @@ -1,42 +0,0 @@ -# Copyright 2013 IBM Corp -# 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 oslo_serialization import jsonutils as json - -from tempest.lib.api_schema.response.compute.v2_1 import fixed_ips as schema -from tempest.lib.common import rest_client -from tempest.lib.services.compute import base_compute_client - - -class FixedIPsClient(base_compute_client.BaseComputeClient): - - def show_fixed_ip(self, fixed_ip): - url = "os-fixed-ips/%s" % fixed_ip - resp, body = self.get(url) - body = json.loads(body) - self.validate_response(schema.get_fixed_ip, resp, body) - return rest_client.ResponseBody(resp, body) - - def reserve_fixed_ip(self, fixed_ip, **kwargs): - """Reserve/Unreserve a fixed IP. - - For a full list of available parameters, please refer to the official - API reference: - https://docs.openstack.org/api-ref/compute/#reserve-or-release-a-fixed-ip - """ - url = "os-fixed-ips/%s/action" % fixed_ip - resp, body = self.post(url, json.dumps(kwargs)) - self.validate_response(schema.reserve_unreserve_fixed_ip, resp, body) - return rest_client.ResponseBody(resp, body) diff --git a/tempest/lib/services/compute/floating_ip_pools_client.py b/tempest/lib/services/compute/floating_ip_pools_client.py deleted file mode 100644 index aa065b8294..0000000000 --- a/tempest/lib/services/compute/floating_ip_pools_client.py +++ /dev/null @@ -1,36 +0,0 @@ -# Copyright 2012 OpenStack Foundation -# 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 urllib import parse as urllib - -from oslo_serialization import jsonutils as json - -from tempest.lib.api_schema.response.compute.v2_1 import floating_ips as schema -from tempest.lib.common import rest_client -from tempest.lib.services.compute import base_compute_client - - -class FloatingIPPoolsClient(base_compute_client.BaseComputeClient): - - def list_floating_ip_pools(self, params=None): - """Gets all floating IP Pools list.""" - url = 'os-floating-ip-pools' - if params: - url += '?%s' % urllib.urlencode(params) - - resp, body = self.get(url) - body = json.loads(body) - self.validate_response(schema.list_floating_ip_pools, resp, body) - return rest_client.ResponseBody(resp, body) diff --git a/tempest/lib/services/compute/floating_ips_bulk_client.py b/tempest/lib/services/compute/floating_ips_bulk_client.py deleted file mode 100644 index 5f06009d6f..0000000000 --- a/tempest/lib/services/compute/floating_ips_bulk_client.py +++ /dev/null @@ -1,51 +0,0 @@ -# Copyright 2012 OpenStack Foundation -# 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 oslo_serialization import jsonutils as json - -from tempest.lib.api_schema.response.compute.v2_1 import floating_ips as schema -from tempest.lib.common import rest_client -from tempest.lib.services.compute import base_compute_client - - -class FloatingIPsBulkClient(base_compute_client.BaseComputeClient): - - def create_floating_ips_bulk(self, ip_range, pool, interface): - """Allocate floating IPs in bulk.""" - post_body = { - 'ip_range': ip_range, - 'pool': pool, - 'interface': interface - } - post_body = json.dumps({'floating_ips_bulk_create': post_body}) - resp, body = self.post('os-floating-ips-bulk', post_body) - body = json.loads(body) - self.validate_response(schema.create_floating_ips_bulk, resp, body) - return rest_client.ResponseBody(resp, body) - - def list_floating_ips_bulk(self): - """Gets all floating IPs in bulk.""" - resp, body = self.get('os-floating-ips-bulk') - body = json.loads(body) - self.validate_response(schema.list_floating_ips_bulk, resp, body) - return rest_client.ResponseBody(resp, body) - - def delete_floating_ips_bulk(self, ip_range): - """Deletes the provided floating IPs in bulk.""" - post_body = json.dumps({'ip_range': ip_range}) - resp, body = self.put('os-floating-ips-bulk/delete', post_body) - body = json.loads(body) - self.validate_response(schema.delete_floating_ips_bulk, resp, body) - return rest_client.ResponseBody(resp, body) diff --git a/tempest/lib/services/compute/servers_client.py b/tempest/lib/services/compute/servers_client.py index d2bdb6ed65..7e3b99faf3 100644 --- a/tempest/lib/services/compute/servers_client.py +++ b/tempest/lib/services/compute/servers_client.py @@ -676,14 +676,6 @@ class ServersClient(base_compute_client.BaseComputeClient): self.validate_response(schema.get_remote_consoles, resp, body) return rest_client.ResponseBody(resp, body) - def list_virtual_interfaces(self, server_id): - """List the virtual interfaces used in an instance.""" - resp, body = self.get('/'.join(['servers', server_id, - 'os-virtual-interfaces'])) - body = json.loads(body) - self.validate_response(schema.list_virtual_interfaces, resp, body) - return rest_client.ResponseBody(resp, body) - def rescue_server(self, server_id, **kwargs): """Rescue the provided server. diff --git a/tempest/tests/lib/services/compute/test_fixedIPs_client.py b/tempest/tests/lib/services/compute/test_fixedIPs_client.py deleted file mode 100644 index 65bda45b88..0000000000 --- a/tempest/tests/lib/services/compute/test_fixedIPs_client.py +++ /dev/null @@ -1,58 +0,0 @@ -# Copyright 2015 NEC Corporation. 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.compute import fixed_ips_client -from tempest.tests.lib import fake_auth_provider -from tempest.tests.lib.services import base - - -class TestFixedIPsClient(base.BaseServiceTest): - FIXED_IP_INFO = {"fixed_ip": {"address": "10.0.0.1", - "cidr": "10.11.12.0/24", - "host": "localhost", - "hostname": "OpenStack"}} - - def setUp(self): - super(TestFixedIPsClient, self).setUp() - fake_auth = fake_auth_provider.FakeAuthProvider() - self.fixedIPsClient = (fixed_ips_client. - FixedIPsClient - (fake_auth, 'compute', - 'regionOne')) - - def _test_show_fixed_ip(self, bytes_body=False): - self.check_service_client_function( - self.fixedIPsClient.show_fixed_ip, - 'tempest.lib.common.rest_client.RestClient.get', - self.FIXED_IP_INFO, bytes_body, - status=200, fixed_ip='Identifier') - - def test_show_fixed_ip_with_str_body(self): - self._test_show_fixed_ip() - - def test_show_fixed_ip_with_bytes_body(self): - self._test_show_fixed_ip(True) - - def _test_reserve_fixed_ip(self, bytes_body=False): - self.check_service_client_function( - self.fixedIPsClient.reserve_fixed_ip, - 'tempest.lib.common.rest_client.RestClient.post', - {}, bytes_body, - status=202, fixed_ip='Identifier') - - def test_reserve_fixed_ip_with_str_body(self): - self._test_reserve_fixed_ip() - - def test_reserve_fixed_ip_with_bytes_body(self): - self._test_reserve_fixed_ip(True) diff --git a/tempest/tests/lib/services/compute/test_floating_ip_pools_client.py b/tempest/tests/lib/services/compute/test_floating_ip_pools_client.py deleted file mode 100644 index 6278df48a1..0000000000 --- a/tempest/tests/lib/services/compute/test_floating_ip_pools_client.py +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright 2015 NEC Corporation. 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.compute import floating_ip_pools_client -from tempest.tests.lib import fake_auth_provider -from tempest.tests.lib.services import base - - -class TestFloatingIPPoolsClient(base.BaseServiceTest): - - FAKE_FLOATING_IP_POOLS = { - "floating_ip_pools": - [ - {"name": '\u3042'}, - {"name": '\u3044'} - ] - } - - def setUp(self): - super(TestFloatingIPPoolsClient, self).setUp() - fake_auth = fake_auth_provider.FakeAuthProvider() - self.client = floating_ip_pools_client.FloatingIPPoolsClient( - fake_auth, 'compute', 'regionOne') - - def test_list_floating_ip_pools_with_str_body(self): - self.check_service_client_function( - self.client.list_floating_ip_pools, - 'tempest.lib.common.rest_client.RestClient.get', - self.FAKE_FLOATING_IP_POOLS) - - def test_list_floating_ip_pools_with_bytes_body(self): - self.check_service_client_function( - self.client.list_floating_ip_pools, - 'tempest.lib.common.rest_client.RestClient.get', - self.FAKE_FLOATING_IP_POOLS, to_utf=True) diff --git a/tempest/tests/lib/services/compute/test_floating_ips_bulk_client.py b/tempest/tests/lib/services/compute/test_floating_ips_bulk_client.py deleted file mode 100644 index ace76f89af..0000000000 --- a/tempest/tests/lib/services/compute/test_floating_ips_bulk_client.py +++ /dev/null @@ -1,88 +0,0 @@ -# Copyright 2015 NEC Corporation. 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.tests.lib import fake_auth_provider - -from tempest.lib.services.compute import floating_ips_bulk_client -from tempest.tests.lib.services import base - - -class TestFloatingIPsBulkClient(base.BaseServiceTest): - - FAKE_FIP_BULK_LIST = {"floating_ip_info": [{ - "address": "10.10.10.1", - "instance_uuid": None, - "fixed_ip": None, - "interface": "eth0", - "pool": "nova", - "project_id": None - }, - { - "address": "10.10.10.2", - "instance_uuid": None, - "fixed_ip": None, - "interface": "eth0", - "pool": "nova", - "project_id": None - }]} - - def setUp(self): - super(TestFloatingIPsBulkClient, self).setUp() - fake_auth = fake_auth_provider.FakeAuthProvider() - self.client = floating_ips_bulk_client.FloatingIPsBulkClient( - fake_auth, 'compute', 'regionOne') - - def _test_list_floating_ips_bulk(self, bytes_body=False): - self.check_service_client_function( - self.client.list_floating_ips_bulk, - 'tempest.lib.common.rest_client.RestClient.get', - self.FAKE_FIP_BULK_LIST, - to_utf=bytes_body) - - def _test_create_floating_ips_bulk(self, bytes_body=False): - fake_fip_create_data = {"floating_ips_bulk_create": { - "ip_range": "192.168.1.0/24", "pool": "nova", "interface": "eth0"}} - self.check_service_client_function( - self.client.create_floating_ips_bulk, - 'tempest.lib.common.rest_client.RestClient.post', - fake_fip_create_data, - to_utf=bytes_body, - ip_range="192.168.1.0/24", pool="nova", interface="eth0") - - def _test_delete_floating_ips_bulk(self, bytes_body=False): - fake_fip_delete_data = {"floating_ips_bulk_delete": "192.168.1.0/24"} - self.check_service_client_function( - self.client.delete_floating_ips_bulk, - 'tempest.lib.common.rest_client.RestClient.put', - fake_fip_delete_data, - to_utf=bytes_body, - ip_range="192.168.1.0/24") - - def test_list_floating_ips_bulk_with_str_body(self): - self._test_list_floating_ips_bulk() - - def test_list_floating_ips_bulk_with_bytes_body(self): - self._test_list_floating_ips_bulk(True) - - def test_create_floating_ips_bulk_with_str_body(self): - self._test_create_floating_ips_bulk() - - def test_create_floating_ips_bulk_with_bytes_body(self): - self._test_create_floating_ips_bulk(True) - - def test_delete_floating_ips_bulk_with_str_body(self): - self._test_delete_floating_ips_bulk() - - def test_delete_floating_ips_bulk_with_bytes_body(self): - self._test_delete_floating_ips_bulk(True) diff --git a/tempest/tests/lib/services/compute/test_servers_client.py b/tempest/tests/lib/services/compute/test_servers_client.py index a82b255bb2..8df82f77d5 100644 --- a/tempest/tests/lib/services/compute/test_servers_client.py +++ b/tempest/tests/lib/services/compute/test_servers_client.py @@ -789,21 +789,6 @@ class TestServersClient(base.BaseServiceTest): length='fake-length' ) - def test_list_virtual_interfaces_with_str_body(self): - self._test_list_virtual_interfaces() - - def test_list_virtual_interfaces_with_bytes_body(self): - self._test_list_virtual_interfaces(True) - - def _test_list_virtual_interfaces(self, bytes_body=False): - self.check_service_client_function( - self.client.list_virtual_interfaces, - 'tempest.lib.common.rest_client.RestClient.get', - {'virtual_interfaces': [self.FAKE_VIRTUAL_INTERFACES]}, - bytes_body, - server_id=self.server_id - ) - def test_rescue_server_with_str_body(self): self._test_rescue_server()