[DEFAULT]

#
# From oslo.log
#

# Print debugging output (set logging level to DEBUG instead of
# default INFO level). (boolean value)
#debug = false

# If set to false, will disable INFO logging level, making WARNING the
# default. (boolean value)
# This option is deprecated for removal.
# Its value may be silently ignored in the future.
#verbose = true

# 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.
# (string value)
# Deprecated group/name - [DEFAULT]/log_config
#log_config_append = <None>

# DEPRECATED. A logging.Formatter log message format string which may
# use any of the available logging.LogRecord attributes. This option
# is deprecated.  Please use logging_context_format_string and
# logging_default_format_string instead. (string value)
#log_format = <None>

# Format string for %%(asctime)s in log records. Default: %(default)s
# . (string value)
#log_date_format = %Y-%m-%d %H:%M:%S

# (Optional) Name of log file to output to. If no default is set,
# logging will go to stdout. (string value)
# Deprecated group/name - [DEFAULT]/logfile
#log_file = <None>

# (Optional) The base directory used for relative --log-file paths.
# (string value)
# Deprecated group/name - [DEFAULT]/logdir
#log_dir = <None>

# Use syslog for logging. Existing syslog format is DEPRECATED and
# will be changed later to honor RFC5424. (boolean value)
#use_syslog = false

# (Optional) Enables or disables syslog rfc5424 format for logging. If
# enabled, prefixes the MSG part of the syslog message with APP-NAME
# (RFC5424). The format without the APP-NAME is deprecated in K, and
# will be removed in M, along with this option. (boolean value)
# This option is deprecated for removal.
# Its value may be silently ignored in the future.
#use_syslog_rfc_format = true

# Syslog facility to receive log lines. (string value)
#syslog_log_facility = LOG_USER

# Log output to standard error. (boolean value)
#use_stderr = true

# 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 without context. (string
# value)
#logging_default_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s

# Data to append to log format when level 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

# List of logger=LEVEL pairs. (list value)
#default_log_levels = amqp=WARN,amqplib=WARN,boto=WARN,qpid=WARN,sqlalchemy=WARN,suds=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

# 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] "

# Enables or disables fatal status of deprecations. (boolean value)
#fatal_deprecations = false

#
# From tempest.config
#

# Prefix to be added when generating the name for test resources. It
# can be used to discover all resources associated with a specific
# test run when running tempest on a real-life cloud (string value)
#resources_prefix = tempest


[auth]

#
# From tempest.config
#

# Path to the yaml file that contains the list of credentials to use
# for running tests. If used when running in parallel you have to make
# sure sufficient credentials are provided in the accounts file. For
# example if no tests with roles are being run it requires at least `2
# * CONC` distinct accounts configured in  the `test_accounts_file`,
# with CONC == the number of concurrent test processes. (string value)
#test_accounts_file = <None>

# Allows test cases to create/destroy tenants and users. This option
# requires that OpenStack Identity API admin credentials are known. If
# false, isolated test cases and parallel execution, can still be
# achieved configuring a list of test accounts (boolean value)
# Deprecated group/name - [compute]/allow_tenant_isolation
# Deprecated group/name - [orchestration]/allow_tenant_isolation
#allow_tenant_isolation = true

# Roles to assign to all users created by tempest (list value)
#tempest_roles =

# Default domain used when getting v3 credentials. This is the name
# keystone uses for v2 compatibility. (string value)
# Deprecated group/name - [auth]/tenant_isolation_domain_name
#default_credentials_domain_name = Default

# If allow_tenant_isolation is set to True and Neutron is enabled
# Tempest will try to create a useable network, subnet, and router
# when needed for each tenant it  creates. However in some neutron
# configurations, like with VLAN provider networks, this doesn't work.
# So if set to False the isolated networks will not be created
# (boolean value)
#create_isolated_networks = true


[baremetal]

#
# From tempest.config
#

# Catalog type of the baremetal provisioning service (string value)
#catalog_type = baremetal

# Whether the Ironic nova-compute driver is enabled (boolean value)
#driver_enabled = false

# Driver name which Ironic uses (string value)
#driver = fake

# The endpoint type to use for the baremetal provisioning service
# (string value)
# Allowed values: public, admin, internal, publicURL, adminURL, internalURL
#endpoint_type = publicURL

# Timeout for Ironic node to completely provision (integer value)
#active_timeout = 300

# Timeout for association of Nova instance and Ironic node (integer
# value)
#association_timeout = 30

# Timeout for Ironic power transitions. (integer value)
#power_timeout = 60

# Timeout for unprovisioning an Ironic node. Takes longer since Kilo
# as Ironic performs an extra step in Node cleaning. (integer value)
#unprovision_timeout = 300


[boto]

#
# From tempest.config
#

# EC2 URL (string value)
#ec2_url = http://localhost:8773/services/Cloud

# S3 URL (string value)
#s3_url = http://localhost:8080

# AWS Secret Key (string value)
#aws_secret = <None>

# AWS Access Key (string value)
#aws_access = <None>

# AWS Zone for EC2 tests (string value)
#aws_zone = nova

# S3 Materials Path (string value)
#s3_materials_path = /opt/stack/devstack/files/images/s3-materials/cirros-0.3.0

# ARI Ramdisk Image manifest (string value)
#ari_manifest = cirros-0.3.0-x86_64-initrd.manifest.xml

# AMI Machine Image manifest (string value)
#ami_manifest = cirros-0.3.0-x86_64-blank.img.manifest.xml

# AKI Kernel Image manifest (string value)
#aki_manifest = cirros-0.3.0-x86_64-vmlinuz.manifest.xml

# Instance type (string value)
#instance_type = m1.tiny

# boto Http socket timeout (integer value)
#http_socket_timeout = 3

# boto num_retries on error (integer value)
#num_retries = 1

# Status Change Timeout (integer value)
#build_timeout = 60

# Status Change Test Interval (integer value)
#build_interval = 1


[compute]

#
# From tempest.config
#

# Valid primary image reference to be used in tests. This is a
# required option (string value)
#image_ref = <None>

# Valid secondary image reference to be used in tests. This is a
# required option, but if only one image is available duplicate the
# value of image_ref above (string value)
#image_ref_alt = <None>

# Valid primary flavor to use in tests. (string value)
#flavor_ref = 1

# Valid secondary flavor to be used in tests. (string value)
#flavor_ref_alt = 2

# User name used to authenticate to an instance. (string value)
#image_ssh_user = root

# Password used to authenticate to an instance. (string value)
#image_ssh_password = password

# User name used to authenticate to an instance using the alternate
# image. (string value)
#image_alt_ssh_user = root

# Time in seconds between build status checks. (integer value)
#build_interval = 1

# Timeout in seconds to wait for an instance to build. Other services
# that do not define build_timeout will inherit this value. (integer
# value)
#build_timeout = 300

# Shell fragments to use before executing a command when sshing to a
# guest. (string value)
#ssh_shell_prologue = set -eu -o pipefail; PATH=$$PATH:/sbin;

# Auth method used for authenticate to the instance. Valid choices
# are: keypair, configured, adminpass and disabled. Keypair: start the
# servers with a ssh keypair. Configured: use the configured user and
# password. Adminpass: use the injected adminPass. Disabled: avoid
# using ssh when it is an option. (string value)
#ssh_auth_method = keypair

# How to connect to the instance? fixed: using the first ip belongs
# the fixed network floating: creating and using a floating ip.
# (string value)
#ssh_connect_method = floating

# User name used to authenticate to an instance. (string value)
#ssh_user = root

# Timeout in seconds to wait for ping to succeed. (integer value)
#ping_timeout = 120

# The packet size for ping packets originating from remote linux hosts
# (integer value)
#ping_size = 56

# The number of ping packets originating from remote linux hosts
# (integer value)
#ping_count = 1

# Additional wait time for clean state, when there is no OS-EXT-STS
# extension available (integer value)
#ready_wait = 0

# Name of the fixed network that is visible to all test tenants. If
# multiple networks are available for a tenant this is the network
# which will be used for creating servers if tempest does not create a
# network or a network is not specified elsewhere. It may be used for
# ssh validation only if floating IPs are disabled. (string value)
#fixed_network_name = <None>

# Network used for SSH connections. Ignored if
# use_floatingip_for_ssh=true or run_validation=false. (string value)
#network_for_ssh = public

# Does SSH use Floating IPs? (boolean value)
#use_floatingip_for_ssh = true

# Catalog type of the Compute service. (string value)
#catalog_type = compute

# The compute 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. (string value)
#region =

# The endpoint type to use for the compute service. (string value)
# Allowed values: public, admin, internal, publicURL, adminURL, internalURL
#endpoint_type = publicURL

# Expected device name when a volume is attached to an instance
# (string value)
#volume_device_name = vdb

# Time in seconds before a shelved instance is eligible for removing
# from a host.  -1 never offload, 0 offload when shelved. This time
# should be the same as the time of nova.conf, and some tests will run
# for as long as the time. (integer value)
#shelved_offload_time = 0

# Unallocated floating IP range, which will be used to test the
# floating IP bulk feature for CRUD operation. This block must not
# overlap an existing floating IP pool. (string value)
#floating_ip_range = 10.0.0.0/29


[compute-feature-enabled]

#
# From tempest.config
#

# If false, skip disk config tests (boolean value)
#disk_config = true

# A list of enabled compute extensions with a special entry all which
# indicates every extension is enabled. Each extension should be
# specified with alias name. Empty list indicates all extensions are
# disabled (list value)
#api_extensions = all

# Does the test environment support changing the admin password?
# (boolean value)
#change_password = false

# Does the test environment support obtaining instance serial console
# output? (boolean value)
#console_output = true

# Does the test environment support resizing? (boolean value)
#resize = false

# Does the test environment support pausing? (boolean value)
#pause = true

# Does the test environment support shelving/unshelving? (boolean
# value)
#shelve = true

# Does the test environment support suspend/resume? (boolean value)
#suspend = true

# Does the test environment support live migration available? (boolean
# value)
#live_migration = true

# Does the test environment support metadata service? Ignored unless
# validation.run_validation=true. (boolean value)
#metadata_service = true

# Does the test environment use block devices for live migration
# (boolean value)
#block_migration_for_live_migration = false

# Does the test environment block migration support cinder iSCSI
# volumes. Note, libvirt doesn't support this, see
# https://bugs.launchpad.net/nova/+bug/1398999 (boolean value)
#block_migrate_cinder_iscsi = false

# Does the test system allow live-migration of paused instances? Note,
# this is more than just the ANDing of paused and live_migrate, but
# all 3 should be set to True to run those tests (boolean value)
#live_migrate_paused_instances = false

# Enable VNC console. This configuration value should be same as
# [nova.vnc]->vnc_enabled in nova.conf (boolean value)
#vnc_console = false

# Enable Spice console. This configuration value should be same as
# [nova.spice]->enabled in nova.conf (boolean value)
#spice_console = false

# Enable RDP console. This configuration value should be same as
# [nova.rdp]->enabled in nova.conf (boolean value)
#rdp_console = false

# Does the test environment support instance rescue mode? (boolean
# value)
#rescue = true

# Enables returning of the instance password by the relevant server
# API calls such as create, rebuild or rescue. (boolean value)
#enable_instance_password = true

# Does the test environment support dynamic network interface
# attachment? (boolean value)
#interface_attach = true

# Does the test environment support creating snapshot images of
# running instances? (boolean value)
#snapshot = true

# Does the test environment have the ec2 api running? (boolean value)
#ec2_api = true

# Does Nova preserve preexisting ports from Neutron when deleting an
# instance? This should be set to True if testing Kilo+ Nova. (boolean
# value)
#preserve_ports = false

# Does the test environment support attaching an encrypted volume to a
# running server instance? This may depend on the combination of
# compute_driver in nova and the volume_driver(s) in cinder. (boolean
# value)
#attach_encrypted_volume = true

# Does the test environment support creating instances with multiple
# ports on the same network? This is only valid when using Neutron.
# (boolean value)
#allow_duplicate_networks = false


[dashboard]

#
# From tempest.config
#

# Where the dashboard can be found (string value)
#dashboard_url = http://localhost/

# Login page for the dashboard (string value)
#login_url = http://localhost/auth/login/


[data_processing]

#
# From tempest.config
#

# Catalog type of the data processing service. (string value)
#catalog_type = data_processing

# The endpoint type to use for the data processing service. (string
# value)
# Allowed values: public, admin, internal, publicURL, adminURL, internalURL
#endpoint_type = publicURL


[data_processing-feature-enabled]

#
# From tempest.config
#

# List of enabled data processing plugins (list value)
#plugins = vanilla,hdp


[database]

#
# From tempest.config
#

# Catalog type of the Database service. (string value)
#catalog_type = database

# Valid primary flavor to use in database tests. (string value)
#db_flavor_ref = 1

# Current database version to use in database tests. (string value)
#db_current_version = v1.0


[debug]

#
# From tempest.config
#

# A regex to determine which requests should be traced.
#
# This is a regex to match the caller for rest client requests to be
# able to
# selectively trace calls out of specific classes and methods. It
# largely
# exists for test development, and is not expected to be used in a
# real deploy
# of tempest. This will be matched against the discovered
# ClassName:method
# in the test environment.
#
# Expected values for this field are:
#
#  * ClassName:test_method_name - traces one test_method
#  * ClassName:setUp(Class) - traces specific setup functions
#  * ClassName:tearDown(Class) - traces specific teardown functions
#  * ClassName:_run_cleanups - traces the cleanup functions
#
# If nothing is specified, this feature is not enabled. To trace
# everything
# specify .* as the regex.
#  (string value)
#trace_requests =


[identity]

#
# From tempest.config
#

# Catalog type of the Identity service. (string value)
#catalog_type = identity

# Set to True if using self-signed SSL certificates. (boolean value)
#disable_ssl_certificate_validation = false

# Specify a CA bundle file to use in verifying a TLS (https) server
# certificate. (string value)
#ca_certificates_file = <None>

# Full URI of the OpenStack Identity API (Keystone), v2 (string value)
#uri = <None>

# Full URI of the OpenStack Identity API (Keystone), v3 (string value)
#uri_v3 = <None>

# Identity API version to be used for authentication for API tests.
# (string value)
#auth_version = v2

# The identity region name to use. Also used as the other services'
# region name unless they are set explicitly. If no such region is
# found in the service catalog, the first found one is used. (string
# value)
#region = RegionOne

# The endpoint type to use for the identity service. (string value)
# Allowed values: public, admin, internal, publicURL, adminURL, internalURL
#endpoint_type = publicURL

# Username to use for Nova API requests. (string value)
#username = <None>

# Tenant name to use for Nova API requests. (string value)
#tenant_name = <None>

# Role required to administrate keystone. (string value)
#admin_role = admin

# API key to use when authenticating. (string value)
#password = <None>

# Domain name for authentication (Keystone V3).The same domain applies
# to user and project (string value)
#domain_name = <None>

# Username of alternate user to use for Nova API requests. (string
# value)
#alt_username = <None>

# Alternate user's Tenant name to use for Nova API requests. (string
# value)
#alt_tenant_name = <None>

# API key to use when authenticating as alternate user. (string value)
#alt_password = <None>

# Alternate domain name for authentication (Keystone V3).The same
# domain applies to user and project (string value)
#alt_domain_name = <None>

# Administrative Username to use for Keystone API requests. (string
# value)
#admin_username = <None>

# Administrative Tenant name to use for Keystone API requests. (string
# value)
#admin_tenant_name = <None>

# API key to use when authenticating as admin. (string value)
#admin_password = <None>

# Admin domain name for authentication (Keystone V3).The same domain
# applies to user and project (string value)
#admin_domain_name = <None>

# ID of the default domain (string value)
#default_domain_id = default


[identity-feature-enabled]

#
# From tempest.config
#

# Does the identity service have delegation and impersonation enabled
# (boolean value)
#trust = true

# Is the v2 identity API enabled (boolean value)
#api_v2 = true

# Is the v3 identity API enabled (boolean value)
#api_v3 = true


[image]

#
# From tempest.config
#

# Catalog type of the Image service. (string value)
#catalog_type = image

# The image 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. (string value)
#region =

# The endpoint type to use for the image service. (string value)
# Allowed values: public, admin, internal, publicURL, adminURL, internalURL
#endpoint_type = publicURL

# http accessible image (string value)
#http_image = http://download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-uec.tar.gz

# Timeout in seconds to wait for an image to become available.
# (integer value)
#build_timeout = 300

# Time in seconds between image operation status checks. (integer
# value)
#build_interval = 1


[image-feature-enabled]

#
# From tempest.config
#

# Is the v2 image API enabled (boolean value)
#api_v2 = true

# Is the v1 image API enabled (boolean value)
#api_v1 = true

# Is the deactivate-image feature enabled. The feature has been
# integrated since Kilo. (boolean value)
#deactivate_image = false


[input-scenario]

#
# From tempest.config
#

# Matching images become parameters for scenario tests (string value)
#image_regex = ^cirros-0.3.1-x86_64-uec$

# Matching flavors become parameters for scenario tests (string value)
#flavor_regex = ^m1.nano$

# SSH verification in tests is skippedfor matching images (string
# value)
#non_ssh_image_regex = ^.*[Ww]in.*$

# List of user mapped to regex to matching image names. (string value)
#ssh_user_regex = [["^.*[Cc]irros.*$", "cirros"]]


[messaging]

#
# From tempest.config
#

# Catalog type of the Messaging service. (string value)
#catalog_type = messaging

# The maximum number of queue records per page when listing queues
# (integer value)
#max_queues_per_page = 20

# The maximum metadata size for a queue (integer value)
#max_queue_metadata = 65536

# The maximum number of queue message per page when listing (or)
# posting messages (integer value)
#max_messages_per_page = 20

# The maximum size of a message body (integer value)
#max_message_size = 262144

# The maximum number of messages per claim (integer value)
#max_messages_per_claim = 20

# The maximum ttl for a message (integer value)
#max_message_ttl = 1209600

# The maximum ttl for a claim (integer value)
#max_claim_ttl = 43200

# The maximum grace period for a claim (integer value)
#max_claim_grace = 43200


[negative]

#
# From tempest.config
#

# Test generator class for all negative tests (string value)
#test_generator = tempest.common.generator.negative_generator.NegativeTestGenerator


[network]

#
# From tempest.config
#

# Catalog type of the Neutron service. (string value)
#catalog_type = network

# The network 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. (string value)
#region =

# The endpoint type to use for the network service. (string value)
# Allowed values: public, admin, internal, publicURL, adminURL, internalURL
#endpoint_type = publicURL

# The cidr block to allocate tenant ipv4 subnets from (string value)
#tenant_network_cidr = 10.100.0.0/16

# The mask bits for tenant ipv4 subnets (integer value)
#tenant_network_mask_bits = 28

# The cidr block to allocate tenant ipv6 subnets from (string value)
#tenant_network_v6_cidr = 2003::/48

# The mask bits for tenant ipv6 subnets (integer value)
#tenant_network_v6_mask_bits = 64

# Whether tenant networks can be reached directly from the test
# client. This must be set to True when the 'fixed' ssh_connect_method
# is selected. (boolean value)
#tenant_networks_reachable = false

# Id of the public network that provides external connectivity (string
# value)
#public_network_id =

# Default floating network name. Used to allocate floating IPs when
# neutron is enabled. (string value)
#floating_network_name = <None>

# Id of the public router that provides external connectivity. This
# should only be used when Neutron's 'allow_overlapping_ips' is set to
# 'False' in neutron.conf. usually not needed past 'Grizzly' release
# (string value)
#public_router_id =

# Timeout in seconds to wait for network operation to complete.
# (integer value)
#build_timeout = 300

# Time in seconds between network operation status checks. (integer
# value)
#build_interval = 1

# List of dns servers which should be used for subnet creation (list
# value)
#dns_servers = 8.8.8.8,8.8.4.4

# vnic_type to use when Launching instances with pre-configured ports.
# Supported ports are: ['normal','direct','macvtap'] (string value)
# Allowed values: <None>, normal, direct, macvtap
#port_vnic_type = <None>


[network-feature-enabled]

#
# From tempest.config
#

# Allow the execution of IPv6 tests (boolean value)
#ipv6 = true

# A list of enabled network extensions with a special entry all which
# indicates every extension is enabled. Empty list indicates all
# extensions are disabled. To get the list of extensions run: 'neutron
# ext-list' (list value)
#api_extensions = all

# Allow the execution of IPv6 subnet tests that use the extended IPv6
# attributes ipv6_ra_mode and ipv6_address_mode (boolean value)
#ipv6_subnet_attributes = false

# Does the test environment support changing port admin state (boolean
# value)
#port_admin_state_change = true


[object-storage]

#
# From tempest.config
#

# Catalog type of the Object-Storage service. (string value)
#catalog_type = object-store

# The object-storage 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. (string value)
#region =

# The endpoint type to use for the object-store service. (string
# value)
# Allowed values: public, admin, internal, publicURL, adminURL, internalURL
#endpoint_type = publicURL

# Number of seconds to time on waiting for a container to container
# synchronization complete. (integer value)
#container_sync_timeout = 600

# Number of seconds to wait while looping to check the status of a
# container to container synchronization (integer value)
#container_sync_interval = 5

# Role to add to users created for swift tests to enable creating
# containers (string value)
#operator_role = Member

# User role that has reseller admin (string value)
#reseller_admin_role = ResellerAdmin

# Name of sync realm. A sync realm is a set of clusters that have
# agreed to allow container syncing with each other. Set the same
# realm name as Swift's container-sync-realms.conf (string value)
#realm_name = realm1

# One name of cluster which is set in the realm whose name is set in
# 'realm_name' item in this file. Set the same cluster name as Swift's
# container-sync-realms.conf (string value)
#cluster_name = name1


[object-storage-feature-enabled]

#
# From tempest.config
#

# A list of the enabled optional discoverable apis. A single entry,
# all, indicates that all of these features are expected to be enabled
# (list value)
#discoverable_apis = all

# Execute (old style) container-sync tests (boolean value)
#container_sync = true

# Execute object-versioning tests (boolean value)
#object_versioning = true

# Execute discoverability tests (boolean value)
#discoverability = true


[orchestration]

#
# From tempest.config
#

# Catalog type of the Orchestration service. (string value)
#catalog_type = orchestration

# The orchestration 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. (string value)
#region =

# The endpoint type to use for the orchestration service. (string
# value)
# Allowed values: public, admin, internal, publicURL, adminURL, internalURL
#endpoint_type = publicURL

# Role required for users to be able to manage stacks (string value)
#stack_owner_role = heat_stack_owner

# Time in seconds between build status checks. (integer value)
#build_interval = 1

# Timeout in seconds to wait for a stack to build. (integer value)
#build_timeout = 1200

# Instance type for tests. Needs to be big enough for a full OS plus
# the test workload (string value)
#instance_type = m1.micro

# Name of existing keypair to launch servers with. (string value)
#keypair_name = <None>

# Value must match heat configuration of the same name. (integer
# value)
#max_template_size = 524288

# Value must match heat configuration of the same name. (integer
# value)
#max_resources_per_stack = 1000


[oslo_concurrency]

#
# From oslo.concurrency
#

# Enables or disables inter-process locks. (boolean value)
# Deprecated group/name - [DEFAULT]/disable_process_locking
#disable_process_locking = false

# Directory to use for lock files.  For security, the specified
# directory should only be writable by the user running the processes
# that need locking. Defaults to environment variable OSLO_LOCK_PATH.
# If external locks are used, a lock path must be set. (string value)
# Deprecated group/name - [DEFAULT]/lock_path
#lock_path = <None>


[scenario]

#
# From tempest.config
#

# Directory containing image files (string value)
#img_dir = /opt/stack/new/devstack/files/images/cirros-0.3.1-x86_64-uec

# Image file name (string value)
# Deprecated group/name - [DEFAULT]/qcow2_img_file
#img_file = cirros-0.3.1-x86_64-disk.img

# Image disk format (string value)
#img_disk_format = qcow2

# Image container format (string value)
#img_container_format = bare

# Glance image properties. Use for custom images which require them
# (dict value)
#img_properties = <None>

# AMI image file name (string value)
#ami_img_file = cirros-0.3.1-x86_64-blank.img

# ARI image file name (string value)
#ari_img_file = cirros-0.3.1-x86_64-initrd

# AKI image file name (string value)
#aki_img_file = cirros-0.3.1-x86_64-vmlinuz

# ssh username for the image file (string value)
#ssh_user = cirros

# specifies how many resources to request at once. Used for large
# operations testing. (integer value)
#large_ops_number = 0

# DHCP client used by images to renew DCHP lease. If left empty,
# update operation will be skipped. Supported clients: "udhcpc",
# "dhclient" (string value)
# Allowed values: udhcpc, dhclient
#dhcp_client = udhcpc


[service_available]

#
# From tempest.config
#

# Whether or not cinder is expected to be available (boolean value)
#cinder = true

# Whether or not neutron is expected to be available (boolean value)
#neutron = false

# Whether or not glance is expected to be available (boolean value)
#glance = true

# Whether or not swift is expected to be available (boolean value)
#swift = true

# Whether or not nova is expected to be available (boolean value)
#nova = true

# Whether or not Heat is expected to be available (boolean value)
#heat = false

# Whether or not Ceilometer is expected to be available (boolean
# value)
#ceilometer = true

# Whether or not Horizon is expected to be available (boolean value)
#horizon = true

# Whether or not Sahara is expected to be available (boolean value)
#sahara = false

# Whether or not Ironic is expected to be available (boolean value)
#ironic = false

# Whether or not Trove is expected to be available (boolean value)
#trove = false

# Whether or not Zaqar is expected to be available (boolean value)
#zaqar = false


[stress]

#
# From tempest.config
#

# Directory containing log files on the compute nodes (string value)
#nova_logdir = <None>

# Maximum number of instances to create during test. (integer value)
#max_instances = 16

# Controller host. (string value)
#controller = <None>

# Controller host. (string value)
#target_controller = <None>

# ssh user. (string value)
#target_ssh_user = <None>

# Path to private key. (string value)
#target_private_key_path = <None>

# regexp for list of log files. (string value)
#target_logfiles = <None>

# time (in seconds) between log file error checks. (integer value)
#log_check_interval = 60

# The number of threads created while stress test. (integer value)
#default_thread_number_per_action = 4

# Prevent the cleaning (tearDownClass()) between each stress test run
# if an exception occurs during this run. (boolean value)
#leave_dirty_stack = false

# Allows a full cleaning process after a stress test. Caution : this
# cleanup will remove every objects of every tenant. (boolean value)
#full_clean_stack = false


[telemetry]

#
# From tempest.config
#

# Catalog type of the Telemetry service. (string value)
#catalog_type = metering

# The endpoint type to use for the telemetry service. (string value)
# Allowed values: public, admin, internal, publicURL, adminURL, internalURL
#endpoint_type = publicURL

# This variable is used as flag to enable notification tests (boolean
# value)
#too_slow_to_test = true


[telemetry-feature-enabled]

#
# From tempest.config
#

# Runs Ceilometer event-related tests (boolean value)
#events = false


[validation]

#
# From tempest.config
#

# Enable ssh on created servers and creation of additional validation
# resources to enable remote access (boolean value)
# Deprecated group/name - [compute]/run_ssh
#run_validation = false

# Default IP type used for validation: -fixed: uses the first IP
# belonging to the fixed network -floating: creates and uses a
# floating IP (string value)
# Allowed values: fixed, floating
#connect_method = floating

# Default authentication method to the instance. Only ssh via keypair
# is supported for now. Additional methods will be handled in a
# separate spec. (string value)
# Allowed values: keypair
#auth_method = keypair

# Default IP version for ssh connections. (integer value)
# Deprecated group/name - [compute]/ip_version_for_ssh
#ip_version_for_ssh = 4

# Timeout in seconds to wait for ping to succeed. (integer value)
#ping_timeout = 120

# Timeout in seconds to wait for the TCP connection to be successful.
# (integer value)
# Deprecated group/name - [compute]/ssh_channel_timeout
#connect_timeout = 60

# Timeout in seconds to wait for the ssh banner. (integer value)
# Deprecated group/name - [compute]/ssh_timeout
#ssh_timeout = 300


[volume]

#
# From tempest.config
#

# Time in seconds between volume availability checks. (integer value)
#build_interval = 1

# Timeout in seconds to wait for a volume to become available.
# (integer value)
#build_timeout = 300

# Catalog type of the Volume Service (string value)
#catalog_type = volume

# The volume 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. (string value)
#region =

# The endpoint type to use for the volume service. (string value)
# Allowed values: public, admin, internal, publicURL, adminURL, internalURL
#endpoint_type = publicURL

# Name of the backend1 (must be declared in cinder.conf) (string
# value)
#backend1_name = BACKEND_1

# Name of the backend2 (must be declared in cinder.conf) (string
# value)
#backend2_name = BACKEND_2

# Backend protocol to target when creating volume types (string value)
#storage_protocol = iSCSI

# Backend vendor to target when creating volume types (string value)
#vendor_name = Open Source

# Disk format to use when copying a volume to image (string value)
#disk_format = raw

# Default size in GB for volumes created by volumes tests (integer
# value)
#volume_size = 1


[volume-feature-enabled]

#
# From tempest.config
#

# Runs Cinder multi-backend test (requires 2 backends) (boolean value)
#multi_backend = false

# Runs Cinder volumes backup test (boolean value)
#backup = true

# Runs Cinder volume snapshot test (boolean value)
#snapshot = true

# A list of enabled volume extensions with a special entry all which
# indicates every extension is enabled. Empty list indicates all
# extensions are disabled (list value)
#api_extensions = all

# Is the v1 volume API enabled (boolean value)
#api_v1 = true

# Is the v2 volume API enabled (boolean value)
#api_v2 = true

# Update bootable status of a volume Not implemented on icehouse
# (boolean value)
#bootable = false
