[DEFAULT]

#
# Options defined in tempest.openstack.common.lockutils
#

# Whether to disable inter-process locks (boolean value)
#disable_process_locking=false

# Directory to use for lock files. (string value)
#lock_path=<None>


#
# Options defined in tempest.openstack.common.log
#

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

# Print more verbose output (set logging level to INFO instead
# of default WARNING level). (boolean value)
#verbose=false

# 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 TRACE %(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,iso8601=WARN

# publish error events (boolean value)
#publish_errors=false

# make deprecations fatal (boolean value)
#fatal_deprecations=false

# If an instance is passed with the log message, format it
# like this (string value)
#instance_format="[instance: %(uuid)s] "

# If an instance UUID is passed with the log message, format
# it like this (string value)
#instance_uuid_format="[instance: %(uuid)s] "

# The name of logging configuration file. It does not disable
# existing loggers, but just appends specified logging
# configuration to any other existing logging options. Please
# see the Python logging module documentation for details on
# logging configuration files. (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. (boolean value)
#use_syslog=false

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


[baremetal]

#
# Options defined in tempest.config
#

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


[boto]

#
# Options defined in 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>

# 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


[cli]

#
# Options defined in tempest.cli
#

# enable cli tests (boolean value)
#enabled=true

# directory where python client binaries are located (string
# value)
#cli_dir=/usr/local/bin

# Number of seconds to wait on a CLI timeout (integer value)
#timeout=15


[compute]

#
# Options defined in tempest.config
#

# Allows test cases to create/destroy tenants and users. This
# option enables isolated test cases and better parallel
# execution, but also requires that OpenStack Identity API
# admin credentials are known. (boolean value)
#allow_tenant_isolation=false

# Valid secondary image reference to be used in tests. (string
# value)
#image_ref={$IMAGE_ID}

# Valid secondary image reference to be used in tests. (string
# value)
#image_ref_alt={$IMAGE_ID_ALT}

# 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

# Password used to authenticate to an instance using the
# alternate image. (string value)
#image_alt_ssh_password=password

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

# Timeout in seconds to wait for an instance to build.
# (integer value)
#build_timeout=300

# Should the tests ssh to instances? (boolean value)
#run_ssh=false

# 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=60

# Timeout in seconds to wait for authentication to succeed.
# (integer value)
#ssh_timeout=300

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

# Timeout in seconds to wait for output from ssh channel.
# (integer value)
#ssh_channel_timeout=60

# Visible fixed network name  (string value)
#fixed_network_name=private

# Network used for SSH connections. (string value)
#network_for_ssh=public

# IP version used for SSH connections. (integer value)
#ip_version_for_ssh=4

# Dose the SSH uses Floating IP? (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=

# Catalog type of the Compute v3 service. (string value)
#catalog_v3_type=computev3

# Path to a private key file for SSH access to remote hosts
# (string value)
#path_to_private_key=<None>

# 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

# Allows test cases to create/destroy tenants and users. This
# option enables isolated test cases and better parallel
# execution, but also requires that OpenStack Identity API
# admin credentials are known. (boolean value)
#allow_tenant_isolation=false


[compute-admin]

#
# Options defined in tempest.config
#

# Administrative Username to use for Nova API requests.
# (string value)
#username=admin

# Administrative Tenant name to use for Nova API requests.
# (string value)
#tenant_name=admin

# API key to use when authenticating as admin. (string value)
#password=pass


[compute-feature-enabled]

#
# Options defined in tempest.config
#

# If false, skip all nova v3 tests. (boolean value)
#api_v3=true

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

# A list of enabled v3 extensions with a special entry all
# which indicates every extension is enabled (list value)
#api_v3_extensions=all

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

# Does the test environment support snapshots? (boolean value)
#create_image=false

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

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

# 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 (boolean value)
#block_migrate_cinder_iscsi=false


[dashboard]

#
# Options defined in 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]

#
# Options defined in tempest.config
#

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


[debug]

#
# Options defined in tempest.config
#

# Enable diagnostic commands (boolean value)
#enable=true


[identity]

#
# Options defined in 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

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

# 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

# Username to use for Nova API requests. (string value)
#username=demo

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

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

# API key to use when authenticating. (string value)
#password=pass

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

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

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

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


[image]

#
# Options defined in 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=

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


[image-feature-enabled]

#
# Options defined in tempest.config
#

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

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


[input-scenario]

#
# Options defined in 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.(micro|nano|tiny)$

# 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.*$", "root"]]


[network]

#
# Options defined in 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 cidr block to allocate tenant networks from (string
# value)
#tenant_network_cidr=10.100.0.0/16

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

# Whether tenant network connectivity should be evaluated
# directly (boolean value)
#tenant_networks_reachable=false

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

# Id of the public router that provides external connectivity
# (string value)
#public_router_id=


[network-feature-enabled]

#
# Options defined in tempest.config
#

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

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

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


[object-storage]

#
# Options defined in 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=

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

# 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


[object-storage-feature-enabled]

#
# Options defined in 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


[orchestration]

#
# Options defined in 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=

# 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=300

# 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 heat-cfntools enabled image to use when launching
# test instances. (string value)
#image_ref=<None>

# 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


[scenario]

#
# Options defined in tempest.config
#

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

# 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


[service_available]

#
# Options defined in 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 Savanna is expected to be available (boolean
# value)
#savanna=false

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


[stress]

#
# Options defined in 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


[telemetry]

#
# Options defined in tempest.config
#

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


[volume]

#
# Options defined in tempest.config
#

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

# Timeout in seconds to wait for a volume to becomeavailable.
# (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=

# 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


[volume-feature-enabled]

#
# Options defined in tempest.config
#

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

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


