shaker/etc/shaker.conf
Oded Le'Sage abe9fbd877 Enhance Shaker to provide the ability to define support templates
Issue: At AT&T we have large complex test stacks that make putting
everything into a single heat template and environment file very
cumbersome. Large monolithic templates make it harder to debug failures,
maintain, extend, and organize these tests. In order to solve this issue
we have enhanced Shaker to support specifying support templates with
environment files.

This commit enhances Shaker to add the ability to define
support_templates with env_files in test definitions.

Support templates spin up "support type" resources before the actual
test stack is spun up. This could range from networks, to volumes, to
anything Heat can create. The support resources do not have any reliance
on resources created in the test stack, they set up a "foundation" for
the test stack. The test stack can then reference these resources by
name. (e.g. assume they exist by the time the test stack is spun up)

While the example provided with this commit is simple, and the support
networks that get created are not directly used in the test, it
shows the basic principles of how support templates work.

As a real-world example and to give an idea of the complexity this
enhancement is trying to solve, we have a test definition that looks
like this:

  support_templates:
  -
    Base:
      template: templates/module_1_base.yaml
      env_file: env/module_1_base.env
  -
   SI_L2:
      template: templates/module_2_si_l2.yaml
      env_file: env/module_2_si_l2.env
  -
   SI_L3:
      template: templates/module_3_si_l3.yaml
      env_file: env/module_3_si_l3.env

  template: templates/module_4_master_servant.yaml
  env_file: env/module_4_master_servant.env

The first support stack (module_1) sets up some "base" network
resources. This stack provides some network resources used by the SI_L2
and SI_L3 support stacks.

SI_L2 is a support stack with 2 VMs that do Contrail service chaining
on an L2 network.

SI_L3 is a support stack with 2 VMs that do Contrail service chaining
on an L3 network.

Then the test stack (module 4) gets spun up on N amount of computes and
runs traffic across the SI_L2 and SI_L3 service chained networks.

After the test run all stacks are cleaned up

Using the concept of support stacks allows us to beter organize and
maintain our complex tests and allows for faster debugging due to the
"layered" nature of the setup.

Support templates also allow us to spin up more Shaker test threads
that use the same support templates simultaneously to better simulate
real-world network traffic. It also reduces the set up time of certain
tests we have since the support stacks already exist.

This enhancement does not alter existing Shaker functionality and
is fully backwards compatible.

Change-Id: Ife51bc55874c6ec4faac221bab8f9f0eea175fdc
2018-11-05 11:12:14 -06:00

314 lines
12 KiB
Plaintext

[DEFAULT]
#
# From oslo_log
#
# If set to true, the logging level will be set to DEBUG instead of the default
# INFO level. (boolean value)
# Note: This option can be changed without restarting.
#debug = false
# The name of a logging configuration file. This file is appended to any
# existing logging configuration files. For details about logging configuration
# files, see the Python logging module documentation. Note that when logging
# configuration files are used then all logging configuration is set in the
# configuration file and other logging configuration options are ignored (for
# example, logging_context_format_string). (string value)
# Note: This option can be changed without restarting.
# Deprecated group/name - [DEFAULT]/log_config
#log_config_append = <None>
# Defines the format string for %%(asctime)s in log records. Default:
# %(default)s . This option is ignored if log_config_append is set. (string
# value)
#log_date_format = %Y-%m-%d %H:%M:%S
# (Optional) Name of log file to send logging output to. If no default is set,
# logging will go to stderr as defined by use_stderr. This option is ignored if
# log_config_append is set. (string value)
# Deprecated group/name - [DEFAULT]/logfile
#log_file = <None>
# (Optional) The base directory used for relative log_file paths. This option
# is ignored if log_config_append is set. (string value)
# Deprecated group/name - [DEFAULT]/logdir
#log_dir = <None>
# Uses logging handler designed to watch file system. When log file is moved or
# removed this handler will open a new log file with specified path
# instantaneously. It makes sense only if log_file option is specified and
# Linux platform is used. This option is ignored if log_config_append is set.
# (boolean value)
#watch_log_file = false
# Use syslog for logging. Existing syslog format is DEPRECATED and will be
# changed later to honor RFC5424. This option is ignored if log_config_append
# is set. (boolean value)
#use_syslog = false
# Enable journald for logging. If running in a systemd environment you may wish
# to enable journal support. Doing so will use the journal native protocol
# which includes structured metadata in addition to log messages.This option is
# ignored if log_config_append is set. (boolean value)
#use_journal = false
# Syslog facility to receive log lines. This option is ignored if
# log_config_append is set. (string value)
#syslog_log_facility = LOG_USER
# Use JSON formatting for logging. This option is ignored if log_config_append
# is set. (boolean value)
#use_json = false
# Log output to standard error. This option is ignored if log_config_append is
# set. (boolean value)
#use_stderr = false
# Format string to use for log messages with context. (string value)
#logging_context_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s
# Format string to use for log messages when context is undefined. (string
# value)
#logging_default_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s
# Additional data to append to log message when logging level for the message
# is DEBUG. (string value)
#logging_debug_format_suffix = %(funcName)s %(pathname)s:%(lineno)d
# Prefix each line of exception output with this format. (string value)
#logging_exception_prefix = %(asctime)s.%(msecs)03d %(process)d ERROR %(name)s %(instance)s
# Defines the format string for %(user_identity)s that is used in
# logging_context_format_string. (string value)
#logging_user_identity_format = %(user)s %(tenant)s %(domain)s %(user_domain)s %(project_domain)s
# List of package logging levels in logger=LEVEL pairs. This option is ignored
# if log_config_append is set. (list value)
#default_log_levels = amqp=WARN,amqplib=WARN,boto=WARN,qpid=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,oslo_messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN,urllib3.connectionpool=WARN,websocket=WARN,requests.packages.urllib3.util.retry=WARN,urllib3.util.retry=WARN,keystonemiddleware=WARN,routes.middleware=WARN,stevedore=WARN,taskflow=WARN,keystoneauth=WARN,oslo.cache=INFO,dogpile.core.dogpile=INFO
# Enables or disables publication of error events. (boolean value)
#publish_errors = false
# The format for an instance that is passed with the log message. (string
# value)
#instance_format = "[instance: %(uuid)s] "
# The format for an instance UUID that is passed with the log message. (string
# value)
#instance_uuid_format = "[instance: %(uuid)s] "
# Interval, number of seconds, of log rate limiting. (integer value)
#rate_limit_interval = 0
# Maximum number of logged messages per rate_limit_interval. (integer value)
#rate_limit_burst = 0
# Log level name used by rate limiting: CRITICAL, ERROR, INFO, WARNING, DEBUG
# or empty string. Logs with level greater or equal to rate_limit_except_level
# are not filtered. An empty string means that all levels are filtered. (string
# value)
#rate_limit_except_level = CRITICAL
# Enables or disables fatal status of deprecations. (boolean value)
#fatal_deprecations = false
#
# From shaker.engine.config
#
# Address for server connections (host:port), defaults to
# env[SHAKER_SERVER_ENDPOINT]. (string value)
#server_endpoint = <None>
# How frequently the agent polls server, in seconds (integer value)
#polling_interval = 10
# Authentication URL, defaults to env[OS_AUTH_URL]. (string value)
#os_auth_url =
# Authentication tenant name, defaults to env[OS_TENANT_NAME]. (string value)
#os_tenant_name =
# Authentication project name. This option is mutually exclusive with --os-
# tenant-name. Defaults to env[OS_PROJECT_NAME]. (string value)
#os_project_name =
# Authentication project domain name. Defaults to env[OS_PROJECT_DOMAIN_NAME].
# (string value)
#os_project_domain_name = Default
# Authentication username, defaults to env[OS_USERNAME]. (string value)
#os_username =
# Authentication username. Defaults to env[OS_USER_DOMAIN_NAME]. (string value)
#os_user_domain_name =
# Identity API version, defaults to env[OS_IDENTITY_API_VERSION]. (string
# value)
#os_identity_api_version = 3
# Authentication password, defaults to env[OS_PASSWORD]. (string value)
#os_password =
# Location of CA Certificate, defaults to env[OS_CACERT]. (string value)
#os_cacert =
# When using SSL in connections to the registry server, do not require
# validation via a certifying authority, defaults to env[OS_INSECURE]. (boolean
# value)
#os_insecure = false
# Authentication region name, defaults to env[OS_REGION_NAME]. (string value)
#os_region_name = RegionOne
# Interface type. Valid options are public, admin and internal. defaults to
# env[OS_INTERFACE]. (string value)
#os_interface =
# HMAC key for encrypting profiling context data, defaults to env[OS_PROFILE].
# (string value)
#os_profile =
# Name or ID of external network, defaults to env[SHAKER_EXTERNAL_NET]. If no
# value provided then Shaker picks any of available external networks. (string
# value)
#external_net = <None>
# Comma-separated list of IPs of the DNS nameservers for the subnets. If no
# value is provided defaults to Google Public DNS. (list value)
#dns_nameservers = 8.8.8.8,8.8.4.4
# Name of image to use. The default is created by shaker-image-builder. (string
# value)
#image_name = shaker-image
# Name of image flavor. The default is created by shaker-image-builder. (string
# value)
#flavor_name = shaker-flavor
# Clean up the heat-stack upon any error occurred during scenario execution.
# (boolean value)
#cleanup_on_error = true
# Comma-separated list of scenarios to play. Each entity can be a file name or
# one of aliases: "misc/instance_metadata", "misc/static_agent",
# "misc/static_agents_pair", "openstack/cross_az/full_l2",
# "openstack/cross_az/full_l3_east_west",
# "openstack/cross_az/full_l3_north_south", "openstack/cross_az/perf_l2",
# "openstack/cross_az/perf_l3_east_west",
# "openstack/cross_az/perf_l3_north_south", "openstack/cross_az/udp_l2",
# "openstack/cross_az/udp_l2_mss8950", "openstack/cross_az/udp_l3_east_west",
# "openstack/dense_l2", "openstack/dense_l3_east_west",
# "openstack/dense_l3_north_south",
# "openstack/external/dense_l3_north_south_no_fip",
# "openstack/external/dense_l3_north_south_with_fip",
# "openstack/external/full_l3_north_south_no_fip",
# "openstack/external/full_l3_north_south_with_fip",
# "openstack/external/perf_l3_north_south_no_fip",
# "openstack/external/perf_l3_north_south_with_fip", "openstack/full_l2",
# "openstack/full_l3_east_west", "openstack/full_l3_north_south",
# "openstack/perf_l2", "openstack/perf_l3_east_west",
# "openstack/perf_l3_north_south", "openstack/qos/perf_l2", "openstack/udp_l2",
# "openstack/udp_l3_east_west", "openstack/udp_l3_north_south", "spot/ping",
# "spot/tcp", "spot/udp". Defaults to env[SHAKER_SCENARIO]. (list value)
#scenario = <None>
# Set the matrix of parameters for the scenario. The value is specified in YAML
# format. E.g. to override the scenario duration one may provide: "{time: 10}",
# or to override list of hosts: "{host:[ping.online.net, iperf.eenet.ee]}".
# When several parameters are overridden all combinations are tested (string
# value)
#matrix = <None>
# File for output in JSON format, defaults to env[SHAKER_OUTPUT]. If it is
# empty, then output will be saved to /tmp/shaker_<time_now>.json (string
# value)
#output =
# If specified, directs Shaker to store there all its artifacts (output,
# report, subunit and book). Defaults to env[SHAKER_ARTIFACTS_DIR]. (string
# value)
#artifacts_dir = <None>
# DEPRECATED: Do not generate report for failed scenarios (boolean value)
# This option is deprecated for removal.
# Its value may be silently ignored in the future.
#no_report_on_error = false
# Comma-separated list of availability_zone. If specified this setting will
# override the availability_zone accomodation setting in the scenario test
# definition.Defaults to SCENARIO_AVAILABILITY_ZONE (list value)
#scenario_availability_zone = <None>
# Number of compute_nodes. If specified this setting will override the
# compute_nodes accomodation setting in the scenario test definition. Defaults
# to SCENARIO_COMPUTE_NODES (integer value)
#scenario_compute_nodes = <None>
# Timeout to treat agent as lost in seconds, defaults to
# env[SHAKER_AGENT_LOSS_TIMEOUT] (integer value)
#agent_loss_timeout = 60
# Timeout to treat agent as join failed in seconds, defaults to
# env[SHAKER_AGENT_JOIN_TIMEOUT] (time between stack deployment and start of
# scenario execution). (integer value)
#agent_join_timeout = 600
# Template for report. Can be a file name or one of aliases: "interactive",
# "json". Defaults to "interactive". (string value)
#report_template = interactive
# Report file name, defaults to env[SHAKER_REPORT]. (string value)
#report = <None>
# Subunit stream file name, defaults to env[SHAKER_SUBUNIT]. (string value)
#subunit = <None>
# Generate report in ReST format and store it into the specified folder,
# defaults to env[SHAKER_BOOK]. (string value)
#book = <None>
# File or list of files to read test results from, defaults to
# env[SHAKER_INPUT]. (list value)
#input = <None>
# Agent unique id, defaults to MAC of primary interface. (string value)
#agent_id = <None>
# Heat template containing receipt of building the image. Can be a file name or
# one of aliases: "centos", "debian", "ubuntu". Defaults to "ubuntu". (string
# value)
#image_builder_template = ubuntu
# Shaker image RAM size in MB, defaults to env[SHAKER_FLAVOR_RAM] (integer
# value)
#flavor_ram = 512
# Number of cores to allocate for Shaker image, defaults to
# env[SHAKER_FLAVOR_VCPUS] (integer value)
#flavor_vcpus = 1
# Shaker image disk size in GB, defaults to env[SHAKER_FLAVOR_DISK] (integer
# value)
#flavor_disk = 3
# Image building mode: "heat" - using Heat template (requires Glance v1 for
# base image upload); "dib" - using diskimage-builder elements (requires qemu-
# utils and debootstrap). If not set, switches to "dib" if Glance v1 is not
# available. Can be specified as env[SHAKER_IMAGE_BUILDER_MODE] (string value)
# Possible values:
# heat - <No description provided>
# dib - <No description provided>
#image_builder_mode = <None>
# Operating System Distribution for shaker image when using diskimage-builder,
# defaults to ubuntu (string value)
# Possible values:
# ubuntu - <No description provided>
# centos7 - <No description provided>
#image_builder_distro = ubuntu
# Cleanup the image and the flavor. (boolean value)
#cleanup = true