Merge "Remove compute api_extensions config option"
diff --git a/releasenotes/notes/remove-compute-api-extensions-config-b8564f60f4fa5495.yaml b/releasenotes/notes/remove-compute-api-extensions-config-b8564f60f4fa5495.yaml
new file mode 100644
index 0000000..55df775
--- /dev/null
+++ b/releasenotes/notes/remove-compute-api-extensions-config-b8564f60f4fa5495.yaml
@@ -0,0 +1,5 @@
+---
+upgrade:
+ - |
+ Remove deprecated config option ``api_extensions`` from
+ ``compute_feature_enabled`` groups.
diff --git a/tempest/api/compute/admin/test_flavors.py b/tempest/api/compute/admin/test_flavors.py
index d6b6b7e..294b1ab 100644
--- a/tempest/api/compute/admin/test_flavors.py
+++ b/tempest/api/compute/admin/test_flavors.py
@@ -16,7 +16,6 @@
import uuid
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
@@ -26,13 +25,6 @@
"""Tests Flavors API Create and Delete that require admin privileges"""
@classmethod
- def skip_checks(cls):
- super(FlavorsAdminTestJSON, cls).skip_checks()
- if not utils.is_extension_enabled('OS-FLV-EXT-DATA', 'compute'):
- msg = "OS-FLV-EXT-DATA extension not enabled."
- raise cls.skipException(msg)
-
- @classmethod
def resource_setup(cls):
super(FlavorsAdminTestJSON, cls).resource_setup()
diff --git a/tempest/api/compute/admin/test_flavors_access.py b/tempest/api/compute/admin/test_flavors_access.py
index 87ab7c7..c86ff76 100644
--- a/tempest/api/compute/admin/test_flavors_access.py
+++ b/tempest/api/compute/admin/test_flavors_access.py
@@ -14,7 +14,6 @@
# under the License.
from tempest.api.compute import base
-from tempest.common import utils
from tempest.lib import decorators
@@ -25,13 +24,6 @@
"""
@classmethod
- def skip_checks(cls):
- super(FlavorsAccessTestJSON, cls).skip_checks()
- if not utils.is_extension_enabled('OS-FLV-EXT-DATA', 'compute'):
- msg = "OS-FLV-EXT-DATA extension not enabled."
- raise cls.skipException(msg)
-
- @classmethod
def resource_setup(cls):
super(FlavorsAccessTestJSON, cls).resource_setup()
diff --git a/tempest/api/compute/admin/test_flavors_access_negative.py b/tempest/api/compute/admin/test_flavors_access_negative.py
index ac09cb0..3b38693 100644
--- a/tempest/api/compute/admin/test_flavors_access_negative.py
+++ b/tempest/api/compute/admin/test_flavors_access_negative.py
@@ -14,7 +14,6 @@
# under the License.
from tempest.api.compute import base
-from tempest.common import utils
from tempest.lib import decorators
from tempest.lib import exceptions as lib_exc
@@ -28,13 +27,6 @@
credentials = ['primary', 'admin', 'alt']
@classmethod
- def skip_checks(cls):
- super(FlavorsAccessNegativeTestJSON, cls).skip_checks()
- if not utils.is_extension_enabled('OS-FLV-EXT-DATA', 'compute'):
- msg = "OS-FLV-EXT-DATA extension not enabled."
- raise cls.skipException(msg)
-
- @classmethod
def resource_setup(cls):
super(FlavorsAccessNegativeTestJSON, cls).resource_setup()
diff --git a/tempest/api/compute/admin/test_flavors_extra_specs.py b/tempest/api/compute/admin/test_flavors_extra_specs.py
index 10018fe..da95660 100644
--- a/tempest/api/compute/admin/test_flavors_extra_specs.py
+++ b/tempest/api/compute/admin/test_flavors_extra_specs.py
@@ -14,7 +14,6 @@
# 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
@@ -27,13 +26,6 @@
"""
@classmethod
- def skip_checks(cls):
- super(FlavorsExtraSpecsTestJSON, cls).skip_checks()
- if not utils.is_extension_enabled('OS-FLV-EXT-DATA', 'compute'):
- msg = "OS-FLV-EXT-DATA extension not enabled."
- raise cls.skipException(msg)
-
- @classmethod
def resource_setup(cls):
super(FlavorsExtraSpecsTestJSON, cls).resource_setup()
flavor_name = data_utils.rand_name('test_flavor')
diff --git a/tempest/api/compute/admin/test_flavors_extra_specs_negative.py b/tempest/api/compute/admin/test_flavors_extra_specs_negative.py
index 721acca..6822614 100644
--- a/tempest/api/compute/admin/test_flavors_extra_specs_negative.py
+++ b/tempest/api/compute/admin/test_flavors_extra_specs_negative.py
@@ -15,7 +15,6 @@
# 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
@@ -28,13 +27,6 @@
"""
@classmethod
- def skip_checks(cls):
- super(FlavorsExtraSpecsNegativeTestJSON, cls).skip_checks()
- if not utils.is_extension_enabled('OS-FLV-EXT-DATA', 'compute'):
- msg = "OS-FLV-EXT-DATA extension not enabled."
- raise cls.skipException(msg)
-
- @classmethod
def resource_setup(cls):
super(FlavorsExtraSpecsNegativeTestJSON, cls).resource_setup()
diff --git a/tempest/api/compute/servers/test_server_group.py b/tempest/api/compute/servers/test_server_group.py
index 4811a7b..4b6d45a 100644
--- a/tempest/api/compute/servers/test_server_group.py
+++ b/tempest/api/compute/servers/test_server_group.py
@@ -17,7 +17,6 @@
from tempest.api.compute import base
from tempest.common import compute
-from tempest.common import utils
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
@@ -32,13 +31,6 @@
create_default_network = True
@classmethod
- def skip_checks(cls):
- super(ServerGroupTestJSON, cls).skip_checks()
- if not utils.is_extension_enabled('os-server-groups', 'compute'):
- msg = "os-server-groups extension is not enabled."
- raise cls.skipException(msg)
-
- @classmethod
def setup_clients(cls):
super(ServerGroupTestJSON, cls).setup_clients()
cls.client = cls.server_groups_client
diff --git a/tempest/api/compute/servers/test_server_tags.py b/tempest/api/compute/servers/test_server_tags.py
index c988788..cdeaae5 100644
--- a/tempest/api/compute/servers/test_server_tags.py
+++ b/tempest/api/compute/servers/test_server_tags.py
@@ -14,7 +14,6 @@
# 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
@@ -28,13 +27,6 @@
create_default_network = True
@classmethod
- def skip_checks(cls):
- super(ServerTagsTestJSON, cls).skip_checks()
- if not utils.is_extension_enabled('os-server-tags', 'compute'):
- msg = "os-server-tags extension is not enabled."
- raise cls.skipException(msg)
-
- @classmethod
def setup_clients(cls):
super(ServerTagsTestJSON, cls).setup_clients()
cls.client = cls.servers_client
diff --git a/tempest/api/compute/test_extensions.py b/tempest/api/compute/test_extensions.py
index 3318876..034cb9e 100644
--- a/tempest/api/compute/test_extensions.py
+++ b/tempest/api/compute/test_extensions.py
@@ -16,7 +16,6 @@
from oslo_log import log as logging
from tempest.api.compute import base
-from tempest.common import utils
from tempest import config
from tempest.lib import decorators
@@ -32,24 +31,14 @@
@decorators.idempotent_id('3bb27738-b759-4e0d-a5fa-37d7a6df07d1')
def test_list_extensions(self):
"""Test listing compute extensions"""
- if not CONF.compute_feature_enabled.api_extensions:
- raise self.skipException('There are not any extensions configured')
extensions = self.extensions_client.list_extensions()['extensions']
- ext = CONF.compute_feature_enabled.api_extensions[0]
-
# Log extensions list
extension_list = [x['alias'] for x in extensions]
LOG.debug("Nova extensions: %s", ','.join(extension_list))
- if ext == 'all':
- self.assertIn('Hosts', map(lambda x: x['name'], extensions))
- elif ext:
- self.assertIn(ext, extension_list)
- else:
- raise self.skipException('There are not any extensions configured')
+ self.assertIn('Hosts', map(lambda x: x['name'], extensions))
@decorators.idempotent_id('05762f39-bdfa-4cdb-9b46-b78f8e78e2fd')
- @utils.requires_ext(extension='os-consoles', service='compute')
def test_get_extension(self):
"""Test getting specified compute extension details"""
extension = self.extensions_client.show_extension('os-consoles')
diff --git a/tempest/api/compute/test_quotas.py b/tempest/api/compute/test_quotas.py
index 5fe0e3b..38ca53b 100644
--- a/tempest/api/compute/test_quotas.py
+++ b/tempest/api/compute/test_quotas.py
@@ -15,20 +15,12 @@
from tempest.api.compute import base
from tempest.common import tempest_fixtures as fixtures
-from tempest.common import utils
from tempest.lib import decorators
class QuotasTestJSON(base.BaseV2ComputeTest):
"""Test compute quotas"""
- @classmethod
- def skip_checks(cls):
- super(QuotasTestJSON, cls).skip_checks()
- if not utils.is_extension_enabled('os-quota-sets', 'compute'):
- msg = "quotas extension not enabled."
- raise cls.skipException(msg)
-
def setUp(self):
# NOTE(mriedem): Avoid conflicts with os-quota-class-sets tests.
self.useFixture(fixtures.LockFixture('compute_quotas'))
diff --git a/tempest/cmd/verify_tempest_config.py b/tempest/cmd/verify_tempest_config.py
index 421afd3..3d476b9 100644
--- a/tempest/cmd/verify_tempest_config.py
+++ b/tempest/cmd/verify_tempest_config.py
@@ -214,7 +214,6 @@
def get_extension_client(os, service):
extensions_client = {
- 'nova': os.compute.ExtensionsClient(),
'neutron': os.network.ExtensionsClient(),
'swift': os.object_storage.CapabilitiesClient(),
# NOTE: Cinder v3 API is current and v2 and v1 are deprecated.
@@ -231,7 +230,6 @@
def get_enabled_extensions(service):
extensions_options = {
- 'nova': CONF.compute_feature_enabled.api_extensions,
'cinder': CONF.volume_feature_enabled.api_extensions,
'neutron': CONF.network_feature_enabled.api_extensions,
'swift': CONF.object_storage_feature_enabled.discoverable_apis,
@@ -442,7 +440,7 @@
os = clients.Manager(icreds.get_primary_creds().credentials)
services = check_service_availability(os, update)
results = {}
- for service in ['nova', 'cinder', 'neutron', 'swift']:
+ for service in ['cinder', 'neutron', 'swift']:
if service not in services:
continue
results = verify_extensions(os, service, results)
diff --git a/tempest/common/utils/__init__.py b/tempest/common/utils/__init__.py
index 88a16b7..0fa5ce4 100644
--- a/tempest/common/utils/__init__.py
+++ b/tempest/common/utils/__init__.py
@@ -96,7 +96,6 @@
"""
config_dict = {
- 'compute': CONF.compute_feature_enabled.api_extensions,
'volume': CONF.volume_feature_enabled.api_extensions,
'network': CONF.network_feature_enabled.api_extensions,
'object': CONF.object_storage_feature_enabled.discoverable_apis,
diff --git a/tempest/config.py b/tempest/config.py
index b4d4891..2fb43a0 100644
--- a/tempest/config.py
+++ b/tempest/config.py
@@ -450,18 +450,6 @@
"the '.' with '-' to comply with fqdn hostname. Nova "
"changed that in Wallaby cycle, if your cloud is older "
"than wallaby then you can keep/make it False."),
- cfg.ListOpt('api_extensions',
- default=['all'],
- help='A list of enabled compute extensions with a special '
- 'entry all which indicates every extension is enabled. '
- 'Each extension should be specified with alias name. '
- 'Empty list indicates all extensions are disabled',
- deprecated_for_removal=True,
- deprecated_reason='The Nova extensions API and mechanism '
- 'is deprecated. This option will be '
- 'removed when all releases supported '
- 'by tempest no longer contain the Nova '
- 'extensions API and mechanism.'),
cfg.BoolOpt('change_password',
default=False,
help="Does the test environment support changing the admin "
diff --git a/tempest/tests/cmd/test_verify_tempest_config.py b/tempest/tests/cmd/test_verify_tempest_config.py
index a8a4c0f..05ea84e 100644
--- a/tempest/tests/cmd/test_verify_tempest_config.py
+++ b/tempest/tests/cmd/test_verify_tempest_config.py
@@ -380,70 +380,6 @@
self.assertIn('extensions', results['cinder'])
self.assertEqual([], results['cinder']['extensions'])
- def test_verify_extensions_nova(self):
- def fake_list_extensions():
- return ([{'alias': 'fake1'}, {'alias': 'fake2'},
- {'alias': 'not_fake'}])
- fake_os = mock.MagicMock()
- fake_client = mock.MagicMock()
- fake_client.list_extensions = fake_list_extensions
- self.useFixture(fixtures.MockPatchObject(
- verify_tempest_config, 'get_extension_client',
- return_value=fake_client))
- self.useFixture(fixtures.MockPatchObject(
- verify_tempest_config, 'get_enabled_extensions',
- return_value=(['fake1', 'fake2', 'fake3'])))
- results = verify_tempest_config.verify_extensions(fake_os,
- 'nova', {})
- self.assertIn('nova', results)
- self.assertIn('fake1', results['nova'])
- self.assertTrue(results['nova']['fake1'])
- self.assertIn('fake2', results['nova'])
- self.assertTrue(results['nova']['fake2'])
- self.assertIn('fake3', results['nova'])
- self.assertFalse(results['nova']['fake3'])
- self.assertIn('not_fake', results['nova'])
- self.assertFalse(results['nova']['not_fake'])
-
- def test_verify_extensions_nova_all(self):
- def fake_list_extensions():
- return ({'extensions': [{'alias': 'fake1'},
- {'alias': 'fake2'},
- {'alias': 'not_fake'}]})
- fake_os = mock.MagicMock()
- fake_client = mock.MagicMock()
- fake_client.list_extensions = fake_list_extensions
- self.useFixture(fixtures.MockPatchObject(
- verify_tempest_config, 'get_extension_client',
- return_value=fake_client))
- self.useFixture(fixtures.MockPatchObject(
- verify_tempest_config, 'get_enabled_extensions',
- return_value=(['all'])))
- results = verify_tempest_config.verify_extensions(fake_os,
- 'nova', {})
- self.assertIn('nova', results)
- self.assertIn('extensions', results['nova'])
- self.assertEqual(sorted(['fake1', 'fake2', 'not_fake']),
- sorted(results['nova']['extensions']))
-
- def test_verify_extensions_nova_none(self):
- def fake_list_extensions():
- return ({'extensions': []})
- fake_os = mock.MagicMock()
- fake_client = mock.MagicMock()
- fake_client.list_extensions = fake_list_extensions
- self.useFixture(fixtures.MockPatchObject(
- verify_tempest_config, 'get_extension_client',
- return_value=fake_client))
- self.useFixture(fixtures.MockPatchObject(
- verify_tempest_config, 'get_enabled_extensions',
- return_value=(['all'])))
- results = verify_tempest_config.verify_extensions(fake_os,
- 'nova', {})
- self.assertIn('nova', results)
- self.assertIn('extensions', results['nova'])
- self.assertEqual([], results['nova']['extensions'])
-
def test_verify_extensions_swift(self):
def fake_list_extensions():
return {'fake1': 'metadata',
@@ -513,7 +449,6 @@
def test_get_extension_client(self):
fake_os = mock.MagicMock()
services = {
- 'nova': fake_os.compute.ExtensionsClient(),
'neutron': fake_os.network.ExtensionsClient(),
'swift': fake_os.object_storage.CapabilitiesClient(),
'cinder': fake_os.volume_v2.ExtensionsClient(),
diff --git a/tempest/tests/test_decorators.py b/tempest/tests/test_decorators.py
index 1889420..ede6d07 100644
--- a/tempest/tests/test_decorators.py
+++ b/tempest/tests/test_decorators.py
@@ -92,7 +92,7 @@
def setUp(self):
super(TestRequiresExtDecorator, self).setUp()
cfg.CONF.set_default('api_extensions', ['enabled_ext', 'another_ext'],
- 'compute-feature-enabled')
+ 'network-feature-enabled')
def _test_requires_ext_helper(self, expected_to_skip=True,
**decorator_args):
@@ -116,18 +116,18 @@
def test_requires_ext_decorator(self):
self._test_requires_ext_helper(expected_to_skip=False,
extension='enabled_ext',
- service='compute')
+ service='network')
def test_requires_ext_decorator_disabled_ext(self):
self._test_requires_ext_helper(extension='disabled_ext',
- service='compute')
+ service='network')
def test_requires_ext_decorator_with_all_ext_enabled(self):
cfg.CONF.set_default('api_extensions', ['all'],
- group='compute-feature-enabled')
+ group='network-feature-enabled')
self._test_requires_ext_helper(expected_to_skip=False,
extension='random_ext',
- service='compute')
+ service='network')
def test_requires_ext_decorator_bad_service(self):
self.assertRaises(KeyError,