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

#
# From cinder
#

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

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

{%- if controller.logging is defined %}
{%- set _data = controller.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 controller.query_volume_filters is defined %}
query_volume_filters = {{ controller.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
{%- if controller.backup.engine != None %}
{%- set _data = controller %}
{%- set backup_backend_fragment = "cinder/files/backup_backend/_" + controller.backup.engine + ".conf" %}
{%- include backup_backend_fragment %}
{%- endif %}


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

# 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 = {{ controller.glance.get('protocol','http') }}://{{ controller.glance.host }}:{{ controller.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 controller.glance.get('protocol','http') == 'https' %}
glance_ca_certificates_file = {{ controller.glance.get('cacert_file', controller.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>
{%- if controller.glance.request_timeout is defined %}
glance_request_timeout = {{ controller.glance.request_timeout }}
{%- endif %}

# 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 controller.storage_availability_zone is defined %}
storage_availability_zone={{controller.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 controller.default_availability_zone is defined %}
default_availability_zone={{controller.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 = {{ controller.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 controller.backend is defined %}
default_volume_type={{ controller.default_volume_type }}

enabled_backends={% for backend_name, backend in controller.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
{%- if controller.image_conversion_dir is defined %}
image_conversion_dir = {{ controller.image_conversion_dir }}
{%- endif %}

# 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
{%- if controller.scheduler_default_filters is defined %}
scheduler_default_filters = {{ controller.scheduler_default_filters }}
{%- endif %}

# 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 = {{ controller.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 = {{ controller.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 = {{ controller.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 = {{ controller.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 = {{ controller.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 controller.backend is defined %}

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

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

{%- endfor %}

{%- endif %}


[backend_defaults]

{%- if controller.nas_secure_file_permissions is defined %}
nas_secure_file_permissions={{ controller.nas_secure_file_permissions }}
{%- endif %}
{%- if controller.nas_secure_file_operations is defined %}
nas_secure_file_operations={{ controller.nas_secure_file_operations }}
{%- endif %}
{%- if controller.cinder_internal_tenant_user_id is defined %}
cinder_internal_tenant_user_id={{ controller.cinder_internal_tenant_user_id }}
{%- endif %}
{%- if controller.cinder_internal_tenant_project_id is defined %}
cinder_internal_tenant_project_id={{ controller.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 controller (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_controller = 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
# controllers. Specify the value of this option to be a comma separated list of
# controller hostnames or IP addresses to be used for provisioning. (string
# value)
#netapp_controller_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 controller (string value)
#san_ip =

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

# Password for SAN controller (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 controller.get('service_user', {}).get('enabled', True) %}
send_service_user_token = True
{%- set _data = {} %}
{%- do _data.update(controller.get('identity', {})) %}
{%- do _data.update(controller.get('service_user', {})) %}
{%- if not _data.port == '5000' %}{% do _data.update({'port': '5000'}) %}{% endif %}
{%- if 'cacert_file' not in _data.keys() %}{% do _data.update({'cacert_file': controller.cacert_file}) %}{% endif %}
{%- include "oslo_templates/files/queens/keystoneauth/_type_"+ _data.get('auth_type','password') +".conf" %}
{%- endif %}

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


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

{%- set _data = {} %}
{%- do _data.update(controller.identity) %}
{%- do _data.update(controller.get('barbican', {})) %}
{%- if 'cacert_file' not in _data.keys() %}{% do _data.update({'cacert_file': controller.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 = controller.get('identity', {}) %}
{%- if 'cacert_file' not in _data.keys() %}{% do _data.update({'cacert_file': controller.cacert_file}) %}{% endif %}
{%- set auth_type = _data.get('auth_type', 'password') %}
{%- if controller.get('cache',{}).members is defined and 'cache' not in _data.keys() %}
{% do _data.update({'cache': controller.cache}) %}
{%- endif %}
{%- include "oslo_templates/files/queens/keystonemiddleware/_auth_token.conf" %}
{%- include "oslo_templates/files/queens/keystoneauth/_type_" + auth_type + ".conf" %}

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

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

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

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

{%- if controller.message_queue is defined %}
{%- set _data = controller.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': controller.cacert_file}) %}{% endif %}
{%- include "oslo_templates/files/queens/oslo/messaging/_" + messaging_engine + ".conf" %}
{%- endif %}

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

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

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

[cache]
{%- if controller.cache is defined %}
{%- set _data = controller.cache %}
{%- include "oslo_templates/files/queens/oslo/_cache.conf" %}
{%- endif %}

{%- if controller.configmap is defined %}
{%- set _data = controller.configmap %}
{%- include "oslo_templates/files/configmap/configmap.conf" %}
{%- endif %}
