[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.config
#

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

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

# Whether the tempest run location has access to the *-manage
# commands. In a pure blackbox environment it will not.
# (boolean value)
#has_manage=true

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

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

# The endpoint type to use for the compute service. (string
# value)
#endpoint_type=publicURL

# 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 compute extensions with a special entry
# all which indicates every extension is enabled (list value)
#api_extensions=all

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

# 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)
#endpoint_type=publicURL

# 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


[identity-feature-enabled]

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

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

# The endpoint type to use for the image service. (string
# value)
#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


[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.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.*$", "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 endpoint type to use for the network service. (string
# value)
#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

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

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

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

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

# The endpoint type to use for the object-store service.
# (string value)
#endpoint_type=publicURL

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

# The endpoint type to use for the orchestration service.
# (string value)
#endpoint_type=publicURL

# 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

# QCOW2 image file name (string value)
#qcow2_img_file=cirros-0.3.1-x86_64-disk.img

# 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

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

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

# The endpoint type to use for the volume service. (string
# value)
#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


[volume-feature-enabled]

#
# Options defined in tempest.config
#

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

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

# A list of enabled volume extensions with a special entry all
# which indicates every extension is enabled (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


