{%- from "cinder/map.jinja" import volume with context %}
[DEFAULT]

#
# From cinder
#

rootwrap_config = /etc/cinder/rootwrap.conf
api_paste_confg = /etc/cinder/api-paste.ini

{%- set _data = volume.message_queue %}
{%- include "oslo_templates/files/queens/oslo/messaging/_default.conf" %}

{%- if volume.logging is defined %}
{%- set _data = volume.logging %}
{%- include "oslo_templates/files/queens/oslo/_log.conf" %}
{%- endif %}

# The maximum number of items that a collection resource returns in a single
# response (integer value)
#osapi_max_limit = 1000

# Json file indicating user visible filter parameters for list queries. (string
# value)
# Deprecated group/name - [DEFAULT]/query_volume_filters
#resource_query_filters_file = /etc/cinder/resource_filters.json

# DEPRECATED: Volume filter options which non-admin user could use to query
# volumes. Default values are: ['name', 'status', 'metadata',
# 'availability_zone' ,'bootable', 'group_id'] (list value)
# This option is deprecated for removal.
# Its value may be silently ignored in the future.
#query_volume_filters = name,status,metadata,availability_zone,bootable,group_id
{%- if volume.query_volume_filters is defined %}
query_volume_filters = {{ volume.query_volume_filters|join(",") }}
{%- endif %}

# DEPRECATED: Allow the ability to modify the extra-spec settings of an in-use
# volume-type. (boolean value)
# This option is deprecated for removal.
# Its value may be silently ignored in the future.
#allow_inuse_volume_type_modification = false

# Treat X-Forwarded-For as the canonical remote address. Only enable this if
# you have a sanitizing proxy. (boolean value)
#use_forwarded_for = false

# Public url to use for versions endpoint. The default is None, which will use
# the request's host_url attribute to populate the URL base. If Cinder is
# operating behind a proxy, you will want to change this to represent the
# proxy's URL. (string value)
#public_endpoint = <None>

# Backup services use same backend. (boolean value)
#backup_use_same_host = false

# Compression algorithm (None to disable) (string value)
# Possible values:
# none - <No description provided>
# off - <No description provided>
# no - <No description provided>
# zlib - <No description provided>
# gzip - <No description provided>
# bz2 - <No description provided>
# bzip2 - <No description provided>
#backup_compression_algorithm = zlib

# Backup metadata version to be used when backing up volume metadata. If this
# number is bumped, make sure the service doing the restore supports the new
# version. (integer value)
#backup_metadata_version = 2

# The number of chunks or objects, for which one Ceilometer notification will
# be sent (integer value)
#backup_object_number_per_notification = 10

# Interval, in seconds, between two progress notifications reporting the backup
# status (integer value)
#backup_timer_interval = 120

# Ceph configuration file to use. (string value)
#backup_ceph_conf = /etc/ceph/ceph.conf

# The Ceph user to connect with. Default here is to use the same user as for
# Cinder volumes. If not using cephx this should be set to None. (string value)
#backup_ceph_user = cinder

# The chunk size, in bytes, that a backup is broken into before transfer to the
# Ceph object store. (integer value)
#backup_ceph_chunk_size = 134217728

# The Ceph pool where volume backups are stored. (string value)
#backup_ceph_pool = backups

# RBD stripe unit to use when creating a backup image. (integer value)
#backup_ceph_stripe_unit = 0

# RBD stripe count to use when creating a backup image. (integer value)
#backup_ceph_stripe_count = 0

# If True, apply JOURNALING and EXCLUSIVE_LOCK feature bits to the backup RBD
# objects to allow mirroring (boolean value)
#backup_ceph_image_journals = false

# If True, always discard excess bytes when restoring volumes i.e. pad with
# zeroes. (boolean value)
#restore_discard_excess_bytes = true

# The GCS bucket to use. (string value)
#backup_gcs_bucket = <None>

# The size in bytes of GCS backup objects. (integer value)
#backup_gcs_object_size = 52428800

# The size in bytes that changes are tracked for incremental backups.
# backup_gcs_object_size has to be multiple of backup_gcs_block_size. (integer
# value)
#backup_gcs_block_size = 32768

# GCS object will be downloaded in chunks of bytes. (integer value)
#backup_gcs_reader_chunk_size = 2097152

# GCS object will be uploaded in chunks of bytes. Pass in a value of -1 if the
# file is to be uploaded as a single chunk. (integer value)
#backup_gcs_writer_chunk_size = 2097152

# Number of times to retry. (integer value)
#backup_gcs_num_retries = 3

# List of GCS error codes. (list value)
#backup_gcs_retry_error_codes = 429

# Location of GCS bucket. (string value)
#backup_gcs_bucket_location = US

# Storage class of GCS bucket. (string value)
#backup_gcs_storage_class = NEARLINE

# Absolute path of GCS service account credential file. (string value)
#backup_gcs_credential_file = <None>

# Owner project id for GCS bucket. (string value)
#backup_gcs_project_id = <None>

# Http user-agent string for gcs api. (string value)
#backup_gcs_user_agent = gcscinder

# Enable or Disable the timer to send the periodic progress notifications to
# Ceilometer when backing up the volume to the GCS backend storage. The default
# value is True to enable the timer. (boolean value)
#backup_gcs_enable_progress_timer = true

# URL for http proxy access. (uri value)
#backup_gcs_proxy_url = <None>

# Base dir containing mount point for gluster share. (string value)
#glusterfs_backup_mount_point = $state_path/backup_mount

# GlusterFS share in <hostname|ipv4addr|ipv6addr>:<gluster_vol_name> format.
# Eg: 1.2.3.4:backup_vol (string value)
#glusterfs_backup_share = <None>

# Base dir containing mount point for NFS share. (string value)
#backup_mount_point_base = $state_path/backup_mount

# NFS share in hostname:path, ipv4addr:path, or "[ipv6addr]:path" format.
# (string value)
#backup_share = <None>

# Mount options passed to the NFS client. See NFS man page for details. (string
# value)
#backup_mount_options = <None>

# The maximum size in bytes of the files used to hold backups. If the volume
# being backed up exceeds this size, then it will be backed up into multiple
# files.backup_file_size must be a multiple of backup_sha_block_size_bytes.
# (integer value)
#backup_file_size = 1999994880

# The size in bytes that changes are tracked for incremental backups.
# backup_file_size has to be multiple of backup_sha_block_size_bytes. (integer
# value)
#backup_sha_block_size_bytes = 32768

# Enable or Disable the timer to send the periodic progress notifications to
# Ceilometer when backing up the volume to the backend storage. The default
# value is True to enable the timer. (boolean value)
#backup_enable_progress_timer = true

# Path specifying where to store backups. (string value)
#backup_posix_path = $state_path/backup

# Custom directory to use for backups. (string value)
#backup_container = <None>

# The URL of the Swift endpoint (uri value)
#backup_swift_url = <None>

# The URL of the Keystone endpoint (uri value)
#backup_swift_auth_url = <None>

# Info to match when looking for swift in the service catalog. Format is:
# separated values of the form: <service_type>:<service_name>:<endpoint_type> -
# Only used if backup_swift_url is unset (string value)
#swift_catalog_info = object-store:swift:publicURL

# Info to match when looking for keystone in the service catalog. Format is:
# separated values of the form: <service_type>:<service_name>:<endpoint_type> -
# Only used if backup_swift_auth_url is unset (string value)
#keystone_catalog_info = identity:Identity Service:publicURL

# Swift authentication mechanism (per_user or single_user). (string value)
# Possible values:
# per_user - <No description provided>
# single_user - <No description provided>
#backup_swift_auth = per_user

# Swift authentication version. Specify "1" for auth 1.0, or "2" for auth 2.0
# or "3" for auth 3.0 (string value)
#backup_swift_auth_version = 1

# Swift tenant/account name. Required when connecting to an auth 2.0 system
# (string value)
#backup_swift_tenant = <None>

# Swift user domain name. Required when connecting to an auth 3.0 system
# (string value)
#backup_swift_user_domain = <None>

# Swift project domain name. Required when connecting to an auth 3.0 system
# (string value)
#backup_swift_project_domain = <None>

# Swift project/account name. Required when connecting to an auth 3.0 system
# (string value)
#backup_swift_project = <None>

# Swift user name (string value)
#backup_swift_user = <None>

# Swift key for authentication (string value)
#backup_swift_key = <None>

# The default Swift container to use (string value)
#backup_swift_container = volumebackups

# The size in bytes of Swift backup objects (integer value)
#backup_swift_object_size = 52428800

# The size in bytes that changes are tracked for incremental backups.
# backup_swift_object_size has to be multiple of backup_swift_block_size.
# (integer value)
#backup_swift_block_size = 32768

# The number of retries to make for Swift operations (integer value)
#backup_swift_retry_attempts = 3

# The backoff time in seconds between Swift retries (integer value)
#backup_swift_retry_backoff = 2

# Enable or Disable the timer to send the periodic progress notifications to
# Ceilometer when backing up the volume to the Swift backend storage. The
# default value is True to enable the timer. (boolean value)
#backup_swift_enable_progress_timer = true

# Location of the CA certificate file to use for swift client requests. (string
# value)
#backup_swift_ca_cert_file = <None>

# Bypass verification of server certificate when making SSL connection to
# Swift. (boolean value)
#backup_swift_auth_insecure = false

# Volume prefix for the backup id when backing up to TSM (string value)
#backup_tsm_volume_prefix = backup

# TSM password for the running username (string value)
#backup_tsm_password = password

# Enable or Disable compression for backups (boolean value)
#backup_tsm_compression = true

# Driver to use for backups. (string value)
#backup_driver = cinder.backup.drivers.swift.SwiftBackupDriver

# Offload pending backup delete during backup service startup. If false, the
# backup service will remain down until all pending backups are deleted.
# (boolean value)
#backup_service_inithost_offload = true

# Size of the native threads pool for the backups.  Most backup drivers rely
# heavily on this, it can be decreased for specific drivers that don't.
# (integer value)
# Minimum value: 20
#backup_native_threads_pool_size = 60

# Number of backup processes to launch. Improves performance with concurrent
# backups. (integer value)
# Minimum value: 1
# Maximum value: 4
#backup_workers = 1

# Name of this cluster. Used to group volume hosts that share the same backend
# configurations to work in HA Active-Active mode.  Active-Active is not yet
# supported. (string value)
#cluster = <None>

# Top-level directory for maintaining cinder's state (string value)
state_path = /var/lib/cinder

# IP address of this host (host address value)
#my_ip = <HOST_IP_ADDRESS>
{%- if volume.my_ip is defined %}
my_ip = {{ volume.my_ip }}
{%- endif %}

# A list of the URLs of glance API servers available to cinder
# ([http[s]://][hostname|ip]:port). If protocol is not specified it defaults to
# http. (list value)
glance_api_servers = {{ volume.glance.get('protocol','http') }}://{{ volume.glance.host }}:{{ volume.glance.port }}

# Number retries when downloading an image from glance (integer value)
# Minimum value: 0
glance_num_retries = 0

# Allow to perform insecure SSL (https) requests to glance (https will be used
# but cert validation will not be performed). (boolean value)
#glance_api_insecure = false

# Enables or disables negotiation of SSL layer compression. In some cases
# disabling compression can improve data throughput, such as when high network
# bandwidth is available and you use compressed image formats like qcow2.
# (boolean value)
#glance_api_ssl_compression = false

# Location of ca certificates file to use for glance client requests. (string
# value)
{%- if volume.glance.get('protocol','http') == 'https' %}
glance_ca_certificates_file = {{ volume.glance.get('cacert_file', volume.cacert_file) }}
{%- endif %}

# http/https timeout value for glance operations. If no value (None) is
# supplied here, the glanceclient default value is used. (integer value)
#glance_request_timeout = <None>

# DEPRECATED: Deploy v2 of the Cinder API. (boolean value)
# This option is deprecated for removal.
# Its value may be silently ignored in the future.
#enable_v2_api = true

# Deploy v3 of the Cinder API. (boolean value)
enable_v3_api = true

# Enables or disables rate limit of the API. (boolean value)
#api_rate_limit = true

# Specify list of extensions to load when using osapi_volume_extension option
# with cinder.api.contrib.select_extensions (list value)
#osapi_volume_ext_list =

# osapi volume extension to load (multi valued)
osapi_volume_extension = cinder.api.contrib.standard_extensions

# Full class name for the Manager for volume (string value)
#volume_manager = cinder.volume.manager.VolumeManager

# Full class name for the Manager for volume backup (string value)
#backup_manager = cinder.backup.manager.BackupManager

# Full class name for the Manager for scheduler (string value)
#scheduler_manager = cinder.scheduler.manager.SchedulerManager

# Name of this node.  This can be an opaque identifier. It is not necessarily a
# host name, FQDN, or IP address. (host address value)
#host = localhost

# Availability zone of this node. Can be overridden per volume backend with the
# option "backend_availability_zone". (string value)
#storage_availability_zone = nova
{%- if volume.storage_availability_zone is defined %}
storage_availability_zone={{volume.storage_availability_zone}}
{%- endif %}

# Default availability zone for new volumes. If not set, the
# storage_availability_zone option value is used as the default for new
# volumes. (string value)
#default_availability_zone = <None>
{%- if volume.default_availability_zone is defined %}
default_availability_zone={{volume.default_availability_zone}}
{%- endif %}

# If the requested Cinder availability zone is unavailable, fall back to the
# value of default_availability_zone, then storage_availability_zone, instead
# of failing. (boolean value)
allow_availability_zone_fallback = {{ volume.get('availability_zone_fallback', True) }}

# Default volume type to use (string value)
#default_volume_type = <None>

# Default group type to use (string value)
#default_group_type = <None>

# Time period for which to generate volume usages. The options are hour, day,
# month, or year. (string value)
#volume_usage_audit_period = month

# Path to the rootwrap configuration file to use for running commands as root
# (string value)
#rootwrap_config = /etc/cinder/rootwrap.conf

# Enable monkey patching (boolean value)
#monkey_patch = false

# List of modules/decorators to monkey patch (list value)
#monkey_patch_modules =

# Maximum time since last check-in for a service to be considered up (integer
# value)
#service_down_time = 60

# The full class name of the volume API class to use (string value)
#volume_api_class = cinder.volume.api.API

# The full class name of the volume backup API class (string value)
#backup_api_class = cinder.backup.api.API

# The strategy to use for auth. Supports noauth or keystone. (string value)
# Possible values:
# noauth - <No description provided>
# keystone - <No description provided>
auth_strategy = keystone

# A list of backend names to use. These backend names should be backed by a
# unique [CONFIG] group with its options (list value)
#enabled_backends = <None>
{%- if volume.backend is defined %}
default_volume_type={{ volume.default_volume_type }}

enabled_backends={% for backend_name, backend in volume.get('backend', {}).items() %}{{ backend_name }}{% if not loop.last %},{% endif %}{% endfor %}
{%- endif %}


# Whether snapshots count against gigabyte quota (boolean value)
#no_snapshot_gb_quota = false

# The full class name of the volume transfer API class (string value)
#transfer_api_class = cinder.transfer.api.API

# The full class name of the consistencygroup API class (string value)
#consistencygroup_api_class = cinder.consistencygroup.api.API

# The full class name of the group API class (string value)
#group_api_class = cinder.group.api.API

# The full class name of the compute API class to use (string value)
#compute_api_class = cinder.compute.nova.API

# ID of the project which will be used as the Cinder internal tenant. (string
# value)
#cinder_internal_tenant_project_id = <None>

# ID of the user to be used in volume operations as the Cinder internal tenant.
# (string value)
#cinder_internal_tenant_user_id = <None>

# Services to be added to the available pool on create (boolean value)
#enable_new_services = true

# Template string to be used to generate volume names (string value)
volume_name_template = volume-%s

# Template string to be used to generate snapshot names (string value)
#snapshot_name_template = snapshot-%s

# Template string to be used to generate backup names (string value)
#backup_name_template = backup-%s

# Driver to use for database access (string value)
#db_driver = cinder.db

# A list of url schemes that can be downloaded directly via the direct_url.
# Currently supported schemes: [file, cinder]. (list value)
#allowed_direct_url_schemes =

# Info to match when looking for glance in the service catalog. Format is:
# separated values of the form: <service_type>:<service_name>:<endpoint_type> -
# Only used if glance_api_servers are not provided. (string value)
#glance_catalog_info = image:glance:publicURL

# Default core properties of image (list value)
#glance_core_properties = checksum,container_format,disk_format,image_name,image_id,min_disk,min_ram,name,size

# Directory used for temporary storage during image conversion (string value)
#image_conversion_dir = $state_path/conversion

# message minimum life in seconds. (integer value)
#message_ttl = 2592000

# interval between periodic task runs to clean expired messages in seconds.
# (integer value)
#message_reap_interval = 86400

# Number of volumes allowed per project (integer value)
#quota_volumes = 10

# Number of volume snapshots allowed per project (integer value)
#quota_snapshots = 10

# Number of consistencygroups allowed per project (integer value)
#quota_consistencygroups = 10

# Number of groups allowed per project (integer value)
#quota_groups = 10

# Total amount of storage, in gigabytes, allowed for volumes and snapshots per
# project (integer value)
#quota_gigabytes = 1000

# Number of volume backups allowed per project (integer value)
#quota_backups = 10

# Total amount of storage, in gigabytes, allowed for backups per project
# (integer value)
#quota_backup_gigabytes = 1000

# Number of seconds until a reservation expires (integer value)
#reservation_expire = 86400

# Interval between periodic task runs to clean expired reservations in seconds.
# (integer value)
#reservation_clean_interval = $reservation_expire

# Count of reservations until usage is refreshed (integer value)
#until_refresh = 0

# Number of seconds between subsequent usage refreshes (integer value)
#max_age = 0

# Default driver to use for quota checks (string value)
#quota_driver = cinder.quota.DbQuotaDriver

# Enables or disables use of default quota class with default quota. (boolean
# value)
#use_default_quota_class = true

# Max size allowed per volume, in gigabytes (integer value)
#per_volume_size_limit = -1

# The scheduler host manager class to use (string value)
#scheduler_host_manager = cinder.scheduler.host_manager.HostManager

# Maximum number of attempts to schedule a volume (integer value)
#scheduler_max_attempts = 3

# Which filter class names to use for filtering hosts when not specified in the
# request. (list value)
#scheduler_default_filters = AvailabilityZoneFilter,CapacityFilter,CapabilitiesFilter

# Which weigher class names to use for weighing hosts. (list value)
#scheduler_default_weighers = CapacityWeigher

# Which handler to use for selecting the host/pool after weighing (string
# value)
#scheduler_weight_handler = cinder.scheduler.weights.OrderedHostWeightHandler

# Default scheduler driver to use (string value)
#scheduler_driver = cinder.scheduler.filter_scheduler.FilterScheduler

# Absolute path to scheduler configuration JSON file. (string value)
#scheduler_json_config_location =

# Multiplier used for weighing free capacity. Negative numbers mean to stack vs
# spread. (floating point value)
#capacity_weight_multiplier = 1.0

# Multiplier used for weighing allocated capacity. Positive numbers mean to
# stack vs spread. (floating point value)
#allocated_capacity_weight_multiplier = -1.0

# Multiplier used for weighing volume number. Negative numbers mean to spread
# vs stack. (floating point value)
#volume_number_multiplier = -1.0

# Interval, in seconds, between nodes reporting state to datastore (integer
# value)
#report_interval = 10

# Interval, in seconds, between running periodic tasks (integer value)
#periodic_interval = 60

# Range, in seconds, to randomly delay when starting the periodic task
# scheduler to reduce stampeding. (Disable by setting to 0) (integer value)
#periodic_fuzzy_delay = 60

# IP address on which OpenStack Volume API listens (string value)
osapi_volume_listen = {{ volume.osapi.host }}

# Port on which OpenStack Volume API listens (port value)
# Minimum value: 0
# Maximum value: 65535
#osapi_volume_listen_port = 8776

# Number of workers for OpenStack Volume API service. The default is equal to
# the number of CPUs available. (integer value)
osapi_volume_workers = {{ volume.get('volume_workers', '4') }}

# Wraps the socket in a SSL context if True is set. A certificate file and key
# file must be specified. (boolean value)
#osapi_volume_use_ssl = false

# Option to enable strict host key checking.  When set to "True" Cinder will
# only connect to systems with a host key present in the configured
# "ssh_hosts_key_file".  When set to "False" the host key will be saved upon
# first connection and used for subsequent connections.  Default=False (boolean
# value)
#strict_ssh_host_key_policy = false

# File containing SSH host keys for the systems with which Cinder needs to
# communicate.  OPTIONAL: Default=$state_path/ssh_known_hosts (string value)
#ssh_hosts_key_file = $state_path/ssh_known_hosts

# The number of characters in the salt. (integer value)
#volume_transfer_salt_length = 8

# The number of characters in the autogenerated auth key. (integer value)
#volume_transfer_key_length = 16

# Enables the Force option on upload_to_image. This enables running
# upload_volume on in-use volumes for backends that support it. (boolean value)
#enable_force_upload = false
enable_force_upload = {{ volume.get('enable_force_upload', False)|lower }}

# Create volume from snapshot at the host where snapshot resides (boolean
# value)
#snapshot_same_host = true

# Ensure that the new volumes are the same AZ as snapshot or source volume
# (boolean value)
#cloned_volume_same_az = true

# Cache volume availability zones in memory for the provided duration in
# seconds (integer value)
#az_cache_duration = 3600

# Number of times to attempt to run flakey shell commands (integer value)
#num_shell_tries = 3

# The percentage of backend capacity is reserved (integer value)
# Minimum value: 0
# Maximum value: 100
#reserved_percentage = 0

# Prefix for iSCSI volumes (string value)
# Deprecated group/name - [DEFAULT]/iscsi_target_prefix
#target_prefix = iqn.2010-10.org.openstack:

# The IP address that the iSCSI daemon is listening on (string value)
# Deprecated group/name - [DEFAULT]/iscsi_ip_address
#target_ip_address = $my_ip

# The list of secondary IP addresses of the iSCSI daemon (list value)
#iscsi_secondary_ip_addresses =

# The port that the iSCSI daemon is listening on (port value)
# Minimum value: 0
# Maximum value: 65535
# Deprecated group/name - [DEFAULT]/iscsi_port
#target_port = 3260

# The maximum number of times to rescan targets to find volume (integer value)
#num_volume_device_scan_tries = 3

# The backend name for a given driver implementation (string value)
volume_backend_name = {{ volume.get('volume_backend_name', 'DEFAULT') }}

# Do we attach/detach volumes in cinder using multipath for volume to image and
# image to volume transfers? (boolean value)
#use_multipath_for_image_xfer = false

# If this is set to True, attachment of volumes for image transfer will be
# aborted when multipathd is not running. Otherwise, it will fallback to single
# path. (boolean value)
#enforce_multipath_for_image_xfer = false

# Method used to wipe old volumes (string value)
# Possible values:
# none - <No description provided>
# zero - <No description provided>
#volume_clear = zero
volume_clear = {{ volume.wipe_method }}

# Size in MiB to wipe at start of old volumes. 1024 MiBat max. 0 => all
# (integer value)
# Maximum value: 1024
#volume_clear_size = 0

# The flag to pass to ionice to alter the i/o priority of the process used to
# zero a volume after deletion, for example "-c3" for idle only priority.
# (string value)
#volume_clear_ionice = <None>

# Target user-land tool to use. tgtadm is default, use lioadm for LIO iSCSI
# support, scstadmin for SCST target support, ietadm for iSCSI Enterprise
# Target, iscsictl for Chelsio iSCSI Target, nvmet for NVMEoF support, or fake
# for testing. (string value)
# Possible values:
# tgtadm - <No description provided>
# lioadm - <No description provided>
# scstadmin - <No description provided>
# iscsictl - <No description provided>
# ietadm - <No description provided>
# nvmet - <No description provided>
# fake - <No description provided>
# Deprecated group/name - [DEFAULT]/iscsi_helper
target_helper = tgtadm

# Volume configuration file storage directory (string value)
volumes_dir = /var/lib/cinder/volumes

# IET configuration file (string value)
#iet_conf = /etc/iet/ietd.conf

# Chiscsi (CXT) global defaults configuration file (string value)
#chiscsi_conf = /etc/chelsio-iscsi/chiscsi.conf

# Sets the behavior of the iSCSI target to either perform blockio or fileio
# optionally, auto can be set and Cinder will autodetect type of backing device
# (string value)
# Possible values:
# blockio - <No description provided>
# fileio - <No description provided>
# auto - <No description provided>
#iscsi_iotype = fileio

# The default block size used when copying/clearing volumes (string value)
#volume_dd_blocksize = 1M

# The blkio cgroup name to be used to limit bandwidth of volume copy (string
# value)
#volume_copy_blkio_cgroup_name = cinder-volume-copy

# The upper limit of bandwidth of volume copy. 0 => unlimited (integer value)
#volume_copy_bps_limit = 0

# Sets the behavior of the iSCSI target to either perform write-back(on) or
# write-through(off). This parameter is valid if target_helper is set to
# tgtadm. (string value)
# Possible values:
# on - <No description provided>
# off - <No description provided>
#iscsi_write_cache = on

# Sets the target-specific flags for the iSCSI target. Only used for tgtadm to
# specify backing device flags using bsoflags option. The specified string is
# passed as is to the underlying tool. (string value)
#iscsi_target_flags =

# Determines the target protocol for new volumes, created with tgtadm, lioadm
# and nvmet target helpers. In order to enable RDMA, this parameter should be
# set with the value "iser". The supported iSCSI protocol values are "iscsi"
# and "iser", in case of nvmet target set to "nvmet_rdma". (string value)
# Possible values:
# iscsi - <No description provided>
# iser - <No description provided>
# nvmet_rdma - <No description provided>
# Deprecated group/name - [DEFAULT]/iscsi_protocol
#target_protocol = iscsi

# The path to the client certificate key for verification, if the driver
# supports it. (string value)
#driver_client_cert_key = <None>

# The path to the client certificate for verification, if the driver supports
# it. (string value)
#driver_client_cert = <None>

# Tell driver to use SSL for connection to backend storage if the driver
# supports it. (boolean value)
#driver_use_ssl = false

# Representation of the over subscription ratio when thin provisioning is
# enabled. Default ratio is 20.0, meaning provisioned capacity can be 20 times
# of the total physical capacity. If the ratio is 10.5, it means provisioned
# capacity can be 10.5 times of the total physical capacity. A ratio of 1.0
# means provisioned capacity cannot exceed the total physical capacity. If
# ratio is 'auto', Cinder will automatically calculate the ratio based on the
# provisioned capacity and the used space. If not set to auto, the ratio has to
# be a minimum of 1.0. (string value)
#max_over_subscription_ratio = 20.0

# Certain ISCSI targets have predefined target names, SCST target driver uses
# this name. (string value)
#scst_target_iqn_name = <None>

# SCST target implementation can choose from multiple SCST target drivers.
# (string value)
#scst_target_driver = iscsi

# Option to enable/disable CHAP authentication for targets. (boolean value)
#use_chap_auth = false

# CHAP user name. (string value)
#chap_username =

# Password for specified CHAP account name. (string value)
#chap_password =

# Namespace for driver private data values to be saved in. (string value)
#driver_data_namespace = <None>

# String representation for an equation that will be used to filter hosts. Only
# used when the driver filter is set to be used by the Cinder scheduler.
# (string value)
#filter_function = <None>

# String representation for an equation that will be used to determine the
# goodness of a host. Only used when using the goodness weigher is set to be
# used by the Cinder scheduler. (string value)
#goodness_function = <None>

# If set to True the http client will validate the SSL certificate of the
# backend endpoint. (boolean value)
#driver_ssl_cert_verify = false

# Can be used to specify a non default path to a CA_BUNDLE file or directory
# with certificates of trusted CAs, which will be used to validate the backend
# (string value)
#driver_ssl_cert_path = <None>

# List of options that control which trace info is written to the DEBUG log
# level to assist developers. Valid values are method and api. (list value)
#trace_flags = <None>

# Multi opt of dictionaries to represent a replication target device.  This
# option may be specified multiple times in a single config section to specify
# multiple replication target devices.  Each entry takes the standard dict
# config form: replication_device =
# target_device_id:<required>,key1:value1,key2:value2... (dict value)
#replication_device = <None>

# If set to True, upload-to-image in raw format will create a cloned volume and
# register its location to the image service, instead of uploading the volume
# content. The cinder backend and locations support must be enabled in the
# image service. (boolean value)
#image_upload_use_cinder_backend = false

# If set to True, the image volume created by upload-to-image will be placed in
# the internal tenant. Otherwise, the image volume is created in the current
# context's tenant. (boolean value)
#image_upload_use_internal_tenant = false

# Enable the image volume cache for this backend. (boolean value)
#image_volume_cache_enabled = false

# Max size of the image volume cache for this backend in GB. 0 => unlimited.
# (integer value)
#image_volume_cache_max_size_gb = 0

# Max number of entries allowed in the image volume cache. 0 => unlimited.
# (integer value)
#image_volume_cache_max_count = 0

# Report to clients of Cinder that the backend supports discard (aka.
# trim/unmap). This will not actually change the behavior of the backend or the
# client directly, it will only notify that it can be used. (boolean value)
#report_discard_supported = false

# Protocol for transferring data between host and storage back-end. (string
# value)
# Possible values:
# iscsi - <No description provided>
# fc - <No description provided>
#storage_protocol = iscsi

# If this is set to True, a temporary snapshot will be created for performing
# non-disruptive backups. Otherwise a temporary volume will be cloned in order
# to perform a backup. (boolean value)
#backup_use_temp_snapshot = false

# Set this to True when you want to allow an unsupported driver to start.
# Drivers that haven't maintained a working CI system and testing are marked as
# unsupported until CI is working again.  This also marks a driver as
# deprecated and may be removed in the next release. (boolean value)
#enable_unsupported_driver = false

# Availability zone for this volume backend. If not set, the
# storage_availability_zone option value is used as the default for all
# backends. (string value)
#backend_availability_zone = <None>

# The maximum number of times to rescan iSER targetto find volume (integer
# value)
#num_iser_scan_tries = 3

# Prefix for iSER volumes (string value)
#iser_target_prefix = iqn.2010-10.org.openstack:

# The IP address that the iSER daemon is listening on (string value)
#iser_ip_address = $my_ip

# The port that the iSER daemon is listening on (port value)
# Minimum value: 0
# Maximum value: 65535
#iser_port = 3260

# The name of the iSER target user-land tool to use (string value)
#iser_helper = tgtadm

# The port that the NVMe target is listening on. (port value)
# Minimum value: 0
# Maximum value: 65535
#nvmet_port_id = 1

# The namespace id associated with the subsystem that will be created with the
# path for the LVM volume. (integer value)
#nvmet_ns_id = 10

# DataCore virtual disk type (single/mirrored). Mirrored virtual disks require
# two storage servers in the server group. (string value)
# Possible values:
# single - <No description provided>
# mirrored - <No description provided>
#datacore_disk_type = single

# DataCore virtual disk storage profile. (string value)
#datacore_storage_profile = <None>

# List of DataCore disk pools that can be used by volume driver. (list value)
#datacore_disk_pools =

# Seconds to wait for a response from a DataCore API call. (integer value)
# Minimum value: 1
#datacore_api_timeout = 300

# Seconds to wait for DataCore virtual disk to come out of the "Failed" state.
# (integer value)
# Minimum value: 0
#datacore_disk_failed_delay = 15

# List of iSCSI targets that cannot be used to attach volume. To prevent the
# DataCore iSCSI volume driver from using some front-end targets in volume
# attachment, specify this option and list the iqn and target machine for each
# target as the value, such as <iqn:target name>, <iqn:target name>,
# <iqn:target name>. (list value)
#datacore_iscsi_unallowed_targets =

# Configure CHAP authentication for iSCSI connections. (boolean value)
#datacore_iscsi_chap_enabled = false

# iSCSI CHAP authentication password storage file. (string value)
#datacore_iscsi_chap_storage = <None>

# Storage system autoexpand parameter for volumes (True/False) (boolean value)
#instorage_mcs_vol_autoexpand = true

# Storage system compression option for volumes (boolean value)
#instorage_mcs_vol_compression = false

# Enable InTier for volumes (boolean value)
#instorage_mcs_vol_intier = true

# Allow tenants to specify QOS on create (boolean value)
#instorage_mcs_allow_tenant_qos = false

# Storage system grain size parameter for volumes (32/64/128/256) (integer
# value)
# Minimum value: 32
# Maximum value: 256
#instorage_mcs_vol_grainsize = 256

# Storage system space-efficiency parameter for volumes (percentage) (integer
# value)
# Minimum value: -1
# Maximum value: 100
#instorage_mcs_vol_rsize = 2

# Storage system threshold for volume capacity warnings (percentage) (integer
# value)
# Minimum value: -1
# Maximum value: 100
#instorage_mcs_vol_warning = 0

# Maximum number of seconds to wait for LocalCopy to be prepared. (integer
# value)
# Minimum value: 1
# Maximum value: 600
#instorage_mcs_localcopy_timeout = 120

# Specifies the InStorage LocalCopy copy rate to be used when creating a full
# volume copy. The default is rate is 50, and the valid rates are 1-100.
# (integer value)
# Minimum value: 1
# Maximum value: 100
#instorage_mcs_localcopy_rate = 50

# The I/O group in which to allocate volumes. It can be a comma-separated list
# in which case the driver will select an io_group based on least number of
# volumes associated with the io_group. (string value)
#instorage_mcs_vol_iogrp = 0

# Specifies secondary management IP or hostname to be used if san_ip is invalid
# or becomes inaccessible. (string value)
#instorage_san_secondary_ip = <None>

# Comma separated list of storage system storage pools for volumes. (list
# value)
#instorage_mcs_volpool_name = volpool

# Configure CHAP authentication for iSCSI connections (Default: Enabled)
# (boolean value)
#instorage_mcs_iscsi_chap_enabled = true

# The StorPool template for volumes with no type. (string value)
#storpool_template = <None>

# The default StorPool chain replication value.  Used when creating a volume
# with no specified type if storpool_template is not set.  Also used for
# calculating the apparent free space reported in the stats. (integer value)
#storpool_replication = 3

# Create sparse Lun. (boolean value)
#vrts_lun_sparse = true

# VA config file. (string value)
#vrts_target_config = /etc/cinder/vrts_target.xml

# Timeout for creating the volume to migrate to when performing volume
# migration (seconds) (integer value)
#migration_create_volume_timeout_secs = 300

# Offload pending volume delete during volume service startup (boolean value)
#volume_service_inithost_offload = false

# FC Zoning mode configured, only 'fabric' is supported now. (string value)
#zoning_mode = <None>

# Sets the value of TCP_KEEPALIVE (True/False) for each server socket. (boolean
# value)
#tcp_keepalive = true

# Sets the value of TCP_KEEPINTVL in seconds for each server socket. Not
# supported on OS X. (integer value)
#tcp_keepalive_interval = <None>

# Sets the value of TCP_KEEPCNT for each server socket. Not supported on OS X.
# (integer value)
#tcp_keepalive_count = <None>


[backend]

#
# From cinder
#

# Backend override of host value. (string value)
#backend_host = <None>
{%- if volume.backend is defined %}

{%- for backend_name, backend in volume.get('backend', {}).items() %}

{%- set backend_fragment = "cinder/files/backend/_" + backend.engine + ".conf" %}
{%- include backend_fragment %}

{%- endfor %}

{%- endif %}


[backend_defaults]

{%- if volume.backup.engine != None %}
{%- set backup_backend_fragment = "cinder/files/backup_backend/_" + volume.backup.engine + ".conf" %}
{%- include backup_backend_fragment %}
{%- endif %}
{%- if volume.nas_secure_file_permissions is defined %}
nas_secure_file_permissions={{ volume.nas_secure_file_permissions }}
{%- endif %}
{%- if volume.nas_secure_file_operations is defined %}
nas_secure_file_operations={{ volume.nas_secure_file_operations }}
{%- endif %}
{%- if volume.cinder_internal_tenant_user_id is defined %}
cinder_internal_tenant_user_id={{ volume.cinder_internal_tenant_user_id }}
{%- endif %}
{%- if volume.cinder_internal_tenant_project_id is defined %}
cinder_internal_tenant_project_id={{ volume.cinder_internal_tenant_project_id }}
{%- endif %}

#
# From cinder
#

# Number of times to attempt to run flakey shell commands (integer value)
#num_shell_tries = 3

# The percentage of backend capacity is reserved (integer value)
# Minimum value: 0
# Maximum value: 100
#reserved_percentage = 0

# Prefix for iSCSI volumes (string value)
# Deprecated group/name - [backend_defaults]/iscsi_target_prefix
#target_prefix = iqn.2010-10.org.openstack:

# The IP address that the iSCSI daemon is listening on (string value)
# Deprecated group/name - [backend_defaults]/iscsi_ip_address
#target_ip_address = $my_ip

# The list of secondary IP addresses of the iSCSI daemon (list value)
#iscsi_secondary_ip_addresses =

# The port that the iSCSI daemon is listening on (port value)
# Minimum value: 0
# Maximum value: 65535
# Deprecated group/name - [backend_defaults]/iscsi_port
#target_port = 3260

# The maximum number of times to rescan targets to find volume (integer value)
#num_volume_device_scan_tries = 3

# The backend name for a given driver implementation (string value)
#volume_backend_name = <None>

# Do we attach/detach volumes in cinder using multipath for volume to image and
# image to volume transfers? (boolean value)
#use_multipath_for_image_xfer = false

# If this is set to True, attachment of volumes for image transfer will be
# aborted when multipathd is not running. Otherwise, it will fallback to single
# path. (boolean value)
#enforce_multipath_for_image_xfer = false

# Method used to wipe old volumes (string value)
# Possible values:
# none - <No description provided>
# zero - <No description provided>
#volume_clear = zero

# Size in MiB to wipe at start of old volumes. 1024 MiBat max. 0 => all
# (integer value)
# Maximum value: 1024
#volume_clear_size = 0

# The flag to pass to ionice to alter the i/o priority of the process used to
# zero a volume after deletion, for example "-c3" for idle only priority.
# (string value)
#volume_clear_ionice = <None>

# Target user-land tool to use. tgtadm is default, use lioadm for LIO iSCSI
# support, scstadmin for SCST target support, ietadm for iSCSI Enterprise
# Target, iscsictl for Chelsio iSCSI Target, nvmet for NVMEoF support, or fake
# for testing. (string value)
# Possible values:
# tgtadm - <No description provided>
# lioadm - <No description provided>
# scstadmin - <No description provided>
# iscsictl - <No description provided>
# ietadm - <No description provided>
# nvmet - <No description provided>
# fake - <No description provided>
# Deprecated group/name - [backend_defaults]/iscsi_helper
#target_helper = tgtadm

# Volume configuration file storage directory (string value)
#volumes_dir = $state_path/volumes

# IET configuration file (string value)
#iet_conf = /etc/iet/ietd.conf

# Chiscsi (CXT) global defaults configuration file (string value)
#chiscsi_conf = /etc/chelsio-iscsi/chiscsi.conf

# Sets the behavior of the iSCSI target to either perform blockio or fileio
# optionally, auto can be set and Cinder will autodetect type of backing device
# (string value)
# Possible values:
# blockio - <No description provided>
# fileio - <No description provided>
# auto - <No description provided>
#iscsi_iotype = fileio

# The default block size used when copying/clearing volumes (string value)
#volume_dd_blocksize = 1M

# The blkio cgroup name to be used to limit bandwidth of volume copy (string
# value)
#volume_copy_blkio_cgroup_name = cinder-volume-copy

# The upper limit of bandwidth of volume copy. 0 => unlimited (integer value)
#volume_copy_bps_limit = 0

# Sets the behavior of the iSCSI target to either perform write-back(on) or
# write-through(off). This parameter is valid if target_helper is set to
# tgtadm. (string value)
# Possible values:
# on - <No description provided>
# off - <No description provided>
#iscsi_write_cache = on

# Sets the target-specific flags for the iSCSI target. Only used for tgtadm to
# specify backing device flags using bsoflags option. The specified string is
# passed as is to the underlying tool. (string value)
#iscsi_target_flags =

# Determines the target protocol for new volumes, created with tgtadm, lioadm
# and nvmet target helpers. In order to enable RDMA, this parameter should be
# set with the value "iser". The supported iSCSI protocol values are "iscsi"
# and "iser", in case of nvmet target set to "nvmet_rdma". (string value)
# Possible values:
# iscsi - <No description provided>
# iser - <No description provided>
# nvmet_rdma - <No description provided>
# Deprecated group/name - [backend_defaults]/iscsi_protocol
#target_protocol = iscsi

# The path to the client certificate key for verification, if the driver
# supports it. (string value)
#driver_client_cert_key = <None>

# The path to the client certificate for verification, if the driver supports
# it. (string value)
#driver_client_cert = <None>

# Tell driver to use SSL for connection to backend storage if the driver
# supports it. (boolean value)
#driver_use_ssl = false

# Representation of the over subscription ratio when thin provisioning is
# enabled. Default ratio is 20.0, meaning provisioned capacity can be 20 times
# of the total physical capacity. If the ratio is 10.5, it means provisioned
# capacity can be 10.5 times of the total physical capacity. A ratio of 1.0
# means provisioned capacity cannot exceed the total physical capacity. If
# ratio is 'auto', Cinder will automatically calculate the ratio based on the
# provisioned capacity and the used space. If not set to auto, the ratio has to
# be a minimum of 1.0. (string value)
#max_over_subscription_ratio = 20.0

# Certain ISCSI targets have predefined target names, SCST target driver uses
# this name. (string value)
#scst_target_iqn_name = <None>

# SCST target implementation can choose from multiple SCST target drivers.
# (string value)
#scst_target_driver = iscsi

# Option to enable/disable CHAP authentication for targets. (boolean value)
#use_chap_auth = false

# CHAP user name. (string value)
#chap_username =

# Password for specified CHAP account name. (string value)
#chap_password =

# Namespace for driver private data values to be saved in. (string value)
#driver_data_namespace = <None>

# String representation for an equation that will be used to filter hosts. Only
# used when the driver filter is set to be used by the Cinder scheduler.
# (string value)
#filter_function = <None>

# String representation for an equation that will be used to determine the
# goodness of a host. Only used when using the goodness weigher is set to be
# used by the Cinder scheduler. (string value)
#goodness_function = <None>

# If set to True the http client will validate the SSL certificate of the
# backend endpoint. (boolean value)
#driver_ssl_cert_verify = false

# Can be used to specify a non default path to a CA_BUNDLE file or directory
# with certificates of trusted CAs, which will be used to validate the backend
# (string value)
#driver_ssl_cert_path = <None>

# List of options that control which trace info is written to the DEBUG log
# level to assist developers. Valid values are method and api. (list value)
#trace_flags = <None>

# Multi opt of dictionaries to represent a replication target device.  This
# option may be specified multiple times in a single config section to specify
# multiple replication target devices.  Each entry takes the standard dict
# config form: replication_device =
# target_device_id:<required>,key1:value1,key2:value2... (dict value)
#replication_device = <None>

# If set to True, upload-to-image in raw format will create a cloned volume and
# register its location to the image service, instead of uploading the volume
# content. The cinder backend and locations support must be enabled in the
# image service. (boolean value)
#image_upload_use_cinder_backend = false

# If set to True, the image volume created by upload-to-image will be placed in
# the internal tenant. Otherwise, the image volume is created in the current
# context's tenant. (boolean value)
#image_upload_use_internal_tenant = false

# Enable the image volume cache for this backend. (boolean value)
#image_volume_cache_enabled = false

# Max size of the image volume cache for this backend in GB. 0 => unlimited.
# (integer value)
#image_volume_cache_max_size_gb = 0

# Max number of entries allowed in the image volume cache. 0 => unlimited.
# (integer value)
#image_volume_cache_max_count = 0

# Report to clients of Cinder that the backend supports discard (aka.
# trim/unmap). This will not actually change the behavior of the backend or the
# client directly, it will only notify that it can be used. (boolean value)
#report_discard_supported = false

# Protocol for transferring data between host and storage back-end. (string
# value)
# Possible values:
# iscsi - <No description provided>
# fc - <No description provided>
#storage_protocol = iscsi

# If this is set to True, a temporary snapshot will be created for performing
# non-disruptive backups. Otherwise a temporary volume will be cloned in order
# to perform a backup. (boolean value)
#backup_use_temp_snapshot = false

# Set this to True when you want to allow an unsupported driver to start.
# Drivers that haven't maintained a working CI system and testing are marked as
# unsupported until CI is working again.  This also marks a driver as
# deprecated and may be removed in the next release. (boolean value)
#enable_unsupported_driver = false

# Availability zone for this volume backend. If not set, the
# storage_availability_zone option value is used as the default for all
# backends. (string value)
#backend_availability_zone = <None>

# The maximum number of times to rescan iSER targetto find volume (integer
# value)
#num_iser_scan_tries = 3

# Prefix for iSER volumes (string value)
#iser_target_prefix = iqn.2010-10.org.openstack:

# The IP address that the iSER daemon is listening on (string value)
#iser_ip_address = $my_ip

# The port that the iSER daemon is listening on (port value)
# Minimum value: 0
# Maximum value: 65535
#iser_port = 3260

# The name of the iSER target user-land tool to use (string value)
#iser_helper = tgtadm

# The port that the NVMe target is listening on. (port value)
# Minimum value: 0
# Maximum value: 65535
#nvmet_port_id = 1

# The namespace id associated with the subsystem that will be created with the
# path for the LVM volume. (integer value)
#nvmet_ns_id = 10

# Hostname for the CoprHD Instance (string value)
#coprhd_hostname = <None>

# Port for the CoprHD Instance (port value)
# Minimum value: 0
# Maximum value: 65535
#coprhd_port = 4443

# Username for accessing the CoprHD Instance (string value)
#coprhd_username = <None>

# Password for accessing the CoprHD Instance (string value)
#coprhd_password = <None>

# Tenant to utilize within the CoprHD Instance (string value)
#coprhd_tenant = <None>

# Project to utilize within the CoprHD Instance (string value)
#coprhd_project = <None>

# Virtual Array to utilize within the CoprHD Instance (string value)
#coprhd_varray = <None>

# True | False to indicate if the storage array in CoprHD is VMAX or VPLEX
# (boolean value)
#coprhd_emulate_snapshot = false

# Rest Gateway IP or FQDN for Scaleio (string value)
#coprhd_scaleio_rest_gateway_host = None

# Rest Gateway Port for Scaleio (port value)
# Minimum value: 0
# Maximum value: 65535
#coprhd_scaleio_rest_gateway_port = 4984

# Username for Rest Gateway (string value)
#coprhd_scaleio_rest_server_username = <None>

# Rest Gateway Password (string value)
#coprhd_scaleio_rest_server_password = <None>

# verify server certificate (boolean value)
#scaleio_verify_server_certificate = false

# Server certificate path (string value)
#scaleio_server_certificate_path = <None>

# Datera API port. (string value)
#datera_api_port = 7717

# DEPRECATED: Datera API version. (string value)
# This option is deprecated for removal.
# Its value may be silently ignored in the future.
#datera_api_version = 2

# Timeout for HTTP 503 retry messages (integer value)
#datera_503_timeout = 120

# Interval between 503 retries (integer value)
#datera_503_interval = 5

# True to set function arg and return logging (boolean value)
#datera_debug = false

# ONLY FOR DEBUG/TESTING PURPOSES
# True to set replica_count to 1 (boolean value)
#datera_debug_replica_count_override = false

# If set to 'Map' --> OpenStack project ID will be mapped implicitly to Datera
# tenant ID
# If set to 'None' --> Datera tenant ID will not be used during volume
# provisioning
# If set to anything else --> Datera tenant ID will be the provided value
# (string value)
#datera_tenant_id = <None>

# Set to True to disable profiling in the Datera driver (boolean value)
#datera_disable_profiler = false

# Group name to use for creating volumes. Defaults to "group-0". (string value)
#eqlx_group_name = group-0

# Maximum retry count for reconnection. Default is 5. (integer value)
# Minimum value: 0
#eqlx_cli_max_retries = 5

# Pool in which volumes will be created. Defaults to "default". (string value)
#eqlx_pool = default

# Storage Center System Serial Number (integer value)
#dell_sc_ssn = 64702

# Dell API port (port value)
# Minimum value: 0
# Maximum value: 65535
#dell_sc_api_port = 3033

# Name of the server folder to use on the Storage Center (string value)
#dell_sc_server_folder = openstack

# Name of the volume folder to use on the Storage Center (string value)
#dell_sc_volume_folder = openstack

# Enable HTTPS SC certificate verification (boolean value)
#dell_sc_verify_cert = false

# IP address of secondary DSM volume (string value)
#secondary_san_ip =

# Secondary DSM user name (string value)
#secondary_san_login = Admin

# Secondary DSM user password name (string value)
#secondary_san_password =

# Secondary Dell API port (port value)
# Minimum value: 0
# Maximum value: 65535
#secondary_sc_api_port = 3033

# Dell SC API async call default timeout in seconds. (integer value)
#dell_api_async_rest_timeout = 15

# Dell SC API sync call default timeout in seconds. (integer value)
#dell_api_sync_rest_timeout = 30

# Domain IP to be excluded from iSCSI returns. (IP address value)
#excluded_domain_ip = <None>

# Server OS type to use when creating a new server on the Storage Center.
# (string value)
#dell_server_os = Red Hat Linux 6.x

# REST server port. (string value)
#sio_rest_server_port = 443

# Verify server certificate. (boolean value)
#sio_verify_server_certificate = false

# Server certificate path. (string value)
#sio_server_certificate_path = <None>

# Round up volume capacity. (boolean value)
#sio_round_volume_capacity = true

# Unmap volume before deletion. (boolean value)
#sio_unmap_volume_before_deletion = false

# Storage Pools. (string value)
#sio_storage_pools = <None>

# DEPRECATED: Protection Domain ID. (string value)
# This option is deprecated for removal since Pike.
# Its value may be silently ignored in the future.
# Reason: Replaced by sio_storage_pools option
#sio_protection_domain_id = <None>

# DEPRECATED: Protection Domain name. (string value)
# This option is deprecated for removal since Pike.
# Its value may be silently ignored in the future.
# Reason: Replaced by sio_storage_pools option
#sio_protection_domain_name = <None>

# DEPRECATED: Storage Pool name. (string value)
# This option is deprecated for removal since Pike.
# Its value may be silently ignored in the future.
# Reason: Replaced by sio_storage_pools option
#sio_storage_pool_name = <None>

# DEPRECATED: Storage Pool ID. (string value)
# This option is deprecated for removal since Pike.
# Its value may be silently ignored in the future.
# Reason: Replaced by sio_storage_pools option
#sio_storage_pool_id = <None>

# ScaleIO API version. (string value)
#sio_server_api_version = <None>

# max_over_subscription_ratio setting for the ScaleIO driver. This replaces the
# general max_over_subscription_ratio which has no effect in this
# driver.Maximum value allowed for ScaleIO is 10.0. (floating point value)
#sio_max_over_subscription_ratio = 10.0

# Allow thick volumes to be created in Storage Pools when zero padding is
# disabled. This option should not be enabled if multiple tenants will utilize
# thick volumes from a shared Storage Pool. (boolean value)
#sio_allow_non_padded_thick_volumes = false

# A comma-separated list of storage pool names to be used. (list value)
#unity_storage_pool_names = <None>

# A comma-separated list of iSCSI or FC ports to be used. Each port can be
# Unix-style glob expressions. (list value)
#unity_io_ports = <None>

# To remove the host from Unity when the last LUN is detached from it. By
# default, it is False. (boolean value)
#remove_empty_host = false

# DEPRECATED: Use this file for cinder emc plugin config data. (string value)
# This option is deprecated for removal.
# Its value may be silently ignored in the future.
#cinder_dell_emc_config_file = /etc/cinder/cinder_dell_emc_config.xml

# Use this value to specify length of the interval in seconds. (integer value)
#interval = 3

# Use this value to specify number of retries. (integer value)
#retries = 200

# Use this value to enable the initiator_check. (boolean value)
#initiator_check = false

# REST server port number. (port value)
# Minimum value: 0
# Maximum value: 65535
#san_rest_port = 8443

# Serial number of the array to connect to. (string value)
#vmax_array = <None>

# Storage resource pool on array to use for provisioning. (string value)
#vmax_srp = <None>

# Service level to use for provisioning storage. (string value)
#vmax_service_level = <None>

# Workload (string value)
#vmax_workload = <None>

# List of port groups containing frontend ports configured prior for server
# connection. (list value)
#vmax_port_groups = <None>

# VNX authentication scope type. By default, the value is global. (string
# value)
#storage_vnx_authentication_type = global

# Directory path that contains the VNX security file. Make sure the security
# file is generated first. (string value)
#storage_vnx_security_file_dir = <None>

# Naviseccli Path. (string value)
#naviseccli_path = <None>

# Comma-separated list of storage pool names to be used. (list value)
#storage_vnx_pool_names = <None>

# Default timeout for CLI operations in minutes. For example, LUN migration is
# a typical long running operation, which depends on the LUN size and the load
# of the array. An upper bound in the specific deployment can be set to avoid
# unnecessary long wait. By default, it is 365 days long. (integer value)
#default_timeout = 31536000

# Default max number of LUNs in a storage group. By default, the value is 255.
# (integer value)
#max_luns_per_storage_group = 255

# To destroy storage group when the last LUN is removed from it. By default,
# the value is False. (boolean value)
#destroy_empty_storage_group = false

# Mapping between hostname and its iSCSI initiator IP addresses. (string value)
#iscsi_initiators = <None>

# Comma separated iSCSI or FC ports to be used in Nova or Cinder. (list value)
#io_port_list = <None>

# Automatically register initiators. By default, the value is False. (boolean
# value)
#initiator_auto_registration = false

# Automatically deregister initiators after the related storage group is
# destroyed. By default, the value is False. (boolean value)
#initiator_auto_deregistration = false

# DEPRECATED: Report free_capacity_gb as 0 when the limit to maximum number of
# pool LUNs is reached. By default, the value is False. (boolean value)
# This option is deprecated for removal.
# Its value may be silently ignored in the future.
#check_max_pool_luns_threshold = false

# Delete a LUN even if it is in Storage Groups. By default, the value is False.
# (boolean value)
#force_delete_lun_in_storagegroup = false

# Force LUN creation even if the full threshold of pool is reached. By default,
# the value is False. (boolean value)
#ignore_pool_full_threshold = false

# XMS cluster id in multi-cluster environment (string value)
#xtremio_cluster_name =

# Number of retries in case array is busy (integer value)
#xtremio_array_busy_retry_count = 5

# Interval between retries in case array is busy (integer value)
#xtremio_array_busy_retry_interval = 5

# Number of volumes created from each cached glance image (integer value)
#xtremio_volumes_per_glance_cache = 100

# Should the driver remove initiator groups with no volumes after the last
# connection was terminated. Since the behavior till now was to leave the IG
# be, we default to False (not deleting IGs without connected volumes); setting
# this parameter to True will remove any IG after terminating its connection to
# the last volume. (boolean value)
#xtremio_clean_unused_ig = false

# The IP of DMS client socket server (IP address value)
#disco_client = 127.0.0.1

# The port to connect DMS client socket server (port value)
# Minimum value: 0
# Maximum value: 65535
#disco_client_port = 9898

# DEPRECATED: Path to the wsdl file to communicate with DISCO request manager
# (string value)
# This option is deprecated for removal.
# Its value may be silently ignored in the future.
#disco_wsdl_path = /etc/cinder/DISCOService.wsdl

# DEPRECATED: The IP address of the REST server (IP address value)
# Deprecated group/name - [DEFAULT]/rest_ip
# This option is deprecated for removal.
# Its value may be silently ignored in the future.
# Reason: Using san_ip later
#disco_rest_ip = <None>

# Use soap client or rest client for communicating with DISCO. Possible values
# are "soap" or "rest". (string value)
# Possible values:
# soap - <No description provided>
# rest - <No description provided>
# Deprecated group/name - [DEFAULT]/choice_client
#disco_choice_client = <None>

# DEPRECATED: The port of DISCO source API (port value)
# Minimum value: 0
# Maximum value: 65535
# This option is deprecated for removal.
# Its value may be silently ignored in the future.
# Reason: Using san_api_port later
#disco_src_api_port = 8080

# Prefix before volume name to differentiate DISCO volume created through
# openstack and the other ones (string value)
# Deprecated group/name - [backend_defaults]/volume_name_prefix
#disco_volume_name_prefix = openstack-

# How long we check whether a snapshot is finished before we give up (integer
# value)
# Deprecated group/name - [backend_defaults]/snapshot_check_timeout
#disco_snapshot_check_timeout = 3600

# How long we check whether a restore is finished before we give up (integer
# value)
# Deprecated group/name - [backend_defaults]/restore_check_timeout
#disco_restore_check_timeout = 3600

# How long we check whether a clone is finished before we give up (integer
# value)
# Deprecated group/name - [backend_defaults]/clone_check_timeout
#disco_clone_check_timeout = 3600

# How long we wait before retrying to get an item detail (integer value)
# Deprecated group/name - [backend_defaults]/retry_interval
#disco_retry_interval = 1

# Number of nodes that should replicate the data. (integer value)
#drbdmanage_redundancy = 1

# Resource deployment completion wait policy. (string value)
#drbdmanage_resource_policy = {"ratio": "0.51", "timeout": "60"}

# Disk options to set on new resources. See http://www.drbd.org/en/doc/users-
# guide-90/re-drbdconf for all the details. (string value)
#drbdmanage_disk_options = {"c-min-rate": "4M"}

# Net options to set on new resources. See http://www.drbd.org/en/doc/users-
# guide-90/re-drbdconf for all the details. (string value)
#drbdmanage_net_options = {"connect-int": "4", "allow-two-primaries": "yes", "ko-count": "30", "max-buffers": "20000", "ping-timeout": "100"}

# Resource options to set on new resources. See
# http://www.drbd.org/en/doc/users-guide-90/re-drbdconf for all the details.
# (string value)
#drbdmanage_resource_options = {"auto-promote-timeout": "300"}

# Snapshot completion wait policy. (string value)
#drbdmanage_snapshot_policy = {"count": "1", "timeout": "60"}

# Volume resize completion wait policy. (string value)
#drbdmanage_resize_policy = {"timeout": "60"}

# Resource deployment completion wait plugin. (string value)
#drbdmanage_resource_plugin = drbdmanage.plugins.plugins.wait_for.WaitForResource

# Snapshot completion wait plugin. (string value)
#drbdmanage_snapshot_plugin = drbdmanage.plugins.plugins.wait_for.WaitForSnapshot

# Volume resize completion wait plugin. (string value)
#drbdmanage_resize_plugin = drbdmanage.plugins.plugins.wait_for.WaitForVolumeSize

# If set, the c-vol node will receive a useable
#                 /dev/drbdX device, even if the actual data is stored on
#                 other nodes only.
#                 This is useful for debugging, maintenance, and to be
#                 able to do the iSCSI export from the c-vol node. (boolean
# value)
#drbdmanage_devs_on_volume = true

# config file for cinder eternus_dx volume driver (string value)
#cinder_eternus_config_file = /etc/cinder/cinder_fujitsu_eternus_dx.xml

# The flag of thin storage allocation. (boolean value)
#dsware_isthin = false

# Fusionstorage manager ip addr for cinder-volume. (string value)
#dsware_manager =

# Fusionstorage agent ip addr range. (string value)
#fusionstorageagent =

# Pool type, like sata-2copy. (string value)
#pool_type = default

# Pool id permit to use. (list value)
#pool_id_filter =

# Create clone volume timeout. (integer value)
#clone_volume_timeout = 680

# Space network name to use for data transfer (string value)
#hgst_net = Net 1 (IPv4)

# Comma separated list of Space storage servers:devices. ex:
# os1_stor:gbd0,os2_stor:gbd0 (string value)
#hgst_storage_servers = os:gbd0

# Should spaces be redundantly stored (1/0) (string value)
#hgst_redundancy = 0

# User to own created spaces (string value)
#hgst_space_user = root

# Group to own created spaces (string value)
#hgst_space_group = disk

# UNIX mode for created spaces (string value)
#hgst_space_mode = 0600

# 3PAR WSAPI Server Url like https://<3par ip>:8080/api/v1 (string value)
#hpe3par_api_url =

# 3PAR username with the 'edit' role (string value)
#hpe3par_username =

# 3PAR password for the user specified in hpe3par_username (string value)
#hpe3par_password =

# List of the CPG(s) to use for volume creation (list value)
#hpe3par_cpg = OpenStack

# The CPG to use for Snapshots for volumes. If empty the userCPG will be used.
# (string value)
#hpe3par_cpg_snap =

# The time in hours to retain a snapshot.  You can't delete it before this
# expires. (string value)
#hpe3par_snapshot_retention =

# The time in hours when a snapshot expires  and is deleted.  This must be
# larger than expiration (string value)
#hpe3par_snapshot_expiration =

# Enable HTTP debugging to 3PAR (boolean value)
#hpe3par_debug = false

# List of target iSCSI addresses to use. (list value)
#hpe3par_iscsi_ips =

# Enable CHAP authentication for iSCSI connections. (boolean value)
#hpe3par_iscsi_chap_enabled = false

# HPE LeftHand WSAPI Server Url like https://<LeftHand ip>:8081/lhos (uri
# value)
# Deprecated group/name - [backend_defaults]/hplefthand_api_url
#hpelefthand_api_url = <None>

# HPE LeftHand Super user username (string value)
# Deprecated group/name - [backend_defaults]/hplefthand_username
#hpelefthand_username = <None>

# HPE LeftHand Super user password (string value)
# Deprecated group/name - [backend_defaults]/hplefthand_password
#hpelefthand_password = <None>

# HPE LeftHand cluster name (string value)
# Deprecated group/name - [backend_defaults]/hplefthand_clustername
#hpelefthand_clustername = <None>

# Configure CHAP authentication for iSCSI connections (Default: Disabled)
# (boolean value)
# Deprecated group/name - [backend_defaults]/hplefthand_iscsi_chap_enabled
#hpelefthand_iscsi_chap_enabled = false

# Enable HTTP debugging to LeftHand (boolean value)
# Deprecated group/name - [backend_defaults]/hplefthand_debug
#hpelefthand_debug = false

# Port number of SSH service. (port value)
# Minimum value: 0
# Maximum value: 65535
#hpelefthand_ssh_port = 16022

# The configuration file for the Cinder Huawei driver. (string value)
#cinder_huawei_conf_file = /etc/cinder/cinder_huawei_conf.xml

# The remote device hypermetro will use. (string value)
#hypermetro_devices = <None>

# The remote metro device san user. (string value)
#metro_san_user = <None>

# The remote metro device san password. (string value)
#metro_san_password = <None>

# The remote metro device domain name. (string value)
#metro_domain_name = <None>

# The remote metro device request url. (string value)
#metro_san_address = <None>

# The remote metro device pool names. (string value)
#metro_storage_pools = <None>

# Connection protocol should be FC. (Default is FC.) (string value)
#flashsystem_connection_protocol = FC

# Allows vdisk to multi host mapping. (Default is True) (boolean value)
#flashsystem_multihostmap_enabled = true

# DEPRECATED: This option no longer has any affect. It is deprecated and will
# be removed in the next release. (boolean value)
# This option is deprecated for removal.
# Its value may be silently ignored in the future.
#flashsystem_multipath_enabled = false

# Default iSCSI Port ID of FlashSystem. (Default port is 0.) (integer value)
#flashsystem_iscsi_portid = 0

# Specifies the path of the GPFS directory where Block Storage volume and
# snapshot files are stored. (string value)
#gpfs_mount_point_base = <None>

# Specifies the path of the Image service repository in GPFS.  Leave undefined
# if not storing images in GPFS. (string value)
#gpfs_images_dir = <None>

# Specifies the type of image copy to be used.  Set this when the Image service
# repository also uses GPFS so that image files can be transferred efficiently
# from the Image service to the Block Storage service. There are two valid
# values: "copy" specifies that a full copy of the image is made;
# "copy_on_write" specifies that copy-on-write optimization strategy is used
# and unmodified blocks of the image file are shared efficiently. (string
# value)
# Possible values:
# copy - <No description provided>
# copy_on_write - <No description provided>
# <None> - <No description provided>
#gpfs_images_share_mode = <None>

# Specifies an upper limit on the number of indirections required to reach a
# specific block due to snapshots or clones.  A lengthy chain of copy-on-write
# snapshots or clones can have a negative impact on performance, but improves
# space utilization.  0 indicates unlimited clone depth. (integer value)
#gpfs_max_clone_depth = 0

# Specifies that volumes are created as sparse files which initially consume no
# space. If set to False, the volume is created as a fully allocated file, in
# which case, creation may take a significantly longer time. (boolean value)
#gpfs_sparse_volumes = true

# Specifies the storage pool that volumes are assigned to. By default, the
# system storage pool is used. (string value)
#gpfs_storage_pool = system

# Comma-separated list of IP address or hostnames of GPFS nodes. (list value)
#gpfs_hosts =

# Username for GPFS nodes. (string value)
#gpfs_user_login = root

# Password for GPFS node user. (string value)
#gpfs_user_password =

# Filename of private key to use for SSH authentication. (string value)
#gpfs_private_key =

# SSH port to use. (port value)
# Minimum value: 0
# Maximum value: 65535
#gpfs_ssh_port = 22

# File containing SSH host keys for the gpfs nodes with which driver needs to
# communicate. Default=$state_path/ssh_known_hosts (string value)
#gpfs_hosts_key_file = $state_path/ssh_known_hosts

# Option to enable strict gpfs host key checking while connecting to gpfs
# nodes. Default=False (boolean value)
#gpfs_strict_host_key_policy = false

# Mapping between IODevice address and unit address. (string value)
#ds8k_devadd_unitadd_mapping =

# Set the first two digits of SSID. (string value)
#ds8k_ssid_prefix = FF

# Reserve LSSs for consistency group. (string value)
#lss_range_for_cg =

# Set to zLinux if your OpenStack version is prior to Liberty and you're
# connecting to zLinux systems. Otherwise set to auto. Valid values for this
# parameter are: 'auto', 'AMDLinuxRHEL', 'AMDLinuxSuse', 'AppleOSX', 'Fujitsu',
# 'Hp', 'HpTru64', 'HpVms', 'LinuxDT', 'LinuxRF', 'LinuxRHEL', 'LinuxSuse',
# 'Novell', 'SGI', 'SVC', 'SanFsAIX', 'SanFsLinux', 'Sun', 'VMWare', 'Win2000',
# 'Win2003', 'Win2008', 'Win2012', 'iLinux', 'nSeries', 'pLinux', 'pSeries',
# 'pSeriesPowerswap', 'zLinux', 'iSeries'. (string value)
#ds8k_host_type = auto

# Proxy driver that connects to the IBM Storage Array (string value)
#proxy = cinder.volume.drivers.ibm.ibm_storage.proxy.IBMStorageProxy

# Connection type to the IBM Storage Array (string value)
# Possible values:
# fibre_channel - <No description provided>
# iscsi - <No description provided>
#connection_type = iscsi

# CHAP authentication mode, effective only for iscsi (disabled|enabled) (string
# value)
# Possible values:
# disabled - <No description provided>
# enabled - <No description provided>
#chap = disabled

# List of Management IP addresses (separated by commas) (string value)
#management_ips =

# Comma separated list of storage system storage pools for volumes. (list
# value)
#storwize_svc_volpool_name = volpool

# Storage system space-efficiency parameter for volumes (percentage) (integer
# value)
# Minimum value: -1
# Maximum value: 100
#storwize_svc_vol_rsize = 2

# Storage system threshold for volume capacity warnings (percentage) (integer
# value)
# Minimum value: -1
# Maximum value: 100
#storwize_svc_vol_warning = 0

# Storage system autoexpand parameter for volumes (True/False) (boolean value)
#storwize_svc_vol_autoexpand = true

# Storage system grain size parameter for volumes (32/64/128/256) (integer
# value)
#storwize_svc_vol_grainsize = 256

# Storage system compression option for volumes (boolean value)
#storwize_svc_vol_compression = false

# Enable Easy Tier for volumes (boolean value)
#storwize_svc_vol_easytier = true

# The I/O group in which to allocate volumes. It can be a comma-separated list
# in which case the driver will select an io_group based on least number of
# volumes associated with the io_group. (string value)
#storwize_svc_vol_iogrp = 0

# Maximum number of seconds to wait for FlashCopy to be prepared. (integer
# value)
# Minimum value: 1
# Maximum value: 600
#storwize_svc_flashcopy_timeout = 120

# DEPRECATED: This option no longer has any affect. It is deprecated and will
# be removed in the next release. (boolean value)
# This option is deprecated for removal.
# Its value may be silently ignored in the future.
#storwize_svc_multihostmap_enabled = true

# Allow tenants to specify QOS on create (boolean value)
#storwize_svc_allow_tenant_qos = false

# If operating in stretched cluster mode, specify the name of the pool in which
# mirrored copies are stored.Example: "pool2" (string value)
#storwize_svc_stretched_cluster_partner = <None>

# Specifies secondary management IP or hostname to be used if san_ip is invalid
# or becomes inaccessible. (string value)
#storwize_san_secondary_ip = <None>

# Specifies that the volume not be formatted during creation. (boolean value)
#storwize_svc_vol_nofmtdisk = false

# Specifies the Storwize FlashCopy copy rate to be used when creating a full
# volume copy. The default is rate is 50, and the valid rates are 1-150.
# (integer value)
# Minimum value: 1
# Maximum value: 150
#storwize_svc_flashcopy_rate = 50

# Specifies the name of the pool in which mirrored copy is stored. Example:
# "pool2" (string value)
#storwize_svc_mirror_pool = <None>

# Specifies the name of the peer pool for hyperswap volume, the peer pool must
# exist on the other site. (string value)
#storwize_peer_pool = <None>

# Specifies the site information for host. One WWPN or multi WWPNs used in the
# host can be specified. For example:
# storwize_preferred_host_site=site1:wwpn1,site2:wwpn2&wwpn3 or
# storwize_preferred_host_site=site1:iqn1,site2:iqn2 (dict value)
#storwize_preferred_host_site =

# This defines an optional cycle period that applies to Global Mirror
# relationships with a cycling mode of multi. A Global Mirror relationship
# using the multi cycling_mode performs a complete cycle at most once each
# period. The default is 300 seconds, and the valid seconds are 60-86400.
# (integer value)
# Minimum value: 60
# Maximum value: 86400
#cycle_period_seconds = 300

# Connect with multipath (FC only; iSCSI multipath is controlled by Nova)
# (boolean value)
#storwize_svc_multipath_enabled = false

# Configure CHAP authentication for iSCSI connections (Default: Enabled)
# (boolean value)
#storwize_svc_iscsi_chap_enabled = true

# Name of the pool from which volumes are allocated (string value)
#infinidat_pool_name = <None>

# Protocol for transferring data between host and storage back-end. (string
# value)
# Possible values:
# iscsi - <No description provided>
# fc - <No description provided>
#infinidat_storage_protocol = fc

# List of names of network spaces to use for iSCSI connectivity (list value)
#infinidat_iscsi_netspaces =

# Specifies whether to turn on compression for newly created volumes. (boolean
# value)
#infinidat_use_compression = false

# K2 driver will calculate max_oversubscription_ratio on setting this option as
# True. (boolean value)
#auto_calc_max_oversubscription_ratio = false

# Whether or not our private network has unique FQDN on each initiator or not.
# For example networks with QA systems usually have multiple servers/VMs with
# the same FQDN.  When true this will create host entries on K2 using the FQDN,
# when false it will use the reversed IQN/WWNN. (boolean value)
#unique_fqdn_network = true

# Disabling iSCSI discovery (sendtargets) for multipath connections on K2
# driver. (boolean value)
#disable_discovery = false

# Pool or Vdisk name to use for volume creation. (string value)
#lenovo_backend_name = A

# linear (for VDisk) or virtual (for Pool). (string value)
# Possible values:
# linear - <No description provided>
# virtual - <No description provided>
#lenovo_backend_type = virtual

# Lenovo api interface protocol. (string value)
# Possible values:
# http - <No description provided>
# https - <No description provided>
#lenovo_api_protocol = https

# Whether to verify Lenovo array SSL certificate. (boolean value)
#lenovo_verify_certificate = false

# Lenovo array SSL certificate path. (string value)
#lenovo_verify_certificate_path = <None>

# List of comma-separated target iSCSI IP addresses. (list value)
#lenovo_iscsi_ips =

# Name for the VG that will contain exported volumes (string value)
#volume_group = cinder-volumes

# If >0, create LVs with multiple mirrors. Note that this requires lvm_mirrors
# + 2 PVs with available space (integer value)
#lvm_mirrors = 0

# Type of LVM volumes to deploy; (default, thin, or auto). Auto defaults to
# thin if thin is supported. (string value)
# Possible values:
# default - <No description provided>
# thin - <No description provided>
# auto - <No description provided>
#lvm_type = auto

# LVM conf file to use for the LVM driver in Cinder; this setting is ignored if
# the specified file does not exist (You can also specify 'None' to not use a
# conf file even if one exists). (string value)
#lvm_conf_file = /etc/cinder/lvm.conf

# Suppress leaked file descriptor warnings in LVM commands. (boolean value)
#lvm_suppress_fd_warnings = false

# The storage family type used on the storage system; valid values are
# ontap_cluster for using clustered Data ONTAP, or eseries for using E-Series.
# (string value)
# Possible values:
# ontap_cluster - <No description provided>
# eseries - <No description provided>
#netapp_storage_family = ontap_cluster

# The storage protocol to be used on the data path with the storage system.
# (string value)
# Possible values:
# iscsi - <No description provided>
# fc - <No description provided>
# nfs - <No description provided>
#netapp_storage_protocol = <None>

# The hostname (or IP address) for the storage system or proxy server. (string
# value)
#netapp_server_hostname = <None>

# The TCP port to use for communication with the storage system or proxy
# server. If not specified, Data ONTAP drivers will use 80 for HTTP and 443 for
# HTTPS; E-Series will use 8080 for HTTP and 8443 for HTTPS. (integer value)
#netapp_server_port = <None>

# The transport protocol used when communicating with the storage system or
# proxy server. (string value)
# Possible values:
# http - <No description provided>
# https - <No description provided>
#netapp_transport_type = http

# Administrative user account name used to access the storage system or proxy
# server. (string value)
#netapp_login = <None>

# Password for the administrative user account specified in the netapp_login
# option. (string value)
#netapp_password = <None>

# This option specifies the virtual storage server (Vserver) name on the
# storage cluster on which provisioning of block storage volumes should occur.
# (string value)
#netapp_vserver = <None>

# The quantity to be multiplied by the requested volume size to ensure enough
# space is available on the virtual storage server (Vserver) to fulfill the
# volume creation request.  Note: this option is deprecated and will be removed
# in favor of "reserved_percentage" in the Mitaka release. (floating point
# value)
#netapp_size_multiplier = 1.2

# This option determines if storage space is reserved for LUN allocation. If
# enabled, LUNs are thick provisioned. If space reservation is disabled,
# storage space is allocated on demand. (string value)
# Possible values:
# enabled - <No description provided>
# disabled - <No description provided>
#netapp_lun_space_reservation = enabled

# If the percentage of available space for an NFS share has dropped below the
# value specified by this option, the NFS image cache will be cleaned. (integer
# value)
#thres_avl_size_perc_start = 20

# When the percentage of available space on an NFS share has reached the
# percentage specified by this option, the driver will stop clearing files from
# the NFS image cache that have not been accessed in the last M minutes, where
# M is the value of the expiry_thres_minutes configuration option. (integer
# value)
#thres_avl_size_perc_stop = 60

# This option specifies the threshold for last access time for images in the
# NFS image cache. When a cache cleaning cycle begins, images in the cache that
# have not been accessed in the last M minutes, where M is the value of this
# parameter, will be deleted from the cache to create free space on the NFS
# share. (integer value)
#expiry_thres_minutes = 720

# This option is used to specify the path to the E-Series proxy application on
# a proxy server. The value is combined with the value of the
# netapp_transport_type, netapp_server_hostname, and netapp_server_port options
# to create the URL used by the driver to connect to the proxy application.
# (string value)
#netapp_webservice_path = /devmgr/v2

# This option is only utilized when the storage family is configured to
# eseries. This option is used to restrict provisioning to the specified
# volumes. Specify the value of this option to be a comma separated list of
# volume hostnames or IP addresses to be used for provisioning. (string
# value)
#netapp_volume_ips = <None>

# Password for the NetApp E-Series storage array. (string value)
#netapp_sa_password = <None>

# This option specifies whether the driver should allow operations that require
# multiple attachments to a volume. An example would be live migration of
# servers that have volumes attached. When enabled, this backend is limited to
# 256 total volumes in order to guarantee volumes can be accessed by more than
# one host. (boolean value)
#netapp_enable_multiattach = false

# This option specifies the path of the NetApp copy offload tool binary. Ensure
# that the binary has execute permissions set which allow the effective user of
# the cinder-volume process to execute the file. (string value)
#netapp_copyoffload_tool_path = <None>

# This option defines the type of operating system that will access a LUN
# exported from Data ONTAP; it is assigned to the LUN at the time it is
# created. (string value)
#netapp_lun_ostype = <None>

# This option defines the type of operating system for all initiators that can
# access a LUN. This information is used when mapping LUNs to individual hosts
# or groups of hosts. (string value)
#netapp_host_type = <None>

# This option is used to restrict provisioning to the specified pools. Specify
# the value of this option to be a regular expression which will be applied to
# the names of objects from the storage backend which represent pools in
# Cinder. This option is only utilized when the storage protocol is configured
# to use iSCSI or FC. (string value)
# Deprecated group/name - [backend_defaults]/netapp_volume_list
# Deprecated group/name - [backend_defaults]/netapp_storage_pools
#netapp_pool_name_search_pattern = (.+)

# Multi opt of dictionaries to represent the aggregate mapping between source
# and destination back ends when using whole back end replication. For every
# source aggregate associated with a cinder pool (NetApp FlexVol), you would
# need to specify the destination aggregate on the replication target device. A
# replication target device is configured with the configuration option
# replication_device. Specify this option as many times as you have replication
# devices. Each entry takes the standard dict config form:
# netapp_replication_aggregate_map =
# backend_id:<name_of_replication_device_section>,src_aggr_name1:dest_aggr_name1,src_aggr_name2:dest_aggr_name2,...
# (dict value)
#netapp_replication_aggregate_map = <None>

# The maximum time in seconds to wait for existing SnapMirror transfers to
# complete before aborting during a failover. (integer value)
# Minimum value: 0
#netapp_snapmirror_quiesce_timeout = 3600

# IP address of Nexenta SA (string value)
#nexenta_host =

# HTTP(S) port to connect to Nexenta REST API server. If it is equal zero, 8443
# for HTTPS and 8080 for HTTP is used (integer value)
#nexenta_rest_port = 0

# Use http or https for REST connection (default auto) (string value)
# Possible values:
# http - <No description provided>
# https - <No description provided>
# auto - <No description provided>
#nexenta_rest_protocol = auto

# Use secure HTTP for REST connection (default True) (boolean value)
#nexenta_use_https = true

# User name to connect to Nexenta SA (string value)
#nexenta_user = admin

# Password to connect to Nexenta SA (string value)
#nexenta_password = nexenta

# Nexenta target portal port (integer value)
#nexenta_iscsi_target_portal_port = 3260

# SA Pool that holds all volumes (string value)
#nexenta_volume = cinder

# IQN prefix for iSCSI targets (string value)
#nexenta_target_prefix = iqn.1986-03.com.sun:02:cinder-

# Prefix for iSCSI target groups on SA (string value)
#nexenta_target_group_prefix = cinder/

# Volume group for ns5 (string value)
#nexenta_volume_group = iscsi

# Compression value for new ZFS folders. (string value)
# Possible values:
# on - <No description provided>
# off - <No description provided>
# gzip - <No description provided>
# gzip-1 - <No description provided>
# gzip-2 - <No description provided>
# gzip-3 - <No description provided>
# gzip-4 - <No description provided>
# gzip-5 - <No description provided>
# gzip-6 - <No description provided>
# gzip-7 - <No description provided>
# gzip-8 - <No description provided>
# gzip-9 - <No description provided>
# lzjb - <No description provided>
# zle - <No description provided>
# lz4 - <No description provided>
#nexenta_dataset_compression = on

# Deduplication value for new ZFS folders. (string value)
# Possible values:
# on - <No description provided>
# off - <No description provided>
# sha256 - <No description provided>
# verify - <No description provided>
# sha256, verify - <No description provided>
#nexenta_dataset_dedup = off

# Human-readable description for the folder. (string value)
#nexenta_dataset_description =

# Block size for datasets (integer value)
#nexenta_blocksize = 4096

# Block size for datasets (integer value)
#nexenta_ns5_blocksize = 32

# Enables or disables the creation of sparse datasets (boolean value)
#nexenta_sparse = false

# File with the list of available nfs shares (string value)
#nexenta_shares_config = /etc/cinder/nfs_shares

# Base directory that contains NFS share mount points (string value)
#nexenta_mount_point_base = $state_path/mnt

# Enables or disables the creation of volumes as sparsed files that take no
# space. If disabled (False), volume is created as a regular file, which takes
# a long time. (boolean value)
#nexenta_sparsed_volumes = true

# If set True cache NexentaStor appliance volroot option value. (boolean value)
#nexenta_nms_cache_volroot = true

# Enable stream compression, level 1..9. 1 - gives best speed; 9 - gives best
# compression. (integer value)
#nexenta_rrmgr_compression = 0

# TCP Buffer size in KiloBytes. (integer value)
#nexenta_rrmgr_tcp_buf_size = 4096

# Number of TCP connections. (integer value)
#nexenta_rrmgr_connections = 2

# NexentaEdge logical path of directory to store symbolic links to NBDs (string
# value)
#nexenta_nbd_symlinks_dir = /dev/disk/by-path

# IP address of NexentaEdge management REST API endpoint (string value)
#nexenta_rest_address =

# User name to connect to NexentaEdge (string value)
#nexenta_rest_user = admin

# Password to connect to NexentaEdge (string value)
#nexenta_rest_password = nexenta

# NexentaEdge logical path of bucket for LUNs (string value)
#nexenta_lun_container =

# NexentaEdge iSCSI service name (string value)
#nexenta_iscsi_service =

# NexentaEdge iSCSI Gateway client address for non-VIP service (string value)
#nexenta_client_address =

# NexentaEdge iSCSI LUN object chunk size (integer value)
#nexenta_chunksize = 32768

# File with the list of available NFS shares. (string value)
#nfs_shares_config = /etc/cinder/nfs_shares

# Create volumes as sparsed files which take no space. If set to False volume
# is created as regular file. In such case volume creation takes a lot of time.
# (boolean value)
#nfs_sparsed_volumes = true

# Create volumes as QCOW2 files rather than raw files. (boolean value)
#nfs_qcow2_volumes = false

# Base dir containing mount points for NFS shares. (string value)
#nfs_mount_point_base = $state_path/mnt

# Mount options passed to the NFS client. See section of the NFS man page for
# details. (string value)
#nfs_mount_options = <None>

# The number of attempts to mount NFS shares before raising an error.  At least
# one attempt will be made to mount an NFS share, regardless of the value
# specified. (integer value)
#nfs_mount_attempts = 3

# Enable support for snapshots on the NFS driver. Platforms using libvirt
# <1.2.7 will encounter issues with this feature. (boolean value)
#nfs_snapshot_support = false

# Nimble Controller pool name (string value)
#nimble_pool_name = default

# Nimble Subnet Label (string value)
#nimble_subnet_label = *

# Whether to verify Nimble SSL Certificate (boolean value)
#nimble_verify_certificate = false

# Path to Nimble Array SSL certificate (string value)
#nimble_verify_cert_path = <None>

# DPL pool uuid in which DPL volumes are stored. (string value)
#dpl_pool =

# DPL port number. (port value)
# Minimum value: 0
# Maximum value: 65535
#dpl_port = 8357

# REST API authorization token. (string value)
#pure_api_token = <None>

# Automatically determine an oversubscription ratio based on the current total
# data reduction values. If used this calculated value will override the
# max_over_subscription_ratio config option. (boolean value)
#pure_automatic_max_oversubscription_ratio = true

# Snapshot replication interval in seconds. (integer value)
#pure_replica_interval_default = 3600

# Retain all snapshots on target for this time (in seconds.) (integer value)
#pure_replica_retention_short_term_default = 14400

# Retain how many snapshots for each day. (integer value)
#pure_replica_retention_long_term_per_day_default = 3

# Retain snapshots per day on target for this time (in days.) (integer value)
#pure_replica_retention_long_term_default = 7

# When enabled, all Pure volumes, snapshots, and protection groups will be
# eradicated at the time of deletion in Cinder. Data will NOT be recoverable
# after a delete with this set to True! When disabled, volumes and snapshots
# will go into pending eradication state and can be recovered. (boolean value)
#pure_eradicate_on_delete = false

# The URL to management QNAP Storage. Driver does not support IPv6 address in
# URL. (uri value)
#qnap_management_url = <None>

# The pool name in the QNAP Storage (string value)
#qnap_poolname = <None>

# Communication protocol to access QNAP storage (string value)
#qnap_storage_protocol = iscsi

# Quobyte URL to the Quobyte volume using e.g. a DNS SRV record (preferred) or
# a host list (alternatively) like quobyte://<DIR host1>, <DIR host2>/<volume
# name> (string value)
#quobyte_volume_url = <None>

# Path to a Quobyte Client configuration file. (string value)
#quobyte_client_cfg = <None>

# Create volumes as sparse files which take no space. If set to False, volume
# is created as regular file. (boolean value)
#quobyte_sparsed_volumes = true

# Create volumes as QCOW2 files rather than raw files. (boolean value)
#quobyte_qcow2_volumes = true

# Base dir containing the mount point for the Quobyte volume. (string value)
#quobyte_mount_point_base = $state_path/mnt

# Create a cache of volumes from merged snapshots to speed up creation of
# multiple volumes from a single snapshot. (boolean value)
#quobyte_volume_from_snapshot_cache = false

# The name of ceph cluster (string value)
#rbd_cluster_name = ceph

# The RADOS pool where rbd volumes are stored (string value)
#rbd_pool = rbd

# The RADOS client name for accessing rbd volumes - only set when using cephx
# authentication (string value)
#rbd_user = <None>

# Path to the ceph configuration file (string value)
#rbd_ceph_conf =

# Path to the ceph keyring file (string value)
#rbd_keyring_conf =

# Flatten volumes created from snapshots to remove dependency from volume to
# snapshot (boolean value)
#rbd_flatten_volume_from_snapshot = false

# The libvirt uuid of the secret for the rbd_user volumes (string value)
#rbd_secret_uuid = <None>

# Maximum number of nested volume clones that are taken before a flatten
# occurs. Set to 0 to disable cloning. (integer value)
#rbd_max_clone_depth = 5

# Volumes will be chunked into objects of this size (in megabytes). (integer
# value)
#rbd_store_chunk_size = 4

# Timeout value (in seconds) used when connecting to ceph cluster. If value <
# 0, no timeout is set and default librados value is used. (integer value)
#rados_connect_timeout = -1

# Number of retries if connection to ceph cluster failed. (integer value)
#rados_connection_retries = 3

# Interval value (in seconds) between connection retries to ceph cluster.
# (integer value)
#rados_connection_interval = 5

# Timeout value (in seconds) used when connecting to ceph cluster to do a
# demotion/promotion of volumes. If value < 0, no timeout is set and default
# librados value is used. (integer value)
#replication_connect_timeout = 5

# Set to True for driver to report total capacity as a dynamic value -used +
# current free- and to False to report a static value -quota max bytes if
# defined and global size of cluster if not. (boolean value)
#report_dynamic_total_capacity = true

# Set to True if the pool is used exclusively by Cinder. On exclusive use
# driver won't query images' provisioned size as they will match the value
# calculated by the Cinder core code for allocated_capacity_gb. This reduces
# the load on the Ceph cluster as well as on the volume service. (boolean
# value)
#rbd_exclusive_cinder_pool = false

# IP address or Hostname of NAS system. (string value)
#nas_host =

# User name to connect to NAS system. (string value)
#nas_login = admin

# Password to connect to NAS system. (string value)
#nas_password =

# SSH port to use to connect to NAS system. (port value)
# Minimum value: 0
# Maximum value: 65535
#nas_ssh_port = 22

# Filename of private key to use for SSH authentication. (string value)
#nas_private_key =

# Allow network-attached storage systems to operate in a secure environment
# where root level access is not permitted. If set to False, access is as the
# root user and insecure. If set to True, access is not as root. If set to
# auto, a check is done to determine if this is a new installation: True is
# used if so, otherwise False. Default is auto. (string value)
#nas_secure_file_operations = auto

# Set more secure file permissions on network-attached storage volume files to
# restrict broad other/world access. If set to False, volumes are created with
# open permissions. If set to True, volumes are created with permissions for
# the cinder user and group (660). If set to auto, a check is done to determine
# if this is a new installation: True is used if so, otherwise False. Default
# is auto. (string value)
#nas_secure_file_permissions = auto

# Path to the share to use for storing Cinder volumes. For example:
# "/srv/export1" for an NFS server export available at 10.0.5.10:/srv/export1 .
# (string value)
#nas_share_path =

# Options used to mount the storage backend file system where Cinder volumes
# are stored. (string value)
#nas_mount_options = <None>

# Provisioning type that will be used when creating volumes. (string value)
# Possible values:
# thin - <No description provided>
# thick - <No description provided>
#nas_volume_prov_type = thin

# Pool or Vdisk name to use for volume creation. (string value)
#hpmsa_backend_name = A

# linear (for Vdisk) or virtual (for Pool). (string value)
# Possible values:
# linear - <No description provided>
# virtual - <No description provided>
#hpmsa_backend_type = virtual

# HPMSA API interface protocol. (string value)
# Possible values:
# http - <No description provided>
# https - <No description provided>
#hpmsa_api_protocol = https

# Whether to verify HPMSA array SSL certificate. (boolean value)
#hpmsa_verify_certificate = false

# HPMSA array SSL certificate path. (string value)
#hpmsa_verify_certificate_path = <None>

# List of comma-separated target iSCSI IP addresses. (list value)
#hpmsa_iscsi_ips =

# Use thin provisioning for SAN volumes? (boolean value)
#san_thin_provision = true

# IP address of SAN volume (string value)
#san_ip =

# Username for SAN volume (string value)
#san_login = admin

# Password for SAN volume (string value)
#san_password =

# Filename of private key to use for SSH authentication (string value)
#san_private_key =

# Cluster name to use for creating volumes (string value)
#san_clustername =

# SSH port to use with SAN (port value)
# Minimum value: 0
# Maximum value: 65535
#san_ssh_port = 22

# Port to use to access the SAN API (port value)
# Minimum value: 0
# Maximum value: 65535
#san_api_port = <None>

# Execute commands locally instead of over SSH; use if the volume service is
# running on the SAN device (boolean value)
#san_is_local = false

# SSH connection timeout in seconds (integer value)
#ssh_conn_timeout = 30

# Minimum ssh connections in the pool (integer value)
#ssh_min_pool_conn = 1

# Maximum ssh connections in the pool (integer value)
#ssh_max_pool_conn = 5

# IP address of sheep daemon. (string value)
#sheepdog_store_address = 127.0.0.1

# Port of sheep daemon. (port value)
# Minimum value: 0
# Maximum value: 65535
#sheepdog_store_port = 7000

# Set 512 byte emulation on volume creation;  (boolean value)
#sf_emulate_512 = true

# Allow tenants to specify QOS on create (boolean value)
#sf_allow_tenant_qos = false

# Create SolidFire accounts with this prefix. Any string can be used here, but
# the string "hostname" is special and will create a prefix using the cinder
# node hostname (previous default behavior).  The default is NO prefix. (string
# value)
#sf_account_prefix = <None>

# Create SolidFire volumes with this prefix. Volume names are of the form
# <sf_volume_prefix><cinder-volume-id>.  The default is to use a prefix of
# 'UUID-'. (string value)
#sf_volume_prefix = UUID-

# Account name on the SolidFire Cluster to use as owner of template/cache
# volumes (created if does not exist). (string value)
#sf_template_account_name = openstack-vtemplate

# DEPRECATED: This option is deprecated and will be removed in the next
# OpenStack release.  Please use the general cinder image-caching feature
# instead. (boolean value)
# This option is deprecated for removal.
# Its value may be silently ignored in the future.
# Reason: The Cinder caching feature should be used rather than this driver
# specific implementation.
#sf_allow_template_caching = false

# Overrides default cluster SVIP with the one specified. This is required or
# deployments that have implemented the use of VLANs for iSCSI networks in
# their cloud. (string value)
#sf_svip = <None>

# SolidFire API port. Useful if the device api is behind a proxy on a different
# port. (port value)
# Minimum value: 0
# Maximum value: 65535
#sf_api_port = 443

# Utilize volume access groups on a per-tenant basis. (boolean value)
#sf_enable_vag = false

# Volume on Synology storage to be used for creating lun. (string value)
#synology_pool_name =

# Management port for Synology storage. (port value)
# Minimum value: 0
# Maximum value: 65535
#synology_admin_port = 5000

# Administrator of Synology storage. (string value)
#synology_username = admin

# Password of administrator for logging in Synology storage. (string value)
#synology_password =

# Do certificate validation or not if $driver_use_ssl is True (boolean value)
#synology_ssl_verify = true

# One time password of administrator for logging in Synology storage if OTP is
# enabled. (string value)
#synology_one_time_pass = <None>

# Device id for skip one time password check for logging in Synology storage if
# OTP is enabled. (string value)
#synology_device_id = <None>

# The hostname (or IP address) for the storage system (string value)
#tintri_server_hostname = <None>

# User name for the storage system (string value)
#tintri_server_username = <None>

# Password for the storage system (string value)
#tintri_server_password = <None>

# API version for the storage system (string value)
#tintri_api_version = v310

# Delete unused image snapshots older than mentioned days (integer value)
#tintri_image_cache_expiry_days = 30

# Path to image nfs shares file (string value)
#tintri_image_shares_config = <None>

# IP address for connecting to VMware vCenter server. (string value)
#vmware_host_ip = <None>

# Port number for connecting to VMware vCenter server. (port value)
# Minimum value: 0
# Maximum value: 65535
#vmware_host_port = 443

# Username for authenticating with VMware vCenter server. (string value)
#vmware_host_username = <None>

# Password for authenticating with VMware vCenter server. (string value)
#vmware_host_password = <None>

# Optional VIM service WSDL Location e.g http://<server>/vimService.wsdl.
# Optional over-ride to default location for bug work-arounds. (string value)
#vmware_wsdl_location = <None>

# Number of times VMware vCenter server API must be retried upon connection
# related issues. (integer value)
#vmware_api_retry_count = 10

# The interval (in seconds) for polling remote tasks invoked on VMware vCenter
# server. (floating point value)
#vmware_task_poll_interval = 2.0

# Name of the vCenter inventory folder that will contain Cinder volumes. This
# folder will be created under "OpenStack/<project_folder>", where
# project_folder is of format "Project (<volume_project_id>)". (string value)
#vmware_volume_folder = Volumes

# Timeout in seconds for VMDK volume transfer between Cinder and Glance.
# (integer value)
#vmware_image_transfer_timeout_secs = 7200

# Max number of objects to be retrieved per batch. Query results will be
# obtained in batches from the server and not in one shot. Server may still
# limit the count to something less than the configured value. (integer value)
#vmware_max_objects_retrieval = 100

# Optional string specifying the VMware vCenter server version. The driver
# attempts to retrieve the version from VMware vCenter server. Set this
# configuration only if you want to override the vCenter server version.
# (string value)
#vmware_host_version = <None>

# Directory where virtual disks are stored during volume backup and restore.
# (string value)
#vmware_tmp_dir = /tmp

# CA bundle file to use in verifying the vCenter server certificate. (string
# value)
#vmware_ca_file = <None>

# If true, the vCenter server certificate is not verified. If false, then the
# default CA truststore is used for verification. This option is ignored if
# "vmware_ca_file" is set. (boolean value)
#vmware_insecure = false

# Name of a vCenter compute cluster where volumes should be created. (multi
# valued)
#vmware_cluster_name =

# Maximum number of connections in http connection pool. (integer value)
#vmware_connection_pool_size = 10

# Default adapter type to be used for attaching volumes. (string value)
# Possible values:
# lsiLogic - <No description provided>
# busLogic - <No description provided>
# lsiLogicsas - <No description provided>
# paraVirtual - <No description provided>
# ide - <No description provided>
#vmware_adapter_type = lsiLogic

# Volume snapshot format in vCenter server. (string value)
# Possible values:
# template - <No description provided>
# COW - <No description provided>
#vmware_snapshot_format = template

# If true, the backend volume in vCenter server is created lazily when the
# volume is created without any source. The backend volume is created when the
# volume is attached, uploaded to image service or during backup. (boolean
# value)
#vmware_lazy_create = true

# Regular expression pattern to match the name of datastores where backend
# volumes are created. (string value)
#vmware_datastore_regex = <None>

# File with the list of available vzstorage shares. (string value)
#vzstorage_shares_config = /etc/cinder/vzstorage_shares

# Create volumes as sparsed files which take no space rather than regular files
# when using raw format, in which case volume creation takes lot of time.
# (boolean value)
#vzstorage_sparsed_volumes = true

# Percent of ACTUAL usage of the underlying volume before no new volumes can be
# allocated to the volume destination. (floating point value)
#vzstorage_used_ratio = 0.95

# Base dir containing mount points for vzstorage shares. (string value)
#vzstorage_mount_point_base = $state_path/mnt

# Mount options passed to the vzstorage client. See section of the pstorage-
# mount man page for details. (list value)
#vzstorage_mount_options = <None>

# Default format that will be used when creating volumes if no volume format is
# specified. (string value)
#vzstorage_default_volume_format = raw

# Path to store VHD backed volumes (string value)
#windows_iscsi_lun_path = C:\iSCSIVirtualDisks

# File with the list of available smbfs shares. (string value)
#smbfs_shares_config = C:\OpenStack\smbfs_shares.txt

# Default format that will be used when creating volumes if no volume format is
# specified. (string value)
# Possible values:
# vhd - <No description provided>
# vhdx - <No description provided>
#smbfs_default_volume_format = vhd

# Base dir containing mount points for smbfs shares. (string value)
#smbfs_mount_point_base = C:\OpenStack\_mnt

# Mappings between share locations and pool names. If not specified, the share
# names will be used as pool names. Example:
# //addr/share:pool_name,//addr/share2:pool_name2 (dict value)
#smbfs_pool_mappings =

# VPSA - Use ISER instead of iSCSI (boolean value)
#zadara_use_iser = true

# VPSA - Management Host name or IP address (string value)
#zadara_vpsa_host = <None>

# VPSA - Port number (port value)
# Minimum value: 0
# Maximum value: 65535
#zadara_vpsa_port = <None>

# VPSA - Use SSL connection (boolean value)
#zadara_vpsa_use_ssl = false

# If set to True the http client will validate the SSL certificate of the VPSA
# endpoint. (boolean value)
#zadara_ssl_cert_verify = true

# VPSA - Username (string value)
#zadara_user = <None>

# VPSA - Password (string value)
#zadara_password = <None>

# VPSA - Storage Pool assigned for volumes (string value)
#zadara_vpsa_poolname = <None>

# VPSA - Default encryption policy for volumes (boolean value)
#zadara_vol_encrypt = false

# VPSA - Default template for VPSA volume names (string value)
#zadara_vol_name_template = OS_%s

# VPSA - Attach snapshot policy for volumes (boolean value)
#zadara_default_snap_policy = false

# Storage pool name. (string value)
#zfssa_pool = <None>

# Project name. (string value)
#zfssa_project = <None>

# Block size. (string value)
# Possible values:
# 512 - <No description provided>
# 1k - <No description provided>
# 2k - <No description provided>
# 4k - <No description provided>
# 8k - <No description provided>
# 16k - <No description provided>
# 32k - <No description provided>
# 64k - <No description provided>
# 128k - <No description provided>
#zfssa_lun_volblocksize = 8k

# Flag to enable sparse (thin-provisioned): True, False. (boolean value)
#zfssa_lun_sparse = false

# Data compression. (string value)
# Possible values:
# off - <No description provided>
# lzjb - <No description provided>
# gzip-2 - <No description provided>
# gzip - <No description provided>
# gzip-9 - <No description provided>
#zfssa_lun_compression = off

# Synchronous write bias. (string value)
# Possible values:
# latency - <No description provided>
# throughput - <No description provided>
#zfssa_lun_logbias = latency

# iSCSI initiator group. (string value)
#zfssa_initiator_group =

# iSCSI initiator IQNs. (comma separated) (string value)
#zfssa_initiator =

# iSCSI initiator CHAP user (name). (string value)
#zfssa_initiator_user =

# Secret of the iSCSI initiator CHAP user. (string value)
#zfssa_initiator_password =

# iSCSI initiators configuration. (string value)
#zfssa_initiator_config =

# iSCSI target group name. (string value)
#zfssa_target_group = tgt-grp

# iSCSI target CHAP user (name). (string value)
#zfssa_target_user =

# Secret of the iSCSI target CHAP user. (string value)
#zfssa_target_password =

# iSCSI target portal (Data-IP:Port, w.x.y.z:3260). (string value)
#zfssa_target_portal = <None>

# Network interfaces of iSCSI targets. (comma separated) (string value)
#zfssa_target_interfaces = <None>

# REST connection timeout. (seconds) (integer value)
#zfssa_rest_timeout = <None>

# IP address used for replication data. (maybe the same as data ip) (string
# value)
#zfssa_replication_ip =

# Flag to enable local caching: True, False. (boolean value)
#zfssa_enable_local_cache = true

# Name of ZFSSA project where cache volumes are stored. (string value)
#zfssa_cache_project = os-cinder-cache

# Driver policy for volume manage. (string value)
# Possible values:
# loose - <No description provided>
# strict - <No description provided>
#zfssa_manage_policy = loose

# Data path IP address (string value)
#zfssa_data_ip = <None>

# HTTPS port number (string value)
#zfssa_https_port = 443

# Options to be passed while mounting share over nfs (string value)
#zfssa_nfs_mount_options =

# Storage pool name. (string value)
#zfssa_nfs_pool =

# Project name. (string value)
#zfssa_nfs_project = NFSProject

# Share name. (string value)
#zfssa_nfs_share = nfs_share

# Data compression. (string value)
# Possible values:
# off - <No description provided>
# lzjb - <No description provided>
# gzip-2 - <No description provided>
# gzip - <No description provided>
# gzip-9 - <No description provided>
#zfssa_nfs_share_compression = off

# Synchronous write bias-latency, throughput. (string value)
# Possible values:
# latency - <No description provided>
# throughput - <No description provided>
#zfssa_nfs_share_logbias = latency

# Name of directory inside zfssa_nfs_share where cache volumes are stored.
# (string value)
#zfssa_cache_directory = os-cinder-cache

# Driver to use for volume creation (string value)
#volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver

# User defined capabilities, a JSON formatted string specifying key/value
# pairs. The key/value pairs can be used by the CapabilitiesFilter to select
# between backends when requests specify volume types. For example, specifying
# a service level or the geographical location of a backend, then creating a
# volume type to allow the user to select by these different properties.
# (string value)
#extra_capabilities = {}

# Suppress requests library SSL certificate warnings. (boolean value)
#suppress_requests_ssl_warnings = false

# Size of the native threads pool for the backend.  Increase for backends that
# heavily rely on this, like the RBD driver. (integer value)
# Minimum value: 20
#backend_native_threads_pool_size = 20


[coordination]

#
# From cinder
#

# The backend URL to use for distributed coordination. (string value)
#backend_url = file://$state_path


[fc-zone-manager]

#
# From cinder
#

# South bound connector for zoning operation (string value)
#brcd_sb_connector = HTTP

# Southbound connector for zoning operation (string value)
#cisco_sb_connector = cinder.zonemanager.drivers.cisco.cisco_fc_zone_client_cli.CiscoFCZoneClientCLI

# FC Zone Driver responsible for zone management (string value)
#zone_driver = cinder.zonemanager.drivers.brocade.brcd_fc_zone_driver.BrcdFCZoneDriver

# Zoning policy configured by user; valid values include "initiator-target" or
# "initiator" (string value)
#zoning_policy = initiator-target

# Comma separated list of Fibre Channel fabric names. This list of names is
# used to retrieve other SAN credentials for connecting to each SAN fabric
# (string value)
#fc_fabric_names = <None>

# FC SAN Lookup Service (string value)
#fc_san_lookup_service = cinder.zonemanager.drivers.brocade.brcd_fc_san_lookup_service.BrcdFCSanLookupService

# Set this to True when you want to allow an unsupported zone manager driver to
# start.  Drivers that haven't maintained a working CI system and testing are
# marked as unsupported until CI is working again.  This also marks a driver as
# deprecated and may be removed in the next release. (boolean value)
#enable_unsupported_driver = false


[nova]

#
# From cinder
#

# Name of nova region to use. Useful if keystone manages more than one region.
# (string value)
#region_name = <None>

# Type of the nova endpoint to use.  This endpoint will be looked up in the
# keystone catalog and should be one of public, internal or admin. (string
# value)
# Possible values:
# public - <No description provided>
# admin - <No description provided>
# internal - <No description provided>
#interface = public

# The authentication URL for the nova connection when using the current users
# token (string value)
#token_auth_url = <None>

# PEM encoded Certificate Authority to use when verifying HTTPs connections.
# (string value)
#cafile = <None>

# PEM encoded client certificate cert file (string value)
#certfile = <None>

# PEM encoded client certificate key file (string value)
#keyfile = <None>

# Verify HTTPS connections. (boolean value)
#insecure = false

# Timeout value for http requests (integer value)
#timeout = <None>

# Authentication type to load (string value)
# Deprecated group/name - [nova]/auth_plugin
#auth_type = <None>

# Config Section from which to load plugin specific options (string value)
#auth_section = <None>


[service_user]

#
# From cinder
#

#
# When True, if sending a user token to an REST API, also send a service token.
#  (boolean value)
#send_service_user_token = false

{%- if volume.get('barbican', {}).get('enabled', False) %}
{%- set _data = volume.identity %}
[barbican]
{%- include "oslo_templates/files/queens/castellan/_barbican.conf" %}
{%- endif %}


[key_manager]
{%- if volume.get('key_manager', {}).backend is defined %}
    {%- set key_backend = volume.key_manager.backend %}
{%- elif volume.get('barbican', {}).get('enabled', False) %}
    {%- set key_backend = 'barbican' %}
{%- endif %}

{%- set _data = {} %}
{%- do _data.update(volume.identity) %}
{%- do _data.update(volume.get('barbican', {})) %}
{%- if 'cacert_file' not in _data.keys() %}{% do _data.update({'cacert_file': volume.cacert_file}) %}{% endif %}
#
# From castellan.config
#

# Specify the key manager implementation. Options are "barbican" and "vault".
# Default is  "barbican". Will support the  values earlier set using
# [key_manager]/api_class for some time. (string value)
# Deprecated group/name - [key_manager]/api_class
#backend = barbican
{%- if key_backend is defined %}
backend = {{ key_backend }}
{%- endif %}
{%- include "oslo_templates/files/queens/keystoneauth/_type_"+ _data.get('auth_type','password') +".conf" %}


[keystone_authtoken]
{%- set _data = volume.get('identity', {}) %}
{%- if 'cacert_file' not in _data.keys() %}{% do _data.update({'cacert_file': volume.cacert_file}) %}{% endif %}
{%- set auth_type = _data.get('auth_type', 'password') %}
{%- if volume.get('cache',{}).members is defined and 'cache' not in _data.keys() %}
{% do _data.update({'cache': volume.cache}) %}
{%- endif %}
{%- include "oslo_templates/files/queens/keystonemiddleware/_auth_token.conf" %}
{%- include "oslo_templates/files/queens/keystoneauth/_type_" + auth_type + ".conf" %}

[profiler]
{%- if volume.profiler is defined %}
{%- set _data = volume.profiler %}
{%- include "oslo_templates/files/queens/oslo/_osprofiler.conf" %}
{%- endif %}

[oslo_concurrency]
{%- if volume.concurrency is defined %}
{%- set _data = volume.concurrency %}
{%- include "oslo_templates/files/queens/oslo/_concurrency.conf" %}
{%- endif %}

[database]
{%- set _data = volume.database %}
{%- if _data.ssl is defined and 'cacert_file' not in _data.get('ssl', {}).keys() %}{% do _data['ssl'].update({'cacert_file': volume.cacert_file}) %}{% endif %}
{%- include "oslo_templates/files/queens/oslo/_database.conf" %}

[oslo_messaging_notifications]
{%- set _data = volume.notification %}
{%- include "oslo_templates/files/queens/oslo/messaging/_notifications.conf" %}

{%- if volume.message_queue is defined %}
{%- set _data = volume.message_queue %}
{%- if _data.engine == 'rabbitmq' %}
    {%- set messaging_engine = 'rabbit' %}
{%- else %}
    {%- set messaging_engine = _data.engine %}
{%- endif %}
[oslo_messaging_{{ messaging_engine }}]
{%- if _data.ssl is defined and 'cacert_file' not in _data.get('ssl', {}).keys() %}{% do _data['ssl'].update({'cacert_file': volume.cacert_file}) %}{% endif %}
{%- include "oslo_templates/files/queens/oslo/messaging/_" + messaging_engine + ".conf" %}
{%- endif %}

[oslo_middleware]
{%- set _data = volume %}
{%- include "oslo_templates/files/queens/oslo/_middleware.conf" %}

[oslo_policy]
{%- if volume.policy is defined %}
{%- set _data = volume.policy %}
{%- include "oslo_templates/files/queens/oslo/_policy.conf" %}
{%- endif %}

[oslo_reports]
{%- if volume.reports is defined %}
{%- set _data = volume.reports %}
{%- include "oslo_templates/files/queens/oslo/_reports.conf" %}
{%- endif %}
