Create scenario tests for load balancers
This patch implements the tempest plugin for
for testing load balancer creation in Octavia.
Co-Authored-By: Jude Cross <jcross@godaddy.com>
Co-Authored-By: Lingxian Kong <anlin.kong@gmail.com>
Depends-On: https://review.openstack.org/557856
Change-Id: I57064f8e0834efba8859a780394a1c69851cc917
diff --git a/octavia_tempest_plugin/config.py b/octavia_tempest_plugin/config.py
new file mode 100644
index 0000000..70a43aa
--- /dev/null
+++ b/octavia_tempest_plugin/config.py
@@ -0,0 +1,146 @@
+# 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 octavia_tempest_plugin.common import constants as const
+
+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.IntOpt('build_interval',
+ default=5,
+ help='Time in seconds between build status checks for '
+ 'non-load-balancer resources to build'),
+ cfg.IntOpt('build_timeout',
+ default=30,
+ help='Timeout in seconds to wait for non-load-balancer '
+ 'resources to build'),
+ # load-balancer specific options
+ cfg.IntOpt('check_interval',
+ default=5,
+ help='Interval to check for status changes.'),
+ cfg.IntOpt('check_timeout',
+ default=60,
+ 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.IntOpt('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.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.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. "none" disables the RBAC tests.'),
+ # 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('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.'),
+ # Environment specific options
+ # These are used to accomidate 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.'),
+]