Merge "Reorganize project feature config options"
This commit is contained in:
@@ -143,36 +143,37 @@ catalog_type = compute
|
||||
# catalog, the first found one is used.
|
||||
#region = RegionOne
|
||||
|
||||
# Expected first device name when a volume is attached to an instance
|
||||
volume_device_name = vdb
|
||||
|
||||
[compute-feature-enabled]
|
||||
# Does the Compute API support creation of images?
|
||||
create_image_enabled = true
|
||||
create_image = true
|
||||
|
||||
# For resize to work with libvirt/kvm, one of the following must be true:
|
||||
# Single node: allow_resize_to_same_host=true must be set in nova.conf
|
||||
# Cluster: the 'nova' user must have scp access between cluster nodes
|
||||
resize_available = true
|
||||
resize = true
|
||||
|
||||
# Does the compute API support changing the admin password?
|
||||
change_password_available = true
|
||||
change_password = false
|
||||
|
||||
# Run live migration tests (requires 2 hosts)
|
||||
live_migration_available = false
|
||||
live_migration = false
|
||||
|
||||
# Use block live migration (Otherwise, non-block migration will be
|
||||
# performed, which requires XenServer pools in case of using XS)
|
||||
use_block_migration_for_live_migration = false
|
||||
block_migration_for_live_migration = false
|
||||
|
||||
# Supports iSCSI block migration - depends on a XAPI supporting
|
||||
# relax-xsm-sr-check
|
||||
block_migrate_supports_cinder_iscsi = false
|
||||
block_migrate_cinder_iscsi = false
|
||||
|
||||
# When set to false, disk config tests are forced to skip
|
||||
disk_config_enabled = true
|
||||
disk_config = true
|
||||
|
||||
# When set to false, flavor extra data tests are forced to skip
|
||||
flavor_extra_enabled = true
|
||||
|
||||
# Expected first device name when a volume is attached to an instance
|
||||
volume_device_name = vdb
|
||||
flavor_extra = true
|
||||
|
||||
[compute-admin]
|
||||
# This should be the username of a user WITH administrative privileges
|
||||
@@ -258,10 +259,8 @@ build_interval = 10
|
||||
# Number of seconds to time out on waiting for a volume
|
||||
# to be available or reach an expected status
|
||||
build_timeout = 300
|
||||
# Runs Cinder multi-backend tests (requires 2 backends declared in cinder.conf)
|
||||
# They must have different volume_backend_name (backend1_name and backend2_name
|
||||
# have to be different)
|
||||
multi_backend_enabled = false
|
||||
# If multi_backend is enabled there must be 2 volume_backend_names (
|
||||
# backend1_name and backend2_name) which have to be different)
|
||||
backend1_name = BACKEND_1
|
||||
backend2_name = BACKEND_2
|
||||
# Protocol and vendor of volume backend to target when testing volume-types.
|
||||
@@ -269,6 +268,10 @@ backend2_name = BACKEND_2
|
||||
storage_protocol = iSCSI
|
||||
vendor_name = Open Source
|
||||
|
||||
[volume-feature-enabled]
|
||||
#Runs Cinder multi-backend tests (requires 2 backends declared in cinder.conf)
|
||||
multi_backend = false
|
||||
|
||||
[object-storage]
|
||||
# This section contains configuration options used when executing tests
|
||||
# against the OpenStack Object Storage API.
|
||||
@@ -291,14 +294,16 @@ container_sync_timeout = 120
|
||||
# Number of seconds to wait while looping to check the status of a
|
||||
# container to container synchronization
|
||||
container_sync_interval = 5
|
||||
# Set to true if the Account Quota middleware is enabled
|
||||
accounts_quotas_available = true
|
||||
# Set to true if the Container Quota middleware is enabled
|
||||
container_quotas_available = true
|
||||
|
||||
# Set operator role for tests that require creating a container
|
||||
operator_role = Member
|
||||
|
||||
[object-feature-enabled]
|
||||
# Set to True if the Account Quota middleware is enabled
|
||||
accounts_quotas = True
|
||||
# Set to True if the Container Quota middleware is enabled
|
||||
container_quotas = True
|
||||
|
||||
[boto]
|
||||
# This section contains configuration options used when executing tests
|
||||
# with boto.
|
||||
|
||||
@@ -22,11 +22,11 @@ from tempest.openstack.common import log as logging
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
CONFIG = config.TempestConfig()
|
||||
CREATE_IMAGE_ENABLED = CONFIG.compute.create_image_enabled
|
||||
RESIZE_AVAILABLE = CONFIG.compute.resize_available
|
||||
CHANGE_PASSWORD_AVAILABLE = CONFIG.compute.change_password_available
|
||||
DISK_CONFIG_ENABLED = CONFIG.compute.disk_config_enabled
|
||||
FLAVOR_EXTRA_DATA_ENABLED = CONFIG.compute.flavor_extra_enabled
|
||||
CREATE_IMAGE_ENABLED = CONFIG.compute_feature_enabled.create_image
|
||||
RESIZE_AVAILABLE = CONFIG.compute_feature_enabled.resize
|
||||
CHANGE_PASSWORD_AVAILABLE = CONFIG.compute_feature_enabled.change_password
|
||||
DISK_CONFIG_ENABLED = CONFIG.compute_feature_enabled.disk_config
|
||||
FLAVOR_EXTRA_DATA_ENABLED = CONFIG.compute_feature_enabled.flavor_extra
|
||||
MULTI_USER = True
|
||||
|
||||
|
||||
|
||||
@@ -32,7 +32,8 @@ from tempest.test import skip_because
|
||||
|
||||
class ServerActionsTestJSON(base.BaseV2ComputeTest):
|
||||
_interface = 'json'
|
||||
resize_available = tempest.config.TempestConfig().compute.resize_available
|
||||
resize_available = tempest.config.TempestConfig().\
|
||||
compute_feature_enabled.resize
|
||||
run_ssh = tempest.config.TempestConfig().compute.run_ssh
|
||||
|
||||
def setUp(self):
|
||||
|
||||
@@ -59,7 +59,8 @@ class LiveBlockMigrationTestJSON(base.BaseV2ComputeAdminTest):
|
||||
def _migrate_server_to(self, server_id, dest_host):
|
||||
_resp, body = self.admin_servers_client.live_migrate_server(
|
||||
server_id, dest_host,
|
||||
self.config.compute.use_block_migration_for_live_migration)
|
||||
self.config.compute_feature_enabled.
|
||||
block_migration_for_live_migration)
|
||||
return body
|
||||
|
||||
def _get_host_other_than(self, host):
|
||||
@@ -97,7 +98,7 @@ class LiveBlockMigrationTestJSON(base.BaseV2ComputeAdminTest):
|
||||
self.volumes_client.wait_for_volume_status(volume_id, 'available')
|
||||
self.volumes_client.delete_volume(volume_id)
|
||||
|
||||
@testtools.skipIf(not CONF.compute.live_migration_available,
|
||||
@testtools.skipIf(not CONF.compute_feature_enabled.live_migration,
|
||||
'Live migration not available')
|
||||
@attr(type='gate')
|
||||
def test_live_block_migration(self):
|
||||
@@ -112,7 +113,7 @@ class LiveBlockMigrationTestJSON(base.BaseV2ComputeAdminTest):
|
||||
self.servers_client.wait_for_server_status(server_id, 'ACTIVE')
|
||||
self.assertEqual(target_host, self._get_host_for_server(server_id))
|
||||
|
||||
@testtools.skipIf(not CONF.compute.live_migration_available,
|
||||
@testtools.skipIf(not CONF.compute_feature_enabled.live_migration,
|
||||
'Live migration not available')
|
||||
@attr(type='gate')
|
||||
def test_invalid_host_for_migration(self):
|
||||
@@ -124,10 +125,12 @@ class LiveBlockMigrationTestJSON(base.BaseV2ComputeAdminTest):
|
||||
server_id, target_host)
|
||||
self.assertEqual('ACTIVE', self._get_server_status(server_id))
|
||||
|
||||
@testtools.skipIf(not CONF.compute.live_migration_available or
|
||||
not CONF.compute.use_block_migration_for_live_migration,
|
||||
@testtools.skipIf(not CONF.compute_feature_enabled.live_migration or not
|
||||
CONF.compute_feature_enabled.
|
||||
block_migration_for_live_migration,
|
||||
'Block Live migration not available')
|
||||
@testtools.skipIf(not CONF.compute.block_migrate_supports_cinder_iscsi,
|
||||
@testtools.skipIf(not CONF.compute_feature_enabled.
|
||||
block_migrate_cinder_iscsi,
|
||||
'Block Live migration not configured for iSCSI')
|
||||
@attr(type='gate')
|
||||
def test_iscsi_volume(self):
|
||||
|
||||
@@ -20,14 +20,14 @@ from tempest.api.object_storage import base
|
||||
from tempest import clients
|
||||
from tempest.common.utils.data_utils import arbitrary_string
|
||||
from tempest.common.utils.data_utils import rand_name
|
||||
import tempest.config
|
||||
from tempest import config
|
||||
from tempest import exceptions
|
||||
from tempest.test import attr
|
||||
|
||||
|
||||
class AccountQuotasTest(base.BaseObjectTest):
|
||||
accounts_quotas_available = \
|
||||
tempest.config.TempestConfig().object_storage.accounts_quotas_available
|
||||
config.TempestConfig().object_storage_feature_enabled.accounts_quotas
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
|
||||
@@ -33,7 +33,7 @@ SKIP_MSG = "Container quotas middleware not available."
|
||||
class ContainerQuotasTest(base.BaseObjectTest):
|
||||
"""Attemps to test the perfect behavior of quotas in a container."""
|
||||
container_quotas_available = \
|
||||
config.TempestConfig().object_storage.container_quotas_available
|
||||
config.TempestConfig().object_storage_feature_enabled.container_quotas
|
||||
|
||||
def setUp(self):
|
||||
"""Creates and sets a container with quotas.
|
||||
|
||||
@@ -28,7 +28,7 @@ class VolumeMultiBackendTest(base.BaseVolumeAdminTest):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(VolumeMultiBackendTest, cls).setUpClass()
|
||||
if not cls.config.volume.multi_backend_enabled:
|
||||
if not cls.config.volume_feature_enabled.multi_backend:
|
||||
raise cls.skipException("Cinder multi-backend feature disabled")
|
||||
|
||||
cls.backend1_name = cls.config.volume.backend1_name
|
||||
|
||||
@@ -137,28 +137,6 @@ ComputeGroup = [
|
||||
default="password",
|
||||
help="Password used to authenticate to an instance using "
|
||||
"the alternate image."),
|
||||
cfg.BoolOpt('resize_available',
|
||||
default=False,
|
||||
help="Does the test environment support resizing?"),
|
||||
cfg.BoolOpt('live_migration_available',
|
||||
default=False,
|
||||
help="Does the test environment support live migration "
|
||||
"available?"),
|
||||
cfg.BoolOpt('use_block_migration_for_live_migration',
|
||||
default=False,
|
||||
help="Does the test environment use block devices for live "
|
||||
"migration"),
|
||||
cfg.BoolOpt('block_migrate_supports_cinder_iscsi',
|
||||
default=False,
|
||||
help="Does the test environment block migration support "
|
||||
"cinder iSCSI volumes"),
|
||||
cfg.BoolOpt('change_password_available',
|
||||
default=False,
|
||||
help="Does the test environment support changing the admin "
|
||||
"password?"),
|
||||
cfg.BoolOpt('create_image_enabled',
|
||||
default=False,
|
||||
help="Does the test environment support snapshots?"),
|
||||
cfg.IntOpt('build_interval',
|
||||
default=10,
|
||||
help="Time in seconds between build status checks."),
|
||||
@@ -212,18 +190,47 @@ ComputeGroup = [
|
||||
default=None,
|
||||
help="Path to a private key file for SSH access to remote "
|
||||
"hosts"),
|
||||
cfg.BoolOpt('disk_config_enabled',
|
||||
default=True,
|
||||
help="If false, skip disk config tests"),
|
||||
cfg.BoolOpt('flavor_extra_enabled',
|
||||
default=True,
|
||||
help="If false, skip flavor extra data test"),
|
||||
cfg.StrOpt('volume_device_name',
|
||||
default='vdb',
|
||||
help="Expected device name when a volume is attached to "
|
||||
"an instance")
|
||||
]
|
||||
|
||||
compute_features_group = cfg.OptGroup(name='compute-feature-enabled',
|
||||
title="Enabled Compute Service Features")
|
||||
|
||||
ComputeFeaturesGroup = [
|
||||
cfg.BoolOpt('disk_config',
|
||||
default=True,
|
||||
help="If false, skip disk config tests"),
|
||||
cfg.BoolOpt('flavor_extra',
|
||||
default=True,
|
||||
help="If false, skip flavor extra data test"),
|
||||
cfg.BoolOpt('change_password',
|
||||
default=False,
|
||||
help="Does the test environment support changing the admin "
|
||||
"password?"),
|
||||
cfg.BoolOpt('create_image',
|
||||
default=False,
|
||||
help="Does the test environment support snapshots?"),
|
||||
cfg.BoolOpt('resize',
|
||||
default=False,
|
||||
help="Does the test environment support resizing?"),
|
||||
cfg.BoolOpt('live_migration',
|
||||
default=False,
|
||||
help="Does the test environment support live migration "
|
||||
"available?"),
|
||||
cfg.BoolOpt('block_migration_for_live_migration',
|
||||
default=False,
|
||||
help="Does the test environment use block devices for live "
|
||||
"migration"),
|
||||
cfg.BoolOpt('block_migrate_cinder_iscsi',
|
||||
default=False,
|
||||
help="Does the test environment block migration support "
|
||||
"cinder iSCSI volumes")
|
||||
]
|
||||
|
||||
|
||||
compute_admin_group = cfg.OptGroup(name='compute-admin',
|
||||
title="Compute Admin Options")
|
||||
|
||||
@@ -317,9 +324,6 @@ VolumeGroup = [
|
||||
"of identity.region is used instead. If no such region "
|
||||
"is found in the service catalog, the first found one is "
|
||||
"used."),
|
||||
cfg.BoolOpt('multi_backend_enabled',
|
||||
default=False,
|
||||
help="Runs Cinder multi-backend test (requires 2 backends)"),
|
||||
cfg.StrOpt('backend1_name',
|
||||
default='BACKEND_1',
|
||||
help="Name of the backend1 (must be declared in cinder.conf)"),
|
||||
@@ -337,6 +341,15 @@ VolumeGroup = [
|
||||
help='Disk format to use when copying a volume to image'),
|
||||
]
|
||||
|
||||
volume_feature_group = cfg.OptGroup(name='volume-feature-enabled',
|
||||
title='Enabled Cinder Features')
|
||||
|
||||
VolumeFeaturesGroup = [
|
||||
cfg.BoolOpt('multi_backend',
|
||||
default=False,
|
||||
help="Runs Cinder multi-backend test (requires 2 backends)")
|
||||
]
|
||||
|
||||
|
||||
object_storage_group = cfg.OptGroup(name='object-storage',
|
||||
title='Object Storage Service Options')
|
||||
@@ -359,19 +372,26 @@ ObjectStoreGroup = [
|
||||
default=5,
|
||||
help="Number of seconds to wait while looping to check the"
|
||||
"status of a container to container synchronization"),
|
||||
cfg.BoolOpt('accounts_quotas_available',
|
||||
default=True,
|
||||
help="Set to True if the Account Quota middleware is enabled"),
|
||||
cfg.BoolOpt('container_quotas_available',
|
||||
default=True,
|
||||
help="Set to True if the container quota middleware "
|
||||
"is enabled"),
|
||||
cfg.StrOpt('operator_role',
|
||||
default='Member',
|
||||
help="Role to add to users created for swift tests to "
|
||||
"enable creating containers"),
|
||||
]
|
||||
|
||||
object_storage_feature_group = cfg.OptGroup(
|
||||
name='object-storage-feature-enabled',
|
||||
title='Enabled object-storage features')
|
||||
|
||||
ObjectStoreFeaturesGroup = [
|
||||
cfg.BoolOpt('container_quotas',
|
||||
default=True,
|
||||
help="Set to True if the container quota middleware "
|
||||
"is enabled"),
|
||||
cfg.BoolOpt('accounts_quotas',
|
||||
default=True,
|
||||
help="Set to True if the Account Quota middleware is enabled"),
|
||||
]
|
||||
|
||||
|
||||
orchestration_group = cfg.OptGroup(name='orchestration',
|
||||
title='Orchestration Service Options')
|
||||
@@ -614,11 +634,17 @@ class TempestConfig:
|
||||
LOG.info("Using tempest config file %s" % path)
|
||||
|
||||
register_opt_group(cfg.CONF, compute_group, ComputeGroup)
|
||||
register_opt_group(cfg.CONF, compute_features_group,
|
||||
ComputeFeaturesGroup)
|
||||
register_opt_group(cfg.CONF, identity_group, IdentityGroup)
|
||||
register_opt_group(cfg.CONF, image_group, ImageGroup)
|
||||
register_opt_group(cfg.CONF, network_group, NetworkGroup)
|
||||
register_opt_group(cfg.CONF, volume_group, VolumeGroup)
|
||||
register_opt_group(cfg.CONF, volume_feature_group,
|
||||
VolumeFeaturesGroup)
|
||||
register_opt_group(cfg.CONF, object_storage_group, ObjectStoreGroup)
|
||||
register_opt_group(cfg.CONF, object_storage_feature_group,
|
||||
ObjectStoreFeaturesGroup)
|
||||
register_opt_group(cfg.CONF, orchestration_group, OrchestrationGroup)
|
||||
register_opt_group(cfg.CONF, dashboard_group, DashboardGroup)
|
||||
register_opt_group(cfg.CONF, boto_group, BotoGroup)
|
||||
@@ -629,11 +655,15 @@ class TempestConfig:
|
||||
ServiceAvailableGroup)
|
||||
register_opt_group(cfg.CONF, debug_group, DebugGroup)
|
||||
self.compute = cfg.CONF.compute
|
||||
self.compute_feature_enabled = cfg.CONF['compute-feature-enabled']
|
||||
self.identity = cfg.CONF.identity
|
||||
self.images = cfg.CONF.image
|
||||
self.network = cfg.CONF.network
|
||||
self.volume = cfg.CONF.volume
|
||||
self.volume_feature_enabled = cfg.CONF['volume-feature-enabled']
|
||||
self.object_storage = cfg.CONF['object-storage']
|
||||
self.object_storage_feature_enabled = cfg.CONF[
|
||||
'object-storage-feature-enabled']
|
||||
self.orchestration = cfg.CONF.orchestration
|
||||
self.dashboard = cfg.CONF.dashboard
|
||||
self.boto = cfg.CONF.boto
|
||||
|
||||
@@ -35,7 +35,7 @@ class TestServerAdvancedOps(manager.OfficialClientTest):
|
||||
def setUpClass(cls):
|
||||
super(TestServerAdvancedOps, cls).setUpClass()
|
||||
|
||||
if not cls.config.compute.resize_available:
|
||||
if not cls.config.compute_feature_enabled.resize:
|
||||
msg = "Skipping test - resize not available on this host"
|
||||
raise cls.skipException(msg)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user