04ba7685ab
Depends-On: https://review.opendev.org/660239 Story: 2005608 Task: 30843 Task: 30846 Change-Id: Ie9827108457884fc8012d5cdc4b512d705bc231a
307 lines
15 KiB
Python
307 lines
15 KiB
Python
# Copyright 2016 Rackspace Inc.
|
|
#
|
|
# 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 oslo_config import cfg
|
|
from oslo_log import log as logging
|
|
|
|
from octavia_tempest_plugin.common import constants as const
|
|
|
|
|
|
LOG = logging.getLogger(__name__)
|
|
|
|
service_available_group = cfg.OptGroup(name='service_available',
|
|
title='Available OpenStack Services')
|
|
|
|
ServiceAvailableGroup = [
|
|
cfg.BoolOpt('load_balancer',
|
|
default=True,
|
|
help="Whether or not the load-balancer service is expected "
|
|
"to be available."),
|
|
]
|
|
|
|
octavia_group = cfg.OptGroup(name='load_balancer',
|
|
title='load-balancer service options')
|
|
|
|
OctaviaGroup = [
|
|
# Tempest plugin common options
|
|
cfg.StrOpt("region",
|
|
default="",
|
|
help="The region name to use. If empty, the value "
|
|
"of identity.region is used instead. If no such region "
|
|
"is found in the service catalog, the first found one is "
|
|
"used."),
|
|
cfg.StrOpt('catalog_type',
|
|
default='load-balancer',
|
|
help='Catalog type of the Octavia service.'),
|
|
cfg.StrOpt('endpoint_type',
|
|
default='publicURL',
|
|
choices=['public', 'admin', 'internal',
|
|
'publicURL', 'adminURL', 'internalURL'],
|
|
help="The endpoint type to use for the load-balancer service"),
|
|
cfg.FloatOpt('build_interval',
|
|
default=5,
|
|
help='Time in seconds between build status checks for '
|
|
'non-load-balancer resources to build'),
|
|
cfg.IntOpt('build_timeout',
|
|
default=300,
|
|
help='Timeout in seconds to wait for non-load-balancer '
|
|
'resources to build'),
|
|
cfg.StrOpt('octavia_svc_username', default='admin',
|
|
help='The service_auth username the Octavia services are using'
|
|
'to access other OpenStack services.'),
|
|
# load-balancer specific options
|
|
cfg.FloatOpt('check_interval',
|
|
default=5,
|
|
help='Interval to check for status changes.'),
|
|
cfg.IntOpt('check_timeout',
|
|
default=120,
|
|
help='Timeout, in seconds, to wait for a status change.'),
|
|
cfg.BoolOpt('test_with_noop',
|
|
default=False,
|
|
help='Runs the tests assuming no-op drivers are being used. '
|
|
'Tests will assume no actual amphora are created.'),
|
|
cfg.FloatOpt('lb_build_interval',
|
|
default=10,
|
|
help='Time in seconds between build status checks for a '
|
|
'load balancer.'),
|
|
cfg.IntOpt('lb_build_timeout',
|
|
default=900,
|
|
help='Timeout in seconds to wait for a '
|
|
'load balancer to build.'),
|
|
cfg.StrOpt('member_role',
|
|
default='load-balancer_member',
|
|
help='The load balancing member RBAC role.'),
|
|
cfg.StrOpt('admin_role',
|
|
default='load-balancer_admin',
|
|
help='The load balancing admin RBAC role.'),
|
|
cfg.StrOpt('observer_role',
|
|
default='load-balancer_observer',
|
|
help='The load balancing observer RBAC role.'),
|
|
cfg.StrOpt('global_observer_role',
|
|
default='load-balancer_global_observer',
|
|
help='The load balancing global observer RBAC role.'),
|
|
cfg.IntOpt('scp_connection_timeout',
|
|
default=5,
|
|
help='Timeout in seconds to wait for a '
|
|
'scp connection to complete.'),
|
|
cfg.IntOpt('scp_connection_attempts',
|
|
default=20,
|
|
help='Retries for scp to attempt to connect.'),
|
|
cfg.StrOpt('provider',
|
|
default='octavia',
|
|
help='The provider driver to use for the tests.'),
|
|
cfg.StrOpt('RBAC_test_type', default=const.ADVANCED,
|
|
choices=[const.ADVANCED, const.KEYSTONE_DEFAULT_ROLES,
|
|
const.OWNERADMIN, const.NONE],
|
|
help='Type of RBAC tests to run. "advanced" runs the octavia '
|
|
'default RBAC tests. "owner_or_admin" runs the legacy '
|
|
'owner or admin tests. "keystone_default_roles" runs the '
|
|
'tests using only the keystone default roles. "none" '
|
|
'disables the RBAC tests.'),
|
|
cfg.DictOpt('enabled_provider_drivers',
|
|
help=('A comma separated list of dictionaries of the '
|
|
'enabled provider driver names and descriptions. '
|
|
'Must match the driver name in the '
|
|
'octavia.api.drivers entrypoint. Example: '
|
|
'amphora:The Octavia Amphora driver.,'
|
|
'octavia:Deprecated alias of the Octavia '
|
|
'Amphora driver.,'
|
|
'amphorav2:The Octavia Amphora driver that uses '
|
|
'taskflow jobboard persistence.'),
|
|
default={'amphora': 'The Octavia Amphora driver.',
|
|
'amphorav2': 'The Octavia Amphora driver that uses '
|
|
'taskflow jobboard persistence.',
|
|
'octavia': 'Deprecated alias of the Octavia Amphora '
|
|
'driver.'}),
|
|
cfg.StrOpt('loadbalancer_topology',
|
|
default=const.SINGLE,
|
|
choices=const.SUPPORTED_LB_TOPOLOGIES,
|
|
help='Load balancer topology configuration.'),
|
|
cfg.DictOpt('expected_flavor_capability',
|
|
help=('Defines a provider flavor capability that is expected '
|
|
'to be present in the selected provider under test. '
|
|
'It is specified in a "name": "description" dict. '
|
|
'Example: {"loadbalancer_topology": "The load balancer '
|
|
'topology. One of: SINGLE - One amphora per load '
|
|
'balancer. ACTIVE_STANDBY - Two amphora per load '
|
|
'balancer."}'),
|
|
default={'loadbalancer_topology': 'The load balancer '
|
|
'topology. One of: SINGLE - One amphora per load '
|
|
'balancer. ACTIVE_STANDBY - Two amphora per load '
|
|
'balancer.'}),
|
|
cfg.DictOpt('expected_availability_zone_capability',
|
|
help=('Defines a provider availability zone capability that '
|
|
'is expected to be present in the selected provider '
|
|
'under test. It is specified in a "name": "description" '
|
|
'dict. Example: {"compute_zone": "The compute '
|
|
'availability zone."}'),
|
|
default={'compute_zone': 'The compute availability zone.'}),
|
|
# Networking
|
|
cfg.BoolOpt('test_with_ipv6',
|
|
default=True,
|
|
help='When true the IPv6 tests will be run.'),
|
|
cfg.BoolOpt('disable_boot_network', default=False,
|
|
help='True if your cloud does not allow creating networks or '
|
|
'specifying the boot network for instances.'),
|
|
cfg.BoolOpt('enable_security_groups', default=False,
|
|
help='When true, security groups will be created for the test '
|
|
'servers. When false, port security will be disabled on '
|
|
'the created networks.'),
|
|
cfg.StrOpt('test_network_override',
|
|
help='Overrides network creation and uses this network ID for '
|
|
'all tests (VIP, members, etc.). Required if '
|
|
'test_subnet_override is set.'),
|
|
cfg.StrOpt('test_subnet_override',
|
|
help='Overrides subnet creation and uses this subnet ID for '
|
|
'all IPv4 tests (VIP, members, etc.). Optional'),
|
|
cfg.StrOpt('test_ipv6_subnet_override',
|
|
help='Overrides subnet creation and uses this subnet ID for '
|
|
'all IPv6 tests (VIP, members, etc.). Optional and only '
|
|
'valid if test_network_override is set.'),
|
|
cfg.StrOpt('vip_subnet_cidr',
|
|
default='10.1.1.0/24',
|
|
help='CIDR format subnet to use for the vip subnet.'),
|
|
cfg.StrOpt('vip_ipv6_subnet_cidr',
|
|
default='fdde:1a92:7523:70a0::/64',
|
|
help='CIDR format subnet to use for the IPv6 vip subnet.'),
|
|
cfg.StrOpt('vip_2_subnet_cidr',
|
|
default='10.1.2.0/24',
|
|
help='CIDR format subnet to use for the 2nd vip subnet.'),
|
|
cfg.StrOpt('vip_2_ipv6_subnet_cidr',
|
|
default='fdde:1a92:7523:70a1::/64',
|
|
help='CIDR format subnet to use for the 2nd IPv6 vip subnet.'),
|
|
cfg.StrOpt('member_1_ipv4_subnet_cidr',
|
|
default='10.2.1.0/24',
|
|
help='CIDR format subnet to use for the member 1 subnet.'),
|
|
cfg.StrOpt('member_1_ipv6_subnet_cidr',
|
|
default='fd7b:f9f7:0fff:4eca::/64',
|
|
help='CIDR format subnet to use for the member 1 ipv6 subnet.'),
|
|
cfg.StrOpt('member_2_ipv4_subnet_cidr',
|
|
default='10.2.2.0/24',
|
|
help='CIDR format subnet to use for the member 2 subnet.'),
|
|
cfg.StrOpt('member_2_ipv6_subnet_cidr',
|
|
default='fd77:1457:4cf0:26a8::/64',
|
|
help='CIDR format subnet to use for the member 1 ipv6 subnet.'),
|
|
cfg.StrOpt('default_router',
|
|
default='router1',
|
|
help='The default router connected to the public network.'),
|
|
cfg.StrOpt('default_ipv6_subnetpool',
|
|
default='shared-default-subnetpool-v6',
|
|
help='The default IPv6 subnetpool to use when creating the '
|
|
'IPv6 VIP subnet.'),
|
|
# Amphora specific options
|
|
cfg.StrOpt('amphora_ssh_user',
|
|
default='ubuntu',
|
|
help='The amphora SSH user.'),
|
|
cfg.StrOpt('amphora_ssh_key',
|
|
default='/etc/octavia/.ssh/octavia_ssh_key',
|
|
help='The amphora SSH key file.'),
|
|
# Environment specific options
|
|
# These are used to accomodate clouds with specific limitations
|
|
cfg.IntOpt('random_server_name_length',
|
|
default=0,
|
|
help='If non-zero, generate a random name of the length '
|
|
'provided for each server, in the format "m[A-Z0-9]*". '),
|
|
cfg.StrOpt('availability_zone',
|
|
default=None,
|
|
help='Availability zone to use for creating servers.'),
|
|
cfg.StrOpt('availability_zone2',
|
|
default=None,
|
|
help='A second availability zone to use for creating servers.'),
|
|
cfg.StrOpt('availability_zone3',
|
|
default=None,
|
|
help='A third availability zone to use for creating servers.'),
|
|
cfg.BoolOpt('test_reuse_connection', default=True,
|
|
help='Reuse TCP connections while testing LB with '
|
|
'HTTP members (keep-alive).'),
|
|
# Log offloading specific options
|
|
cfg.StrOpt('tenant_flow_log_file',
|
|
default='/var/log/octavia-tenant-traffic.log',
|
|
help='File path, on the tempest system, to the tenant flow '
|
|
'log file.'),
|
|
cfg.StrOpt('amphora_admin_log_file',
|
|
default='/var/log/octavia-amphora.log',
|
|
help='File path, on the tempest system, to the amphora admin '
|
|
'log file.'),
|
|
cfg.StrOpt('test_server_path',
|
|
default='/opt/octavia-tempest-plugin/test_server.bin',
|
|
help='Filesystem path to the test web server that will be '
|
|
'installed in the web server VMs.'),
|
|
# RBAC related options
|
|
# Note: Also see the enforce_scope section (from tempest) for Octavia API
|
|
# scope checking setting.
|
|
cfg.BoolOpt('enforce_new_defaults',
|
|
default=False,
|
|
help='Does the load-balancer service API policies enforce '
|
|
'the new keystone default roles? This configuration '
|
|
'value should be same as octavia.conf: '
|
|
'[oslo_policy].enforce_new_defaults option.'),
|
|
]
|
|
|
|
lb_feature_enabled_group = cfg.OptGroup(name='loadbalancer-feature-enabled',
|
|
title='Enabled/Disabled LB features')
|
|
LBFeatureEnabledGroup = [
|
|
cfg.BoolOpt('not_implemented_is_error',
|
|
default=True,
|
|
help="When True, not-implemented responses from the API are "
|
|
"considered an error and test failure. This should be "
|
|
"used when a driver should support all of the Octavia "
|
|
"API features, such as the reference driver."),
|
|
cfg.BoolOpt('health_monitor_enabled',
|
|
default=True,
|
|
help="Whether Health Monitor is available with provider "
|
|
"driver or not."),
|
|
cfg.BoolOpt('terminated_tls_enabled',
|
|
default=True,
|
|
help="Whether TLS termination is available with provider "
|
|
"driver or not."),
|
|
cfg.BoolOpt('l7_protocol_enabled',
|
|
default=True,
|
|
help="Whether L7 Protocols are available with the provider "
|
|
"driver or not."),
|
|
cfg.BoolOpt('pool_algorithms_enabled',
|
|
default=True,
|
|
help="Whether pool algorithms are available with provider"
|
|
"driver or not."),
|
|
cfg.StrOpt('l4_protocol',
|
|
default="TCP",
|
|
help="The type of L4 Protocol which is supported with the "
|
|
"provider driver."),
|
|
cfg.BoolOpt('spare_pool_enabled',
|
|
default=False,
|
|
help="Wether spare pool is available with amphora provider "
|
|
"driver or not."),
|
|
cfg.BoolOpt('session_persistence_enabled',
|
|
default=True,
|
|
help="Whether session persistence is supported with the "
|
|
"provider driver."),
|
|
cfg.BoolOpt('log_offload_enabled', default=False,
|
|
help="Whether the log offload tests will run. These require "
|
|
"the tempest instance have access to the log files "
|
|
"specified in the tempest configuration."),
|
|
]
|
|
|
|
# Extending this enforce_scope group defined in tempest
|
|
enforce_scope_group = cfg.OptGroup(name="enforce_scope",
|
|
title="OpenStack Services with "
|
|
"enforce scope")
|
|
EnforceScopeGroup = [
|
|
cfg.BoolOpt('octavia',
|
|
default=False,
|
|
help='Does the load-balancer service API policies enforce '
|
|
'scope? This configuration value should be same as '
|
|
'octavia.conf: [oslo_policy].enforce_scope option.'),
|
|
]
|