Merge "Remove xenapi_apis option"

This commit is contained in:
Zuul 2024-05-03 20:45:27 +00:00 committed by Gerrit Code Review
commit b18cc25bad
6 changed files with 8 additions and 187 deletions

View File

@ -0,0 +1,5 @@
---
upgrade:
- |
The deprecated ``[compute-feature-enabled] xenapi_apis`` option has been
removed.

View File

@ -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'])

View File

@ -207,15 +207,10 @@ class ServersAdminTestJSON(base.BaseV2ComputeAdminTest):
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'])

View File

@ -26,13 +26,6 @@ class ServerMetadataTestJSON(base.BaseV2ComputeTest):
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()

View File

@ -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 @@ class ServerMetadataNegativeTestJSON(base.BaseV2ComputeTest):
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 @@ class ServerMetadataNegativeTestJSON(base.BaseV2ComputeTest):
@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 @@ class ServerMetadataNegativeTestJSON(base.BaseV2ComputeTest):
@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 @@ class ServerMetadataNegativeTestJSON(base.BaseV2ComputeTest):
@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 @@ class ServerMetadataNegativeTestJSON(base.BaseV2ComputeTest):
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 @@ class ServerMetadataNegativeTestJSON(base.BaseV2ComputeTest):
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 @@ class ServerMetadataNegativeTestJSON(base.BaseV2ComputeTest):
@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 @@ class ServerMetadataNegativeTestJSON(base.BaseV2ComputeTest):
@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,

View File

@ -595,18 +595,6 @@ ComputeFeaturesGroup = [
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 '