Remove xenapi_apis option
Because ussuri is no longer supported by master, the option can be
removed now.
Note:
- inject network infomation API is still valid so its test is restored
- Disabled Metadata API tests are restored because these are not
actually specific to xenapi virt driver.
Change-Id: I123bf1d605db294351c823ed41d2a70b81831087
diff --git a/releasenotes/notes/remove-xenapi_apis-86720c0c399460ab.yaml b/releasenotes/notes/remove-xenapi_apis-86720c0c399460ab.yaml
new file mode 100644
index 0000000..26da18c
--- /dev/null
+++ b/releasenotes/notes/remove-xenapi_apis-86720c0c399460ab.yaml
@@ -0,0 +1,5 @@
+---
+upgrade:
+ - |
+ The deprecated ``[compute-feature-enabled] xenapi_apis`` option has been
+ removed.
diff --git a/tempest/api/compute/admin/test_agents.py b/tempest/api/compute/admin/test_agents.py
deleted file mode 100644
index 8fc155b..0000000
--- a/tempest/api/compute/admin/test_agents.py
+++ /dev/null
@@ -1,125 +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.api.compute import base
-from tempest import config
-from tempest.lib.common.utils import data_utils
-from tempest.lib import decorators
-
-CONF = config.CONF
-
-
-# TODO(stephenfin): Remove these tests once the nova Ussuri branch goes EOL
-class AgentsAdminTestJSON(base.BaseV2ComputeAdminTest):
- """Tests Compute Agents API"""
-
- @classmethod
- def skip_checks(cls):
- super(AgentsAdminTestJSON, cls).skip_checks()
- if not CONF.compute_feature_enabled.xenapi_apis:
- raise cls.skipException('The os-agents API is not supported.')
-
- @classmethod
- def setup_clients(cls):
- super(AgentsAdminTestJSON, cls).setup_clients()
- cls.client = cls.os_admin.agents_client
-
- @classmethod
- def resource_setup(cls):
- super(AgentsAdminTestJSON, cls).resource_setup()
- cls.params_agent = cls._param_helper(
- hypervisor='common', os='linux', architecture='x86_64',
- version='7.0', url='xxx://xxxx/xxx/xxx',
- md5hash='add6bb58e139be103324d04d82d8f545')
-
- @staticmethod
- def _param_helper(**kwargs):
- rand_key = 'architecture'
- if rand_key in kwargs:
- # NOTE: The rand_name is for avoiding agent conflicts.
- # If you try to create an agent with the same hypervisor,
- # os and architecture as an existing agent, Nova will return
- # an HTTPConflict or HTTPServerError.
- kwargs[rand_key] = data_utils.rand_name(
- prefix=CONF.resource_name_prefix,
- name=kwargs[rand_key])
- return kwargs
-
- @decorators.idempotent_id('1fc6bdc8-0b6d-4cc7-9f30-9b04fabe5b90')
- def test_create_agent(self):
- """Test creating a compute agent"""
- params = self._param_helper(
- hypervisor='kvm', os='win', architecture='x86',
- version='7.0', url='xxx://xxxx/xxx/xxx',
- md5hash='add6bb58e139be103324d04d82d8f545')
- body = self.client.create_agent(**params)['agent']
- self.addCleanup(self.client.delete_agent, body['agent_id'])
- for expected_item, value in params.items():
- self.assertEqual(value, body[expected_item])
-
- @decorators.idempotent_id('dc9ffd51-1c50-4f0e-a820-ae6d2a568a9e')
- def test_update_agent(self):
- """Test updating a compute agent"""
- # Create and update an agent.
- body = self.client.create_agent(**self.params_agent)['agent']
- self.addCleanup(self.client.delete_agent, body['agent_id'])
- agent_id = body['agent_id']
- params = self._param_helper(
- version='8.0', url='xxx://xxxx/xxx/xxx2',
- md5hash='add6bb58e139be103324d04d82d8f547')
- body = self.client.update_agent(agent_id, **params)['agent']
- for expected_item, value in params.items():
- self.assertEqual(value, body[expected_item])
-
- @decorators.idempotent_id('470e0b89-386f-407b-91fd-819737d0b335')
- def test_delete_agent(self):
- """Test deleting a compute agent"""
- body = self.client.create_agent(**self.params_agent)['agent']
- self.client.delete_agent(body['agent_id'])
-
- # Verify the list doesn't contain the deleted agent.
- agents = self.client.list_agents()['agents']
- self.assertNotIn(body['agent_id'], map(lambda x: x['agent_id'],
- agents))
-
- @decorators.idempotent_id('6a326c69-654b-438a-80a3-34bcc454e138')
- def test_list_agents(self):
- """Test listing compute agents"""
- body = self.client.create_agent(**self.params_agent)['agent']
- self.addCleanup(self.client.delete_agent, body['agent_id'])
- agents = self.client.list_agents()['agents']
- self.assertNotEmpty(agents, 'Cannot get any agents.')
- self.assertIn(body['agent_id'], map(lambda x: x['agent_id'], agents))
-
- @decorators.idempotent_id('eabadde4-3cd7-4ec4-a4b5-5a936d2d4408')
- def test_list_agents_with_filter(self):
- """Test listing compute agents by the filter"""
- body = self.client.create_agent(**self.params_agent)['agent']
- self.addCleanup(self.client.delete_agent, body['agent_id'])
- params = self._param_helper(
- hypervisor='xen', os='linux', architecture='x86',
- version='7.0', url='xxx://xxxx/xxx/xxx1',
- md5hash='add6bb58e139be103324d04d82d8f546')
- agent_xen = self.client.create_agent(**params)['agent']
- self.addCleanup(self.client.delete_agent, agent_xen['agent_id'])
-
- agent_id_xen = agent_xen['agent_id']
- agents = (self.client.list_agents(hypervisor=agent_xen['hypervisor'])
- ['agents'])
- self.assertNotEmpty(agents, 'Cannot get any agents.')
- self.assertIn(agent_id_xen, map(lambda x: x['agent_id'], agents))
- self.assertNotIn(body['agent_id'], map(lambda x: x['agent_id'],
- agents))
- for agent in agents:
- self.assertEqual(agent_xen['hypervisor'], agent['hypervisor'])
diff --git a/tempest/api/compute/admin/test_servers.py b/tempest/api/compute/admin/test_servers.py
index be838fc..6c9aafb 100644
--- a/tempest/api/compute/admin/test_servers.py
+++ b/tempest/api/compute/admin/test_servers.py
@@ -207,15 +207,10 @@
self.assertEqual(self.image_ref_alt, rebuilt_image_id)
@decorators.idempotent_id('7a1323b4-a6a2-497a-96cb-76c07b945c71')
- def test_reset_network_inject_network_info(self):
- """Test resetting and injecting network info of a server"""
- if not CONF.compute_feature_enabled.xenapi_apis:
- raise self.skipException(
- 'The resetNetwork server action is not supported.')
-
- # Reset Network of a Server
+ def test_inject_network_info(self):
+ """Test injecting network info of a server"""
+ # Create a server
server = self.create_test_server(wait_until='ACTIVE')
- self.client.reset_network(server['id'])
# Inject the Network Info into Server
self.client.inject_network_info(server['id'])
diff --git a/tempest/api/compute/servers/test_server_metadata.py b/tempest/api/compute/servers/test_server_metadata.py
index 9f93e76..5f35b15 100644
--- a/tempest/api/compute/servers/test_server_metadata.py
+++ b/tempest/api/compute/servers/test_server_metadata.py
@@ -27,13 +27,6 @@
create_default_network = True
@classmethod
- def skip_checks(cls):
- super(ServerMetadataTestJSON, cls).skip_checks()
- if not CONF.compute_feature_enabled.xenapi_apis:
- raise cls.skipException(
- 'Metadata is read-only on non-Xen-based deployments.')
-
- @classmethod
def setup_clients(cls):
super(ServerMetadataTestJSON, cls).setup_clients()
cls.client = cls.servers_client
diff --git a/tempest/api/compute/servers/test_server_metadata_negative.py b/tempest/api/compute/servers/test_server_metadata_negative.py
index 655909c..2059dfa 100644
--- a/tempest/api/compute/servers/test_server_metadata_negative.py
+++ b/tempest/api/compute/servers/test_server_metadata_negative.py
@@ -14,13 +14,10 @@
# under the License.
from tempest.api.compute import base
-from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
from tempest.lib import exceptions as lib_exc
-CONF = config.CONF
-
class ServerMetadataNegativeTestJSON(base.BaseV2ComputeTest):
"""Negative tests of server metadata"""
@@ -91,10 +88,6 @@
Raise BadRequest if key in uri does not match the key passed in body.
"""
- if not CONF.compute_feature_enabled.xenapi_apis:
- raise self.skipException(
- 'Metadata is read-only on non-Xen-based deployments.')
-
meta = {'testkey': 'testvalue'}
self.assertRaises(lib_exc.BadRequest,
self.client.set_server_metadata_item,
@@ -104,10 +97,6 @@
@decorators.idempotent_id('0df38c2a-3d4e-4db5-98d8-d4d9fa843a12')
def test_set_metadata_non_existent_server(self):
"""Test setting metadata for a non existent server should fail"""
- if not CONF.compute_feature_enabled.xenapi_apis:
- raise self.skipException(
- 'Metadata is read-only on non-Xen-based deployments.')
-
non_existent_server_id = data_utils.rand_uuid()
meta = {'meta1': 'data1'}
self.assertRaises(lib_exc.NotFound,
@@ -119,10 +108,6 @@
@decorators.idempotent_id('904b13dc-0ef2-4e4c-91cd-3b4a0f2f49d8')
def test_update_metadata_non_existent_server(self):
"""Test updating metadata for a non existent server should fail"""
- if not CONF.compute_feature_enabled.xenapi_apis:
- raise self.skipException(
- 'Metadata is read-only on non-Xen-based deployments.')
-
non_existent_server_id = data_utils.rand_uuid()
meta = {'key1': 'value1', 'key2': 'value2'}
self.assertRaises(lib_exc.NotFound,
@@ -134,10 +119,6 @@
@decorators.idempotent_id('a452f38c-05c2-4b47-bd44-a4f0bf5a5e48')
def test_update_metadata_with_blank_key(self):
"""Test updating server metadata to blank key should fail"""
- if not CONF.compute_feature_enabled.xenapi_apis:
- raise self.skipException(
- 'Metadata is read-only on non-Xen-based deployments.')
-
meta = {'': 'data1'}
self.assertRaises(lib_exc.BadRequest,
self.client.update_server_metadata,
@@ -150,10 +131,6 @@
Should not be able to delete metadata item from a non-existent server.
"""
- if not CONF.compute_feature_enabled.xenapi_apis:
- raise self.skipException(
- 'Metadata is read-only on non-Xen-based deployments.')
-
non_existent_server_id = data_utils.rand_uuid()
self.assertRaises(lib_exc.NotFound,
self.client.delete_server_metadata_item,
@@ -168,10 +145,6 @@
A 403 Forbidden or 413 Overlimit (old behaviour) exception
will be raised while exceeding metadata items limit for project.
"""
- if not CONF.compute_feature_enabled.xenapi_apis:
- raise self.skipException(
- 'Metadata is read-only on non-Xen-based deployments.')
-
quota_set = self.quotas_client.show_quota_set(
self.tenant_id)['quota_set']
quota_metadata = quota_set['metadata_items']
@@ -196,10 +169,6 @@
@decorators.idempotent_id('96100343-7fa9-40d8-80fa-d29ef588ce1c')
def test_set_server_metadata_blank_key(self):
"""Test setting server metadata with blank key should fail"""
- if not CONF.compute_feature_enabled.xenapi_apis:
- raise self.skipException(
- 'Metadata is read-only on non-Xen-based deployments.')
-
meta = {'': 'data1'}
self.assertRaises(lib_exc.BadRequest,
self.client.set_server_metadata,
@@ -209,10 +178,6 @@
@decorators.idempotent_id('64a91aee-9723-4863-be44-4c9d9f1e7d0e')
def test_set_server_metadata_missing_metadata(self):
"""Test setting server metadata without metadata field should fail"""
- if not CONF.compute_feature_enabled.xenapi_apis:
- raise self.skipException(
- 'Metadata is read-only on non-Xen-based deployments.')
-
meta = {'meta1': 'data1'}
self.assertRaises(lib_exc.BadRequest,
self.client.set_server_metadata,
diff --git a/tempest/config.py b/tempest/config.py
index 893148b..32d0624 100644
--- a/tempest/config.py
+++ b/tempest/config.py
@@ -618,18 +618,6 @@
help='Does the test environment support attaching a volume to '
'more than one instance? This depends on hypervisor and '
'volume backend/type and compute API version 2.60.'),
- cfg.BoolOpt('xenapi_apis',
- default=False,
- help='Does the test environment support the XenAPI-specific '
- 'APIs: os-agents, writeable server metadata and the '
- 'resetNetwork server action? '
- 'These were removed in Victoria alongside the XenAPI '
- 'virt driver.',
- deprecated_for_removal=True,
- deprecated_reason="On Nova side, XenAPI virt driver and the "
- "APIs that only worked with that driver "
- "have been removed and there's nothing to "
- "test after Ussuri."),
cfg.BoolOpt('ide_bus',
default=True,
help='Does the test environment support attaching devices '