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
This commit is contained in:
parent
2921b3d3f4
commit
ea0bafde65
@ -0,0 +1,5 @@
|
||||
---
|
||||
upgrade:
|
||||
- |
|
||||
The deprecated ``[compute-feature-enabled] xenapi_apis`` option has been
|
||||
removed.
|
@ -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'])
|
@ -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'])
|
||||
|
||||
|
@ -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()
|
||||
|
@ -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,
|
||||
|
@ -618,18 +618,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 '
|
||||
|
Loading…
Reference in New Issue
Block a user