Reorganize project feature config options

This commit reorganizes the config options for each project into
separate groups. This makes it easier to identify where to set
which features are enabled.

Partially Implements: blueprint config-cleanup

Change-Id: Idf8c65ef9bbc11cadea236f0b1a491a0f82bb84b
This commit is contained in:
Matthew Treinish 2013-10-17 21:51:23 +00:00
parent 14b75e861f
commit d5c9602bee
9 changed files with 113 additions and 74 deletions

View File

@ -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.

View File

@ -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

View File

@ -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):

View File

@ -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):

View File

@ -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):

View File

@ -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.

View File

@ -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

View File

@ -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')
@ -611,11 +631,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)
@ -626,11 +652,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

View File

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