[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


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


[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


