[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,oslo.messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN,urllib3.connectionpool=WARN

# Enables or disables publication of error events. (boolean
# value)
#publish_errors=false

# Enables or disables fatal status of deprecations. (boolean
# value)
#fatal_deprecations=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] "

# 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
# during I, and will change in J 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 I, and will be removed in J. (boolean
# value)
#use_syslog_rfc_format=false

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


[auth]

#
# Options defined in tempest.config
#

# Path to the yaml file that contains the list of credentials
# to use for running tests (string value)
#test_accounts_file=etc/accounts.yaml


[baremetal]

#
# Options defined in 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)
#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. (integer value)
#unprovision_timeout=60


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

# 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


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

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

# 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

# Auth method used for authenticate to the instance. Valid
# choices are: keypair, configured, adminpass. keypair: start
# the servers with an 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=fixed

# 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

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

# Unallocated floating IP range, which will be used to test
# the floating IP bulk feature for CRUD operation. (string
# value)
#floating_ip_range=10.0.0.0/29

# 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

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


[compute-admin]

#
# Options defined in tempest.config
#

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

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

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

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


[compute-feature-enabled]

#
# Options defined in tempest.config
#

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

# If false skip all v2 api tests with xml (boolean value)
#xml_api_v2=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. Each
# extension should be specified with alias name. Empty list
# indicates all extensions are disabled (list value)
#api_extensions=all

# A list of enabled v3 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_v3_extensions=all

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

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

# 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


[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

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


[database]

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

#
# Options defined in tempest.config
#

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

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

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


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


[negative]

#
# Options defined in tempest.config
#

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


[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

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

# 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 whichs hould be used for subnet creation
# (list value)
#dns_servers=8.8.8.8,8.8.4.4


[network-feature-enabled]

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


[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

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


[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

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

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


[queuing]

#
# Options defined in tempest.config
#

# Catalog type of the Queuing service. (string value)
#catalog_type=queuing

# 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


[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 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 Marconi is expected to be available (boolean
# value)
#marconi=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

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

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


[volume]

#
# Options defined in tempest.config
#

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

# 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

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


[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

# 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


