# Glance Sample Configuration

The following are sample configuration files for all Glance services and utilities. These are generated from code and reflect the current state of code in the Glance repository.

## Sample configuration for Glance API

This sample configuration can also be viewed in glance-api.conf.sample.

    [DEFAULT]

    #
    # From glance.api
    #

    #
    # Allow limited access to unauthenticated users.
    #
    # Assign a boolean to determine API access for unauthenticated
    # users. When set to False, the API cannot be accessed by
    # unauthenticated users. When set to True, unauthenticated users can
    # access the API with read-only privileges. This however only applies
    # when using ContextMiddleware.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * None
    #
    #  (boolean value)
    #allow_anonymous_access = false

    #
    # Limit the request ID length.
    #
    # Provide  an integer value to limit the length of the request ID to
    # the specified length. The default value is 64. Users can change this
    # to any ineteger value between 0 and 16384 however keeping in mind that
    # a larger value may flood the logs.
    #
    # Possible values:
    #     * Integer value between 0 and 16384
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 0
    #max_request_id_length = 64

    #
    # Public url endpoint to use for Glance versions response.
    #
    # This is the public url endpoint that will appear in the Glance
    # "versions" response. If no value is specified, the endpoint that is
    # displayed in the version's response is that of the host running the
    # API service. Change the endpoint to represent the proxy URL if the
    # API service is running behind a proxy. If the service is running
    # behind a load balancer, add the load balancer's URL for this value.
    #
    # Possible values:
    #     * None
    #     * Proxy URL
    #     * Load balancer URL
    #
    # Related options:
    #     * None
    #
    #  (string value)
    #public_endpoint = <None>

    #
    # Secure hashing algorithm used for computing the 'os_hash_value' property.
    #
    # This option configures the Glance "multihash", which consists of two
    # image properties: the 'os_hash_algo' and the 'os_hash_value'.  The
    # 'os_hash_algo' will be populated by the value of this configuration
    # option, and the 'os_hash_value' will be populated by the hexdigest computed
    # when the algorithm is applied to the uploaded or imported image data.
    #
    # The value must be a valid secure hash algorithm name recognized by the
    # python 'hashlib' library.  You can determine what these are by examining
    # the 'hashlib.algorithms_available' data member of the version of the
    # library being used in your Glance installation.  For interoperability
    # purposes, however, we recommend that you use the set of secure hash
    # names supplied by the 'hashlib.algorithms_guaranteed' data member because
    # those algorithms are guaranteed to be supported by the 'hashlib' library
    # on all platforms.  Thus, any image consumer using 'hashlib' locally should
    # be able to verify the 'os_hash_value' of the image.
    #
    # The default value of 'sha512' is a performant secure hash algorithm.
    #
    # If this option is misconfigured, any attempts to store image data will fail.
    # For that reason, we recommend using the default value.
    #
    # Possible values:
    #     * Any secure hash algorithm name recognized by the Python 'hashlib'
    #       library
    #
    # Related options:
    #     * None
    #
    #  (string value)
    #hashing_algorithm = sha512

    #
    # Maximum number of image members per image.
    #
    # This limits the maximum of users an image can be shared with. Any negative
    # value is interpreted as unlimited.
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    #image_member_quota = 128

    #
    # Maximum number of properties allowed on an image.
    #
    # This enforces an upper limit on the number of additional properties an image
    # can have. Any negative value is interpreted as unlimited.
    #
    #  (integer value)
    #image_property_quota = 128

    #
    # Maximum number of tags allowed on an image.
    #
    # Any negative value is interpreted as unlimited.
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    #image_tag_quota = 128

    #
    # Maximum number of locations allowed on an image.
    #
    # Any negative value is interpreted as unlimited.
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    #image_location_quota = 10

    #
    # The default number of results to return for a request.
    #
    # Responses to certain API requests, like list images, may return
    # multiple items. The number of results returned can be explicitly
    # controlled by specifying the ``limit`` parameter in the API request.
    # However, if a ``limit`` parameter is not specified, this
    # configuration value will be used as the default number of results to
    # be returned for any API request.
    #
    # NOTES:
    #     * The value of this configuration option may not be greater than
    #       the value specified by ``api_limit_max``.
    #     * Setting this to a very large value may slow down database
    #       queries and increase response times. Setting this to a
    #       very low value may result in poor user experience.
    #
    # Possible values:
    #     * Any positive integer
    #
    # Related options:
    #     * api_limit_max
    #
    #  (integer value)
    # Minimum value: 1
    #limit_param_default = 25

    #
    # Maximum number of results that could be returned by a request.
    #
    # As described in the help text of ``limit_param_default``, some
    # requests may return multiple results. The number of results to be
    # returned are governed either by the ``limit`` parameter in the
    # request or the ``limit_param_default`` configuration option.
    # The value in either case, can't be greater than the absolute maximum
    # defined by this configuration option. Anything greater than this
    # value is trimmed down to the maximum value defined here.
    #
    # NOTE: Setting this to a very large value may slow down database
    #       queries and increase response times. Setting this to a
    #       very low value may result in poor user experience.
    #
    # Possible values:
    #     * Any positive integer
    #
    # Related options:
    #     * limit_param_default
    #
    #  (integer value)
    # Minimum value: 1
    #api_limit_max = 1000

    #
    # Show direct image location when returning an image.
    #
    # This configuration option indicates whether to show the direct image
    # location when returning image details to the user. The direct image
    # location is where the image data is stored in backend storage. This
    # image location is shown under the image property ``direct_url``.
    #
    # When multiple image locations exist for an image, the best location
    # is displayed based on the store weightage assigned for each store
    # indicated by the configuration option ``weight``.
    #
    # NOTES:
    #     * Revealing image locations can present a GRAVE SECURITY RISK as
    #       image locations can sometimes include credentials. Hence, this
    #       is set to ``False`` by default. Set this to ``True`` with
    #       EXTREME CAUTION and ONLY IF you know what you are doing!
    #     * If an operator wishes to avoid showing any image location(s)
    #       to the user, then both this option and
    #       ``show_multiple_locations`` MUST be set to ``False``.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * show_multiple_locations
    #     * weight
    #
    #  (boolean value)
    #show_image_direct_url = false

    # DEPRECATED:
    # Show all image locations when returning an image.
    #
    # This configuration option indicates whether to show all the image
    # locations when returning image details to the user. When multiple
    # image locations exist for an image, the locations are ordered based
    # on the store weightage assigned for each store indicated by the
    # configuration option ``weight``. The image locations are shown
    # under the image property ``locations``.
    #
    # NOTES:
    #     * Revealing image locations can present a GRAVE SECURITY RISK as
    #       image locations can sometimes include credentials. Hence, this
    #       is set to ``False`` by default. Set this to ``True`` with
    #       EXTREME CAUTION and ONLY IF you know what you are doing!
    #     * See https://wiki.openstack.org/wiki/OSSN/OSSN-0065 for more
    #       information.
    #     * If an operator wishes to avoid showing any image location(s)
    #       to the user, then both this option and
    #       ``show_image_direct_url`` MUST be set to ``False``.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * show_image_direct_url
    #     * weight
    #
    #  (boolean value)
    # This option is deprecated for removal since Newton.
    # Its value may be silently ignored in the future.
    # Reason: Use of this option, deprecated since Newton, is a security risk and
    # will be removed once we figure out a way to satisfy those use cases that
    # currently require it.  An earlier announcement that the same functionality can
    # be achieved with greater granularity by using policies is incorrect.  You
    # cannot work around this option via policy configuration at the present time,
    # though that is the direction we believe the fix will take.  Please keep an eye
    # on the Glance release notes to stay up to date on progress in addressing this
    # issue.
    #show_multiple_locations = false

    #
    # Calculate hash and checksum for the image.
    #
    # This configuration option indicates that /v2/images/{image_id}/locations
    # POST API will calculate hash and checksum of the image on the fly.
    # If False it will silently ignore the hash and checksum calculation.
    #
    # Possible values:
    #     * True
    #     * False
    #  (boolean value)
    #do_secure_hash = true

    #
    # The number of times to retry when any operation fails.
    #  (integer value)
    #http_retries = 3

    #
    # Maximum size of image a user can upload in bytes.
    #
    # An image upload greater than the size mentioned here would result
    # in an image creation failure. This configuration option defaults to
    # 1099511627776 bytes (1 TiB).
    #
    # NOTES:
    #     * This value should only be increased after careful
    #       consideration and must be set less than or equal to
    #       8 EiB (9223372036854775808).
    #     * This value must be set with careful consideration of the
    #       backend storage capacity. Setting this to a very low value
    #       may result in a large number of image failures. And, setting
    #       this to a very large value may result in faster consumption
    #       of storage. Hence, this must be set according to the nature of
    #       images created and storage capacity available.
    #
    # Possible values:
    #     * Any positive number less than or equal to 9223372036854775808
    #
    #  (integer value)
    # Minimum value: 1
    # Maximum value: 9223372036854775808
    #image_size_cap = 1099511627776

    #
    # Maximum amount of image storage per tenant.
    #
    # This enforces an upper limit on the cumulative storage consumed by all images
    # of a tenant across all stores. This is a per-tenant limit.
    #
    # The default unit for this configuration option is Bytes. However, storage
    # units can be specified using case-sensitive literals ``B``, ``KB``, ``MB``,
    # ``GB`` and ``TB`` representing Bytes, KiloBytes, MegaBytes, GigaBytes and
    # TeraBytes respectively. Note that there should not be any space between the
    # value and unit. Value ``0`` signifies no quota enforcement. Negative values
    # are invalid and result in errors.
    #
    # This has no effect if ``use_keystone_limits`` is enabled.
    #
    # Possible values:
    #     * A string that is a valid concatenation of a non-negative integer
    #       representing the storage value and an optional string literal
    #       representing storage units as mentioned above.
    #
    # Related options:
    #     * use_keystone_limits
    #
    #  (string value)
    #user_storage_quota = 0

    #
    # Utilize per-tenant resource limits registered in Keystone.
    #
    # Enabling this feature will cause Glance to retrieve limits set in keystone
    # for resource consumption and enforce them against API users. Before turning
    # this on, the limits need to be registered in Keystone or all quotas will be
    # considered to be zero, and thus reject all new resource requests.
    #
    # These per-tenant resource limits are independent from the static
    # global ones configured in this config file. If this is enabled, the
    # relevant static global limits will be ignored.
    #  (boolean value)
    #use_keystone_limits = false

    #
    # Host address of the pydev server.
    #
    # Provide a string value representing the hostname or IP of the
    # pydev server to use for debugging. The pydev server listens for
    # debug connections on this address, facilitating remote debugging
    # in Glance.
    #
    # Possible values:
    #     * Valid hostname
    #     * Valid IP address
    #
    # Related options:
    #     * None
    #
    #  (host address value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #pydev_worker_debug_host = localhost

    #
    # Port number that the pydev server will listen on.
    #
    # Provide a port number to bind the pydev server to. The pydev
    # process accepts debug connections on this port and facilitates
    # remote debugging in Glance.
    #
    # Possible values:
    #     * A valid port number
    #
    # Related options:
    #     * None
    #
    #  (port value)
    # Minimum value: 0
    # Maximum value: 65535
    #pydev_worker_debug_port = 5678

    # DEPRECATED:
    # AES key for encrypting store location metadata.
    #
    # Provide a string value representing the AES cipher to use for
    # encrypting Glance store metadata.
    #
    # NOTE: The AES key to use must be set to a random string of length
    # 16, 24 or 32 bytes.
    #
    # Possible values:
    #     * String value representing a valid AES key
    #
    # Related options:
    #     * None
    #
    #  (string value)
    # This option is deprecated for removal since Dalmatian.
    # Its value may be silently ignored in the future.
    # Reason:
    # This option doesnt serves the purpose of encryption of location metadata,
    # whereas it encrypts location url only for specific APIs. Also if enabled
    # this during an upgrade may disrupt existing deployments, as it does not
    # support/provide db upgrade script to encrypt existing location URLs.
    # Moreover, its functionality for encrypting location URLs is inconsistent
    # which is resulting in download failures.
    #metadata_encryption_key = <None>

    # DEPRECATED:
    # Digest algorithm to use for digital signature.
    #
    # Provide a string value representing the digest algorithm to
    # use for generating digital signatures. By default, ``sha256``
    # is used.
    #
    # To get a list of the available algorithms supported by the version
    # of OpenSSL on your platform, run the command:
    # ``openssl list-message-digest-algorithms``.
    # Examples are 'sha1', 'sha256', and 'sha512'.
    #
    # NOTE: ``digest_algorithm`` is not related to Glance's image signing
    # and verification. It is only used to sign the universally unique
    # identifier (UUID) as a part of the certificate file and key file
    # validation.
    #
    # Possible values:
    #     * An OpenSSL message digest algorithm identifier
    #
    # Related options:
    #     * None
    #
    #  (string value)
    # This option is deprecated for removal since Dalmatian.
    # Its value may be silently ignored in the future.
    # Reason:
    # This option has had no effect since the removal of native SSL support.
    #digest_algorithm = sha256

    #
    # The URL provides location where the temporary data will be stored
    #
    # This option is for Glance internal use only. Glance will save the
    # image data uploaded by the user to 'staging' endpoint during the
    # image import process.
    #
    # This option does not change the 'staging' API endpoint by any means.
    #
    # NOTE: It is discouraged to use same path as [task]/work_dir
    #
    # NOTE: 'file://<absolute-directory-path>' is the only option
    # api_image_import flow will support for now.
    #
    # NOTE: The staging path must be on shared filesystem available to all
    # Glance API nodes.
    #
    # Possible values:
    #     * String starting with 'file://' followed by absolute FS path
    #
    # Related options:
    #     * [task]/work_dir
    #
    #  (string value)
    #node_staging_uri = file:///tmp/staging/

    #
    # List of enabled Image Import Methods
    #
    # 'glance-direct', 'copy-image' and 'web-download' are enabled by default.
    # 'glance-download' is available, but requires federated deployments.
    #
    # Related options:
    #     * [DEFAULT]/node_staging_uri (list value)
    #enabled_import_methods = [glance-direct,web-download,copy-image]

    #
    # The URL to this worker.
    #
    # If this is set, other glance workers will know how to contact this one
    # directly if needed. For image import, a single worker stages the image
    # and other workers need to be able to proxy the import request to the
    # right one.
    #
    # If unset, this will be considered to be `public_endpoint`, which
    # normally would be set to the same value on all workers, effectively
    # disabling the proxying behavior.
    #
    # Possible values:
    #     * A URL by which this worker is reachable from other workers
    #
    # Related options:
    #     * public_endpoint
    #
    #  (string value)
    #worker_self_reference_url = <None>

    #
    # The location of the property protection file.
    #
    # Provide a valid path to the property protection file which contains
    # the rules for property protections and the roles/policies associated
    # with them.
    #
    # A property protection file, when set, restricts the Glance image
    # properties to be created, read, updated and/or deleted by a specific
    # set of users that are identified by either roles or policies.
    # If this configuration option is not set, by default, property
    # protections won't be enforced. If a value is specified and the file
    # is not found, the glance-api service will fail to start.
    # More information on property protections can be found at:
    # https://docs.openstack.org/glance/latest/admin/property-protections.html
    #
    # Possible values:
    #     * Empty string
    #     * Valid path to the property protection configuration file
    #
    # Related options:
    #     * property_protection_rule_format
    #
    #  (string value)
    #property_protection_file = <None>

    #
    # Rule format for property protection.
    #
    # Provide the desired way to set property protection on Glance
    # image properties. The two permissible values are ``roles``
    # and ``policies``. The default value is ``roles``.
    #
    # If the value is ``roles``, the property protection file must
    # contain a comma separated list of user roles indicating
    # permissions for each of the CRUD operations on each property
    # being protected. If set to ``policies``, a policy defined in
    # policy.yaml is used to express property protections for each
    # of the CRUD operations. Examples of how property protections
    # are enforced based on ``roles`` or ``policies`` can be found at:
    # https://docs.openstack.org/glance/latest/admin/property-
    # protections.html#examples
    #
    # Possible values:
    #     * roles
    #     * policies
    #
    # Related options:
    #     * property_protection_file
    #
    #  (string value)
    # Possible values:
    # roles - <No description provided>
    # policies - <No description provided>
    #property_protection_rule_format = roles

    # Key:Value pair of store identifier and store type. In case of multiple
    # backends should be separated using comma. (dict value)
    #enabled_backends = <None>

    # DEPRECATED:
    # The relative path to sqlite file database that will be used for image cache
    # management.
    #
    # This is a relative path to the sqlite file database that tracks the age and
    # usage statistics of image cache. The path is relative to image cache base
    # directory, specified by the configuration option ``image_cache_dir``.
    #
    # This is a lightweight database with just one table.
    #
    # Possible values:
    #     * A valid relative path to sqlite file database
    #
    # Related options:
    #     * ``image_cache_dir``
    #
    #  (string value)
    # This option is deprecated for removal since Caracal (2024.1).
    # Its value may be silently ignored in the future.
    # Reason:
    # As centralized database will now be used for image cache management, the use
    # of `sqlite` database and driver will be dropped from 'E' (2025.1)
    # development cycle.
    #image_cache_sqlite_db = cache.db

    #
    # The driver to use for image cache management.
    #
    # This configuration option provides the flexibility to choose between the
    # different image-cache drivers available. An image-cache driver is responsible
    # for providing the essential functions of image-cache like write images to/read
    # images from cache, track age and usage of cached images, provide a list of
    # cached images, fetch size of the cache, queue images for caching and clean up
    # the cache, etc.
    #
    # The essential functions of a driver are defined in the base class
    # ``glance.image_cache.drivers.base.Driver``. All image-cache drivers (existing
    # and prospective) must implement this interface. Currently available drivers
    # are ``sqlite`` and ``xattr``. These drivers primarily differ in the way they
    # store the information about cached images:
    #
    # * The ``centralized_db`` driver uses a central database (which will be common
    #   for all glance nodes) to track the usage of cached images.
    # * The ``sqlite`` (deprecated) driver uses a sqlite database (which sits on
    #   every glance node locally) to track the usage of cached images.
    # * The ``xattr`` driver uses the extended attributes of files to store this
    #   information. It also requires a filesystem that sets ``atime`` on the files
    #   when accessed.
    #
    # Deprecation warning:
    #     * As centralized database will now be used for image cache management, the
    #       use of `sqlite` database and driver will be dropped from 'E' (2025.1)
    #       development cycle.
    #
    # Possible values:
    #     * centralized_db
    #     * sqlite
    #     * xattr
    #
    # Related options:
    #     * None
    #
    #  (string value)
    # Possible values:
    # centralized_db - <No description provided>
    # sqlite - <No description provided>
    # xattr - <No description provided>
    #image_cache_driver = centralized_db

    #
    # The upper limit on cache size, in bytes, after which the cache-pruner cleans
    # up the image cache.
    #
    # NOTE: This is just a threshold for cache-pruner to act upon. It is NOT a
    # hard limit beyond which the image cache would never grow. In fact, depending
    # on how often the cache-pruner runs and how quickly the cache fills, the image
    # cache can far exceed the size specified here very easily. Hence, care must be
    # taken to appropriately schedule the cache-pruner and in setting this limit.
    #
    # Glance caches an image when it is downloaded. Consequently, the size of the
    # image cache grows over time as the number of downloads increases. To keep the
    # cache size from becoming unmanageable, it is recommended to run the
    # cache-pruner as a periodic task. When the cache pruner is kicked off, it
    # compares the current size of image cache and triggers a cleanup if the image
    # cache grew beyond the size specified here. After the cleanup, the size of
    # cache is less than or equal to size specified here.
    #
    # Possible values:
    #     * Any non-negative integer
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 0
    #image_cache_max_size = 10737418240

    #
    # The amount of time, in seconds, an incomplete image remains in the cache.
    #
    # Incomplete images are images for which download is in progress. Please see the
    # description of configuration option ``image_cache_dir`` for more detail.
    # Sometimes, due to various reasons, it is possible the download may hang and
    # the incompletely downloaded image remains in the ``incomplete`` directory.
    # This configuration option sets a time limit on how long the incomplete images
    # should remain in the ``incomplete`` directory before they are cleaned up.
    # Once an incomplete image spends more time than is specified here, it'll be
    # removed by cache-cleaner on its next run.
    #
    # It is recommended to run cache-cleaner as a periodic task on the Glance API
    # nodes to keep the incomplete images from occupying disk space.
    #
    # Possible values:
    #     * Any non-negative integer
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 0
    #image_cache_stall_time = 86400

    #
    # Base directory for image cache.
    #
    # This is the location where image data is cached and served out of. All cached
    # images are stored directly under this directory. This directory also contains
    # three subdirectories, namely, ``incomplete``, ``invalid`` and ``queue``.
    #
    # The ``incomplete`` subdirectory is the staging area for downloading images. An
    # image is first downloaded to this directory. When the image download is
    # successful it is moved to the base directory. However, if the download fails,
    # the partially downloaded image file is moved to the ``invalid`` subdirectory.
    #
    # The ``queue``subdirectory is used for queuing images for download. This is
    # used primarily by the cache-prefetcher, which can be scheduled as a periodic
    # task like cache-pruner and cache-cleaner, to cache images ahead of their
    # usage.
    # Upon receiving the request to cache an image, Glance touches a file in the
    # ``queue`` directory with the image id as the file name. The cache-prefetcher,
    # when running, polls for the files in ``queue`` directory and starts
    # downloading them in the order they were created. When the download is
    # successful, the zero-sized file is deleted from the ``queue`` directory.
    # If the download fails, the zero-sized file remains and it'll be retried the
    # next time cache-prefetcher runs.
    #
    # Possible values:
    #     * A valid path
    #
    # Related options:
    #     * ``image_cache_sqlite_db``
    #
    #  (string value)
    #image_cache_dir = <None>

    #
    # Default publisher_id for outgoing Glance notifications.
    #
    # This is the value that the notification driver will use to identify
    # messages for events originating from the Glance service. Typically,
    # this is the hostname of the instance that generated the message.
    #
    # Possible values:
    #     * Any reasonable instance identifier, for example: image.host1
    #
    # Related options:
    #     * None
    #
    #  (string value)
    #default_publisher_id = image.localhost

    #
    # List of notifications to be disabled.
    #
    # Specify a list of notifications that should not be emitted.
    # A notification can be given either as a notification type to
    # disable a single event notification, or as a notification group
    # prefix to disable all event notifications within a group.
    #
    # Possible values:
    #     A comma-separated list of individual notification types or
    #     notification groups to be disabled. Currently supported groups:
    #
    #     * image
    #     * image.member
    #     * task
    #     * metadef_namespace
    #     * metadef_object
    #     * metadef_property
    #     * metadef_resource_type
    #     * metadef_tag
    #
    #     For a complete listing and description of each event refer to:
    #     https://docs.openstack.org/glance/latest/admin/notifications.html
    #
    #     The values must be specified as: <group_name>.<event_name>
    #     For example: image.create,task.success,metadef_tag
    #
    # Related options:
    #     * None
    #
    #  (list value)
    #disabled_notifications =

    #
    # The amount of time, in seconds, to delay image scrubbing.
    #
    # When delayed delete is turned on, an image is put into ``pending_delete``
    # state upon deletion until the scrubber deletes its image data. Typically, soon
    # after the image is put into ``pending_delete`` state, it is available for
    # scrubbing. However, scrubbing can be delayed until a later point using this
    # configuration option. This option denotes the time period an image spends in
    # ``pending_delete`` state before it is available for scrubbing.
    #
    # It is important to realize that this has storage implications. The larger the
    # ``scrub_time``, the longer the time to reclaim backend storage from deleted
    # images.
    #
    # Possible values:
    #     * Any non-negative integer
    #
    # Related options:
    #     * ``delayed_delete``
    #
    #  (integer value)
    # Minimum value: 0
    #scrub_time = 0

    #
    # The size of thread pool to be used for scrubbing images.
    #
    # When there are a large number of images to scrub, it is beneficial to scrub
    # images in parallel so that the scrub queue stays in control and the backend
    # storage is reclaimed in a timely fashion. This configuration option denotes
    # the maximum number of images to be scrubbed in parallel. The default value is
    # one, which signifies serial scrubbing. Any value above one indicates parallel
    # scrubbing.
    #
    # Possible values:
    #     * Any non-zero positive integer
    #
    # Related options:
    #     * ``delayed_delete``
    #
    #  (integer value)
    # Minimum value: 1
    #scrub_pool_size = 1

    #
    # Turn on/off delayed delete.
    #
    # Typically when an image is deleted, the ``glance-api`` service puts the image
    # into ``deleted`` state and deletes its data at the same time. Delayed delete
    # is a feature in Glance that delays the actual deletion of image data until a
    # later point in time (as determined by the configuration option
    # ``scrub_time``).
    # When delayed delete is turned on, the ``glance-api`` service puts the image
    # into ``pending_delete`` state upon deletion and leaves the image data in the
    # storage backend for the image scrubber to delete at a later time. The image
    # scrubber will move the image into ``deleted`` state upon successful deletion
    # of image data.
    #
    # NOTE: When delayed delete is turned on, image scrubber MUST be running as a
    # periodic task to prevent the backend storage from filling up with undesired
    # usage.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * ``scrub_time``
    #     * ``wakeup_time``
    #     * ``scrub_pool_size``
    #
    #  (boolean value)
    #delayed_delete = false

    #
    # From oslo.log
    #

    # If set to true, the logging level will be set to DEBUG instead of the default
    # INFO level. (boolean value)
    # Note: This option can be changed without restarting.
    #debug = false

    # The name of a logging configuration file. This file is appended to any
    # existing logging configuration files. For details about logging configuration
    # files, see the Python logging module documentation. Note that when logging
    # configuration files are used then all logging configuration is set in the
    # configuration file and other logging configuration options are ignored (for
    # example, log-date-format). (string value)
    # Note: This option can be changed without restarting.
    # Deprecated group/name - [DEFAULT]/log_config
    #log_config_append = <None>

    # Defines the format string for %%(asctime)s in log records. Default:
    # %(default)s . This option is ignored if log_config_append is set. (string
    # value)
    #log_date_format = %Y-%m-%d %H:%M:%S

    # (Optional) Name of log file to send logging output to. If no default is set,
    # logging will go to stderr as defined by use_stderr. This option is ignored if
    # log_config_append is set. (string value)
    # Deprecated group/name - [DEFAULT]/logfile
    #log_file = <None>

    # (Optional) The base directory used for relative log_file  paths. This option
    # is ignored if log_config_append is set. (string value)
    # Deprecated group/name - [DEFAULT]/logdir
    #log_dir = <None>

    # Use syslog for logging. Existing syslog format is DEPRECATED and will be
    # changed later to honor RFC5424. This option is ignored if log_config_append is
    # set. (boolean value)
    #use_syslog = false

    # Enable journald for logging. If running in a systemd environment you may wish
    # to enable journal support. Doing so will use the journal native protocol which
    # includes structured metadata in addition to log messages.This option is
    # ignored if log_config_append is set. (boolean value)
    #use_journal = false

    # Syslog facility to receive log lines. This option is ignored if
    # log_config_append is set. (string value)
    #syslog_log_facility = LOG_USER

    # Use JSON formatting for logging. This option is ignored if log_config_append
    # is set. (boolean value)
    #use_json = false

    # Log output to standard error. This option is ignored if log_config_append is
    # set. (boolean value)
    #use_stderr = false

    # (Optional) Set the 'color' key according to log levels. This option takes
    # effect only when logging to stderr or stdout is used. This option is ignored
    # if log_config_append is set. (boolean value)
    #log_color = false

    # The amount of time before the log files are rotated. This option is ignored
    # unless log_rotation_type is set to "interval". (integer value)
    #log_rotate_interval = 1

    # Rotation interval type. The time of the last file change (or the time when the
    # service was started) is used when scheduling the next rotation. (string value)
    # Possible values:
    # Seconds - <No description provided>
    # Minutes - <No description provided>
    # Hours - <No description provided>
    # Days - <No description provided>
    # Weekday - <No description provided>
    # Midnight - <No description provided>
    #log_rotate_interval_type = days

    # Maximum number of rotated log files. (integer value)
    #max_logfile_count = 30

    # Log file maximum size in MB. This option is ignored if "log_rotation_type" is
    # not set to "size". (integer value)
    #max_logfile_size_mb = 200

    # Log rotation type. (string value)
    # Possible values:
    # interval - Rotate logs at predefined time intervals.
    # size - Rotate logs once they reach a predefined size.
    # none - Do not rotate log files.
    #log_rotation_type = none

    # Format string to use for log messages with context. Used by
    # oslo_log.formatters.ContextFormatter (string value)
    #logging_context_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(global_request_id)s %(request_id)s %(user_identity)s] %(instance)s%(message)s

    # Format string to use for log messages when context is undefined. Used by
    # oslo_log.formatters.ContextFormatter (string value)
    #logging_default_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s

    # Additional data to append to log message when logging level for the message is
    # DEBUG. Used by oslo_log.formatters.ContextFormatter (string value)
    #logging_debug_format_suffix = %(funcName)s %(pathname)s:%(lineno)d

    # Prefix each line of exception output with this format. Used by
    # oslo_log.formatters.ContextFormatter (string value)
    #logging_exception_prefix = %(asctime)s.%(msecs)03d %(process)d ERROR %(name)s %(instance)s

    # Defines the format string for %(user_identity)s that is used in
    # logging_context_format_string. Used by oslo_log.formatters.ContextFormatter
    # (string value)
    #logging_user_identity_format = %(user)s %(project)s %(domain)s %(system_scope)s %(user_domain)s %(project_domain)s

    # List of package logging levels in logger=LEVEL pairs. This option is ignored
    # if log_config_append is set. (list value)
    #default_log_levels = amqp=WARN,boto=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,oslo_messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN,urllib3.connectionpool=WARN,websocket=WARN,requests.packages.urllib3.util.retry=WARN,urllib3.util.retry=WARN,keystonemiddleware=WARN,routes.middleware=WARN,stevedore=WARN,taskflow=WARN,keystoneauth=WARN,oslo.cache=INFO,oslo_policy=INFO,dogpile.core.dogpile=INFO

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

    # The format for an instance that is passed with the log message. (string value)
    #instance_format = "[instance: %(uuid)s] "

    # The format for an instance UUID that is passed with the log message. (string
    # value)
    #instance_uuid_format = "[instance: %(uuid)s] "

    # Interval, number of seconds, of log rate limiting. (integer value)
    #rate_limit_interval = 0

    # Maximum number of logged messages per rate_limit_interval. (integer value)
    #rate_limit_burst = 0

    # Log level name used by rate limiting. Logs with level greater or equal to
    # rate_limit_except_level are not filtered. An empty string means that all
    # levels are filtered. (string value)
    # Possible values:
    # CRITICAL - <No description provided>
    # ERROR - <No description provided>
    # INFO - <No description provided>
    # WARNING - <No description provided>
    # DEBUG - <No description provided>
    # '' - <No description provided>
    #rate_limit_except_level = CRITICAL

    # Enables or disables fatal status of deprecations. (boolean value)
    #fatal_deprecations = false

    #
    # From oslo.messaging
    #

    # Size of executor thread pool when executor is threading or eventlet. (integer
    # value)
    # Deprecated group/name - [DEFAULT]/rpc_thread_pool_size
    #executor_thread_pool_size = 64

    # Seconds to wait for a response from a call. (integer value)
    #rpc_response_timeout = 60

    # The network address and optional user credentials for connecting to the
    # messaging backend, in URL format. The expected format is:
    #
    # driver://[user:pass@]host:port[,[userN:passN@]hostN:portN]/virtual_host?query
    #
    # Example: rabbit://rabbitmq:password@127.0.0.1:5672//
    #
    # For full details on the fields in the URL see the documentation of
    # oslo_messaging.TransportURL at
    # https://docs.openstack.org/oslo.messaging/latest/reference/transport.html
    # (string value)
    #transport_url = rabbit://

    # The default exchange under which topics are scoped. May be overridden by an
    # exchange name specified in the transport_url option. (string value)
    #control_exchange = openstack

    # Add an endpoint to answer to ping calls. Endpoint is named
    # oslo_rpc_server_ping (boolean value)
    #rpc_ping_enabled = false

    [barbican]

    #
    # From castellan.config
    #

    # Use this endpoint to connect to Barbican, for example:
    # "http://localhost:9311/" (uri value)
    #barbican_endpoint = <None>

    # Version of the Barbican API, for example: "v1" (string value)
    #barbican_api_version = <None>

    # Use this endpoint to connect to Keystone (uri value)
    # Deprecated group/name - [key_manager]/auth_url
    #auth_endpoint = http://localhost/identity/v3

    # Number of seconds to wait before retrying poll for key creation completion
    # (integer value)
    #retry_delay = 1

    # Number of times to retry poll for key creation completion (integer value)
    #number_of_retries = 60

    # Specifies if insecure TLS (https) requests. If False, the server's certificate
    # will not be validated, if True, we can set the verify_ssl_path config
    # meanwhile. (boolean value)
    #verify_ssl = true

    # A path to a bundle or CA certs to check against, or None for requests to
    # attempt to locate and use certificates which verify_ssh is True. If verify_ssl
    # is False, this is ignored. (string value)
    #verify_ssl_path = <None>

    # Specifies the type of endpoint. (string value)
    # Possible values:
    # public - <No description provided>
    # internal - <No description provided>
    # admin - <No description provided>
    #barbican_endpoint_type = public

    # Specifies the region of the chosen endpoint. (string value)
    #barbican_region_name = <None>

    #
    # When True, if sending a user token to a REST API, also send a service token.
    #
    # Nova often reuses the user token provided to the nova-api to talk to other
    # REST
    # APIs, such as Cinder, Glance and Neutron. It is possible that while the user
    # token was valid when the request was made to Nova, the token may expire before
    # it reaches the other service. To avoid any failures, and to make it clear it
    # is
    # Nova calling the service on the user's behalf, we include a service token
    # along
    # with the user token. Should the user's token have expired, a valid service
    # token ensures the REST API request will still be accepted by the keystone
    # middleware.
    #  (boolean value)
    #send_service_user_token = false

    # 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 (floating point value)
    #timeout = <None>

    # Collect per-API call timing information. (boolean value)
    #collect_timing = false

    # Log requests to multiple loggers. (boolean value)
    #split_loggers = false

    [barbican_service_user]

    #
    # From castellan.config
    #

    # 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 (floating point value)
    #timeout = <None>

    # Collect per-API call timing information. (boolean value)
    #collect_timing = false

    # Log requests to multiple loggers. (boolean value)
    #split_loggers = false

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

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

    [cinder]

    #
    # From glance.multi_store
    #

    #
    # Information to match when looking for cinder in the service catalog.
    #
    # When the ``cinder_endpoint_template`` is not set and any of
    # ``cinder_store_auth_address``, ``cinder_store_user_name``,
    # ``cinder_store_project_name``, ``cinder_store_password`` is not set,
    # cinder store uses this information to lookup cinder endpoint from the service
    # catalog in the current context. ``cinder_os_region_name``, if set, is taken
    # into consideration to fetch the appropriate endpoint.
    #
    # The service catalog can be listed by the ``openstack catalog list`` command.
    #
    # Possible values:
    #     * A string of of the following form:
    #       ``<service_type>:<service_name>:<interface>``
    #       At least ``service_type`` and ``interface`` should be specified.
    #       ``service_name`` can be omitted.
    #
    # Related options:
    #     * cinder_os_region_name
    #     * cinder_endpoint_template
    #     * cinder_store_auth_address
    #     * cinder_store_user_name
    #     * cinder_store_project_name
    #     * cinder_store_password
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_domain_name
    #
    #  (string value)
    #cinder_catalog_info = volumev3::publicURL

    #
    # Override service catalog lookup with template for cinder endpoint.
    #
    # When this option is set, this value is used to generate cinder endpoint,
    # instead of looking up from the service catalog.
    # This value is ignored if ``cinder_store_auth_address``,
    # ``cinder_store_user_name``, ``cinder_store_project_name``, and
    # ``cinder_store_password`` are specified.
    #
    # If this configuration option is set, ``cinder_catalog_info`` will be ignored.
    #
    # Possible values:
    #     * URL template string for cinder endpoint, where ``%%(tenant)s`` is
    #       replaced with the current tenant (project) name.
    #       For example: ``http://cinder.openstack.example.org/v2/%%(tenant)s``
    #
    # Related options:
    #     * cinder_store_auth_address
    #     * cinder_store_user_name
    #     * cinder_store_project_name
    #     * cinder_store_password
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_domain_name
    #     * cinder_catalog_info
    #
    #  (string value)
    #cinder_endpoint_template = <None>

    #
    # Region name to lookup cinder service from the service catalog.
    #
    # This is used only when ``cinder_catalog_info`` is used for determining the
    # endpoint. If set, the lookup for cinder endpoint by this node is filtered to
    # the specified region. It is useful when multiple regions are listed in the
    # catalog. If this is not set, the endpoint is looked up from every region.
    #
    # Possible values:
    #     * A string that is a valid region name.
    #
    # Related options:
    #     * cinder_catalog_info
    #
    #  (string value)
    # Deprecated group/name - [cinder]/os_region_name
    #cinder_os_region_name = <None>

    #
    # Location of a CA certificates file used for cinder client requests.
    #
    # The specified CA certificates file, if set, is used to verify cinder
    # connections via HTTPS endpoint. If the endpoint is HTTP, this value is
    # ignored.
    # ``cinder_api_insecure`` must be set to ``True`` to enable the verification.
    #
    # Possible values:
    #     * Path to a ca certificates file
    #
    # Related options:
    #     * cinder_api_insecure
    #
    #  (string value)
    #cinder_ca_certificates_file = <None>

    #
    # Number of cinderclient retries on failed http calls.
    #
    # When a call failed by any errors, cinderclient will retry the call up to the
    # specified times after sleeping a few seconds.
    #
    # Possible values:
    #     * A positive integer
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 0
    #cinder_http_retries = 3

    #
    # Time period, in seconds, to wait for a cinder volume transition to
    # complete.
    #
    # When the cinder volume is created, deleted, or attached to the glance node to
    # read/write the volume data, the volume's state is changed. For example, the
    # newly created volume status changes from ``creating`` to ``available`` after
    # the creation process is completed. This specifies the maximum time to wait for
    # the status change. If a timeout occurs while waiting, or the status is changed
    # to an unexpected value (e.g. `error``), the image creation fails.
    #
    # Possible values:
    #     * A positive integer
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 0
    #cinder_state_transition_timeout = 300

    #
    # Allow to perform insecure SSL requests to cinder.
    #
    # If this option is set to True, HTTPS endpoint connection is verified using the
    # CA certificates file specified by ``cinder_ca_certificates_file`` option.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * cinder_ca_certificates_file
    #
    #  (boolean value)
    #cinder_api_insecure = false

    #
    # The address where the cinder authentication service is listening.
    #
    # When all of ``cinder_store_auth_address``, ``cinder_store_user_name``,
    # ``cinder_store_project_name``, and ``cinder_store_password`` options are
    # specified, the specified values are always used for the authentication.
    # This is useful to hide the image volumes from users by storing them in a
    # project/tenant specific to the image service. It also enables users to share
    # the image volume among other projects under the control of glance's ACL.
    #
    # If either of these options are not set, the cinder endpoint is looked up
    # from the service catalog, and current context's user and project are used.
    #
    # Possible values:
    #     * A valid authentication service address, for example:
    #       ``http://openstack.example.org/identity/v2.0``
    #
    # Related options:
    #     * cinder_store_user_name
    #     * cinder_store_password
    #     * cinder_store_project_name
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_domain_name
    #
    #  (string value)
    #cinder_store_auth_address = <None>

    #
    # User name to authenticate against cinder.
    #
    # This must be used with all the following non-domain-related options.
    # If any of these are not specified (except domain-related options),
    # the user of the current context is used.
    #
    # Possible values:
    #     * A valid user name
    #
    # Related options:
    #     * cinder_store_auth_address
    #     * cinder_store_password
    #     * cinder_store_project_name
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_domain_name
    #
    #  (string value)
    #cinder_store_user_name = <None>

    #
    # Domain of the user to authenticate against cinder.
    #
    # Possible values:
    #     * A valid domain name for the user specified by ``cinder_store_user_name``
    #
    # Related options:
    #     * cinder_store_auth_address
    #     * cinder_store_password
    #     * cinder_store_project_name
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_name
    #
    #  (string value)
    #cinder_store_user_domain_name = Default

    #
    # Password for the user authenticating against cinder.
    #
    # This must be used with all the following related options.
    # If any of these are not specified (except domain-related options),
    # the user of the current context is used.
    #
    # Possible values:
    #     * A valid password for the user specified by ``cinder_store_user_name``
    #
    # Related options:
    #     * cinder_store_auth_address
    #     * cinder_store_user_name
    #     * cinder_store_project_name
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_domain_name
    #     * cinder_store_application_credential_id
    #     * cinder_store_application_credential_secret
    #
    #  (string value)
    #cinder_store_password = <None>

    #
    # Application credential ID for authenticating against cinder.
    #
    # When this option is set along with
    # ``cinder_store_application_credential_secret``,
    # the Cinder backend will use application credential authentication instead of
    # password authentication. This enables Zero Downtime Password Rotation (ZDPR)
    # support for Glance deployments using Cinder as the image backend.
    #
    # If both application credential options are set, they take precedence over
    # password authentication. If either option is not set, the driver falls back
    # to password authentication using ``cinder_store_password``.
    #
    # Possible values:
    #     * A valid application credential ID
    #
    # Related options:
    #     * cinder_store_auth_address
    #     * cinder_store_user_name
    #     * cinder_store_application_credential_secret
    #     * cinder_store_project_name
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_domain_name
    #
    #  (string value)
    #cinder_store_application_credential_id = <None>

    #
    # Application credential secret for authenticating against cinder.
    #
    # This must be used together with ``cinder_store_application_credential_id``.
    # When both options are set, the Cinder backend will use application credential
    # authentication instead of password authentication.
    #
    # Possible values:
    #     * A valid application credential secret
    #
    # Related options:
    #     * cinder_store_auth_address
    #     * cinder_store_user_name
    #     * cinder_store_application_credential_id
    #     * cinder_store_project_name
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_domain_name
    #
    #  (string value)
    #cinder_store_application_credential_secret = <None>

    #
    # Project name where the image volume is stored in cinder.
    #
    # If this configuration option is not set, the project in current context is
    # used.
    #
    # This must be used with all the following related options.
    # If any of these are not specified (except domain-related options),
    # the user of the current context is used.
    #
    # Possible values:
    #     * A valid project name
    #
    # Related options:
    #     * ``cinder_store_auth_address``
    #     * ``cinder_store_user_name``
    #     * ``cinder_store_password``
    #     * ``cinder_store_project_domain_name``
    #     * ``cinder_store_user_domain_name``
    #
    #  (string value)
    #cinder_store_project_name = <None>

    #
    # Domain of the project where the image volume is stored in cinder.
    #
    # Possible values:
    #     * A valid domain name of the project specified by
    #       ``cinder_store_project_name``
    #
    # Related options:
    #     * ``cinder_store_auth_address``
    #     * ``cinder_store_user_name``
    #     * ``cinder_store_password``
    #     * ``cinder_store_project_domain_name``
    #     * ``cinder_store_user_domain_name``
    #
    #  (string value)
    #cinder_store_project_domain_name = Default

    #
    # Path to the rootwrap configuration file to use for running commands as root.
    #
    # The cinder store requires root privileges to operate the image volumes (for
    # connecting to iSCSI/FC volumes and reading/writing the volume data, etc.).
    # The configuration file should allow the required commands by cinder store and
    # os-brick library.
    #
    # Possible values:
    #     * Path to the rootwrap config file
    #
    # Related options:
    #     * None
    #
    #  (string value)
    #rootwrap_config = /etc/glance/rootwrap.conf

    #
    # Volume type that will be used for volume creation in cinder.
    #
    # Some cinder backends can have several volume types to optimize storage usage.
    # Adding this option allows an operator to choose a specific volume type
    # in cinder that can be optimized for images.
    #
    # If this is not set, then the default volume type specified in the cinder
    # configuration will be used for volume creation.
    #
    # Possible values:
    #     * A valid volume type from cinder
    #
    # Related options:
    #     * None
    #
    # NOTE: You cannot use an encrypted volume_type associated with an NFS backend.
    # An encrypted volume stored on an NFS backend will raise an exception whenever
    # glance_store tries to write or access image data stored in that volume.
    # Consult your Cinder administrator to determine an appropriate volume_type.
    #
    #  (string value)
    #cinder_volume_type = <None>

    #
    # 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.
    #
    # Possible values:
    #     * True or False
    #
    # Related options:
    #     * cinder_use_multipath
    #
    #  (boolean value)
    #cinder_enforce_multipath = false

    #
    # Flag to identify multipath is supported or not in the deployment.
    #
    # Set it to False if multipath is not supported.
    #
    # Possible values:
    #     * True or False
    #
    # Related options:
    #     * cinder_enforce_multipath
    #
    #  (boolean value)
    #cinder_use_multipath = false

    #
    # Directory where the NFS volume is mounted on the glance node.
    #
    # Possible values:
    #
    # * A string representing absolute path of mount point.
    #  (string value)
    #cinder_mount_point_base = /var/lib/glance/mnt

    #
    # If this is set to True, glance will perform an extend operation
    # on the attached volume. Only enable this option if the cinder
    # backend driver supports the functionality of extending online
    # (in-use) volumes. Supported from cinder microversion 3.42 and
    # onwards. By default, it is set to False.
    #
    # Possible values:
    #     * True or False
    #
    #  (boolean value)
    #cinder_do_extend_attached = false

    #
    # Maximum number of retry attempts for cinder attachment create operations.
    #
    # When creating a volume attachment, cinder may be unable to complete the
    # request due to transient issues (e.g., volume in transitional state). This
    # option specifies the maximum number of times to retry the attachment_create
    # operation before giving up.
    #
    # Possible values:
    #     * A positive integer
    #
    #  (integer value)
    # Minimum value: 1
    #cinder_attachment_retry_attempts = 5

    [cors]

    #
    # From oslo.middleware.cors
    #

    # Indicate whether this resource may be shared with the domain received in the
    # requests "origin" header. Format: "<protocol>://<host>[:<port>]", no trailing
    # slash. Example: https://horizon.example.com (list value)
    #allowed_origin = <None>

    # Indicate that the actual request can include user credentials (boolean value)
    #allow_credentials = true

    # Indicate which headers are safe to expose to the API. Defaults to HTTP Simple
    # Headers. (list value)
    #expose_headers = X-Image-Meta-Checksum,X-Auth-Token,X-Subject-Token,X-Service-Token,X-OpenStack-Request-ID

    # Maximum cache age of CORS preflight requests. (integer value)
    #max_age = 3600

    # Indicate which methods can be used during the actual request. (list value)
    #allow_methods = GET,PUT,POST,DELETE,PATCH

    # Indicate which header field names may be used during the actual request. (list
    # value)
    #allow_headers = Content-MD5,X-Image-Meta-Checksum,X-Storage-Token,Accept-Encoding,X-Auth-Token,X-Identity-Status,X-Roles,X-Service-Catalog,X-User-Id,X-Tenant-Id,X-OpenStack-Request-ID

    [database]

    #
    # From oslo.db
    #

    # If True, SQLite uses synchronous mode. (boolean value)
    #sqlite_synchronous = true

    # The back end to use for the database. (string value)
    #backend = sqlalchemy

    # The SQLAlchemy connection string to use to connect to the database. (string
    # value)
    #connection = <None>

    # The SQLAlchemy connection string to use to connect to the slave database.
    # (string value)
    #slave_connection = <None>

    # The SQLAlchemy asyncio connection string to use to connect to the database.
    # (string value)
    #asyncio_connection = <None>

    # The SQLAlchemy asyncio connection string to use to connect to the slave
    # database. (string value)
    #asyncio_slave_connection = <None>

    # Whether or not to assume a reader context needs to guarantee it can read data
    # committed by a writer assuming replication lag is present; defaults to True.
    # When False, a reader context works the same as async_reader and will select
    # the slave database if present. When using a galera cluster, this can be set to
    # False only if you set mysql_wsrep_sync_wait to 1 (this will guarantee that the
    # reader will wait until writesets are committed).Note that this may incur a
    # performance degradation within the galera cluster. Note also that this
    # parameter has no effect if you do not set any slave_connection. (boolean
    # value)
    #synchronous_reader = true

    # The SQL mode to be used for MySQL sessions. This option, including the
    # default, overrides any server-set SQL mode. To use whatever SQL mode is set by
    # the server configuration, set this to no value. Example: mysql_sql_mode=
    # (string value)
    #mysql_sql_mode = TRADITIONAL

    # For Galera only, configure wsrep_sync_wait causality checks on new
    # connections.  Default is None, meaning don't configure any setting. (integer
    # value)
    #mysql_wsrep_sync_wait = <None>

    # Connections which have been present in the connection pool longer than this
    # number of seconds will be replaced with a new one the next time they are
    # checked out from the pool. (integer value)
    #connection_recycle_time = 3600

    # Maximum number of SQL connections to keep open in a pool. Setting a value of 0
    # indicates no limit. (integer value)
    #max_pool_size = 5

    # Maximum number of database connection retries during startup. Set to -1 to
    # specify an infinite retry count. (integer value)
    #max_retries = 10

    # Interval between retries of opening a SQL connection. (integer value)
    #retry_interval = 10

    # If set, use this value for max_overflow with SQLAlchemy. (integer value)
    #max_overflow = 50

    # Verbosity of SQL debugging information: 0=None, 100=Everything. (integer
    # value)
    # Minimum value: 0
    # Maximum value: 100
    #connection_debug = 0

    # Add Python stack traces to SQL as comment strings. (boolean value)
    #connection_trace = false

    # If set, use this value for pool_timeout with SQLAlchemy. (integer value)
    #pool_timeout = <None>

    # Enable the experimental use of database reconnect on connection lost. (boolean
    # value)
    #use_db_reconnect = false

    # Seconds between retries of a database transaction. (integer value)
    #db_retry_interval = 1

    # If True, increases the interval between retries of a database operation up to
    # db_max_retry_interval. (boolean value)
    #db_inc_retry_interval = true

    # If db_inc_retry_interval is set, the maximum seconds between retries of a
    # database operation. (integer value)
    #db_max_retry_interval = 10

    # Maximum retries in case of connection error or deadlock error before error is
    # raised. Set to -1 to specify an infinite retry count. (integer value)
    #db_max_retries = 20

    # Optional URL parameters to append onto the connection URL at connect time;
    # specify as param1=value1&param2=value2&... (string value)
    #connection_parameters =

    [file]

    #
    # From glance.multi_store
    #

    #
    # Directory to which the filesystem backend store writes images.
    #
    # Upon start up, Glance creates the directory if it doesn't already
    # exist and verifies write access to the user under which
    # ``glance-api`` runs. If the write access isn't available, a
    # ``BadStoreConfiguration`` exception is raised and the filesystem
    # store may not be available for adding new images.
    #
    # NOTE: This directory is used only when filesystem store is used as a
    # storage backend. Either ``filesystem_store_datadir`` or
    # ``filesystem_store_datadirs`` option must be specified in
    # ``glance-api.conf``. If both options are specified, a
    # ``BadStoreConfiguration`` will be raised and the filesystem store
    # may not be available for adding new images.
    #
    # Possible values:
    #     * A valid path to a directory
    #
    # Related options:
    #     * ``filesystem_store_datadirs``
    #     * ``filesystem_store_file_perm``
    #
    #  (string value)
    #filesystem_store_datadir = /var/lib/glance/images

    # DEPRECATED:
    # List of directories and their priorities to which the filesystem
    # backend store writes images.
    #
    # The filesystem store can be configured to store images in multiple
    # directories as opposed to using a single directory specified by the
    # ``filesystem_store_datadir`` configuration option. When using
    # multiple directories, each directory can be given an optional
    # priority to specify the preference order in which they should
    # be used. Priority is an integer that is concatenated to the
    # directory path with a colon where a higher value indicates higher
    # priority. When two directories have the same priority, the directory
    # with most free space is used. When no priority is specified, it
    # defaults to zero.
    #
    # More information on configuring filesystem store with multiple store
    # directories can be found at
    # https://docs.openstack.org/glance/latest/configuration/configuring.html
    #
    # NOTE: This directory is used only when filesystem store is used as a
    # storage backend. Either ``filesystem_store_datadir`` or
    # ``filesystem_store_datadirs`` option must be specified in
    # ``glance-api.conf``. If both options are specified, a
    # ``BadStoreConfiguration`` will be raised and the filesystem store
    # may not be available for adding new images.
    #
    # Possible values:
    #     * List of strings of the following form:
    #         * ``<a valid directory path>:<optional integer priority>``
    #
    # Related options:
    #     * ``filesystem_store_datadir``
    #     * ``filesystem_store_file_perm``
    #
    #  (multi valued)
    # This option is deprecated for removal since Flamingo.
    # Its value may be silently ignored in the future.
    # Reason:
    # Users willing to use multiple data directories should configure multiple
    # filesystem stores instead of using filesystem_store_datadirs.
    #
    # This option is scheduled for removal in the H development cycle.
    #filesystem_store_datadirs =

    #
    # Filesystem store metadata file.
    #
    # The path to a file which contains the metadata to be returned with any
    # location
    # associated with the filesystem store. Once this option is set, it is used for
    # new images created afterward only - previously existing images are not
    # affected.
    #
    # The file must contain a valid JSON object. The object should contain the keys
    # ``id`` and ``mountpoint``. The value for both keys should be a string.
    #
    # Possible values:
    #     * A valid path to the store metadata file
    #
    # Related options:
    #     * None
    #
    #  (string value)
    #filesystem_store_metadata_file = <None>

    #
    # File access permissions for the image files.
    #
    # Set the intended file access permissions for image data. This provides
    # a way to enable other services, e.g. Nova, to consume images directly
    # from the filesystem store. The users running the services that are
    # intended to be given access to could be made a member of the group
    # that owns the files created. Assigning a value less then or equal to
    # zero for this configuration option signifies that no changes be made
    # to the  default permissions. This value will be decoded as an octal
    # digit.
    #
    # For more information, please refer the documentation at
    # https://docs.openstack.org/glance/latest/configuration/configuring.html
    #
    # Possible values:
    #     * A valid file access permission
    #     * Zero
    #     * Any negative integer
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    #filesystem_store_file_perm = 0

    #
    # Chunk size, in bytes.
    #
    # The chunk size used when reading or writing image files. Raising this value
    # may improve the throughput but it may also slightly increase the memory usage
    # when handling a large number of requests.
    #
    # Possible Values:
    #     * Any positive integer value
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 1
    #filesystem_store_chunk_size = 65536

    #
    # Enable or not thin provisioning in this backend.
    #
    # This configuration option enable the feature of not really write null byte
    # sequences on the filesystem, the holes who can appear will automatically
    # be interpreted by the filesystem as null bytes, and do not really consume
    # your storage.
    # Enabling this feature will also speed up image upload and save network traffic
    # in addition to save space in the backend, as null bytes sequences are not
    # sent over the network.
    #
    # Possible Values:
    #     * True
    #     * False
    #
    # Related options:
    #     * None
    #
    #  (boolean value)
    #filesystem_thin_provisioning = false

    #
    # Timeout for all filesystem operations (seconds).
    #
    # Set to 0 to disable timeout protection (blocking IO, normal behavior).
    # Set > 0 to enable timeout protection with thread pool.
    # Recommended: 30 seconds for network storage, higher for slow networks.
    #
    # When timeout protection is enabled, filesystem operations like delete(),
    # get_size(), and _get_capacity_info() will be wrapped with timeout
    # protection. If an operation exceeds the timeout, a TimeoutError will be
    # raised.
    #
    # Possible values:
    #     * 0 (disabled, blocking IO)
    #     * Any positive integer (timeout in seconds)
    #
    # Related options:
    #     * filesystem_store_thread_pool_size
    #     * filesystem_store_threadpool_threshold
    #
    #  (integer value)
    # Minimum value: 0
    #filesystem_store_timeout = 0

    #
    # Thread pool size for timeout-protected operations.
    #
    # Only meaningful when filesystem_store_timeout > 0.
    # Ignored when filesystem_store_timeout = 0 (no thread pool is created).
    # Each store instance gets its own pool to avoid starvation.
    # Set based on expected concurrency and WSGI worker count.
    #
    # Possible values:
    #     * Any positive integer
    #
    # Related options:
    #     * filesystem_store_timeout
    #     * filesystem_store_threadpool_threshold
    #
    #  (integer value)
    # Minimum value: 1
    #filesystem_store_thread_pool_size = 10

    #
    # Thread pool usage threshold for warning logs (percentage).
    #
    # Only meaningful when filesystem_store_timeout > 0.
    # Ignored when filesystem_store_timeout = 0 (no thread pool is created).
    # When thread pool usage exceeds this threshold, a warning is logged
    # indicating that the pool is getting busy and may start blocking.
    #
    # Possible values:
    #     * 0-100 (percentage)
    #
    # Related options:
    #     * filesystem_store_timeout
    #     * filesystem_store_thread_pool_size
    #
    #  (integer value)
    # Minimum value: 0
    # Maximum value: 100
    #filesystem_store_threadpool_threshold = 75

    [glance.store.http.store]

    #
    # From glance.multi_store
    #

    #
    # Path to the CA bundle file.
    #
    # This configuration option enables the operator to use a custom
    # Certificate Authority file to verify the remote server certificate. If
    # this option is set, the ``https_insecure`` option will be ignored and
    # the CA file specified will be used to authenticate the server
    # certificate and establish a secure connection to the server.
    #
    # Possible values:
    #     * A valid path to a CA file
    #
    # Related options:
    #     * https_insecure
    #
    #  (string value)
    #https_ca_certificates_file = <None>

    #
    # Set verification of the remote server certificate.
    #
    # This configuration option takes in a boolean value to determine
    # whether or not to verify the remote server certificate. If set to
    # True, the remote server certificate is not verified. If the option is
    # set to False, then the default CA truststore is used for verification.
    #
    # This option is ignored if ``https_ca_certificates_file`` is set.
    # The remote server certificate will then be verified using the file
    # specified using the ``https_ca_certificates_file`` option.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * https_ca_certificates_file
    #
    #  (boolean value)
    #https_insecure = true

    #
    # The http/https proxy information to be used to connect to the remote
    # server.
    #
    # This configuration option specifies the http/https proxy information
    # that should be used to connect to the remote server. The proxy
    # information should be a key value pair of the scheme and proxy, for
    # example, http:10.0.0.1:3128. You can also specify proxies for multiple
    # schemes by separating the key value pairs with a comma, for example,
    # http:10.0.0.1:3128, https:10.0.0.1:1080.
    #
    # Possible values:
    #     * A comma separated list of scheme:proxy pairs as described above
    #
    # Related options:
    #     * None
    #
    #  (dict value)
    #http_proxy_information =

    [glance.store.rbd.store]

    #
    # From glance.multi_store
    #

    #
    # Size, in megabytes, to chunk RADOS images into.
    #
    # Provide an integer value representing the size in megabytes to chunk
    # Glance images into. The default chunk size is 8 megabytes. For optimal
    # performance, the value should be a power of two.
    #
    # When Ceph's RBD object storage system is used as the storage backend
    # for storing Glance images, the images are chunked into objects of the
    # size set using this option. These chunked objects are then stored
    # across the distributed block data store to use for Glance.
    #
    # Possible Values:
    #     * Any positive integer value
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 1
    #rbd_store_chunk_size = 8

    #
    # RADOS pool in which images are stored.
    #
    # When RBD is used as the storage backend for storing Glance images, the
    # images are stored by means of logical grouping of the objects (chunks
    # of images) into a ``pool``. Each pool is defined with the number of
    # placement groups it can contain. The default pool that is used is
    # 'images'.
    #
    # More information on the RBD storage backend can be found here:
    # http://ceph.com/planet/how-data-is-stored-in-ceph-cluster/
    #
    # Possible Values:
    #     * A valid pool name
    #
    # Related options:
    #     * None
    #
    #  (string value)
    #rbd_store_pool = images

    #
    # RADOS user to authenticate as.
    #
    # This configuration option takes in the RADOS user to authenticate as.
    # This is only needed when RADOS authentication is enabled and is
    # applicable only if the user is using Cephx authentication. If the
    # value for this option is not set by the user or is set to None, a
    # default value will be chosen, which will be based on the client.
    # section in rbd_store_ceph_conf.
    #
    # Possible Values:
    #     * A valid RADOS user
    #
    # Related options:
    #     * rbd_store_ceph_conf
    #
    #  (string value)
    #rbd_store_user = <None>

    #
    # Ceph configuration file path.
    #
    # This configuration option specifies the path to the Ceph configuration
    # file to be used. If the value for this option is not set by the user
    # or is set to the empty string, librados will read the standard ceph.conf
    # file by searching the default Ceph configuration file locations in
    # sequential order.  See the Ceph documentation for details.
    #
    # NOTE: If using Cephx authentication, this file should include a reference
    # to the right keyring in a client.<USER> section
    #
    # NOTE 2: If you leave this option empty (the default), the actual Ceph
    # configuration file used may change depending on what version of librados
    # is being used.  If it is important for you to know exactly which configuration
    # file is in effect, you may specify that file here using this option.
    #
    # Possible Values:
    #     * A valid path to a configuration file
    #
    # Related options:
    #     * rbd_store_user
    #
    #  (string value)
    #rbd_store_ceph_conf =

    #
    # Timeout value for connecting to Ceph cluster.
    #
    # This configuration option takes in the timeout value in seconds used
    # when connecting to the Ceph cluster i.e. it sets the time to wait for
    # glance-api before closing the connection. This prevents glance-api
    # hangups during the connection to RBD. If the value for this option
    # is set to less than 0, no timeout is set and the default librados value
    # is used.
    #
    # Possible Values:
    #     * Any integer value
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    #rados_connect_timeout = -1

    #
    # Enable or not thin provisioning in this backend.
    #
    # This configuration option enable the feature of not really write null byte
    # sequences on the RBD backend, the holes who can appear will automatically
    # be interpreted by Ceph as null bytes, and do not really consume your storage.
    # Enabling this feature will also speed up image upload and save network traffic
    # in addition to save space in the backend, as null bytes sequences are not
    # sent over the network.
    #
    # Possible Values:
    #     * True
    #     * False
    #
    # Related options:
    #     * None
    #
    #  (boolean value)
    #rbd_thin_provisioning = false

    [glance.store.s3.store]

    #
    # From glance.multi_store
    #

    #
    # The host where the S3 server is listening.
    #
    # This configuration option sets the host of the S3 or S3 compatible storage
    # Server. This option is required when using the S3 storage backend.
    # The host can contain a DNS name (e.g. s3.amazonaws.com, my-object-storage.com)
    # or an IP address (127.0.0.1).
    #
    # Possible values:
    #     * A valid DNS name
    #     * A valid IPv4 address
    #
    # Related Options:
    #     * s3_store_access_key
    #     * s3_store_secret_key
    #
    #  (string value)
    #s3_store_host = <None>

    #
    # The S3 region name.
    #
    # This parameter will set the region_name used by boto.
    # If this parameter is not set, we we will try to compute it from the
    # s3_store_host.
    #
    # Possible values:
    #     * A valid region name
    #
    # Related Options:
    #     * s3_store_host
    #
    #  (string value)
    #s3_store_region_name =

    #
    # The S3 query token access key.
    #
    # This configuration option takes the access key for authenticating with the
    # Amazon S3 or S3 compatible storage server. This option is required when using
    # the S3 storage backend.
    #
    # Possible values:
    #     * Any string value that is the access key for a user with appropriate
    #       privileges
    #
    # Related Options:
    #     * s3_store_host
    #     * s3_store_secret_key
    #
    #  (string value)
    #s3_store_access_key = <None>

    #
    # The S3 query token secret key.
    #
    # This configuration option takes the secret key for authenticating with the
    # Amazon S3 or S3 compatible storage server. This option is required when using
    # the S3 storage backend.
    #
    # Possible values:
    #     * Any string value that is a secret key corresponding to the access key
    #       specified using the ``s3_store_host`` option
    #
    # Related Options:
    #     * s3_store_host
    #     * s3_store_access_key
    #
    #  (string value)
    #s3_store_secret_key = <None>

    #
    # The S3 bucket to be used to store the Glance data.
    #
    # This configuration option specifies where the glance images will be stored
    # in the S3. If ``s3_store_create_bucket_on_put`` is set to true, it will be
    # created automatically even if the bucket does not exist.
    #
    # Possible values:
    #     * Any string value
    #
    # Related Options:
    #     * s3_store_create_bucket_on_put
    #     * s3_store_bucket_url_format
    #
    #  (string value)
    #s3_store_bucket = <None>

    #
    # Determine whether S3 should create a new bucket.
    #
    # This configuration option takes boolean value to indicate whether Glance
    # should
    # create a new bucket to S3 if it does not exist.
    #
    # Possible values:
    #     * Any Boolean value
    #
    # Related Options:
    #     * None
    #
    #  (boolean value)
    #s3_store_create_bucket_on_put = false

    #
    # The S3 calling format used to determine the object.
    #
    # This configuration option takes access model that is used to specify the
    # address of an object in an S3 bucket.
    #
    # NOTE:
    # In ``path``-style, the endpoint for the object looks like
    # 'https://s3.amazonaws.com/bucket/example.img'.
    # And in ``virtual``-style, the endpoint for the object looks like
    # 'https://bucket.s3.amazonaws.com/example.img'.
    # If you do not follow the DNS naming convention in the bucket name, you can
    # get objects in the path style, but not in the virtual style.
    #
    # Possible values:
    #     * Any string value of ``auto``, ``virtual``, or ``path``
    #
    # Related Options:
    #     * s3_store_bucket
    #
    #  (string value)
    #s3_store_bucket_url_format = auto

    #
    # What size, in MB, should S3 start chunking image files and do a multipart
    # upload in S3.
    #
    # This configuration option takes a threshold in MB to determine whether to
    # upload the image to S3 as is or to split it (Multipart Upload).
    #
    # Note: You can only split up to 10,000 images.
    #
    # Possible values:
    #     * Any positive integer value or zero
    #
    # Related Options:
    #     * s3_store_large_object_chunk_size
    #     * s3_store_thread_pools
    #
    #  (integer value)
    # Minimum value: 0
    #s3_store_large_object_size = 100

    #
    # What multipart upload part size, in MB, should S3 use when uploading parts.
    #
    # This configuration option takes the image split size in MB for Multipart
    # Upload.
    #
    # Note: You can only split up to 10,000 images.
    #
    # Possible values:
    #     * Any positive integer value (must be greater than or equal to 5M)
    #
    # Related Options:
    #     * s3_store_large_object_size
    #     * s3_store_thread_pools
    #
    #  (integer value)
    #s3_store_large_object_chunk_size = 10

    #
    # The number of thread pools to perform a multipart upload in S3.
    #
    # This configuration option takes the number of thread pools when performing a
    # Multipart Upload.
    #
    # Possible values:
    #     * Any positive integer value
    #
    # Related Options:
    #     * s3_store_large_object_size
    #     * s3_store_large_object_chunk_size
    #
    #  (integer value)
    #s3_store_thread_pools = 10

    #
    # The path to the CA cert bundle to use. The default value (an empty string)
    # forces the use of the default CA cert bundle used by botocore.
    #
    # Possible values:
    #     * A path to the CA cert bundle to use
    #     * An empty string to use the default CA cert bundle used by botocore
    #
    #  (string value)
    #s3_store_cacert =

    #
    # Turn on S3 data integrity protections by enabling request checksum calculation
    # and response checksum validation. Setting this to False is the same as setting
    # the AWS_REQUEST_CHECKSUM_CALCULATION and AWS_RESPONSE_CHECKSUM_VALIDATION
    # environment variables to "when_required". Setting this to True gives the user
    # fine-grained control over the data integrity protections by using the
    # s3_store_request_checksum_calculation and
    # s3_store_response_checksum_validation
    # options.
    #
    # This defaults to False as to not change the default behaviour in glance_store,
    # which prevents upload failures when using S3-compatible storage backends that
    # do not implement S3 data integrity protection.
    #
    # Related Options:
    #     * s3_store_request_checksum_calculation
    #     * s3_store_response_checksum_validation
    #  (boolean value)
    #s3_store_enable_data_integrity_protection = false

    #
    # Controls when checksums are calculated for S3 upload requests.
    #
    # This configuration option provides fine-grained control over request checksum
    # calculation behavior. It maps directly to the botocore Config parameter
    # request_checksum_calculation.
    #
    # Possible values:
    #     * when_required - Only calculate checksums when required by the operation
    #     * when_supported - Calculate checksums when supported by the operation
    #
    # This option is only used when s3_store_enable_data_integrity_protection is
    # set to True. When s3_store_enable_data_integrity_protection is False, both
    # request and response checksums use 'when_required' regardless of this setting.
    #
    # Related Options:
    #     * s3_store_response_checksum_validation
    #     * s3_store_enable_data_integrity_protection
    #
    #  (string value)
    # Possible values:
    # when_required - <No description provided>
    # when_supported - <No description provided>
    #s3_store_request_checksum_calculation = when_required

    #
    # Controls when checksums are validated for S3 download responses.
    #
    # This configuration option provides fine-grained control over response checksum
    # validation behavior. It maps directly to the botocore Config parameter
    # response_checksum_validation.
    #
    # Possible values:
    #     * when_required - Only validate checksums when required by the operation
    #     * when_supported - Validate checksums when supported by the operation
    #
    # This option is only used when s3_store_enable_data_integrity_protection is
    # set to True. When s3_store_enable_data_integrity_protection is False, both
    # request and response checksums use 'when_required' regardless of this setting.
    #
    # Related Options:
    #     * s3_store_request_checksum_calculation
    #     * s3_store_enable_data_integrity_protection
    #
    #  (string value)
    # Possible values:
    # when_required - <No description provided>
    # when_supported - <No description provided>
    #s3_store_response_checksum_validation = when_required

    [glance.store.swift.store]

    #
    # From glance.multi_store
    #

    #
    # Set verification of the server certificate.
    #
    # This boolean determines whether or not to verify the server
    # certificate. If this option is set to True, swiftclient won't check
    # for a valid SSL certificate when authenticating. If the option is set
    # to False, then the default CA truststore is used for verification.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * swift_store_cacert
    #
    #  (boolean value)
    #swift_store_auth_insecure = false

    #
    # Path to the CA bundle file.
    #
    # This configuration option enables the operator to specify the path to
    # a custom Certificate Authority file for SSL verification when
    # connecting to Swift.
    #
    # Possible values:
    #     * A valid path to a CA file
    #
    # Related options:
    #     * swift_store_auth_insecure
    #
    #  (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #swift_store_cacert = /etc/ssl/certs/ca-certificates.crt

    #
    # The region of Swift endpoint to use by Glance.
    #
    # Provide a string value representing a Swift region where Glance
    # can connect to for image storage. By default, there is no region
    # set.
    #
    # When Glance uses Swift as the storage backend to store images
    # for a specific tenant that has multiple endpoints, setting of a
    # Swift region with ``swift_store_region`` allows Glance to connect
    # to Swift in the specified region as opposed to a single region
    # connectivity.
    #
    # This option can be configured for both single-tenant and
    # multi-tenant storage.
    #
    # NOTE: Setting the region with ``swift_store_region`` is
    # tenant-specific and is necessary ``only if`` the tenant has
    # multiple endpoints across different regions.
    #
    # Possible values:
    #     * A string value representing a valid Swift region.
    #
    # Related Options:
    #     * None
    #
    #  (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #swift_store_region = RegionTwo

    #
    # The URL endpoint to use for Swift backend storage.
    #
    # Provide a string value representing the URL endpoint to use for
    # storing Glance images in Swift store. By default, an endpoint
    # is not set and the storage URL returned by ``auth`` is used.
    # Setting an endpoint with ``swift_store_endpoint`` overrides the
    # storage URL and is used for Glance image storage.
    #
    # NOTE: The URL should include the path up to, but excluding the
    # container. The location of an object is obtained by appending
    # the container and object to the configured URL.
    #
    # Possible values:
    #     * String value representing a valid URL path up to a Swift container
    #
    # Related Options:
    #     * None
    #
    #  (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #swift_store_endpoint = https://swift.openstack.example.org/v1/path_not_including_container_name

    #
    # Endpoint Type of Swift service.
    #
    # This string value indicates the endpoint type to use to fetch the
    # Swift endpoint. The endpoint type determines the actions the user will
    # be allowed to perform, for instance, reading and writing to the Store.
    #
    # Possible values:
    #     * publicURL
    #     * adminURL
    #     * internalURL
    #
    # Related options:
    #     * swift_store_endpoint
    #
    #  (string value)
    # Possible values:
    # publicURL - <No description provided>
    # adminURL - <No description provided>
    # internalURL - <No description provided>
    #swift_store_endpoint_type = publicURL

    #
    # Type of Swift service to use.
    #
    # Provide a string value representing the service type to use for
    # storing images while using Swift backend storage. The default
    # service type is set to ``object-store``.
    #
    # Possible values:
    #     * A string representing a valid service type for Swift storage.
    #
    # Related Options:
    #     * None
    #
    #  (string value)
    #swift_store_service_type = object-store

    #
    # Name of single container to store images/name prefix for multiple containers
    #
    # When a single container is being used to store images, this configuration
    # option indicates the container within the Glance account to be used for
    # storing all images. When multiple containers are used to store images, this
    # will be the name prefix for all containers. Usage of single/multiple
    # containers can be controlled using the configuration option
    # ``swift_store_multiple_containers_seed``.
    #
    # When using multiple containers, the containers will be named after the value
    # set for this configuration option with the first N chars of the image UUID
    # as the suffix delimited by an underscore (where N is specified by
    # ``swift_store_multiple_containers_seed``).
    #
    # Example: if the seed is set to 3 and swift_store_container = ``glance``, then
    # an image with UUID ``fdae39a1-bac5-4238-aba4-69bcc726e848`` would be placed in
    # the container ``glance_fda``. All dashes in the UUID are included when
    # creating the container name but do not count toward the character limit, so
    # when N=10 the container name would be ``glance_fdae39a1-ba.``
    #
    # Possible values:
    #     * If using single container, this configuration option can be any string
    #       that is a valid swift container name in Glance's Swift account
    #     * If using multiple containers, this configuration option can be any
    #       string as long as it satisfies the container naming rules enforced by
    #       Swift. The value of ``swift_store_multiple_containers_seed`` should be
    #       taken into account as well.
    #
    # Related options:
    #     * ``swift_store_multiple_containers_seed``
    #     * ``swift_store_multi_tenant``
    #     * ``swift_store_create_container_on_put``
    #
    #  (string value)
    #swift_store_container = glance

    #
    # The size threshold, in MB, after which Glance will start segmenting image
    # data.
    #
    # Swift has an upper limit on the size of a single uploaded object. By default,
    # this is 5GB. To upload objects bigger than this limit, objects are segmented
    # into multiple smaller objects that are tied together with a manifest file.
    # For more detail, refer to
    # https://docs.openstack.org/swift/latest/overview_large_objects.html
    #
    # This configuration option specifies the size threshold over which the Swift
    # driver will start segmenting image data into multiple smaller files.
    # Currently, the Swift driver only supports creating Dynamic Large Objects.
    #
    # NOTE: This should be set by taking into account the large object limit
    # enforced by the Swift cluster in consideration.
    #
    # Possible values:
    #     * A positive integer that is less than or equal to the large object limit
    #       enforced by the Swift cluster in consideration.
    #
    # Related options:
    #     * ``swift_store_large_object_chunk_size``
    #
    #  (integer value)
    # Minimum value: 1
    #swift_store_large_object_size = 5120

    #
    # The maximum size, in MB, of the segments when image data is segmented.
    #
    # When image data is segmented to upload images that are larger than the limit
    # enforced by the Swift cluster, image data is broken into segments that are no
    # bigger than the size specified by this configuration option.
    # Refer to ``swift_store_large_object_size`` for more detail.
    #
    # For example: if ``swift_store_large_object_size`` is 5GB and
    # ``swift_store_large_object_chunk_size`` is 1GB, an image of size 6.2GB will be
    # segmented into 7 segments where the first six segments will be 1GB in size and
    # the seventh segment will be 0.2GB.
    #
    # Possible values:
    #     * A positive integer that is less than or equal to the large object limit
    #       enforced by Swift cluster in consideration.
    #
    # Related options:
    #     * ``swift_store_large_object_size``
    #
    #  (integer value)
    # Minimum value: 1
    #swift_store_large_object_chunk_size = 200

    #
    # Create container, if it doesn't already exist, when uploading image.
    #
    # At the time of uploading an image, if the corresponding container doesn't
    # exist, it will be created provided this configuration option is set to True.
    # By default, it won't be created. This behavior is applicable for both single
    # and multiple containers mode.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * None
    #
    #  (boolean value)
    #swift_store_create_container_on_put = false

    #
    # Store images in tenant's Swift account.
    #
    # This enables multi-tenant storage mode which causes Glance images to be stored
    # in tenant specific Swift accounts. If this is disabled, Glance stores all
    # images in its own account. More details multi-tenant store can be found at
    # https://wiki.openstack.org/wiki/GlanceSwiftTenantSpecificStorage
    #
    # NOTE: If using multi-tenant swift store, please make sure
    # that you do not set a swift configuration file with the
    # 'swift_store_config_file' option.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * swift_store_config_file
    #
    #  (boolean value)
    #swift_store_multi_tenant = false

    #
    # Seed indicating the number of containers to use for storing images.
    #
    # When using a single-tenant store, images can be stored in one or more than one
    # containers. When set to 0, all images will be stored in one single container.
    # When set to an integer value between 1 and 32, multiple containers will be
    # used to store images. This configuration option will determine how many
    # containers are created. The total number of containers that will be used is
    # equal to 16^N, so if this config option is set to 2, then 16^2=256 containers
    # will be used to store images.
    #
    # Please refer to ``swift_store_container`` for more detail on the naming
    # convention. More detail about using multiple containers can be found at
    # https://specs.openstack.org/openstack/glance-specs/specs/kilo/swift-store-
    # multiple-containers.html
    #
    # NOTE: This is used only when swift_store_multi_tenant is disabled.
    #
    # Possible values:
    #     * A non-negative integer less than or equal to 32
    #
    # Related options:
    #     * ``swift_store_container``
    #     * ``swift_store_multi_tenant``
    #     * ``swift_store_create_container_on_put``
    #
    #  (integer value)
    # Minimum value: 0
    # Maximum value: 32
    #swift_store_multiple_containers_seed = 0

    #
    # List of tenants that will be granted admin access.
    #
    # This is a list of tenants that will be granted read/write access on
    # all Swift containers created by Glance in multi-tenant mode. The
    # default value is an empty list.
    #
    # Possible values:
    #     * A comma separated list of strings representing UUIDs of Keystone
    #       projects/tenants
    #
    # Related options:
    #     * None
    #
    #  (list value)
    #swift_store_admin_tenants =

    #
    # SSL layer compression for HTTPS Swift requests.
    #
    # Provide a boolean value to determine whether or not to compress
    # HTTPS Swift requests for images at the SSL layer. By default,
    # compression is enabled.
    #
    # When using Swift as the backend store for Glance image storage,
    # SSL layer compression of HTTPS Swift requests can be set using
    # this option. If set to False, SSL layer compression of HTTPS
    # Swift requests is disabled. Disabling this option may improve
    # performance for images which are already in a compressed format,
    # for example, qcow2.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related Options:
    #     * None
    #
    #  (boolean value)
    #swift_store_ssl_compression = true

    #
    # The number of times a Swift download will be retried before the
    # request fails.
    #
    # Provide an integer value representing the number of times an image
    # download must be retried before erroring out. The default value is
    # zero (no retry on a failed image download). When set to a positive
    # integer value, ``swift_store_retry_get_count`` ensures that the
    # download is attempted this many more times upon a download failure
    # before sending an error message.
    #
    # Possible values:
    #     * Zero
    #     * Positive integer value
    #
    # Related Options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 0
    #swift_store_retry_get_count = 0

    #
    # Time in seconds defining the size of the window in which a new
    # token may be requested before the current token is due to expire.
    #
    # Typically, the Swift storage driver fetches a new token upon the
    # expiration of the current token to ensure continued access to
    # Swift. However, some Swift transactions (like uploading image
    # segments) may not recover well if the token expires on the fly.
    #
    # Hence, by fetching a new token before the current token expiration,
    # we make sure that the token does not expire or is close to expiry
    # before a transaction is attempted. By default, the Swift storage
    # driver requests for a new token 60 seconds or less before the
    # current token expiration.
    #
    # Possible values:
    #     * Zero
    #     * Positive integer value
    #
    # Related Options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 0
    #swift_store_expire_soon_interval = 60

    #
    # Use trusts for multi-tenant Swift store.
    #
    # This option instructs the Swift store to create a trust for each
    # add/get request when the multi-tenant store is in use. Using trusts
    # allows the Swift store to avoid problems that can be caused by an
    # authentication token expiring during the upload or download of data.
    #
    # By default, ``swift_store_use_trusts`` is set to ``True``(use of
    # trusts is enabled). If set to ``False``, a user token is used for
    # the Swift connection instead, eliminating the overhead of trust
    # creation.
    #
    # NOTE: This option is considered only when
    # ``swift_store_multi_tenant`` is set to ``True``
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * swift_store_multi_tenant
    #
    #  (boolean value)
    #swift_store_use_trusts = true

    #
    # Buffer image segments before upload to Swift.
    #
    # Provide a boolean value to indicate whether or not Glance should
    # buffer image data to disk while uploading to swift. This enables
    # Glance to resume uploads on error.
    #
    # NOTES:
    # When enabling this option, one should take great care as this
    # increases disk usage on the API node. Be aware that depending
    # upon how the file system is configured, the disk space used
    # for buffering may decrease the actual disk space available for
    # the glance image cache.  Disk utilization will cap according to
    # the following equation:
    # (``swift_store_large_object_chunk_size`` * ``workers`` * 1000)
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * swift_upload_buffer_dir
    #
    #  (boolean value)
    #swift_buffer_on_upload = false

    #
    # Reference to default Swift account/backing store parameters.
    #
    # Provide a string value representing a reference to the default set
    # of parameters required for using swift account/backing store for
    # image storage. The default reference value for this configuration
    # option is 'ref1'. This configuration option dereferences the
    # parameters and facilitates image storage in Swift storage backend
    # every time a new image is added.
    #
    # Possible values:
    #     * A valid string value
    #
    # Related options:
    #     * None
    #
    #  (string value)
    #default_swift_reference = ref1

    # DEPRECATED: The authentication version to be used. Currently The only valid
    # version is 3. (string value)
    # Possible values:
    # 3 - <No description provided>
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason:
    # This option is kept for backword-compatibility reasons but is no longer
    # required, because only the single version (3) is supported now.
    #swift_store_auth_version = 3

    # DEPRECATED: The address where the Swift authentication service is listening.
    # (string value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason:
    # The option 'auth_address' in the Swift back-end configuration file is
    # used instead.
    #swift_store_auth_address = <None>

    # DEPRECATED: The user to authenticate against the Swift authentication service.
    # (string value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason:
    # The option 'user' in the Swift back-end configuration file is set instead.
    #swift_store_user = <None>

    # DEPRECATED: Auth key for the user authenticating against the Swift
    # authentication service. (string value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason:
    # The option 'key' in the Swift back-end configuration file is used
    # to set the authentication key instead.
    #swift_store_key = <None>

    #
    # Application credential ID for authenticating against Swift.
    #
    # This option specifies the application credential ID to use for
    # authenticating with the Swift backend. When set along with
    # swift_store_application_credential_secret, the Swift driver will
    # use V3ApplicationCredential authentication instead of password
    # authentication.
    #
    # This enables Zero Downtime Password Rotation (ZDPR) support for
    # Swift backend operations, as application credentials are not
    # affected by password rotation.
    #
    # If not set, the driver falls back to password authentication
    # using swift_store_user and swift_store_key.
    #
    # Possible values:
    #     * A valid application credential ID string
    #
    # Related options:
    #     * swift_store_application_credential_secret
    #
    #  (string value)
    #swift_store_application_credential_id = <None>

    #
    # Application credential secret for authenticating against Swift.
    #
    # This option specifies the application credential secret to use
    # for authenticating with the Swift backend. When set along with
    # swift_store_application_credential_id, the Swift driver will
    # use V3ApplicationCredential authentication instead of password
    # authentication.
    #
    # This enables Zero Downtime Password Rotation (ZDPR) support for
    # Swift backend operations, as application credentials are not
    # affected by password rotation.
    #
    # If not set, the driver falls back to password authentication
    # using swift_store_user and swift_store_key.
    #
    # Possible values:
    #     * A valid application credential secret string
    #
    # Related options:
    #     * swift_store_application_credential_id
    #
    #  (string value)
    #swift_store_application_credential_secret = <None>

    # DEPRECATED: Project name for authenticating with application credentials
    # against the Swift authentication service. (string value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason:
    # The option 'project_name' in the Swift back-end configuration file is
    # used instead.
    #swift_store_project_name = <None>

    # DEPRECATED: Project ID for authenticating with application credentials against
    # the Swift authentication service. (string value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason:
    # The option 'project_id' in the Swift back-end configuration file is
    # used instead.
    #swift_store_project_id = <None>

    #
    # Absolute path to the file containing the swift account(s)
    # configurations.
    #
    # Include a string value representing the path to a configuration
    # file that has references for each of the configured Swift
    # account(s)/backing stores. By default, no file path is specified
    # and customized Swift referencing is disabled. Configuring this
    # option is highly recommended while using Swift storage backend for
    # image storage as it avoids storage of credentials in the database.
    #
    # NOTE: Please do not configure this option if you have set
    # ``swift_store_multi_tenant`` to ``True``.
    #
    # Possible values:
    #     * String value representing an absolute path on the glance-api
    #       node
    #
    # Related options:
    #     * swift_store_multi_tenant
    #
    #  (string value)
    #swift_store_config_file = <None>

    #
    # Directory to buffer image segments before upload to Swift.
    #
    # Provide a string value representing the absolute path to the
    # directory on the glance node where image segments will be
    # buffered briefly before they are uploaded to swift.
    #
    # NOTES:
    #     * This is required only when the configuration option
    #       ``swift_buffer_on_upload`` is set to True.
    #     * This directory should be provisioned keeping in mind the
    #       ``swift_store_large_object_chunk_size`` and the maximum
    #       number of images that could be uploaded simultaneously by
    #       a given glance node.
    #
    # Possible values:
    #     * String value representing an absolute directory path
    #
    # Related options:
    #     * swift_buffer_on_upload
    #     * swift_store_large_object_chunk_size
    #
    #  (string value)
    #swift_upload_buffer_dir = <None>

    [glance.store.vmware_datastore.store]

    #
    # From glance.multi_store
    #

    #
    # Address of the ESX/ESXi or vCenter Server target system.
    #
    # This configuration option sets the address of the ESX/ESXi or vCenter
    # Server target system. This option is required when using the VMware
    # storage backend. The address can contain an IP address (127.0.0.1) or
    # a DNS name (www.my-domain.com).
    #
    # Possible Values:
    #     * A valid IPv4 or IPv6 address
    #     * A valid DNS name
    #
    # Related options:
    #     * vmware_server_username
    #     * vmware_server_password
    #
    #  (host address value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #vmware_server_host = 127.0.0.1

    #
    # Server username.
    #
    # This configuration option takes the username for authenticating with
    # the VMware ESX/ESXi or vCenter Server. This option is required when
    # using the VMware storage backend.
    #
    # Possible Values:
    #     * Any string that is the username for a user with appropriate
    #       privileges
    #
    # Related options:
    #     * vmware_server_host
    #     * vmware_server_password
    #
    #  (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #vmware_server_username = root

    #
    # Server password.
    #
    # This configuration option takes the password for authenticating with
    # the VMware ESX/ESXi or vCenter Server. This option is required when
    # using the VMware storage backend.
    #
    # Possible Values:
    #     * Any string that is a password corresponding to the username
    #       specified using the "vmware_server_username" option
    #
    # Related options:
    #     * vmware_server_host
    #     * vmware_server_username
    #
    #  (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #vmware_server_password = vmware

    #
    # The number of VMware API retries.
    #
    # This configuration option specifies the number of times the VMware
    # ESX/VC server API must be retried upon connection related issues or
    # server API call overload. It is not possible to specify 'retry
    # forever'.
    #
    # Possible Values:
    #     * Any positive integer value
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 1
    #vmware_api_retry_count = 10

    #
    # Interval in seconds used for polling remote tasks invoked on VMware
    # ESX/VC server.
    #
    # This configuration option takes in the sleep time in seconds for polling an
    # on-going async task as part of the VMWare ESX/VC server API call.
    #
    # Possible Values:
    #     * Any positive integer value
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 1
    #vmware_task_poll_interval = 5

    #
    # The directory where the glance images will be stored in the datastore.
    #
    # This configuration option specifies the path to the directory where the
    # glance images will be stored in the VMware datastore. If this option
    # is not set,  the default directory where the glance images are stored
    # is openstack_glance.
    #
    # Possible Values:
    #     * Any string that is a valid path to a directory
    #
    # Related options:
    #     * None
    #
    #  (string value)
    #vmware_store_image_dir = /openstack_glance

    #
    # Set verification of the ESX/vCenter server certificate.
    #
    # This configuration option takes a boolean value to determine
    # whether or not to verify the ESX/vCenter server certificate. If this
    # option is set to True, the ESX/vCenter server certificate is not
    # verified. If this option is set to False, then the default CA
    # truststore is used for verification.
    #
    # This option is ignored if the "vmware_ca_file" option is set. In that
    # case, the ESX/vCenter server certificate will then be verified using
    # the file specified using the "vmware_ca_file" option .
    #
    # Possible Values:
    #     * True
    #     * False
    #
    # Related options:
    #     * vmware_ca_file
    #
    #  (boolean value)
    # Deprecated group/name - [glance.store.vmware_datastore.store]/vmware_api_insecure
    #vmware_insecure = false

    #
    # Absolute path to the CA bundle file.
    #
    # This configuration option enables the operator to use a custom
    # Cerificate Authority File to verify the ESX/vCenter certificate.
    #
    # If this option is set, the "vmware_insecure" option will be ignored
    # and the CA file specified will be used to authenticate the ESX/vCenter
    # server certificate and establish a secure connection to the server.
    #
    # Possible Values:
    #     * Any string that is a valid absolute path to a CA file
    #
    # Related options:
    #     * vmware_insecure
    #
    #  (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #vmware_ca_file = /etc/ssl/certs/ca-certificates.crt

    #
    # The datastores where the image can be stored.
    #
    # This configuration option specifies the datastores where the image can
    # be stored in the VMWare store backend. This option may be specified
    # multiple times for specifying multiple datastores. The datastore name
    # should be specified after its datacenter path, separated by ":". An
    # optional weight may be given after the datastore name, separated again
    # by ":" to specify the priority. Thus, the required format becomes
    # <datacenter_path>:<datastore_name>:<optional_weight>.
    #
    # When adding an image, the datastore with highest weight will be
    # selected, unless there is not enough free space available in cases
    # where the image size is already known. If no weight is given, it is
    # assumed to be zero and the directory will be considered for selection
    # last. If multiple datastores have the same weight, then the one with
    # the most free space available is selected.
    #
    # Possible Values:
    #     * Any string of the format:
    #       <datacenter_path>:<datastore_name>:<optional_weight>
    #
    # Related options:
    #    * None
    #
    #  (multi valued)
    #vmware_datastores =

    [glance_store]

    #
    # From glance.multi_store
    #

    #
    # The store identifier for the default backend in which data will be
    # stored.
    #
    # The value must be defined as one of the keys in the dict defined
    # by the ``enabled_backends`` configuration option in the DEFAULT
    # configuration group.
    #
    # If a value is not defined for this option:
    #
    # * the consuming service may refuse to start
    # * store_add calls that do not specify a specific backend will
    #   raise a ``glance_store.exceptions.UnknownScheme`` exception
    #
    # Related Options:
    #     * enabled_backends
    #
    #  (string value)
    #default_backend = <None>

    #
    # From glance.store
    #

    # DEPRECATED:
    # List of enabled Glance stores.
    #
    # Register the storage backends to use for storing disk images
    # as a comma separated list. The default stores enabled for
    # storing disk images with Glance are ``file`` and ``http``.
    #
    # Possible values:
    #     * A comma separated list that could include:
    #         * file
    #         * http
    #         * swift
    #         * rbd
    #         * cinder
    #         * vmware
    #         * s3
    #
    # Related Options:
    #     * default_store
    #
    #  (list value)
    # This option is deprecated for removal since Rocky.
    # Its value may be silently ignored in the future.
    # Reason:
    # This option is deprecated against new config option
    # ``enabled_backends`` which helps to configure multiple backend stores
    # of different schemes.
    #
    # This option is scheduled for removal in the U development
    # cycle.
    #stores = file,http

    # DEPRECATED:
    # The default scheme to use for storing images.
    #
    # Provide a string value representing the default scheme to use for
    # storing images. If not set, Glance uses ``file`` as the default
    # scheme to store images with the ``file`` store.
    #
    # NOTE: The value given for this configuration option must be a valid
    # scheme for a store registered with the ``stores`` configuration
    # option.
    #
    # Possible values:
    #     * file
    #     * filesystem
    #     * http
    #     * https
    #     * swift
    #     * swift+http
    #     * swift+https
    #     * swift+config
    #     * rbd
    #     * cinder
    #     * vsphere
    #     * s3
    #
    # Related Options:
    #     * stores
    #
    #  (string value)
    # Possible values:
    # file - <No description provided>
    # filesystem - <No description provided>
    # http - <No description provided>
    # https - <No description provided>
    # swift - <No description provided>
    # swift+http - <No description provided>
    # swift+https - <No description provided>
    # swift+config - <No description provided>
    # rbd - <No description provided>
    # cinder - <No description provided>
    # vsphere - <No description provided>
    # s3 - <No description provided>
    # This option is deprecated for removal since Rocky.
    # Its value may be silently ignored in the future.
    # Reason:
    # This option is deprecated against new config option
    # ``default_backend`` which acts similar to ``default_store`` config
    # option.
    #
    # This option is scheduled for removal in the U development
    # cycle.
    #default_store = file

    #
    # Information to match when looking for cinder in the service catalog.
    #
    # When the ``cinder_endpoint_template`` is not set and any of
    # ``cinder_store_auth_address``, ``cinder_store_user_name``,
    # ``cinder_store_project_name``, ``cinder_store_password`` is not set,
    # cinder store uses this information to lookup cinder endpoint from the service
    # catalog in the current context. ``cinder_os_region_name``, if set, is taken
    # into consideration to fetch the appropriate endpoint.
    #
    # The service catalog can be listed by the ``openstack catalog list`` command.
    #
    # Possible values:
    #     * A string of of the following form:
    #       ``<service_type>:<service_name>:<interface>``
    #       At least ``service_type`` and ``interface`` should be specified.
    #       ``service_name`` can be omitted.
    #
    # Related options:
    #     * cinder_os_region_name
    #     * cinder_endpoint_template
    #     * cinder_store_auth_address
    #     * cinder_store_user_name
    #     * cinder_store_project_name
    #     * cinder_store_password
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_domain_name
    #
    #  (string value)
    #cinder_catalog_info = volumev3::publicURL

    #
    # Override service catalog lookup with template for cinder endpoint.
    #
    # When this option is set, this value is used to generate cinder endpoint,
    # instead of looking up from the service catalog.
    # This value is ignored if ``cinder_store_auth_address``,
    # ``cinder_store_user_name``, ``cinder_store_project_name``, and
    # ``cinder_store_password`` are specified.
    #
    # If this configuration option is set, ``cinder_catalog_info`` will be ignored.
    #
    # Possible values:
    #     * URL template string for cinder endpoint, where ``%%(tenant)s`` is
    #       replaced with the current tenant (project) name.
    #       For example: ``http://cinder.openstack.example.org/v2/%%(tenant)s``
    #
    # Related options:
    #     * cinder_store_auth_address
    #     * cinder_store_user_name
    #     * cinder_store_project_name
    #     * cinder_store_password
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_domain_name
    #     * cinder_catalog_info
    #
    #  (string value)
    #cinder_endpoint_template = <None>

    #
    # Region name to lookup cinder service from the service catalog.
    #
    # This is used only when ``cinder_catalog_info`` is used for determining the
    # endpoint. If set, the lookup for cinder endpoint by this node is filtered to
    # the specified region. It is useful when multiple regions are listed in the
    # catalog. If this is not set, the endpoint is looked up from every region.
    #
    # Possible values:
    #     * A string that is a valid region name.
    #
    # Related options:
    #     * cinder_catalog_info
    #
    #  (string value)
    # Deprecated group/name - [glance_store]/os_region_name
    #cinder_os_region_name = <None>

    #
    # Location of a CA certificates file used for cinder client requests.
    #
    # The specified CA certificates file, if set, is used to verify cinder
    # connections via HTTPS endpoint. If the endpoint is HTTP, this value is
    # ignored.
    # ``cinder_api_insecure`` must be set to ``True`` to enable the verification.
    #
    # Possible values:
    #     * Path to a ca certificates file
    #
    # Related options:
    #     * cinder_api_insecure
    #
    #  (string value)
    #cinder_ca_certificates_file = <None>

    #
    # Number of cinderclient retries on failed http calls.
    #
    # When a call failed by any errors, cinderclient will retry the call up to the
    # specified times after sleeping a few seconds.
    #
    # Possible values:
    #     * A positive integer
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 0
    #cinder_http_retries = 3

    #
    # Time period, in seconds, to wait for a cinder volume transition to
    # complete.
    #
    # When the cinder volume is created, deleted, or attached to the glance node to
    # read/write the volume data, the volume's state is changed. For example, the
    # newly created volume status changes from ``creating`` to ``available`` after
    # the creation process is completed. This specifies the maximum time to wait for
    # the status change. If a timeout occurs while waiting, or the status is changed
    # to an unexpected value (e.g. `error``), the image creation fails.
    #
    # Possible values:
    #     * A positive integer
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 0
    #cinder_state_transition_timeout = 300

    #
    # Allow to perform insecure SSL requests to cinder.
    #
    # If this option is set to True, HTTPS endpoint connection is verified using the
    # CA certificates file specified by ``cinder_ca_certificates_file`` option.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * cinder_ca_certificates_file
    #
    #  (boolean value)
    #cinder_api_insecure = false

    #
    # The address where the cinder authentication service is listening.
    #
    # When all of ``cinder_store_auth_address``, ``cinder_store_user_name``,
    # ``cinder_store_project_name``, and ``cinder_store_password`` options are
    # specified, the specified values are always used for the authentication.
    # This is useful to hide the image volumes from users by storing them in a
    # project/tenant specific to the image service. It also enables users to share
    # the image volume among other projects under the control of glance's ACL.
    #
    # If either of these options are not set, the cinder endpoint is looked up
    # from the service catalog, and current context's user and project are used.
    #
    # Possible values:
    #     * A valid authentication service address, for example:
    #       ``http://openstack.example.org/identity/v2.0``
    #
    # Related options:
    #     * cinder_store_user_name
    #     * cinder_store_password
    #     * cinder_store_project_name
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_domain_name
    #
    #  (string value)
    #cinder_store_auth_address = <None>

    #
    # User name to authenticate against cinder.
    #
    # This must be used with all the following non-domain-related options.
    # If any of these are not specified (except domain-related options),
    # the user of the current context is used.
    #
    # Possible values:
    #     * A valid user name
    #
    # Related options:
    #     * cinder_store_auth_address
    #     * cinder_store_password
    #     * cinder_store_project_name
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_domain_name
    #
    #  (string value)
    #cinder_store_user_name = <None>

    #
    # Domain of the user to authenticate against cinder.
    #
    # Possible values:
    #     * A valid domain name for the user specified by ``cinder_store_user_name``
    #
    # Related options:
    #     * cinder_store_auth_address
    #     * cinder_store_password
    #     * cinder_store_project_name
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_name
    #
    #  (string value)
    #cinder_store_user_domain_name = Default

    #
    # Password for the user authenticating against cinder.
    #
    # This must be used with all the following related options.
    # If any of these are not specified (except domain-related options),
    # the user of the current context is used.
    #
    # Possible values:
    #     * A valid password for the user specified by ``cinder_store_user_name``
    #
    # Related options:
    #     * cinder_store_auth_address
    #     * cinder_store_user_name
    #     * cinder_store_project_name
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_domain_name
    #     * cinder_store_application_credential_id
    #     * cinder_store_application_credential_secret
    #
    #  (string value)
    #cinder_store_password = <None>

    #
    # Application credential ID for authenticating against cinder.
    #
    # When this option is set along with
    # ``cinder_store_application_credential_secret``,
    # the Cinder backend will use application credential authentication instead of
    # password authentication. This enables Zero Downtime Password Rotation (ZDPR)
    # support for Glance deployments using Cinder as the image backend.
    #
    # If both application credential options are set, they take precedence over
    # password authentication. If either option is not set, the driver falls back
    # to password authentication using ``cinder_store_password``.
    #
    # Possible values:
    #     * A valid application credential ID
    #
    # Related options:
    #     * cinder_store_auth_address
    #     * cinder_store_user_name
    #     * cinder_store_application_credential_secret
    #     * cinder_store_project_name
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_domain_name
    #
    #  (string value)
    #cinder_store_application_credential_id = <None>

    #
    # Application credential secret for authenticating against cinder.
    #
    # This must be used together with ``cinder_store_application_credential_id``.
    # When both options are set, the Cinder backend will use application credential
    # authentication instead of password authentication.
    #
    # Possible values:
    #     * A valid application credential secret
    #
    # Related options:
    #     * cinder_store_auth_address
    #     * cinder_store_user_name
    #     * cinder_store_application_credential_id
    #     * cinder_store_project_name
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_domain_name
    #
    #  (string value)
    #cinder_store_application_credential_secret = <None>

    #
    # Project name where the image volume is stored in cinder.
    #
    # If this configuration option is not set, the project in current context is
    # used.
    #
    # This must be used with all the following related options.
    # If any of these are not specified (except domain-related options),
    # the user of the current context is used.
    #
    # Possible values:
    #     * A valid project name
    #
    # Related options:
    #     * ``cinder_store_auth_address``
    #     * ``cinder_store_user_name``
    #     * ``cinder_store_password``
    #     * ``cinder_store_project_domain_name``
    #     * ``cinder_store_user_domain_name``
    #
    #  (string value)
    #cinder_store_project_name = <None>

    #
    # Domain of the project where the image volume is stored in cinder.
    #
    # Possible values:
    #     * A valid domain name of the project specified by
    #       ``cinder_store_project_name``
    #
    # Related options:
    #     * ``cinder_store_auth_address``
    #     * ``cinder_store_user_name``
    #     * ``cinder_store_password``
    #     * ``cinder_store_project_domain_name``
    #     * ``cinder_store_user_domain_name``
    #
    #  (string value)
    #cinder_store_project_domain_name = Default

    #
    # Path to the rootwrap configuration file to use for running commands as root.
    #
    # The cinder store requires root privileges to operate the image volumes (for
    # connecting to iSCSI/FC volumes and reading/writing the volume data, etc.).
    # The configuration file should allow the required commands by cinder store and
    # os-brick library.
    #
    # Possible values:
    #     * Path to the rootwrap config file
    #
    # Related options:
    #     * None
    #
    #  (string value)
    #rootwrap_config = /etc/glance/rootwrap.conf

    #
    # Volume type that will be used for volume creation in cinder.
    #
    # Some cinder backends can have several volume types to optimize storage usage.
    # Adding this option allows an operator to choose a specific volume type
    # in cinder that can be optimized for images.
    #
    # If this is not set, then the default volume type specified in the cinder
    # configuration will be used for volume creation.
    #
    # Possible values:
    #     * A valid volume type from cinder
    #
    # Related options:
    #     * None
    #
    # NOTE: You cannot use an encrypted volume_type associated with an NFS backend.
    # An encrypted volume stored on an NFS backend will raise an exception whenever
    # glance_store tries to write or access image data stored in that volume.
    # Consult your Cinder administrator to determine an appropriate volume_type.
    #
    #  (string value)
    #cinder_volume_type = <None>

    #
    # 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.
    #
    # Possible values:
    #     * True or False
    #
    # Related options:
    #     * cinder_use_multipath
    #
    #  (boolean value)
    #cinder_enforce_multipath = false

    #
    # Flag to identify multipath is supported or not in the deployment.
    #
    # Set it to False if multipath is not supported.
    #
    # Possible values:
    #     * True or False
    #
    # Related options:
    #     * cinder_enforce_multipath
    #
    #  (boolean value)
    #cinder_use_multipath = false

    #
    # Directory where the NFS volume is mounted on the glance node.
    #
    # Possible values:
    #
    # * A string representing absolute path of mount point.
    #  (string value)
    #cinder_mount_point_base = /var/lib/glance/mnt

    #
    # If this is set to True, glance will perform an extend operation
    # on the attached volume. Only enable this option if the cinder
    # backend driver supports the functionality of extending online
    # (in-use) volumes. Supported from cinder microversion 3.42 and
    # onwards. By default, it is set to False.
    #
    # Possible values:
    #     * True or False
    #
    #  (boolean value)
    #cinder_do_extend_attached = false

    #
    # Maximum number of retry attempts for cinder attachment create operations.
    #
    # When creating a volume attachment, cinder may be unable to complete the
    # request due to transient issues (e.g., volume in transitional state). This
    # option specifies the maximum number of times to retry the attachment_create
    # operation before giving up.
    #
    # Possible values:
    #     * A positive integer
    #
    #  (integer value)
    # Minimum value: 1
    #cinder_attachment_retry_attempts = 5

    #
    # Directory to which the filesystem backend store writes images.
    #
    # Upon start up, Glance creates the directory if it doesn't already
    # exist and verifies write access to the user under which
    # ``glance-api`` runs. If the write access isn't available, a
    # ``BadStoreConfiguration`` exception is raised and the filesystem
    # store may not be available for adding new images.
    #
    # NOTE: This directory is used only when filesystem store is used as a
    # storage backend. Either ``filesystem_store_datadir`` or
    # ``filesystem_store_datadirs`` option must be specified in
    # ``glance-api.conf``. If both options are specified, a
    # ``BadStoreConfiguration`` will be raised and the filesystem store
    # may not be available for adding new images.
    #
    # Possible values:
    #     * A valid path to a directory
    #
    # Related options:
    #     * ``filesystem_store_datadirs``
    #     * ``filesystem_store_file_perm``
    #
    #  (string value)
    #filesystem_store_datadir = /var/lib/glance/images

    # DEPRECATED:
    # List of directories and their priorities to which the filesystem
    # backend store writes images.
    #
    # The filesystem store can be configured to store images in multiple
    # directories as opposed to using a single directory specified by the
    # ``filesystem_store_datadir`` configuration option. When using
    # multiple directories, each directory can be given an optional
    # priority to specify the preference order in which they should
    # be used. Priority is an integer that is concatenated to the
    # directory path with a colon where a higher value indicates higher
    # priority. When two directories have the same priority, the directory
    # with most free space is used. When no priority is specified, it
    # defaults to zero.
    #
    # More information on configuring filesystem store with multiple store
    # directories can be found at
    # https://docs.openstack.org/glance/latest/configuration/configuring.html
    #
    # NOTE: This directory is used only when filesystem store is used as a
    # storage backend. Either ``filesystem_store_datadir`` or
    # ``filesystem_store_datadirs`` option must be specified in
    # ``glance-api.conf``. If both options are specified, a
    # ``BadStoreConfiguration`` will be raised and the filesystem store
    # may not be available for adding new images.
    #
    # Possible values:
    #     * List of strings of the following form:
    #         * ``<a valid directory path>:<optional integer priority>``
    #
    # Related options:
    #     * ``filesystem_store_datadir``
    #     * ``filesystem_store_file_perm``
    #
    #  (multi valued)
    # This option is deprecated for removal since Flamingo.
    # Its value may be silently ignored in the future.
    # Reason:
    # Users willing to use multiple data directories should configure multiple
    # filesystem stores instead of using filesystem_store_datadirs.
    #
    # This option is scheduled for removal in the H development cycle.
    #filesystem_store_datadirs =

    #
    # Filesystem store metadata file.
    #
    # The path to a file which contains the metadata to be returned with any
    # location
    # associated with the filesystem store. Once this option is set, it is used for
    # new images created afterward only - previously existing images are not
    # affected.
    #
    # The file must contain a valid JSON object. The object should contain the keys
    # ``id`` and ``mountpoint``. The value for both keys should be a string.
    #
    # Possible values:
    #     * A valid path to the store metadata file
    #
    # Related options:
    #     * None
    #
    #  (string value)
    #filesystem_store_metadata_file = <None>

    #
    # File access permissions for the image files.
    #
    # Set the intended file access permissions for image data. This provides
    # a way to enable other services, e.g. Nova, to consume images directly
    # from the filesystem store. The users running the services that are
    # intended to be given access to could be made a member of the group
    # that owns the files created. Assigning a value less then or equal to
    # zero for this configuration option signifies that no changes be made
    # to the  default permissions. This value will be decoded as an octal
    # digit.
    #
    # For more information, please refer the documentation at
    # https://docs.openstack.org/glance/latest/configuration/configuring.html
    #
    # Possible values:
    #     * A valid file access permission
    #     * Zero
    #     * Any negative integer
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    #filesystem_store_file_perm = 0

    #
    # Chunk size, in bytes.
    #
    # The chunk size used when reading or writing image files. Raising this value
    # may improve the throughput but it may also slightly increase the memory usage
    # when handling a large number of requests.
    #
    # Possible Values:
    #     * Any positive integer value
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 1
    #filesystem_store_chunk_size = 65536

    #
    # Enable or not thin provisioning in this backend.
    #
    # This configuration option enable the feature of not really write null byte
    # sequences on the filesystem, the holes who can appear will automatically
    # be interpreted by the filesystem as null bytes, and do not really consume
    # your storage.
    # Enabling this feature will also speed up image upload and save network traffic
    # in addition to save space in the backend, as null bytes sequences are not
    # sent over the network.
    #
    # Possible Values:
    #     * True
    #     * False
    #
    # Related options:
    #     * None
    #
    #  (boolean value)
    #filesystem_thin_provisioning = false

    #
    # Timeout for all filesystem operations (seconds).
    #
    # Set to 0 to disable timeout protection (blocking IO, normal behavior).
    # Set > 0 to enable timeout protection with thread pool.
    # Recommended: 30 seconds for network storage, higher for slow networks.
    #
    # When timeout protection is enabled, filesystem operations like delete(),
    # get_size(), and _get_capacity_info() will be wrapped with timeout
    # protection. If an operation exceeds the timeout, a TimeoutError will be
    # raised.
    #
    # Possible values:
    #     * 0 (disabled, blocking IO)
    #     * Any positive integer (timeout in seconds)
    #
    # Related options:
    #     * filesystem_store_thread_pool_size
    #     * filesystem_store_threadpool_threshold
    #
    #  (integer value)
    # Minimum value: 0
    #filesystem_store_timeout = 0

    #
    # Thread pool size for timeout-protected operations.
    #
    # Only meaningful when filesystem_store_timeout > 0.
    # Ignored when filesystem_store_timeout = 0 (no thread pool is created).
    # Each store instance gets its own pool to avoid starvation.
    # Set based on expected concurrency and WSGI worker count.
    #
    # Possible values:
    #     * Any positive integer
    #
    # Related options:
    #     * filesystem_store_timeout
    #     * filesystem_store_threadpool_threshold
    #
    #  (integer value)
    # Minimum value: 1
    #filesystem_store_thread_pool_size = 10

    #
    # Thread pool usage threshold for warning logs (percentage).
    #
    # Only meaningful when filesystem_store_timeout > 0.
    # Ignored when filesystem_store_timeout = 0 (no thread pool is created).
    # When thread pool usage exceeds this threshold, a warning is logged
    # indicating that the pool is getting busy and may start blocking.
    #
    # Possible values:
    #     * 0-100 (percentage)
    #
    # Related options:
    #     * filesystem_store_timeout
    #     * filesystem_store_thread_pool_size
    #
    #  (integer value)
    # Minimum value: 0
    # Maximum value: 100
    #filesystem_store_threadpool_threshold = 75

    #
    # Path to the CA bundle file.
    #
    # This configuration option enables the operator to use a custom
    # Certificate Authority file to verify the remote server certificate. If
    # this option is set, the ``https_insecure`` option will be ignored and
    # the CA file specified will be used to authenticate the server
    # certificate and establish a secure connection to the server.
    #
    # Possible values:
    #     * A valid path to a CA file
    #
    # Related options:
    #     * https_insecure
    #
    #  (string value)
    #https_ca_certificates_file = <None>

    #
    # Set verification of the remote server certificate.
    #
    # This configuration option takes in a boolean value to determine
    # whether or not to verify the remote server certificate. If set to
    # True, the remote server certificate is not verified. If the option is
    # set to False, then the default CA truststore is used for verification.
    #
    # This option is ignored if ``https_ca_certificates_file`` is set.
    # The remote server certificate will then be verified using the file
    # specified using the ``https_ca_certificates_file`` option.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * https_ca_certificates_file
    #
    #  (boolean value)
    #https_insecure = true

    #
    # The http/https proxy information to be used to connect to the remote
    # server.
    #
    # This configuration option specifies the http/https proxy information
    # that should be used to connect to the remote server. The proxy
    # information should be a key value pair of the scheme and proxy, for
    # example, http:10.0.0.1:3128. You can also specify proxies for multiple
    # schemes by separating the key value pairs with a comma, for example,
    # http:10.0.0.1:3128, https:10.0.0.1:1080.
    #
    # Possible values:
    #     * A comma separated list of scheme:proxy pairs as described above
    #
    # Related options:
    #     * None
    #
    #  (dict value)
    #http_proxy_information =

    #
    # Size, in megabytes, to chunk RADOS images into.
    #
    # Provide an integer value representing the size in megabytes to chunk
    # Glance images into. The default chunk size is 8 megabytes. For optimal
    # performance, the value should be a power of two.
    #
    # When Ceph's RBD object storage system is used as the storage backend
    # for storing Glance images, the images are chunked into objects of the
    # size set using this option. These chunked objects are then stored
    # across the distributed block data store to use for Glance.
    #
    # Possible Values:
    #     * Any positive integer value
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 1
    #rbd_store_chunk_size = 8

    #
    # RADOS pool in which images are stored.
    #
    # When RBD is used as the storage backend for storing Glance images, the
    # images are stored by means of logical grouping of the objects (chunks
    # of images) into a ``pool``. Each pool is defined with the number of
    # placement groups it can contain. The default pool that is used is
    # 'images'.
    #
    # More information on the RBD storage backend can be found here:
    # http://ceph.com/planet/how-data-is-stored-in-ceph-cluster/
    #
    # Possible Values:
    #     * A valid pool name
    #
    # Related options:
    #     * None
    #
    #  (string value)
    #rbd_store_pool = images

    #
    # RADOS user to authenticate as.
    #
    # This configuration option takes in the RADOS user to authenticate as.
    # This is only needed when RADOS authentication is enabled and is
    # applicable only if the user is using Cephx authentication. If the
    # value for this option is not set by the user or is set to None, a
    # default value will be chosen, which will be based on the client.
    # section in rbd_store_ceph_conf.
    #
    # Possible Values:
    #     * A valid RADOS user
    #
    # Related options:
    #     * rbd_store_ceph_conf
    #
    #  (string value)
    #rbd_store_user = <None>

    #
    # Ceph configuration file path.
    #
    # This configuration option specifies the path to the Ceph configuration
    # file to be used. If the value for this option is not set by the user
    # or is set to the empty string, librados will read the standard ceph.conf
    # file by searching the default Ceph configuration file locations in
    # sequential order.  See the Ceph documentation for details.
    #
    # NOTE: If using Cephx authentication, this file should include a reference
    # to the right keyring in a client.<USER> section
    #
    # NOTE 2: If you leave this option empty (the default), the actual Ceph
    # configuration file used may change depending on what version of librados
    # is being used.  If it is important for you to know exactly which configuration
    # file is in effect, you may specify that file here using this option.
    #
    # Possible Values:
    #     * A valid path to a configuration file
    #
    # Related options:
    #     * rbd_store_user
    #
    #  (string value)
    #rbd_store_ceph_conf =

    #
    # Timeout value for connecting to Ceph cluster.
    #
    # This configuration option takes in the timeout value in seconds used
    # when connecting to the Ceph cluster i.e. it sets the time to wait for
    # glance-api before closing the connection. This prevents glance-api
    # hangups during the connection to RBD. If the value for this option
    # is set to less than 0, no timeout is set and the default librados value
    # is used.
    #
    # Possible Values:
    #     * Any integer value
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    #rados_connect_timeout = -1

    #
    # Enable or not thin provisioning in this backend.
    #
    # This configuration option enable the feature of not really write null byte
    # sequences on the RBD backend, the holes who can appear will automatically
    # be interpreted by Ceph as null bytes, and do not really consume your storage.
    # Enabling this feature will also speed up image upload and save network traffic
    # in addition to save space in the backend, as null bytes sequences are not
    # sent over the network.
    #
    # Possible Values:
    #     * True
    #     * False
    #
    # Related options:
    #     * None
    #
    #  (boolean value)
    #rbd_thin_provisioning = false

    #
    # The host where the S3 server is listening.
    #
    # This configuration option sets the host of the S3 or S3 compatible storage
    # Server. This option is required when using the S3 storage backend.
    # The host can contain a DNS name (e.g. s3.amazonaws.com, my-object-storage.com)
    # or an IP address (127.0.0.1).
    #
    # Possible values:
    #     * A valid DNS name
    #     * A valid IPv4 address
    #
    # Related Options:
    #     * s3_store_access_key
    #     * s3_store_secret_key
    #
    #  (string value)
    #s3_store_host = <None>

    #
    # The S3 region name.
    #
    # This parameter will set the region_name used by boto.
    # If this parameter is not set, we we will try to compute it from the
    # s3_store_host.
    #
    # Possible values:
    #     * A valid region name
    #
    # Related Options:
    #     * s3_store_host
    #
    #  (string value)
    #s3_store_region_name =

    #
    # The S3 query token access key.
    #
    # This configuration option takes the access key for authenticating with the
    # Amazon S3 or S3 compatible storage server. This option is required when using
    # the S3 storage backend.
    #
    # Possible values:
    #     * Any string value that is the access key for a user with appropriate
    #       privileges
    #
    # Related Options:
    #     * s3_store_host
    #     * s3_store_secret_key
    #
    #  (string value)
    #s3_store_access_key = <None>

    #
    # The S3 query token secret key.
    #
    # This configuration option takes the secret key for authenticating with the
    # Amazon S3 or S3 compatible storage server. This option is required when using
    # the S3 storage backend.
    #
    # Possible values:
    #     * Any string value that is a secret key corresponding to the access key
    #       specified using the ``s3_store_host`` option
    #
    # Related Options:
    #     * s3_store_host
    #     * s3_store_access_key
    #
    #  (string value)
    #s3_store_secret_key = <None>

    #
    # The S3 bucket to be used to store the Glance data.
    #
    # This configuration option specifies where the glance images will be stored
    # in the S3. If ``s3_store_create_bucket_on_put`` is set to true, it will be
    # created automatically even if the bucket does not exist.
    #
    # Possible values:
    #     * Any string value
    #
    # Related Options:
    #     * s3_store_create_bucket_on_put
    #     * s3_store_bucket_url_format
    #
    #  (string value)
    #s3_store_bucket = <None>

    #
    # Determine whether S3 should create a new bucket.
    #
    # This configuration option takes boolean value to indicate whether Glance
    # should
    # create a new bucket to S3 if it does not exist.
    #
    # Possible values:
    #     * Any Boolean value
    #
    # Related Options:
    #     * None
    #
    #  (boolean value)
    #s3_store_create_bucket_on_put = false

    #
    # The S3 calling format used to determine the object.
    #
    # This configuration option takes access model that is used to specify the
    # address of an object in an S3 bucket.
    #
    # NOTE:
    # In ``path``-style, the endpoint for the object looks like
    # 'https://s3.amazonaws.com/bucket/example.img'.
    # And in ``virtual``-style, the endpoint for the object looks like
    # 'https://bucket.s3.amazonaws.com/example.img'.
    # If you do not follow the DNS naming convention in the bucket name, you can
    # get objects in the path style, but not in the virtual style.
    #
    # Possible values:
    #     * Any string value of ``auto``, ``virtual``, or ``path``
    #
    # Related Options:
    #     * s3_store_bucket
    #
    #  (string value)
    #s3_store_bucket_url_format = auto

    #
    # What size, in MB, should S3 start chunking image files and do a multipart
    # upload in S3.
    #
    # This configuration option takes a threshold in MB to determine whether to
    # upload the image to S3 as is or to split it (Multipart Upload).
    #
    # Note: You can only split up to 10,000 images.
    #
    # Possible values:
    #     * Any positive integer value or zero
    #
    # Related Options:
    #     * s3_store_large_object_chunk_size
    #     * s3_store_thread_pools
    #
    #  (integer value)
    # Minimum value: 0
    #s3_store_large_object_size = 100

    #
    # What multipart upload part size, in MB, should S3 use when uploading parts.
    #
    # This configuration option takes the image split size in MB for Multipart
    # Upload.
    #
    # Note: You can only split up to 10,000 images.
    #
    # Possible values:
    #     * Any positive integer value (must be greater than or equal to 5M)
    #
    # Related Options:
    #     * s3_store_large_object_size
    #     * s3_store_thread_pools
    #
    #  (integer value)
    #s3_store_large_object_chunk_size = 10

    #
    # The number of thread pools to perform a multipart upload in S3.
    #
    # This configuration option takes the number of thread pools when performing a
    # Multipart Upload.
    #
    # Possible values:
    #     * Any positive integer value
    #
    # Related Options:
    #     * s3_store_large_object_size
    #     * s3_store_large_object_chunk_size
    #
    #  (integer value)
    #s3_store_thread_pools = 10

    #
    # The path to the CA cert bundle to use. The default value (an empty string)
    # forces the use of the default CA cert bundle used by botocore.
    #
    # Possible values:
    #     * A path to the CA cert bundle to use
    #     * An empty string to use the default CA cert bundle used by botocore
    #
    #  (string value)
    #s3_store_cacert =

    #
    # Turn on S3 data integrity protections by enabling request checksum calculation
    # and response checksum validation. Setting this to False is the same as setting
    # the AWS_REQUEST_CHECKSUM_CALCULATION and AWS_RESPONSE_CHECKSUM_VALIDATION
    # environment variables to "when_required". Setting this to True gives the user
    # fine-grained control over the data integrity protections by using the
    # s3_store_request_checksum_calculation and
    # s3_store_response_checksum_validation
    # options.
    #
    # This defaults to False as to not change the default behaviour in glance_store,
    # which prevents upload failures when using S3-compatible storage backends that
    # do not implement S3 data integrity protection.
    #
    # Related Options:
    #     * s3_store_request_checksum_calculation
    #     * s3_store_response_checksum_validation
    #  (boolean value)
    #s3_store_enable_data_integrity_protection = false

    #
    # Controls when checksums are calculated for S3 upload requests.
    #
    # This configuration option provides fine-grained control over request checksum
    # calculation behavior. It maps directly to the botocore Config parameter
    # request_checksum_calculation.
    #
    # Possible values:
    #     * when_required - Only calculate checksums when required by the operation
    #     * when_supported - Calculate checksums when supported by the operation
    #
    # This option is only used when s3_store_enable_data_integrity_protection is
    # set to True. When s3_store_enable_data_integrity_protection is False, both
    # request and response checksums use 'when_required' regardless of this setting.
    #
    # Related Options:
    #     * s3_store_response_checksum_validation
    #     * s3_store_enable_data_integrity_protection
    #
    #  (string value)
    # Possible values:
    # when_required - <No description provided>
    # when_supported - <No description provided>
    #s3_store_request_checksum_calculation = when_required

    #
    # Controls when checksums are validated for S3 download responses.
    #
    # This configuration option provides fine-grained control over response checksum
    # validation behavior. It maps directly to the botocore Config parameter
    # response_checksum_validation.
    #
    # Possible values:
    #     * when_required - Only validate checksums when required by the operation
    #     * when_supported - Validate checksums when supported by the operation
    #
    # This option is only used when s3_store_enable_data_integrity_protection is
    # set to True. When s3_store_enable_data_integrity_protection is False, both
    # request and response checksums use 'when_required' regardless of this setting.
    #
    # Related Options:
    #     * s3_store_request_checksum_calculation
    #     * s3_store_enable_data_integrity_protection
    #
    #  (string value)
    # Possible values:
    # when_required - <No description provided>
    # when_supported - <No description provided>
    #s3_store_response_checksum_validation = when_required

    #
    # Set verification of the server certificate.
    #
    # This boolean determines whether or not to verify the server
    # certificate. If this option is set to True, swiftclient won't check
    # for a valid SSL certificate when authenticating. If the option is set
    # to False, then the default CA truststore is used for verification.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * swift_store_cacert
    #
    #  (boolean value)
    #swift_store_auth_insecure = false

    #
    # Path to the CA bundle file.
    #
    # This configuration option enables the operator to specify the path to
    # a custom Certificate Authority file for SSL verification when
    # connecting to Swift.
    #
    # Possible values:
    #     * A valid path to a CA file
    #
    # Related options:
    #     * swift_store_auth_insecure
    #
    #  (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #swift_store_cacert = /etc/ssl/certs/ca-certificates.crt

    #
    # The region of Swift endpoint to use by Glance.
    #
    # Provide a string value representing a Swift region where Glance
    # can connect to for image storage. By default, there is no region
    # set.
    #
    # When Glance uses Swift as the storage backend to store images
    # for a specific tenant that has multiple endpoints, setting of a
    # Swift region with ``swift_store_region`` allows Glance to connect
    # to Swift in the specified region as opposed to a single region
    # connectivity.
    #
    # This option can be configured for both single-tenant and
    # multi-tenant storage.
    #
    # NOTE: Setting the region with ``swift_store_region`` is
    # tenant-specific and is necessary ``only if`` the tenant has
    # multiple endpoints across different regions.
    #
    # Possible values:
    #     * A string value representing a valid Swift region.
    #
    # Related Options:
    #     * None
    #
    #  (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #swift_store_region = RegionTwo

    #
    # The URL endpoint to use for Swift backend storage.
    #
    # Provide a string value representing the URL endpoint to use for
    # storing Glance images in Swift store. By default, an endpoint
    # is not set and the storage URL returned by ``auth`` is used.
    # Setting an endpoint with ``swift_store_endpoint`` overrides the
    # storage URL and is used for Glance image storage.
    #
    # NOTE: The URL should include the path up to, but excluding the
    # container. The location of an object is obtained by appending
    # the container and object to the configured URL.
    #
    # Possible values:
    #     * String value representing a valid URL path up to a Swift container
    #
    # Related Options:
    #     * None
    #
    #  (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #swift_store_endpoint = https://swift.openstack.example.org/v1/path_not_including_container_name

    #
    # Endpoint Type of Swift service.
    #
    # This string value indicates the endpoint type to use to fetch the
    # Swift endpoint. The endpoint type determines the actions the user will
    # be allowed to perform, for instance, reading and writing to the Store.
    #
    # Possible values:
    #     * publicURL
    #     * adminURL
    #     * internalURL
    #
    # Related options:
    #     * swift_store_endpoint
    #
    #  (string value)
    # Possible values:
    # publicURL - <No description provided>
    # adminURL - <No description provided>
    # internalURL - <No description provided>
    #swift_store_endpoint_type = publicURL

    #
    # Type of Swift service to use.
    #
    # Provide a string value representing the service type to use for
    # storing images while using Swift backend storage. The default
    # service type is set to ``object-store``.
    #
    # Possible values:
    #     * A string representing a valid service type for Swift storage.
    #
    # Related Options:
    #     * None
    #
    #  (string value)
    #swift_store_service_type = object-store

    #
    # Name of single container to store images/name prefix for multiple containers
    #
    # When a single container is being used to store images, this configuration
    # option indicates the container within the Glance account to be used for
    # storing all images. When multiple containers are used to store images, this
    # will be the name prefix for all containers. Usage of single/multiple
    # containers can be controlled using the configuration option
    # ``swift_store_multiple_containers_seed``.
    #
    # When using multiple containers, the containers will be named after the value
    # set for this configuration option with the first N chars of the image UUID
    # as the suffix delimited by an underscore (where N is specified by
    # ``swift_store_multiple_containers_seed``).
    #
    # Example: if the seed is set to 3 and swift_store_container = ``glance``, then
    # an image with UUID ``fdae39a1-bac5-4238-aba4-69bcc726e848`` would be placed in
    # the container ``glance_fda``. All dashes in the UUID are included when
    # creating the container name but do not count toward the character limit, so
    # when N=10 the container name would be ``glance_fdae39a1-ba.``
    #
    # Possible values:
    #     * If using single container, this configuration option can be any string
    #       that is a valid swift container name in Glance's Swift account
    #     * If using multiple containers, this configuration option can be any
    #       string as long as it satisfies the container naming rules enforced by
    #       Swift. The value of ``swift_store_multiple_containers_seed`` should be
    #       taken into account as well.
    #
    # Related options:
    #     * ``swift_store_multiple_containers_seed``
    #     * ``swift_store_multi_tenant``
    #     * ``swift_store_create_container_on_put``
    #
    #  (string value)
    #swift_store_container = glance

    #
    # The size threshold, in MB, after which Glance will start segmenting image
    # data.
    #
    # Swift has an upper limit on the size of a single uploaded object. By default,
    # this is 5GB. To upload objects bigger than this limit, objects are segmented
    # into multiple smaller objects that are tied together with a manifest file.
    # For more detail, refer to
    # https://docs.openstack.org/swift/latest/overview_large_objects.html
    #
    # This configuration option specifies the size threshold over which the Swift
    # driver will start segmenting image data into multiple smaller files.
    # Currently, the Swift driver only supports creating Dynamic Large Objects.
    #
    # NOTE: This should be set by taking into account the large object limit
    # enforced by the Swift cluster in consideration.
    #
    # Possible values:
    #     * A positive integer that is less than or equal to the large object limit
    #       enforced by the Swift cluster in consideration.
    #
    # Related options:
    #     * ``swift_store_large_object_chunk_size``
    #
    #  (integer value)
    # Minimum value: 1
    #swift_store_large_object_size = 5120

    #
    # The maximum size, in MB, of the segments when image data is segmented.
    #
    # When image data is segmented to upload images that are larger than the limit
    # enforced by the Swift cluster, image data is broken into segments that are no
    # bigger than the size specified by this configuration option.
    # Refer to ``swift_store_large_object_size`` for more detail.
    #
    # For example: if ``swift_store_large_object_size`` is 5GB and
    # ``swift_store_large_object_chunk_size`` is 1GB, an image of size 6.2GB will be
    # segmented into 7 segments where the first six segments will be 1GB in size and
    # the seventh segment will be 0.2GB.
    #
    # Possible values:
    #     * A positive integer that is less than or equal to the large object limit
    #       enforced by Swift cluster in consideration.
    #
    # Related options:
    #     * ``swift_store_large_object_size``
    #
    #  (integer value)
    # Minimum value: 1
    #swift_store_large_object_chunk_size = 200

    #
    # Create container, if it doesn't already exist, when uploading image.
    #
    # At the time of uploading an image, if the corresponding container doesn't
    # exist, it will be created provided this configuration option is set to True.
    # By default, it won't be created. This behavior is applicable for both single
    # and multiple containers mode.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * None
    #
    #  (boolean value)
    #swift_store_create_container_on_put = false

    #
    # Store images in tenant's Swift account.
    #
    # This enables multi-tenant storage mode which causes Glance images to be stored
    # in tenant specific Swift accounts. If this is disabled, Glance stores all
    # images in its own account. More details multi-tenant store can be found at
    # https://wiki.openstack.org/wiki/GlanceSwiftTenantSpecificStorage
    #
    # NOTE: If using multi-tenant swift store, please make sure
    # that you do not set a swift configuration file with the
    # 'swift_store_config_file' option.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * swift_store_config_file
    #
    #  (boolean value)
    #swift_store_multi_tenant = false

    #
    # Seed indicating the number of containers to use for storing images.
    #
    # When using a single-tenant store, images can be stored in one or more than one
    # containers. When set to 0, all images will be stored in one single container.
    # When set to an integer value between 1 and 32, multiple containers will be
    # used to store images. This configuration option will determine how many
    # containers are created. The total number of containers that will be used is
    # equal to 16^N, so if this config option is set to 2, then 16^2=256 containers
    # will be used to store images.
    #
    # Please refer to ``swift_store_container`` for more detail on the naming
    # convention. More detail about using multiple containers can be found at
    # https://specs.openstack.org/openstack/glance-specs/specs/kilo/swift-store-
    # multiple-containers.html
    #
    # NOTE: This is used only when swift_store_multi_tenant is disabled.
    #
    # Possible values:
    #     * A non-negative integer less than or equal to 32
    #
    # Related options:
    #     * ``swift_store_container``
    #     * ``swift_store_multi_tenant``
    #     * ``swift_store_create_container_on_put``
    #
    #  (integer value)
    # Minimum value: 0
    # Maximum value: 32
    #swift_store_multiple_containers_seed = 0

    #
    # List of tenants that will be granted admin access.
    #
    # This is a list of tenants that will be granted read/write access on
    # all Swift containers created by Glance in multi-tenant mode. The
    # default value is an empty list.
    #
    # Possible values:
    #     * A comma separated list of strings representing UUIDs of Keystone
    #       projects/tenants
    #
    # Related options:
    #     * None
    #
    #  (list value)
    #swift_store_admin_tenants =

    #
    # SSL layer compression for HTTPS Swift requests.
    #
    # Provide a boolean value to determine whether or not to compress
    # HTTPS Swift requests for images at the SSL layer. By default,
    # compression is enabled.
    #
    # When using Swift as the backend store for Glance image storage,
    # SSL layer compression of HTTPS Swift requests can be set using
    # this option. If set to False, SSL layer compression of HTTPS
    # Swift requests is disabled. Disabling this option may improve
    # performance for images which are already in a compressed format,
    # for example, qcow2.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related Options:
    #     * None
    #
    #  (boolean value)
    #swift_store_ssl_compression = true

    #
    # The number of times a Swift download will be retried before the
    # request fails.
    #
    # Provide an integer value representing the number of times an image
    # download must be retried before erroring out. The default value is
    # zero (no retry on a failed image download). When set to a positive
    # integer value, ``swift_store_retry_get_count`` ensures that the
    # download is attempted this many more times upon a download failure
    # before sending an error message.
    #
    # Possible values:
    #     * Zero
    #     * Positive integer value
    #
    # Related Options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 0
    #swift_store_retry_get_count = 0

    #
    # Time in seconds defining the size of the window in which a new
    # token may be requested before the current token is due to expire.
    #
    # Typically, the Swift storage driver fetches a new token upon the
    # expiration of the current token to ensure continued access to
    # Swift. However, some Swift transactions (like uploading image
    # segments) may not recover well if the token expires on the fly.
    #
    # Hence, by fetching a new token before the current token expiration,
    # we make sure that the token does not expire or is close to expiry
    # before a transaction is attempted. By default, the Swift storage
    # driver requests for a new token 60 seconds or less before the
    # current token expiration.
    #
    # Possible values:
    #     * Zero
    #     * Positive integer value
    #
    # Related Options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 0
    #swift_store_expire_soon_interval = 60

    #
    # Use trusts for multi-tenant Swift store.
    #
    # This option instructs the Swift store to create a trust for each
    # add/get request when the multi-tenant store is in use. Using trusts
    # allows the Swift store to avoid problems that can be caused by an
    # authentication token expiring during the upload or download of data.
    #
    # By default, ``swift_store_use_trusts`` is set to ``True``(use of
    # trusts is enabled). If set to ``False``, a user token is used for
    # the Swift connection instead, eliminating the overhead of trust
    # creation.
    #
    # NOTE: This option is considered only when
    # ``swift_store_multi_tenant`` is set to ``True``
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * swift_store_multi_tenant
    #
    #  (boolean value)
    #swift_store_use_trusts = true

    #
    # Buffer image segments before upload to Swift.
    #
    # Provide a boolean value to indicate whether or not Glance should
    # buffer image data to disk while uploading to swift. This enables
    # Glance to resume uploads on error.
    #
    # NOTES:
    # When enabling this option, one should take great care as this
    # increases disk usage on the API node. Be aware that depending
    # upon how the file system is configured, the disk space used
    # for buffering may decrease the actual disk space available for
    # the glance image cache.  Disk utilization will cap according to
    # the following equation:
    # (``swift_store_large_object_chunk_size`` * ``workers`` * 1000)
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * swift_upload_buffer_dir
    #
    #  (boolean value)
    #swift_buffer_on_upload = false

    #
    # Reference to default Swift account/backing store parameters.
    #
    # Provide a string value representing a reference to the default set
    # of parameters required for using swift account/backing store for
    # image storage. The default reference value for this configuration
    # option is 'ref1'. This configuration option dereferences the
    # parameters and facilitates image storage in Swift storage backend
    # every time a new image is added.
    #
    # Possible values:
    #     * A valid string value
    #
    # Related options:
    #     * None
    #
    #  (string value)
    #default_swift_reference = ref1

    # DEPRECATED: The authentication version to be used. Currently The only valid
    # version is 3. (string value)
    # Possible values:
    # 3 - <No description provided>
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason:
    # This option is kept for backword-compatibility reasons but is no longer
    # required, because only the single version (3) is supported now.
    #swift_store_auth_version = 3

    # DEPRECATED: The address where the Swift authentication service is listening.
    # (string value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason:
    # The option 'auth_address' in the Swift back-end configuration file is
    # used instead.
    #swift_store_auth_address = <None>

    # DEPRECATED: The user to authenticate against the Swift authentication service.
    # (string value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason:
    # The option 'user' in the Swift back-end configuration file is set instead.
    #swift_store_user = <None>

    # DEPRECATED: Auth key for the user authenticating against the Swift
    # authentication service. (string value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason:
    # The option 'key' in the Swift back-end configuration file is used
    # to set the authentication key instead.
    #swift_store_key = <None>

    #
    # Application credential ID for authenticating against Swift.
    #
    # This option specifies the application credential ID to use for
    # authenticating with the Swift backend. When set along with
    # swift_store_application_credential_secret, the Swift driver will
    # use V3ApplicationCredential authentication instead of password
    # authentication.
    #
    # This enables Zero Downtime Password Rotation (ZDPR) support for
    # Swift backend operations, as application credentials are not
    # affected by password rotation.
    #
    # If not set, the driver falls back to password authentication
    # using swift_store_user and swift_store_key.
    #
    # Possible values:
    #     * A valid application credential ID string
    #
    # Related options:
    #     * swift_store_application_credential_secret
    #
    #  (string value)
    #swift_store_application_credential_id = <None>

    #
    # Application credential secret for authenticating against Swift.
    #
    # This option specifies the application credential secret to use
    # for authenticating with the Swift backend. When set along with
    # swift_store_application_credential_id, the Swift driver will
    # use V3ApplicationCredential authentication instead of password
    # authentication.
    #
    # This enables Zero Downtime Password Rotation (ZDPR) support for
    # Swift backend operations, as application credentials are not
    # affected by password rotation.
    #
    # If not set, the driver falls back to password authentication
    # using swift_store_user and swift_store_key.
    #
    # Possible values:
    #     * A valid application credential secret string
    #
    # Related options:
    #     * swift_store_application_credential_id
    #
    #  (string value)
    #swift_store_application_credential_secret = <None>

    # DEPRECATED: Project name for authenticating with application credentials
    # against the Swift authentication service. (string value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason:
    # The option 'project_name' in the Swift back-end configuration file is
    # used instead.
    #swift_store_project_name = <None>

    # DEPRECATED: Project ID for authenticating with application credentials against
    # the Swift authentication service. (string value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason:
    # The option 'project_id' in the Swift back-end configuration file is
    # used instead.
    #swift_store_project_id = <None>

    #
    # Absolute path to the file containing the swift account(s)
    # configurations.
    #
    # Include a string value representing the path to a configuration
    # file that has references for each of the configured Swift
    # account(s)/backing stores. By default, no file path is specified
    # and customized Swift referencing is disabled. Configuring this
    # option is highly recommended while using Swift storage backend for
    # image storage as it avoids storage of credentials in the database.
    #
    # NOTE: Please do not configure this option if you have set
    # ``swift_store_multi_tenant`` to ``True``.
    #
    # Possible values:
    #     * String value representing an absolute path on the glance-api
    #       node
    #
    # Related options:
    #     * swift_store_multi_tenant
    #
    #  (string value)
    #swift_store_config_file = <None>

    #
    # Directory to buffer image segments before upload to Swift.
    #
    # Provide a string value representing the absolute path to the
    # directory on the glance node where image segments will be
    # buffered briefly before they are uploaded to swift.
    #
    # NOTES:
    #     * This is required only when the configuration option
    #       ``swift_buffer_on_upload`` is set to True.
    #     * This directory should be provisioned keeping in mind the
    #       ``swift_store_large_object_chunk_size`` and the maximum
    #       number of images that could be uploaded simultaneously by
    #       a given glance node.
    #
    # Possible values:
    #     * String value representing an absolute directory path
    #
    # Related options:
    #     * swift_buffer_on_upload
    #     * swift_store_large_object_chunk_size
    #
    #  (string value)
    #swift_upload_buffer_dir = <None>

    #
    # Address of the ESX/ESXi or vCenter Server target system.
    #
    # This configuration option sets the address of the ESX/ESXi or vCenter
    # Server target system. This option is required when using the VMware
    # storage backend. The address can contain an IP address (127.0.0.1) or
    # a DNS name (www.my-domain.com).
    #
    # Possible Values:
    #     * A valid IPv4 or IPv6 address
    #     * A valid DNS name
    #
    # Related options:
    #     * vmware_server_username
    #     * vmware_server_password
    #
    #  (host address value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #vmware_server_host = 127.0.0.1

    #
    # Server username.
    #
    # This configuration option takes the username for authenticating with
    # the VMware ESX/ESXi or vCenter Server. This option is required when
    # using the VMware storage backend.
    #
    # Possible Values:
    #     * Any string that is the username for a user with appropriate
    #       privileges
    #
    # Related options:
    #     * vmware_server_host
    #     * vmware_server_password
    #
    #  (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #vmware_server_username = root

    #
    # Server password.
    #
    # This configuration option takes the password for authenticating with
    # the VMware ESX/ESXi or vCenter Server. This option is required when
    # using the VMware storage backend.
    #
    # Possible Values:
    #     * Any string that is a password corresponding to the username
    #       specified using the "vmware_server_username" option
    #
    # Related options:
    #     * vmware_server_host
    #     * vmware_server_username
    #
    #  (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #vmware_server_password = vmware

    #
    # The number of VMware API retries.
    #
    # This configuration option specifies the number of times the VMware
    # ESX/VC server API must be retried upon connection related issues or
    # server API call overload. It is not possible to specify 'retry
    # forever'.
    #
    # Possible Values:
    #     * Any positive integer value
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 1
    #vmware_api_retry_count = 10

    #
    # Interval in seconds used for polling remote tasks invoked on VMware
    # ESX/VC server.
    #
    # This configuration option takes in the sleep time in seconds for polling an
    # on-going async task as part of the VMWare ESX/VC server API call.
    #
    # Possible Values:
    #     * Any positive integer value
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 1
    #vmware_task_poll_interval = 5

    #
    # The directory where the glance images will be stored in the datastore.
    #
    # This configuration option specifies the path to the directory where the
    # glance images will be stored in the VMware datastore. If this option
    # is not set,  the default directory where the glance images are stored
    # is openstack_glance.
    #
    # Possible Values:
    #     * Any string that is a valid path to a directory
    #
    # Related options:
    #     * None
    #
    #  (string value)
    #vmware_store_image_dir = /openstack_glance

    #
    # Set verification of the ESX/vCenter server certificate.
    #
    # This configuration option takes a boolean value to determine
    # whether or not to verify the ESX/vCenter server certificate. If this
    # option is set to True, the ESX/vCenter server certificate is not
    # verified. If this option is set to False, then the default CA
    # truststore is used for verification.
    #
    # This option is ignored if the "vmware_ca_file" option is set. In that
    # case, the ESX/vCenter server certificate will then be verified using
    # the file specified using the "vmware_ca_file" option .
    #
    # Possible Values:
    #     * True
    #     * False
    #
    # Related options:
    #     * vmware_ca_file
    #
    #  (boolean value)
    # Deprecated group/name - [glance_store]/vmware_api_insecure
    #vmware_insecure = false

    #
    # Absolute path to the CA bundle file.
    #
    # This configuration option enables the operator to use a custom
    # Cerificate Authority File to verify the ESX/vCenter certificate.
    #
    # If this option is set, the "vmware_insecure" option will be ignored
    # and the CA file specified will be used to authenticate the ESX/vCenter
    # server certificate and establish a secure connection to the server.
    #
    # Possible Values:
    #     * Any string that is a valid absolute path to a CA file
    #
    # Related options:
    #     * vmware_insecure
    #
    #  (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #vmware_ca_file = /etc/ssl/certs/ca-certificates.crt

    #
    # The datastores where the image can be stored.
    #
    # This configuration option specifies the datastores where the image can
    # be stored in the VMWare store backend. This option may be specified
    # multiple times for specifying multiple datastores. The datastore name
    # should be specified after its datacenter path, separated by ":". An
    # optional weight may be given after the datastore name, separated again
    # by ":" to specify the priority. Thus, the required format becomes
    # <datacenter_path>:<datastore_name>:<optional_weight>.
    #
    # When adding an image, the datastore with highest weight will be
    # selected, unless there is not enough free space available in cases
    # where the image size is already known. If no weight is given, it is
    # assumed to be zero and the directory will be considered for selection
    # last. If multiple datastores have the same weight, then the one with
    # the most free space available is selected.
    #
    # Possible Values:
    #     * Any string of the format:
    #       <datacenter_path>:<datastore_name>:<optional_weight>
    #
    # Related options:
    #    * None
    #
    #  (multi valued)
    #vmware_datastores =

    [healthcheck]

    #
    # From oslo.middleware.healthcheck
    #

    # Show more detailed information as part of the response. Security note:
    # Enabling this option may expose sensitive details about the service being
    # monitored. Be sure to verify that it will not violate your security policies.
    # (boolean value)
    #detailed = false

    # Additional backends that can perform health checks and report that information
    # back as part of a request. (list value)
    #backends =

    # A list of network addresses to limit source ip allowed to access healthcheck
    # information. Any request from ip outside of these network addresses are
    # ignored. (list value)
    #allowed_source_ranges =

    # Ignore requests with proxy headers. (boolean value)
    #ignore_proxied_requests = false

    # Check the presence of a file to determine if an application is running on a
    # port. Used by DisableByFileHealthcheck plugin. (string value)
    #disable_by_file_path = <None>

    # Check the presence of a file based on a port to determine if an application is
    # running on a port. Expects a "port:path" list of strings. Used by
    # DisableByFilesPortsHealthcheck plugin. (list value)
    #disable_by_file_paths =

    # Check the presence of files. Used by EnableByFilesHealthcheck plugin. (list
    # value)
    #enable_by_file_paths =

    [image_format]

    #
    # From glance.api
    #

    # Supported values for the 'container_format' image attribute (list value)
    # Deprecated group/name - [DEFAULT]/container_formats
    #container_formats = ami,ari,aki,bare,ovf,ova,docker,compressed

    # Supported values for the 'disk_format' image attribute (list value)
    # Deprecated group/name - [DEFAULT]/disk_formats
    #disk_formats = ami,ari,aki,vhd,vhdx,vmdk,raw,qcow2,vdi,iso,ploop

    # A list of strings describing allowed VMDK 'create-type' subformats that will
    # be allowed. This is recommended to only include single-file-with-sparse-header
    # variants to avoid potential host file exposure due to processing named
    # extents. If this list is empty, then no VDMK image types allowed. Note that
    # this is currently only checked during image conversion (if enabled), and
    # limits the types of VMDK images we will convert from. (list value)
    #vmdk_allowed_types = streamOptimized,monolithicSparse

    # When enabled, glance will inspect the content of uploads and require that they
    # match the disk_format set on the image. A mismatch will abort the upload with
    # an error. Disabling this may be required in the case of false match (or
    # mismatch) issues, but those are bugs that should be filed and fixed. Enabling
    # this feature improves security and consistency by ensuring that images
    # claiming to be a given format have content matching that format. (boolean
    # value)
    #require_image_format_match = true

    # List of safety check names to consider non-fatal when validating
    # disk_format=gpt images (or images detected as gpt). Since MBR is very loosely-
    # defined and GPT (which is strictly defined) depends on the MBR structure, it
    # is easy to craft a GPT disk image that works, but is not valid according to
    # the spec. While not recommended, it is possible to disable MBR or GPT-specific
    # safety checks if necessary for compatibility. This can include "mbr" and/or
    # "gptmbr" to avoid failing format validation if those checks fail. Use this
    # with caution as it makes glance relax its definition of what a valid GPT disk
    # image looks like and prevents strict adherence to the GPT spec. (list value)
    #gpt_safety_checks_nonfatal =

    [key_manager]

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

    # The type of authentication credential to create. Required if no context is
    # passed to the credential factory. (string value)
    # Possible values:
    # token - <No description provided>
    # password - <No description provided>
    # keystone_token - <No description provided>
    # keystone_password - <No description provided>
    #auth_type = <None>

    # Token for authentication. Required for 'token' and 'keystone_token' auth_type
    # if no context is passed to the credential factory. (string value)
    #token = <None>

    # Username for authentication. Required for 'password' auth_type. Optional for
    # the 'keystone_password' auth_type. (string value)
    #username = <None>

    # Password for authentication. Required for 'password' and 'keystone_password'
    # auth_type. (string value)
    #password = <None>

    # Use this endpoint to connect to Keystone. (uri value)
    #auth_url = <None>

    # User ID for authentication. Optional for 'keystone_token' and
    # 'keystone_password' auth_type. (string value)
    #user_id = <None>

    # User's domain ID for authentication. Optional for 'keystone_token' and
    # 'keystone_password' auth_type. (string value)
    #user_domain_id = <None>

    # User's domain name for authentication. Optional for 'keystone_token' and
    # 'keystone_password' auth_type. (string value)
    #user_domain_name = <None>

    # Trust ID for trust scoping. Optional for 'keystone_token' and
    # 'keystone_password' auth_type. (string value)
    #trust_id = <None>

    # Domain ID for domain scoping. Optional for 'keystone_token' and
    # 'keystone_password' auth_type. (string value)
    #domain_id = <None>

    # Domain name for domain scoping. Optional for 'keystone_token' and
    # 'keystone_password' auth_type. (string value)
    #domain_name = <None>

    # Project ID for project scoping. Optional for 'keystone_token' and
    # 'keystone_password' auth_type. (string value)
    #project_id = <None>

    # Project name for project scoping. Optional for 'keystone_token' and
    # 'keystone_password' auth_type. (string value)
    #project_name = <None>

    # Project's domain ID for project. Optional for 'keystone_token' and
    # 'keystone_password' auth_type. (string value)
    #project_domain_id = <None>

    # Project's domain name for project. Optional for 'keystone_token' and
    # 'keystone_password' auth_type. (string value)
    #project_domain_name = <None>

    # Allow fetching a new token if the current one is going to expire. Optional for
    # 'keystone_token' and 'keystone_password' auth_type. (boolean value)
    #reauthenticate = true

    [keystone_authtoken]

    #
    # From keystonemiddleware.auth_token
    #

    # Complete "public" Identity API endpoint. This endpoint should not be an
    # "admin" endpoint, as it should be accessible by all end users. Unauthenticated
    # clients are redirected to this endpoint to authenticate. Although this
    # endpoint should ideally be unversioned, client support in the wild varies.
    # (string value)
    #www_authenticate_uri = <None>

    # API version of the Identity API endpoint. (string value)
    #auth_version = <None>

    # Interface to use for the Identity API endpoint. Valid values are "public",
    # "internal" (default) or "admin". (string value)
    #interface = internal

    # Do not handle authorization requests within the middleware, but delegate the
    # authorization decision to downstream WSGI components. (boolean value)
    #delay_auth_decision = false

    # Request timeout value for communicating with Identity API server. (integer
    # value)
    #http_connect_timeout = <None>

    # How many times are we trying to reconnect when communicating with Identity API
    # Server. (integer value)
    #http_request_max_retries = 3

    # Request environment key where the Swift cache object is stored. When
    # auth_token middleware is deployed with a Swift cache, use this option to have
    # the middleware share a caching backend with swift. Otherwise, use the
    # ``memcached_servers`` option instead. (string value)
    #cache = <None>

    # Required if identity server requires client certificate (string value)
    #certfile = <None>

    # Required if identity server requires client certificate (string value)
    #keyfile = <None>

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

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

    # The region in which the identity server can be found. (string value)
    #region_name = <None>

    # Optionally specify a list of memcached server(s) to use for caching. If left
    # undefined, tokens will instead be cached in-process. (list value)
    # Deprecated group/name - [keystone_authtoken]/memcache_servers
    #memcached_servers = <None>

    # In order to prevent excessive effort spent validating tokens, the middleware
    # caches previously-seen tokens for a configurable duration (in seconds). Set to
    # -1 to disable caching completely. (integer value)
    #token_cache_time = 300

    # (Optional) If defined, indicate whether token data should be authenticated or
    # authenticated and encrypted. If MAC, token data is authenticated (with HMAC)
    # in the cache. If ENCRYPT, token data is encrypted and authenticated in the
    # cache. If the value is not one of these options or empty, auth_token will
    # raise an exception on initialization. (string value)
    # Possible values:
    # None - <No description provided>
    # MAC - <No description provided>
    # ENCRYPT - <No description provided>
    #memcache_security_strategy = None

    # (Optional, mandatory if memcache_security_strategy is defined) This string is
    # used for key derivation. (string value)
    #memcache_secret_key = <None>

    # (Optional) Global toggle for TLS usage when comunicating with the caching
    # servers. (boolean value)
    #memcache_tls_enabled = false

    # (Optional) Path to a file of concatenated CA certificates in PEM format
    # necessary to establish the caching server's authenticity. If tls_enabled is
    # False, this option is ignored. (string value)
    #memcache_tls_cafile = <None>

    # (Optional) Path to a single file in PEM format containing the client's
    # certificate as well as any number of CA certificates needed to establish the
    # certificate's authenticity. This file is only required when client side
    # authentication is necessary. If tls_enabled is False, this option is ignored.
    # (string value)
    #memcache_tls_certfile = <None>

    # (Optional) Path to a single file containing the client's private key in.
    # Otherwhise the private key will be taken from the file specified in
    # tls_certfile. If tls_enabled is False, this option is ignored. (string value)
    #memcache_tls_keyfile = <None>

    # (Optional) Set the available ciphers for sockets created with the TLS context.
    # It should be a string in the OpenSSL cipher list format. If not specified, all
    # OpenSSL enabled ciphers will be available. (string value)
    #memcache_tls_allowed_ciphers = <None>

    # (Optional) Number of seconds memcached server is considered dead before it is
    # tried again. (integer value)
    #memcache_pool_dead_retry = 300

    # (Optional) Maximum total number of open connections to every memcached server.
    # (integer value)
    #memcache_pool_maxsize = 10

    # (Optional) Socket timeout in seconds for communicating with a memcached
    # server. (integer value)
    #memcache_pool_socket_timeout = 3

    # (Optional) Number of seconds a connection to memcached is held unused in the
    # pool before it is closed. (integer value)
    #memcache_pool_unused_timeout = 60

    # (Optional) Number of seconds that an operation will wait to get a memcached
    # client connection from the pool. (integer value)
    #memcache_pool_conn_get_timeout = 10

    # (Optional) Use the advanced (eventlet safe) memcached client pool. (boolean
    # value)
    #memcache_use_advanced_pool = true

    # (Optional) Indicate whether to set the X-Service-Catalog header. If False,
    # middleware will not ask for service catalog on token validation and will not
    # set the X-Service-Catalog header. (boolean value)
    #include_service_catalog = true

    # Used to control the use and type of token binding. Can be set to: "disabled"
    # to not check token binding. "permissive" (default) to validate binding
    # information if the bind type is of a form known to the server and ignore it if
    # not. "strict" like "permissive" but if the bind type is unknown the token will
    # be rejected. "required" any form of token binding is needed to be allowed.
    # Finally the name of a binding method that must be present in tokens. (string
    # value)
    #enforce_token_bind = permissive

    # A choice of roles that must be present in a service token. Service tokens are
    # allowed to request that an expired token can be used and so this check should
    # tightly control that only actual services should be sending this token. Roles
    # here are applied as an ANY check so any role in this list must be present. For
    # backwards compatibility reasons this currently only affects the allow_expired
    # check. (list value)
    #service_token_roles = service

    # When set to True, service tokens must contain a role from the
    # service_token_roles list to be considered valid. This prevents end-user tokens
    # from being used as service tokens and ensures proper service-to-service
    # authentication. Setting this to False is NOT RECOMMENDED as it allows any
    # valid token to be used as a service token, which can bypass access-rule checks
    # and weaken composite-auth protections. (boolean value)
    #service_token_roles_required = true

    # The name or type of the service as it appears in the service catalog. This is
    # used to validate tokens that have restricted access rules. (string value)
    #service_type = <None>

    # Enable the SASL(Simple Authentication and Security Layer) if the SASL_enable
    # is true, else disable. (boolean value)
    #memcache_sasl_enabled = false

    # the user name for the SASL (string value)
    #memcache_username =

    # the username password for SASL (string value)
    #memcache_password =

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

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

    [os_brick]

    #
    # From os_brick
    #

    # Directory to use for os-brick lock files. Defaults to
    # oslo_concurrency.lock_path which is a sensible default for compute nodes, but
    # not for HCI deployments or controllers where Glance uses Cinder as a backend,
    # as locks should use the same directory. (string value)
    #lock_path = <None>

    # Number of attempts for the multipath device to be ready for I/O after it was
    # created. Readiness is checked with ``multipath -C``. See related
    # ``wait_mpath_device_interval`` config option. (integer value)
    # Minimum value: 1
    #wait_mpath_device_attempts = 4

    # Interval value to wait for multipath device to be ready for I/O. Max number of
    # attempts is set in ``wait_mpath_device_attempts``. Time in seconds to wait for
    # each retry is ``base ^ attempt * interval``, so for 4 attempts (1 attempt 3
    # retries) and 1 second interval will yield: 2, 4 and 8 seconds. Note that there
    # is no wait before first attempt. (integer value)
    # Minimum value: 1
    #wait_mpath_device_interval = 1

    [oslo_concurrency]

    #
    # From oslo.concurrency
    #

    # Enables or disables inter-process locks. (boolean value)
    #disable_process_locking = false

    # Directory to use for lock files.  For security, the specified directory should
    # only be writable by the user running the processes that need locking. Defaults
    # to environment variable OSLO_LOCK_PATH. If external locks are used, a lock
    # path must be set. (string value)
    #lock_path = <None>

    [oslo_limit]

    #
    # From oslo.limit
    #

    # The service's endpoint id which is registered in Keystone. (string value)
    #endpoint_id = <None>

    # Service name for endpoint discovery (string value)
    #endpoint_service_name = <None>

    # Service type for endpoint discovery (string value)
    #endpoint_service_type = <None>

    # Region to which the endpoint belongs (string value)
    #endpoint_region_name = <None>

    # The interface for endpoint discovery (string value)
    # Possible values:
    # public - <No description provided>
    # publicURL - <No description provided>
    # internal - <No description provided>
    # internalURL - <No description provided>
    # admin - <No description provided>
    # adminURL - <No description provided>
    #endpoint_interface = public

    # 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 (floating point value)
    #timeout = <None>

    # Collect per-API call timing information. (boolean value)
    #collect_timing = false

    # Log requests to multiple loggers. (boolean value)
    #split_loggers = false

    # Authentication URL (string value)
    #auth_url = <None>

    # Scope for system operations (string value)
    #system_scope = <None>

    # Domain ID to scope to (string value)
    #domain_id = <None>

    # Domain name to scope to (string value)
    #domain_name = <None>

    # Project ID to scope to (string value)
    #project_id = <None>

    # Project name to scope to (string value)
    #project_name = <None>

    # Domain ID containing project (string value)
    #project_domain_id = <None>

    # Domain name containing project (string value)
    #project_domain_name = <None>

    # ID of the trust to use as a trustee use (string value)
    #trust_id = <None>

    # Optional domain ID to use with v3 and v2 parameters. It will be used for both
    # the user and project domain in v3 and ignored in v2 authentication. (string
    # value)
    #default_domain_id = <None>

    # Optional domain name to use with v3 API and v2 parameters. It will be used for
    # both the user and project domain in v3 and ignored in v2 authentication.
    # (string value)
    #default_domain_name = <None>

    # User's user ID (string value)
    #user_id = <None>

    # User's username (string value)
    # Deprecated group/name - [oslo_limit]/user_name
    #username = <None>

    # User's domain ID (string value)
    #user_domain_id = <None>

    # User's domain name (string value)
    #user_domain_name = <None>

    # User's password (string value)
    #password = <None>

    # Tenant ID (string value)
    #tenant_id = <None>

    # Tenant Name (string value)
    #tenant_name = <None>

    # The default service_type for endpoint URL discovery. (string value)
    #service_type = <None>

    # The default service_name for endpoint URL discovery. (string value)
    #service_name = <None>

    # List of interfaces, in order of preference, for endpoint URL. (list value)
    #valid_interfaces = <None>

    # The default region_name for endpoint URL discovery. (string value)
    #region_name = <None>

    # Always use this endpoint URL for requests for this client. NOTE: The
    # unversioned endpoint should be specified here; to request a particular API
    # version, use the `version`, `min-version`, and/or `max-version` options.
    # (string value)
    #endpoint_override = <None>

    # Minimum Major API version within a given Major API version for endpoint URL
    # discovery. Mutually exclusive with min_version and max_version (string value)
    #version = <None>

    # The minimum major version of a given API, intended to be used as the lower
    # bound of a range with max_version. Mutually exclusive with version. If
    # min_version is given with no max_version it is as if max version is "latest".
    # (string value)
    #min_version = <None>

    # The maximum major version of a given API, intended to be used as the upper
    # bound of a range with min_version. Mutually exclusive with version. (string
    # value)
    #max_version = <None>

    # The maximum number of retries that should be attempted for connection errors.
    # (integer value)
    #connect_retries = <None>

    # Delay (in seconds) between two retries for connection errors. If not set,
    # exponential retry starting with 0.5 seconds up to a maximum of 60 seconds is
    # used. (floating point value)
    #connect_retry_delay = <None>

    # The maximum number of retries that should be attempted for retriable HTTP
    # status codes. (integer value)
    #status_code_retries = <None>

    # Delay (in seconds) between two retries for retriable status codes. If not set,
    # exponential retry starting with 0.5 seconds up to a maximum of 60 seconds is
    # used. (floating point value)
    #status_code_retry_delay = <None>

    # List of retriable HTTP status codes that should be retried. If not set default
    # to  [503] (list value)
    #retriable_status_codes = <None>

    [oslo_messaging_kafka]

    #
    # From oslo.messaging
    #

    # Max fetch bytes of Kafka consumer (integer value)
    #kafka_max_fetch_bytes = 1048576

    # Default timeout(s) for Kafka consumers (floating point value)
    #kafka_consumer_timeout = 1.0

    # Group id for Kafka consumer. Consumers in one group will coordinate message
    # consumption (string value)
    #consumer_group = oslo_messaging_consumer

    # Upper bound on the delay for KafkaProducer batching in seconds (floating point
    # value)
    #producer_batch_timeout = 0.0

    # Size of batch for the producer async send (integer value)
    #producer_batch_size = 16384

    # The compression codec for all data generated by the producer. If not set,
    # compression will not be used. Note that the allowed values of this depend on
    # the kafka version (string value)
    # Possible values:
    # none - <No description provided>
    # gzip - <No description provided>
    # snappy - <No description provided>
    # lz4 - <No description provided>
    # zstd - <No description provided>
    #compression_codec = none

    # Enable asynchronous consumer commits (boolean value)
    #enable_auto_commit = false

    # The maximum number of records returned in a poll call (integer value)
    #max_poll_records = 500

    # Protocol used to communicate with brokers (string value)
    # Possible values:
    # PLAINTEXT - <No description provided>
    # SASL_PLAINTEXT - <No description provided>
    # SSL - <No description provided>
    # SASL_SSL - <No description provided>
    #security_protocol = PLAINTEXT

    # Mechanism when security protocol is SASL (string value)
    #sasl_mechanism = PLAIN

    # CA certificate PEM file used to verify the server certificate (string value)
    #ssl_cafile =

    # Client certificate PEM file used for authentication. (string value)
    #ssl_client_cert_file =

    # Client key PEM file used for authentication. (string value)
    #ssl_client_key_file =

    # Client key password file used for authentication. (string value)
    #ssl_client_key_password =

    [oslo_messaging_notifications]

    #
    # From oslo.messaging
    #

    # The Drivers(s) to handle sending notifications. Possible values are messaging,
    # messagingv2, routing, log, test, noop (multi valued)
    #driver =

    # A URL representing the messaging driver to use for notifications. If not set,
    # we fall back to the same configuration used for RPC. (string value)
    #transport_url = <None>

    # AMQP topic used for OpenStack notifications. (list value)
    #topics = notifications

    # The maximum number of attempts to re-send a notification message which failed
    # to be delivered due to a recoverable error. 0 - No retry, -1 - indefinite
    # (integer value)
    #retry = -1

    [oslo_messaging_rabbit]

    #
    # From oslo.messaging
    #

    # Use durable queues in AMQP. If rabbit_quorum_queue is enabled, queues will be
    # durable and this value will be ignored. (boolean value)
    #amqp_durable_queues = false

    # Auto-delete queues in AMQP. (boolean value)
    #amqp_auto_delete = false

    # Size of RPC connection pool. (integer value)
    # Minimum value: 1
    #rpc_conn_pool_size = 30

    # The pool size limit for connections expiration policy (integer value)
    #conn_pool_min_size = 2

    # The time-to-live in sec of idle connections in the pool (integer value)
    #conn_pool_ttl = 1200

    # Connect over SSL. (boolean value)
    #ssl = false

    # SSL version to use (valid only if SSL enabled). Valid values are TLSv1 and
    # SSLv23. SSLv2, SSLv3, TLSv1_1, and TLSv1_2 may be available on some
    # distributions. (string value)
    #ssl_version =

    # SSL key file (valid only if SSL enabled). (string value)
    #ssl_key_file =

    # SSL cert file (valid only if SSL enabled). (string value)
    #ssl_cert_file =

    # SSL certification authority file (valid only if SSL enabled). (string value)
    #ssl_ca_file =

    # DEPRECATED: When true, verify the broker hostname against the certificate when
    # ``ssl_ca_file`` is set. When false, ``ssl`` with ``ssl_ca_file`` still
    # validates the certificate chain but does not verify the broker hostname.
    # ``ssl=true`` without ``ssl_ca_file`` never enables hostname verification.
    # (boolean value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason: Verification is always enabled now
    #ssl_enforce_hostname_verification = true

    # DEPRECATED: Global toggle for enforcing the OpenSSL FIPS mode. This feature
    # requires Python support. This is available in Python 3.9 in all environments
    # and may have been backported to older Python versions on select environments.
    # If the Python executable used does not support OpenSSL FIPS mode, an exception
    # will be raised. (boolean value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason: FIPS_mode_set API was removed in OpenSSL 3.0.0. This option has no
    # effect now.
    #ssl_enforce_fips_mode = false

    # How long to wait (in seconds) before reconnecting in response to an AMQP
    # consumer cancel notification. (floating point value)
    # Minimum value: 0.0
    # Maximum value: 4.5
    #kombu_reconnect_delay = 1.0

    # Random time to wait for when reconnecting in response to an AMQP consumer
    # cancel notification. (floating point value)
    # Minimum value: 0.0
    #kombu_reconnect_splay = 0.0

    # EXPERIMENTAL: Possible values are: gzip, bz2. If not set compression will not
    # be used. This option may not be available in future versions. (string value)
    #kombu_compression = <None>

    # How long to wait a missing client before abandoning to send it its replies.
    # This value should not be longer than rpc_response_timeout. (integer value)
    # Deprecated group/name - [oslo_messaging_rabbit]/kombu_reconnect_timeout
    #kombu_missing_consumer_retry_timeout = 60

    # Determines how the next RabbitMQ node is chosen in case the one we are
    # currently connected to becomes unavailable. Takes effect only if more than one
    # RabbitMQ node is provided in config. (string value)
    # Possible values:
    # round-robin - <No description provided>
    # shuffle - <No description provided>
    #kombu_failover_strategy = round-robin

    # The RabbitMQ login method. (string value)
    # Possible values:
    # PLAIN - <No description provided>
    # AMQPLAIN - <No description provided>
    # EXTERNAL - <No description provided>
    # RABBIT-CR-DEMO - <No description provided>
    #rabbit_login_method = AMQPLAIN

    # How frequently to retry connecting with RabbitMQ. (integer value)
    # Minimum value: 1
    #rabbit_retry_interval = 1

    # How long to backoff for between retries when connecting to RabbitMQ. (integer
    # value)
    # Minimum value: 0
    #rabbit_retry_backoff = 2

    # Maximum interval of RabbitMQ connection retries. (integer value)
    # Minimum value: 1
    #rabbit_interval_max = 30

    # Try to use HA queues in RabbitMQ (x-ha-policy: all). If you change this
    # option, you must wipe the RabbitMQ database. In RabbitMQ 3.0, queue mirroring
    # is no longer controlled by the x-ha-policy argument when declaring a queue. If
    # you just want to make sure that all queues (except those with auto-generated
    # names) are mirrored across all nodes, run: "rabbitmqctl set_policy HA
    # '^(?!amq\.).*' '{"ha-mode": "all"}' " (boolean value)
    #rabbit_ha_queues = false

    # Use quorum queues in RabbitMQ (x-queue-type: quorum). The quorum queue is a
    # modern queue type for RabbitMQ implementing a durable, replicated FIFO queue
    # based on the Raft consensus algorithm. It is available as of RabbitMQ 3.8.0.
    # If set this option will conflict with the HA queues (``rabbit_ha_queues``) aka
    # mirrored queues, in other words the HA queues should be disabled. Quorum
    # queues are also durable by default so the amqp_durable_queues option is
    # ignored when this option is enabled. (boolean value)
    #rabbit_quorum_queue = false

    # Use quorum queues for transients queues in RabbitMQ. Enabling this option will
    # then make sure those queues are also using quorum kind of rabbit queues, which
    # are HA by default. (boolean value)
    #rabbit_transient_quorum_queue = false

    # Each time a message is redelivered to a consumer, a counter is incremented.
    # Once the redelivery count exceeds the delivery limit the message gets dropped
    # or dead-lettered (if a DLX exchange has been configured) Used only when
    # rabbit_quorum_queue is enabled, Default 0 which means dont set a limit.
    # (integer value)
    #rabbit_quorum_delivery_limit = 0

    # By default all messages are maintained in memory if a quorum queue grows in
    # length it can put memory pressure on a cluster. This option can limit the
    # number of messages in the quorum queue. Used only when rabbit_quorum_queue is
    # enabled, Default 0 which means dont set a limit. (integer value)
    #rabbit_quorum_max_memory_length = 0

    # By default all messages are maintained in memory if a quorum queue grows in
    # length it can put memory pressure on a cluster. This option can limit the
    # number of memory bytes used by the quorum queue. Used only when
    # rabbit_quorum_queue is enabled, Default 0 which means dont set a limit.
    # (integer value)
    #rabbit_quorum_max_memory_bytes = 0

    # Positive integer representing duration in seconds for queue TTL (x-expires).
    # Queues which are unused for the duration of the TTL are automatically deleted.
    # The parameter affects only reply and fanout queues. Setting 0 as value will
    # disable the x-expires. If doing so, make sure you have a rabbitmq policy to
    # delete the queues or you deployment will create an infinite number of queue
    # over time.In case rabbit_stream_fanout is set to True, this option will
    # control data retention policy (x-max-age) for messages in the fanout queue
    # rather then the queue duration itself. So the oldest data in the stream queue
    # will be discarded from it once reaching TTL Setting to 0 will disable x-max-
    # age for stream which make stream grow indefinitely filling up the diskspace
    # (integer value)
    # Minimum value: 0
    #rabbit_transient_queues_ttl = 1800

    # Specifies the number of messages to prefetch. Setting to zero allows unlimited
    # messages. (integer value)
    #rabbit_qos_prefetch_count = 0

    # Number of seconds after which the Rabbit broker is considered down if
    # heartbeat's keep-alive fails (0 disables heartbeat). (integer value)
    #heartbeat_timeout_threshold = 60

    # How often times during the heartbeat_timeout_threshold we check the heartbeat.
    # (integer value)
    #heartbeat_rate = 3

    # DEPRECATED: (DEPRECATED) Enable/Disable the RabbitMQ mandatory flag for direct
    # send. The direct send is used as reply, so the MessageUndeliverable exception
    # is raised in case the client queue does not exist.MessageUndeliverable
    # exception will be used to loop for a timeout to lets a chance to sender to
    # recover.This flag is deprecated and it will not be possible to deactivate this
    # functionality anymore (boolean value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason: Mandatory flag no longer deactivable.
    #direct_mandatory_flag = true

    # Enable x-cancel-on-ha-failover flag so that rabbitmq server will cancel and
    # notify consumerswhen queue is down (boolean value)
    #enable_cancel_on_failover = false

    # Should we use consistant queue names or random ones (boolean value)
    #use_queue_manager = false

    # Hostname used by queue manager. Defaults to the value returned by
    # socket.gethostname(). (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #hostname = node1.example.com

    # Process name used by queue manager (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #processname = nova-api

    # Use stream queues in RabbitMQ (x-queue-type: stream). Streams are a new
    # persistent and replicated data structure ("queue type") in RabbitMQ which
    # models an append-only log with non-destructive consumer semantics. It is
    # available as of RabbitMQ 3.9.0. If set this option will replace all fanout
    # queues with only one stream queue. (boolean value)
    #rabbit_stream_fanout = false

    [oslo_middleware]

    #
    # From oslo.middleware.http_proxy_to_wsgi
    #

    # Whether the application is behind a proxy or not. This determines if the
    # middleware should parse the headers or not. (boolean value)
    #enable_proxy_headers_parsing = false

    [oslo_policy]

    #
    # From oslo.policy
    #

    # This option controls whether or not to use old deprecated defaults when
    # evaluating policies. If ``True``, the old deprecated defaults are not going to
    # be evaluated. This means if any existing token is allowed for old defaults but
    # is disallowed for new defaults, it will be disallowed. If ``False``, the
    # deprecated policy check string is logically OR'd with the new policy check
    # string, allowing for a graceful upgrade experience between releases with new
    # policies, which is the default behavior. (boolean value)
    #enforce_new_defaults = true

    # The relative or absolute path of a file that maps roles to permissions for a
    # given service. Relative paths must be specified in relation to the
    # configuration file setting this option. (string value)
    #policy_file = policy.yaml

    # Default rule. Enforced when a requested rule is not found. (string value)
    #policy_default_rule = default

    # Directories where policy configuration files are stored. They can be relative
    # to any directory in the search path defined by the config_dir option, or
    # absolute paths. The file defined by policy_file must exist for these
    # directories to be searched.  Missing or empty directories are ignored. (multi
    # valued)
    #policy_dirs = policy.d

    # Content Type to send and receive data for REST based policy check (string
    # value)
    # Possible values:
    # application/x-www-form-urlencoded - <No description provided>
    # application/json - <No description provided>
    #remote_content_type = application/x-www-form-urlencoded

    # server identity verification for REST based policy check (boolean value)
    #remote_ssl_verify_server_crt = false

    # Absolute path to ca cert file for REST based policy check (string value)
    #remote_ssl_ca_crt_file = <None>

    # Absolute path to client cert for REST based policy check (string value)
    #remote_ssl_client_crt_file = <None>

    # Absolute path client key file REST based policy check (string value)
    #remote_ssl_client_key_file = <None>

    # Timeout in seconds for REST based policy check (floating point value)
    # Minimum value: 0
    #remote_timeout = 60

    [oslo_reports]

    #
    # From oslo.reports
    #

    # Path to a log directory where to create a file (string value)
    #log_dir = <None>

    # The path to a file to watch for changes to trigger the reports, instead of
    # signals. Setting this option disables the signal trigger for the reports. If
    # application is running as a WSGI application it is recommended to use this
    # instead of signals. (string value)
    #file_event_handler = <None>

    # How many seconds to wait between polls when file_event_handler is set (integer
    # value)
    #file_event_handler_interval = 1

    [paste_deploy]

    #
    # From glance.api
    #

    #
    # Deployment flavor to use in the server application pipeline.
    #
    # Provide a string value representing the appropriate deployment
    # flavor used in the server application pipeline. This is typically
    # the partial name of a pipeline in the paste configuration file with
    # the service name removed.
    #
    # For example, if your paste section name in the paste configuration
    # file is [pipeline:glance-api-keystone], set ``flavor`` to
    # ``keystone``.
    #
    # Possible values:
    #     * String value representing a partial pipeline name.
    #
    # Related Options:
    #     * config_file
    #
    #  (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #flavor = keystone

    #
    # Name of the paste configuration file.
    #
    # Provide a string value representing the name of the paste
    # configuration file to use for configuring pipelines for
    # server application deployments.
    #
    # NOTES:
    #     * Provide the name or the path relative to the glance directory
    #       for the paste configuration file and not the absolute path.
    #     * The sample paste configuration file shipped with Glance need
    #       not be edited in most cases as it comes with ready-made
    #       pipelines for all common deployment flavors.
    #
    # If no value is specified for this option, the ``paste.ini`` file
    # with the prefix of the corresponding Glance service's configuration
    # file name will be searched for in the known configuration
    # directories. (For example, if this option is missing from or has no
    # value set in ``glance-api.conf``, the service will look for a file
    # named ``glance-api-paste.ini``.) If the paste configuration file is
    # not found, the service will not start.
    #
    # Possible values:
    #     * A string value representing the name of the paste configuration
    #       file.
    #
    # Related Options:
    #     * flavor
    #
    #  (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #config_file = glance-api-paste.ini

    [profiler]

    #
    # From glance.api
    #

    #
    # Enable the profiling for all services on this node.
    #
    # Default value is False (fully disable the profiling feature).
    #
    # Possible values:
    #
    # * True: Enables the feature
    # * False: Disables the feature. The profiling cannot be started via this
    # project
    #   operations. If the profiling is triggered by another project, this project
    #   part will be empty.
    #  (boolean value)
    # Deprecated group/name - [profiler]/profiler_enabled
    #enabled = false

    #
    # Enable SQL requests profiling in services.
    #
    # Default value is False (SQL requests won't be traced).
    #
    # Possible values:
    #
    # * True: Enables SQL requests profiling. Each SQL query will be part of the
    #   trace and can the be analyzed by how much time was spent for that.
    # * False: Disables SQL requests profiling. The spent time is only shown on a
    #   higher level of operations. Single SQL queries cannot be analyzed this way.
    #  (boolean value)
    #trace_sqlalchemy = false

    #
    # Enable python requests package profiling.
    #
    # Supported drivers: jaeger+otlp
    #
    # Default value is False.
    #
    # Possible values:
    #
    # * True: Enables requests profiling.
    # * False: Disables requests profiling.
    #  (boolean value)
    #trace_requests = false

    #
    # Secret key(s) to use for encrypting context data for performance profiling.
    #
    # This string value should have the following format: <key1>[,<key2>,...<keyn>],
    # where each key is some random string. A user who triggers the profiling via
    # the REST API has to set one of these keys in the headers of the REST API call
    # to include profiling results of this node for this particular project.
    #
    # Both "enabled" flag and "hmac_keys" config options should be set to enable
    # profiling. Also, to generate correct profiling information across all services
    # at least one key needs to be consistent between OpenStack projects. This
    # ensures it can be used from client side to generate the trace, containing
    # information from all possible resources.
    #  (string value)
    #hmac_keys = SECRET_KEY

    #
    # Connection string for a notifier backend.
    #
    # Default value is ``messaging://`` which sets the notifier to oslo_messaging.
    #
    # Examples of possible values:
    #
    # * ``messaging://`` - use oslo_messaging driver for sending spans.
    # * ``redis://127.0.0.1:6379`` - use redis driver for sending spans.
    # * ``mongodb://127.0.0.1:27017`` - use mongodb driver for sending spans.
    # * ``elasticsearch://127.0.0.1:9200`` - use elasticsearch driver for sending
    #   spans.
    # * ``jaeger://127.0.0.1:6831`` - use jaeger tracing as driver for sending
    # spans.
    #  (string value)
    #connection_string = messaging://

    #
    # Document type for notification indexing in elasticsearch.
    #  (string value)
    #es_doc_type = notification

    #
    # This parameter is a time value parameter (for example: es_scroll_time=2m),
    # indicating for how long the nodes that participate in the search will maintain
    # relevant resources in order to continue and support it.
    #  (string value)
    #es_scroll_time = 2m

    #
    # Elasticsearch splits large requests in batches. This parameter defines
    # maximum size of each batch (for example: es_scroll_size=10000).
    #  (integer value)
    #es_scroll_size = 10000

    #
    # Redissentinel provides a timeout option on the connections.
    # This parameter defines that timeout (for example: socket_timeout=0.1).
    #  (floating point value)
    #socket_timeout = 0.1

    #
    # Redissentinel uses a service name to identify a master redis service.
    # This parameter defines the name (for example:
    # ``sentinal_service_name=mymaster``).
    #  (string value)
    #sentinel_service_name = mymaster

    #
    # Enable filter traces that contain error/exception to a separated place.
    #
    # Default value is set to False.
    #
    # Possible values:
    #
    # * True: Enable filter traces that contain error/exception.
    # * False: Disable the filter.
    #  (boolean value)
    #filter_error_trace = false

    [task]

    #
    # From glance.api
    #

    # Time in hours for which a task lives after, either succeeding or failing
    # (integer value)
    # Deprecated group/name - [DEFAULT]/task_time_to_live
    #task_time_to_live = 48

    #
    # Task executor to be used to run task scripts.
    #
    # Provide a string value representing the executor to use for task
    # executions. By default, ``TaskFlow`` executor is used.
    #
    # ``TaskFlow`` helps make task executions easy, consistent, scalable
    # and reliable. It also enables creation of lightweight task objects
    # and/or functions that are combined together into flows in a
    # declarative manner.
    #
    # Possible values:
    #     * taskflow
    #
    # Related Options:
    #     * None
    #
    #  (string value)
    # Possible values:
    # taskflow - <No description provided>
    #task_executor = taskflow

    #
    # Absolute path to the work directory to use for asynchronous
    # task operations.
    #
    # The directory set here will be used to operate over images -
    # normally before they are imported in the destination store.
    #
    # NOTE: When providing a value for ``work_dir``, please make sure
    # that enough space is provided for concurrent tasks to run
    # efficiently without running out of space.
    #
    # A rough estimation can be done by multiplying the number of
    # ``max_workers`` with an average image size (e.g 500MB). The image
    # size estimation should be done based on the average size in your
    # deployment. Note that depending on the tasks running you may need
    # to multiply this number by some factor depending on what the task
    # does. For example, you may want to double the available size if
    # image conversion is enabled. All this being said, remember these
    # are just estimations and you should do them based on the worst
    # case scenario and be prepared to act in case they were wrong.
    #
    # Possible values:
    #     * String value representing the absolute path to the working
    #       directory
    #
    # Related Options:
    #     * None
    #
    #  (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #work_dir = /work_dir

    [taskflow_executor]

    #
    # From glance.api
    #

    #
    # Set the taskflow engine mode.
    #
    # Provide a string type value to set the mode in which the taskflow
    # engine would schedule tasks to the workers on the hosts. Based on
    # this mode, the engine executes tasks either in single or multiple
    # threads. The possible values for this configuration option are:
    # ``serial`` and ``parallel``. When set to ``serial``, the engine runs
    # all the tasks in a single thread which results in serial execution
    # of tasks. Setting this to ``parallel`` makes the engine run tasks in
    # multiple threads. This results in parallel execution of tasks.
    #
    # Possible values:
    #     * serial
    #     * parallel
    #
    # Related options:
    #     * max_workers
    #
    #  (string value)
    # Possible values:
    # serial - <No description provided>
    # parallel - <No description provided>
    #engine_mode = parallel

    #
    # Set the number of engine executable tasks.
    #
    # Provide an integer value to limit the number of workers that can be
    # instantiated on the hosts. In other words, this number defines the
    # number of parallel tasks that can be executed at the same time by
    # the taskflow engine. This value can be greater than one when the
    # engine mode is set to parallel.
    #
    # Possible values:
    #     * Integer value greater than or equal to 1
    #
    # Related options:
    #     * engine_mode
    #
    #  (integer value)
    # Minimum value: 1
    #max_workers = 10

    #
    # Set the desired image conversion format.
    #
    # Provide a valid image format to which you want images to be
    # converted before they are stored for consumption by Glance.
    # Appropriate image format conversions are desirable for specific
    # storage backends in order to facilitate efficient handling of
    # bandwidth and usage of the storage infrastructure.
    #
    # By default, ``conversion_format`` is not set and must be set
    # explicitly in the configuration file.
    #
    # The allowed values for this option are ``raw``, ``qcow2`` and
    # ``vmdk``. The  ``raw`` format is the unstructured disk format and
    # should be chosen when RBD or Ceph storage backends are used for
    # image storage. ``qcow2`` is supported by the QEMU emulator that
    # expands dynamically and supports Copy on Write. The ``vmdk`` is
    # another common disk format supported by many common virtual machine
    # monitors like VMWare Workstation.
    #
    # Possible values:
    #     * qcow2
    #     * raw
    #     * vmdk
    #
    # Related options:
    #     * disk_formats
    #
    #  (string value)
    # Possible values:
    # qcow2 - <No description provided>
    # raw - <No description provided>
    # vmdk - <No description provided>
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #conversion_format = raw

    [vault]

    #
    # From castellan.config
    #

    # root token for vault (string value)
    #root_token_id = <None>

    # Auth method to use when connecting to Vault. "approle" uses approle_role_id
    # and approle_secret_id. "jwt" and "kubernetes" use token_role and token_file.
    # (string value)
    # Possible values:
    # approle - <No description provided>
    # jwt - <No description provided>
    # kubernetes - <No description provided>
    #auth_method = approle

    # AppRole role_id for authentication with vault (string value)
    #approle_role_id = <None>

    # AppRole secret_id for authentication with vault (string value)
    #approle_secret_id = <None>

    # Vault role name for token-based auth. Required when auth_method is jwt or
    # kubernetes. (string value)
    #token_role = <None>

    # Path to the token file used for Vault login. Required when auth_method is jwt
    # or kubernetes. (string value)
    #token_file = <None>

    # Mount path of the Vault auth backend, used in the login URL
    # /v1/auth/<auth_path>/login. Defaults to the value of auth_method when not set.
    # Override this when the auth backend is mounted at a non-default path (e.g.
    # "kubernetes-my-cluster" instead of "kubernetes"). (string value)
    #auth_path = <None>

    # Mountpoint of KV store in Vault to use (string value)
    #kv_mountpoint = secret

    # Path relative to root of KV store in Vault to use. (string value)
    #kv_path = <None>

    # Version of KV store in Vault to use. (integer value)
    # Possible values:
    # 1 - <No description provided>
    # 2 - <No description provided>
    #kv_version = 2

    # Use this endpoint to connect to Vault (uri value)
    #vault_url = http://127.0.0.1:8200

    # Absolute path to ca cert file (string value)
    #ssl_ca_crt_file = <None>

    # DEPRECATED: SSL Enabled/Disabled (boolean value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason: This option has no effect.
    #use_ssl = false

    # Vault Namespace to use for all requests to Vault. Vault Namespaces feature is
    # available only in Vault Enterprise (string value)
    #namespace = <None>

    # Timeout (in seconds) in each request to Vault (floating point value)
    #timeout = 60

    [wsgi]

    #
    # From glance.api
    #

    #
    # The number of threads (per worker process) in the pool for processing
    # asynchronous tasks. This controls how many asynchronous tasks (i.e. for
    # image interoperable import) each worker can run at a time. If this is
    # too large, you *may* have increased memory footprint per worker and/or you
    # may overwhelm other system resources such as disk or outbound network
    # bandwidth. If this is too small, image import requests will have to wait
    # until a thread becomes available to begin processing. (integer value)
    # Minimum value: 1
    #task_pool_threads = 16

    #
    # Path to the python interpreter to use when spawning external
    # processes. If left unspecified, this will be sys.executable, which should
    # be the same interpreter running Glance itself. However, in some situations
    # (for example, uwsgi) sys.executable may not actually point to a python
    # interpreter and an alternative value must be set. (string value)
    #python_interpreter = <None>

## Sample configuration for Glance Scrubber

This sample configuration can also be viewed in glance-scrubber.conf.sample.

    [DEFAULT]

    #
    # From glance.scrubber
    #

    #
    # Secure hashing algorithm used for computing the 'os_hash_value' property.
    #
    # This option configures the Glance "multihash", which consists of two
    # image properties: the 'os_hash_algo' and the 'os_hash_value'.  The
    # 'os_hash_algo' will be populated by the value of this configuration
    # option, and the 'os_hash_value' will be populated by the hexdigest computed
    # when the algorithm is applied to the uploaded or imported image data.
    #
    # The value must be a valid secure hash algorithm name recognized by the
    # python 'hashlib' library.  You can determine what these are by examining
    # the 'hashlib.algorithms_available' data member of the version of the
    # library being used in your Glance installation.  For interoperability
    # purposes, however, we recommend that you use the set of secure hash
    # names supplied by the 'hashlib.algorithms_guaranteed' data member because
    # those algorithms are guaranteed to be supported by the 'hashlib' library
    # on all platforms.  Thus, any image consumer using 'hashlib' locally should
    # be able to verify the 'os_hash_value' of the image.
    #
    # The default value of 'sha512' is a performant secure hash algorithm.
    #
    # If this option is misconfigured, any attempts to store image data will fail.
    # For that reason, we recommend using the default value.
    #
    # Possible values:
    #     * Any secure hash algorithm name recognized by the Python 'hashlib'
    #       library
    #
    # Related options:
    #     * None
    #
    #  (string value)
    #hashing_algorithm = sha512

    #
    # Maximum number of image members per image.
    #
    # This limits the maximum of users an image can be shared with. Any negative
    # value is interpreted as unlimited.
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    #image_member_quota = 128

    #
    # Maximum number of properties allowed on an image.
    #
    # This enforces an upper limit on the number of additional properties an image
    # can have. Any negative value is interpreted as unlimited.
    #
    #  (integer value)
    #image_property_quota = 128

    #
    # Maximum number of tags allowed on an image.
    #
    # Any negative value is interpreted as unlimited.
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    #image_tag_quota = 128

    #
    # Maximum number of locations allowed on an image.
    #
    # Any negative value is interpreted as unlimited.
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    #image_location_quota = 10

    #
    # The default number of results to return for a request.
    #
    # Responses to certain API requests, like list images, may return
    # multiple items. The number of results returned can be explicitly
    # controlled by specifying the ``limit`` parameter in the API request.
    # However, if a ``limit`` parameter is not specified, this
    # configuration value will be used as the default number of results to
    # be returned for any API request.
    #
    # NOTES:
    #     * The value of this configuration option may not be greater than
    #       the value specified by ``api_limit_max``.
    #     * Setting this to a very large value may slow down database
    #       queries and increase response times. Setting this to a
    #       very low value may result in poor user experience.
    #
    # Possible values:
    #     * Any positive integer
    #
    # Related options:
    #     * api_limit_max
    #
    #  (integer value)
    # Minimum value: 1
    #limit_param_default = 25

    #
    # Maximum number of results that could be returned by a request.
    #
    # As described in the help text of ``limit_param_default``, some
    # requests may return multiple results. The number of results to be
    # returned are governed either by the ``limit`` parameter in the
    # request or the ``limit_param_default`` configuration option.
    # The value in either case, can't be greater than the absolute maximum
    # defined by this configuration option. Anything greater than this
    # value is trimmed down to the maximum value defined here.
    #
    # NOTE: Setting this to a very large value may slow down database
    #       queries and increase response times. Setting this to a
    #       very low value may result in poor user experience.
    #
    # Possible values:
    #     * Any positive integer
    #
    # Related options:
    #     * limit_param_default
    #
    #  (integer value)
    # Minimum value: 1
    #api_limit_max = 1000

    #
    # Show direct image location when returning an image.
    #
    # This configuration option indicates whether to show the direct image
    # location when returning image details to the user. The direct image
    # location is where the image data is stored in backend storage. This
    # image location is shown under the image property ``direct_url``.
    #
    # When multiple image locations exist for an image, the best location
    # is displayed based on the store weightage assigned for each store
    # indicated by the configuration option ``weight``.
    #
    # NOTES:
    #     * Revealing image locations can present a GRAVE SECURITY RISK as
    #       image locations can sometimes include credentials. Hence, this
    #       is set to ``False`` by default. Set this to ``True`` with
    #       EXTREME CAUTION and ONLY IF you know what you are doing!
    #     * If an operator wishes to avoid showing any image location(s)
    #       to the user, then both this option and
    #       ``show_multiple_locations`` MUST be set to ``False``.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * show_multiple_locations
    #     * weight
    #
    #  (boolean value)
    #show_image_direct_url = false

    # DEPRECATED:
    # Show all image locations when returning an image.
    #
    # This configuration option indicates whether to show all the image
    # locations when returning image details to the user. When multiple
    # image locations exist for an image, the locations are ordered based
    # on the store weightage assigned for each store indicated by the
    # configuration option ``weight``. The image locations are shown
    # under the image property ``locations``.
    #
    # NOTES:
    #     * Revealing image locations can present a GRAVE SECURITY RISK as
    #       image locations can sometimes include credentials. Hence, this
    #       is set to ``False`` by default. Set this to ``True`` with
    #       EXTREME CAUTION and ONLY IF you know what you are doing!
    #     * See https://wiki.openstack.org/wiki/OSSN/OSSN-0065 for more
    #       information.
    #     * If an operator wishes to avoid showing any image location(s)
    #       to the user, then both this option and
    #       ``show_image_direct_url`` MUST be set to ``False``.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * show_image_direct_url
    #     * weight
    #
    #  (boolean value)
    # This option is deprecated for removal since Newton.
    # Its value may be silently ignored in the future.
    # Reason: Use of this option, deprecated since Newton, is a security risk and
    # will be removed once we figure out a way to satisfy those use cases that
    # currently require it.  An earlier announcement that the same functionality can
    # be achieved with greater granularity by using policies is incorrect.  You
    # cannot work around this option via policy configuration at the present time,
    # though that is the direction we believe the fix will take.  Please keep an eye
    # on the Glance release notes to stay up to date on progress in addressing this
    # issue.
    #show_multiple_locations = false

    #
    # Calculate hash and checksum for the image.
    #
    # This configuration option indicates that /v2/images/{image_id}/locations
    # POST API will calculate hash and checksum of the image on the fly.
    # If False it will silently ignore the hash and checksum calculation.
    #
    # Possible values:
    #     * True
    #     * False
    #  (boolean value)
    #do_secure_hash = true

    #
    # The number of times to retry when any operation fails.
    #  (integer value)
    #http_retries = 3

    #
    # Maximum size of image a user can upload in bytes.
    #
    # An image upload greater than the size mentioned here would result
    # in an image creation failure. This configuration option defaults to
    # 1099511627776 bytes (1 TiB).
    #
    # NOTES:
    #     * This value should only be increased after careful
    #       consideration and must be set less than or equal to
    #       8 EiB (9223372036854775808).
    #     * This value must be set with careful consideration of the
    #       backend storage capacity. Setting this to a very low value
    #       may result in a large number of image failures. And, setting
    #       this to a very large value may result in faster consumption
    #       of storage. Hence, this must be set according to the nature of
    #       images created and storage capacity available.
    #
    # Possible values:
    #     * Any positive number less than or equal to 9223372036854775808
    #
    #  (integer value)
    # Minimum value: 1
    # Maximum value: 9223372036854775808
    #image_size_cap = 1099511627776

    #
    # Maximum amount of image storage per tenant.
    #
    # This enforces an upper limit on the cumulative storage consumed by all images
    # of a tenant across all stores. This is a per-tenant limit.
    #
    # The default unit for this configuration option is Bytes. However, storage
    # units can be specified using case-sensitive literals ``B``, ``KB``, ``MB``,
    # ``GB`` and ``TB`` representing Bytes, KiloBytes, MegaBytes, GigaBytes and
    # TeraBytes respectively. Note that there should not be any space between the
    # value and unit. Value ``0`` signifies no quota enforcement. Negative values
    # are invalid and result in errors.
    #
    # This has no effect if ``use_keystone_limits`` is enabled.
    #
    # Possible values:
    #     * A string that is a valid concatenation of a non-negative integer
    #       representing the storage value and an optional string literal
    #       representing storage units as mentioned above.
    #
    # Related options:
    #     * use_keystone_limits
    #
    #  (string value)
    #user_storage_quota = 0

    #
    # Utilize per-tenant resource limits registered in Keystone.
    #
    # Enabling this feature will cause Glance to retrieve limits set in keystone
    # for resource consumption and enforce them against API users. Before turning
    # this on, the limits need to be registered in Keystone or all quotas will be
    # considered to be zero, and thus reject all new resource requests.
    #
    # These per-tenant resource limits are independent from the static
    # global ones configured in this config file. If this is enabled, the
    # relevant static global limits will be ignored.
    #  (boolean value)
    #use_keystone_limits = false

    #
    # Host address of the pydev server.
    #
    # Provide a string value representing the hostname or IP of the
    # pydev server to use for debugging. The pydev server listens for
    # debug connections on this address, facilitating remote debugging
    # in Glance.
    #
    # Possible values:
    #     * Valid hostname
    #     * Valid IP address
    #
    # Related options:
    #     * None
    #
    #  (host address value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #pydev_worker_debug_host = localhost

    #
    # Port number that the pydev server will listen on.
    #
    # Provide a port number to bind the pydev server to. The pydev
    # process accepts debug connections on this port and facilitates
    # remote debugging in Glance.
    #
    # Possible values:
    #     * A valid port number
    #
    # Related options:
    #     * None
    #
    #  (port value)
    # Minimum value: 0
    # Maximum value: 65535
    #pydev_worker_debug_port = 5678

    # DEPRECATED:
    # AES key for encrypting store location metadata.
    #
    # Provide a string value representing the AES cipher to use for
    # encrypting Glance store metadata.
    #
    # NOTE: The AES key to use must be set to a random string of length
    # 16, 24 or 32 bytes.
    #
    # Possible values:
    #     * String value representing a valid AES key
    #
    # Related options:
    #     * None
    #
    #  (string value)
    # This option is deprecated for removal since Dalmatian.
    # Its value may be silently ignored in the future.
    # Reason:
    # This option doesnt serves the purpose of encryption of location metadata,
    # whereas it encrypts location url only for specific APIs. Also if enabled
    # this during an upgrade may disrupt existing deployments, as it does not
    # support/provide db upgrade script to encrypt existing location URLs.
    # Moreover, its functionality for encrypting location URLs is inconsistent
    # which is resulting in download failures.
    #metadata_encryption_key = <None>

    # DEPRECATED:
    # Digest algorithm to use for digital signature.
    #
    # Provide a string value representing the digest algorithm to
    # use for generating digital signatures. By default, ``sha256``
    # is used.
    #
    # To get a list of the available algorithms supported by the version
    # of OpenSSL on your platform, run the command:
    # ``openssl list-message-digest-algorithms``.
    # Examples are 'sha1', 'sha256', and 'sha512'.
    #
    # NOTE: ``digest_algorithm`` is not related to Glance's image signing
    # and verification. It is only used to sign the universally unique
    # identifier (UUID) as a part of the certificate file and key file
    # validation.
    #
    # Possible values:
    #     * An OpenSSL message digest algorithm identifier
    #
    # Related options:
    #     * None
    #
    #  (string value)
    # This option is deprecated for removal since Dalmatian.
    # Its value may be silently ignored in the future.
    # Reason:
    # This option has had no effect since the removal of native SSL support.
    #digest_algorithm = sha256

    #
    # The URL provides location where the temporary data will be stored
    #
    # This option is for Glance internal use only. Glance will save the
    # image data uploaded by the user to 'staging' endpoint during the
    # image import process.
    #
    # This option does not change the 'staging' API endpoint by any means.
    #
    # NOTE: It is discouraged to use same path as [task]/work_dir
    #
    # NOTE: 'file://<absolute-directory-path>' is the only option
    # api_image_import flow will support for now.
    #
    # NOTE: The staging path must be on shared filesystem available to all
    # Glance API nodes.
    #
    # Possible values:
    #     * String starting with 'file://' followed by absolute FS path
    #
    # Related options:
    #     * [task]/work_dir
    #
    #  (string value)
    #node_staging_uri = file:///tmp/staging/

    #
    # List of enabled Image Import Methods
    #
    # 'glance-direct', 'copy-image' and 'web-download' are enabled by default.
    # 'glance-download' is available, but requires federated deployments.
    #
    # Related options:
    #     * [DEFAULT]/node_staging_uri (list value)
    #enabled_import_methods = [glance-direct,web-download,copy-image]

    #
    # The URL to this worker.
    #
    # If this is set, other glance workers will know how to contact this one
    # directly if needed. For image import, a single worker stages the image
    # and other workers need to be able to proxy the import request to the
    # right one.
    #
    # If unset, this will be considered to be `public_endpoint`, which
    # normally would be set to the same value on all workers, effectively
    # disabling the proxying behavior.
    #
    # Possible values:
    #     * A URL by which this worker is reachable from other workers
    #
    # Related options:
    #     * public_endpoint
    #
    #  (string value)
    #worker_self_reference_url = <None>

    #
    # The amount of time, in seconds, to delay image scrubbing.
    #
    # When delayed delete is turned on, an image is put into ``pending_delete``
    # state upon deletion until the scrubber deletes its image data. Typically, soon
    # after the image is put into ``pending_delete`` state, it is available for
    # scrubbing. However, scrubbing can be delayed until a later point using this
    # configuration option. This option denotes the time period an image spends in
    # ``pending_delete`` state before it is available for scrubbing.
    #
    # It is important to realize that this has storage implications. The larger the
    # ``scrub_time``, the longer the time to reclaim backend storage from deleted
    # images.
    #
    # Possible values:
    #     * Any non-negative integer
    #
    # Related options:
    #     * ``delayed_delete``
    #
    #  (integer value)
    # Minimum value: 0
    #scrub_time = 0

    #
    # The size of thread pool to be used for scrubbing images.
    #
    # When there are a large number of images to scrub, it is beneficial to scrub
    # images in parallel so that the scrub queue stays in control and the backend
    # storage is reclaimed in a timely fashion. This configuration option denotes
    # the maximum number of images to be scrubbed in parallel. The default value is
    # one, which signifies serial scrubbing. Any value above one indicates parallel
    # scrubbing.
    #
    # Possible values:
    #     * Any non-zero positive integer
    #
    # Related options:
    #     * ``delayed_delete``
    #
    #  (integer value)
    # Minimum value: 1
    #scrub_pool_size = 1

    #
    # Turn on/off delayed delete.
    #
    # Typically when an image is deleted, the ``glance-api`` service puts the image
    # into ``deleted`` state and deletes its data at the same time. Delayed delete
    # is a feature in Glance that delays the actual deletion of image data until a
    # later point in time (as determined by the configuration option
    # ``scrub_time``).
    # When delayed delete is turned on, the ``glance-api`` service puts the image
    # into ``pending_delete`` state upon deletion and leaves the image data in the
    # storage backend for the image scrubber to delete at a later time. The image
    # scrubber will move the image into ``deleted`` state upon successful deletion
    # of image data.
    #
    # NOTE: When delayed delete is turned on, image scrubber MUST be running as a
    # periodic task to prevent the backend storage from filling up with undesired
    # usage.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * ``scrub_time``
    #     * ``wakeup_time``
    #     * ``scrub_pool_size``
    #
    #  (boolean value)
    #delayed_delete = false

    #
    # Time interval, in seconds, between scrubber runs in daemon mode.
    #
    # Scrubber can be run either as a cron job or daemon. When run as a daemon, this
    # configuration time specifies the time period between two runs. When the
    # scrubber wakes up, it fetches and scrubs all ``pending_delete`` images that
    # are available for scrubbing after taking ``scrub_time`` into consideration.
    #
    # If the wakeup time is set to a large number, there may be a large number of
    # images to be scrubbed for each run. Also, this impacts how quickly the backend
    # storage is reclaimed.
    #
    # Possible values:
    #     * Any non-negative integer
    #
    # Related options:
    #     * ``daemon``
    #     * ``delayed_delete``
    #
    #  (integer value)
    # Minimum value: 0
    #wakeup_time = 300

    #
    # Run scrubber as a daemon.
    #
    # This boolean configuration option indicates whether scrubber should
    # run as a long-running process that wakes up at regular intervals to
    # scrub images. The wake up interval can be specified using the
    # configuration option ``wakeup_time``.
    #
    # If this configuration option is set to ``False``, which is the
    # default value, scrubber runs once to scrub images and exits. In this
    # case, if the operator wishes to implement continuous scrubbing of
    # images, scrubber needs to be scheduled as a cron job.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * ``wakeup_time``
    #
    #  (boolean value)
    #daemon = false

    #
    # Restore the image status from 'pending_delete' to 'active'.
    #
    # This option is used by administrator to reset the image's status from
    # 'pending_delete' to 'active' when the image is deleted by mistake and
    # 'pending delete' feature is enabled in Glance. Please make sure the
    # glance-scrubber daemon is stopped before restoring the image to avoid image
    # data inconsistency.
    #
    # Possible values:
    #     * image's uuid
    #
    #  (string value)
    #restore = <None>

    #
    # From oslo.log
    #

    # If set to true, the logging level will be set to DEBUG instead of the default
    # INFO level. (boolean value)
    # Note: This option can be changed without restarting.
    #debug = false

    # The name of a logging configuration file. This file is appended to any
    # existing logging configuration files. For details about logging configuration
    # files, see the Python logging module documentation. Note that when logging
    # configuration files are used then all logging configuration is set in the
    # configuration file and other logging configuration options are ignored (for
    # example, log-date-format). (string value)
    # Note: This option can be changed without restarting.
    # Deprecated group/name - [DEFAULT]/log_config
    #log_config_append = <None>

    # Defines the format string for %%(asctime)s in log records. Default:
    # %(default)s . This option is ignored if log_config_append is set. (string
    # value)
    #log_date_format = %Y-%m-%d %H:%M:%S

    # (Optional) Name of log file to send logging output to. If no default is set,
    # logging will go to stderr as defined by use_stderr. This option is ignored if
    # log_config_append is set. (string value)
    # Deprecated group/name - [DEFAULT]/logfile
    #log_file = <None>

    # (Optional) The base directory used for relative log_file  paths. This option
    # is ignored if log_config_append is set. (string value)
    # Deprecated group/name - [DEFAULT]/logdir
    #log_dir = <None>

    # Use syslog for logging. Existing syslog format is DEPRECATED and will be
    # changed later to honor RFC5424. This option is ignored if log_config_append is
    # set. (boolean value)
    #use_syslog = false

    # Enable journald for logging. If running in a systemd environment you may wish
    # to enable journal support. Doing so will use the journal native protocol which
    # includes structured metadata in addition to log messages.This option is
    # ignored if log_config_append is set. (boolean value)
    #use_journal = false

    # Syslog facility to receive log lines. This option is ignored if
    # log_config_append is set. (string value)
    #syslog_log_facility = LOG_USER

    # Use JSON formatting for logging. This option is ignored if log_config_append
    # is set. (boolean value)
    #use_json = false

    # Log output to standard error. This option is ignored if log_config_append is
    # set. (boolean value)
    #use_stderr = false

    # (Optional) Set the 'color' key according to log levels. This option takes
    # effect only when logging to stderr or stdout is used. This option is ignored
    # if log_config_append is set. (boolean value)
    #log_color = false

    # The amount of time before the log files are rotated. This option is ignored
    # unless log_rotation_type is set to "interval". (integer value)
    #log_rotate_interval = 1

    # Rotation interval type. The time of the last file change (or the time when the
    # service was started) is used when scheduling the next rotation. (string value)
    # Possible values:
    # Seconds - <No description provided>
    # Minutes - <No description provided>
    # Hours - <No description provided>
    # Days - <No description provided>
    # Weekday - <No description provided>
    # Midnight - <No description provided>
    #log_rotate_interval_type = days

    # Maximum number of rotated log files. (integer value)
    #max_logfile_count = 30

    # Log file maximum size in MB. This option is ignored if "log_rotation_type" is
    # not set to "size". (integer value)
    #max_logfile_size_mb = 200

    # Log rotation type. (string value)
    # Possible values:
    # interval - Rotate logs at predefined time intervals.
    # size - Rotate logs once they reach a predefined size.
    # none - Do not rotate log files.
    #log_rotation_type = none

    # Format string to use for log messages with context. Used by
    # oslo_log.formatters.ContextFormatter (string value)
    #logging_context_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(global_request_id)s %(request_id)s %(user_identity)s] %(instance)s%(message)s

    # Format string to use for log messages when context is undefined. Used by
    # oslo_log.formatters.ContextFormatter (string value)
    #logging_default_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s

    # Additional data to append to log message when logging level for the message is
    # DEBUG. Used by oslo_log.formatters.ContextFormatter (string value)
    #logging_debug_format_suffix = %(funcName)s %(pathname)s:%(lineno)d

    # Prefix each line of exception output with this format. Used by
    # oslo_log.formatters.ContextFormatter (string value)
    #logging_exception_prefix = %(asctime)s.%(msecs)03d %(process)d ERROR %(name)s %(instance)s

    # Defines the format string for %(user_identity)s that is used in
    # logging_context_format_string. Used by oslo_log.formatters.ContextFormatter
    # (string value)
    #logging_user_identity_format = %(user)s %(project)s %(domain)s %(system_scope)s %(user_domain)s %(project_domain)s

    # List of package logging levels in logger=LEVEL pairs. This option is ignored
    # if log_config_append is set. (list value)
    #default_log_levels = amqp=WARN,boto=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,oslo_messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN,urllib3.connectionpool=WARN,websocket=WARN,requests.packages.urllib3.util.retry=WARN,urllib3.util.retry=WARN,keystonemiddleware=WARN,routes.middleware=WARN,stevedore=WARN,taskflow=WARN,keystoneauth=WARN,oslo.cache=INFO,oslo_policy=INFO,dogpile.core.dogpile=INFO

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

    # The format for an instance that is passed with the log message. (string value)
    #instance_format = "[instance: %(uuid)s] "

    # The format for an instance UUID that is passed with the log message. (string
    # value)
    #instance_uuid_format = "[instance: %(uuid)s] "

    # Interval, number of seconds, of log rate limiting. (integer value)
    #rate_limit_interval = 0

    # Maximum number of logged messages per rate_limit_interval. (integer value)
    #rate_limit_burst = 0

    # Log level name used by rate limiting. Logs with level greater or equal to
    # rate_limit_except_level are not filtered. An empty string means that all
    # levels are filtered. (string value)
    # Possible values:
    # CRITICAL - <No description provided>
    # ERROR - <No description provided>
    # INFO - <No description provided>
    # WARNING - <No description provided>
    # DEBUG - <No description provided>
    # '' - <No description provided>
    #rate_limit_except_level = CRITICAL

    # Enables or disables fatal status of deprecations. (boolean value)
    #fatal_deprecations = false

    [database]

    #
    # From oslo.db
    #

    # If True, SQLite uses synchronous mode. (boolean value)
    #sqlite_synchronous = true

    # The back end to use for the database. (string value)
    #backend = sqlalchemy

    # The SQLAlchemy connection string to use to connect to the database. (string
    # value)
    #connection = <None>

    # The SQLAlchemy connection string to use to connect to the slave database.
    # (string value)
    #slave_connection = <None>

    # The SQLAlchemy asyncio connection string to use to connect to the database.
    # (string value)
    #asyncio_connection = <None>

    # The SQLAlchemy asyncio connection string to use to connect to the slave
    # database. (string value)
    #asyncio_slave_connection = <None>

    # Whether or not to assume a reader context needs to guarantee it can read data
    # committed by a writer assuming replication lag is present; defaults to True.
    # When False, a reader context works the same as async_reader and will select
    # the slave database if present. When using a galera cluster, this can be set to
    # False only if you set mysql_wsrep_sync_wait to 1 (this will guarantee that the
    # reader will wait until writesets are committed).Note that this may incur a
    # performance degradation within the galera cluster. Note also that this
    # parameter has no effect if you do not set any slave_connection. (boolean
    # value)
    #synchronous_reader = true

    # The SQL mode to be used for MySQL sessions. This option, including the
    # default, overrides any server-set SQL mode. To use whatever SQL mode is set by
    # the server configuration, set this to no value. Example: mysql_sql_mode=
    # (string value)
    #mysql_sql_mode = TRADITIONAL

    # For Galera only, configure wsrep_sync_wait causality checks on new
    # connections.  Default is None, meaning don't configure any setting. (integer
    # value)
    #mysql_wsrep_sync_wait = <None>

    # Connections which have been present in the connection pool longer than this
    # number of seconds will be replaced with a new one the next time they are
    # checked out from the pool. (integer value)
    #connection_recycle_time = 3600

    # Maximum number of SQL connections to keep open in a pool. Setting a value of 0
    # indicates no limit. (integer value)
    #max_pool_size = 5

    # Maximum number of database connection retries during startup. Set to -1 to
    # specify an infinite retry count. (integer value)
    #max_retries = 10

    # Interval between retries of opening a SQL connection. (integer value)
    #retry_interval = 10

    # If set, use this value for max_overflow with SQLAlchemy. (integer value)
    #max_overflow = 50

    # Verbosity of SQL debugging information: 0=None, 100=Everything. (integer
    # value)
    # Minimum value: 0
    # Maximum value: 100
    #connection_debug = 0

    # Add Python stack traces to SQL as comment strings. (boolean value)
    #connection_trace = false

    # If set, use this value for pool_timeout with SQLAlchemy. (integer value)
    #pool_timeout = <None>

    # Enable the experimental use of database reconnect on connection lost. (boolean
    # value)
    #use_db_reconnect = false

    # Seconds between retries of a database transaction. (integer value)
    #db_retry_interval = 1

    # If True, increases the interval between retries of a database operation up to
    # db_max_retry_interval. (boolean value)
    #db_inc_retry_interval = true

    # If db_inc_retry_interval is set, the maximum seconds between retries of a
    # database operation. (integer value)
    #db_max_retry_interval = 10

    # Maximum retries in case of connection error or deadlock error before error is
    # raised. Set to -1 to specify an infinite retry count. (integer value)
    #db_max_retries = 20

    # Optional URL parameters to append onto the connection URL at connect time;
    # specify as param1=value1&param2=value2&... (string value)
    #connection_parameters =

    [glance_store]

    #
    # From glance.store
    #

    # DEPRECATED:
    # List of enabled Glance stores.
    #
    # Register the storage backends to use for storing disk images
    # as a comma separated list. The default stores enabled for
    # storing disk images with Glance are ``file`` and ``http``.
    #
    # Possible values:
    #     * A comma separated list that could include:
    #         * file
    #         * http
    #         * swift
    #         * rbd
    #         * cinder
    #         * vmware
    #         * s3
    #
    # Related Options:
    #     * default_store
    #
    #  (list value)
    # This option is deprecated for removal since Rocky.
    # Its value may be silently ignored in the future.
    # Reason:
    # This option is deprecated against new config option
    # ``enabled_backends`` which helps to configure multiple backend stores
    # of different schemes.
    #
    # This option is scheduled for removal in the U development
    # cycle.
    #stores = file,http

    # DEPRECATED:
    # The default scheme to use for storing images.
    #
    # Provide a string value representing the default scheme to use for
    # storing images. If not set, Glance uses ``file`` as the default
    # scheme to store images with the ``file`` store.
    #
    # NOTE: The value given for this configuration option must be a valid
    # scheme for a store registered with the ``stores`` configuration
    # option.
    #
    # Possible values:
    #     * file
    #     * filesystem
    #     * http
    #     * https
    #     * swift
    #     * swift+http
    #     * swift+https
    #     * swift+config
    #     * rbd
    #     * cinder
    #     * vsphere
    #     * s3
    #
    # Related Options:
    #     * stores
    #
    #  (string value)
    # Possible values:
    # file - <No description provided>
    # filesystem - <No description provided>
    # http - <No description provided>
    # https - <No description provided>
    # swift - <No description provided>
    # swift+http - <No description provided>
    # swift+https - <No description provided>
    # swift+config - <No description provided>
    # rbd - <No description provided>
    # cinder - <No description provided>
    # vsphere - <No description provided>
    # s3 - <No description provided>
    # This option is deprecated for removal since Rocky.
    # Its value may be silently ignored in the future.
    # Reason:
    # This option is deprecated against new config option
    # ``default_backend`` which acts similar to ``default_store`` config
    # option.
    #
    # This option is scheduled for removal in the U development
    # cycle.
    #default_store = file

    #
    # Information to match when looking for cinder in the service catalog.
    #
    # When the ``cinder_endpoint_template`` is not set and any of
    # ``cinder_store_auth_address``, ``cinder_store_user_name``,
    # ``cinder_store_project_name``, ``cinder_store_password`` is not set,
    # cinder store uses this information to lookup cinder endpoint from the service
    # catalog in the current context. ``cinder_os_region_name``, if set, is taken
    # into consideration to fetch the appropriate endpoint.
    #
    # The service catalog can be listed by the ``openstack catalog list`` command.
    #
    # Possible values:
    #     * A string of of the following form:
    #       ``<service_type>:<service_name>:<interface>``
    #       At least ``service_type`` and ``interface`` should be specified.
    #       ``service_name`` can be omitted.
    #
    # Related options:
    #     * cinder_os_region_name
    #     * cinder_endpoint_template
    #     * cinder_store_auth_address
    #     * cinder_store_user_name
    #     * cinder_store_project_name
    #     * cinder_store_password
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_domain_name
    #
    #  (string value)
    #cinder_catalog_info = volumev3::publicURL

    #
    # Override service catalog lookup with template for cinder endpoint.
    #
    # When this option is set, this value is used to generate cinder endpoint,
    # instead of looking up from the service catalog.
    # This value is ignored if ``cinder_store_auth_address``,
    # ``cinder_store_user_name``, ``cinder_store_project_name``, and
    # ``cinder_store_password`` are specified.
    #
    # If this configuration option is set, ``cinder_catalog_info`` will be ignored.
    #
    # Possible values:
    #     * URL template string for cinder endpoint, where ``%%(tenant)s`` is
    #       replaced with the current tenant (project) name.
    #       For example: ``http://cinder.openstack.example.org/v2/%%(tenant)s``
    #
    # Related options:
    #     * cinder_store_auth_address
    #     * cinder_store_user_name
    #     * cinder_store_project_name
    #     * cinder_store_password
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_domain_name
    #     * cinder_catalog_info
    #
    #  (string value)
    #cinder_endpoint_template = <None>

    #
    # Region name to lookup cinder service from the service catalog.
    #
    # This is used only when ``cinder_catalog_info`` is used for determining the
    # endpoint. If set, the lookup for cinder endpoint by this node is filtered to
    # the specified region. It is useful when multiple regions are listed in the
    # catalog. If this is not set, the endpoint is looked up from every region.
    #
    # Possible values:
    #     * A string that is a valid region name.
    #
    # Related options:
    #     * cinder_catalog_info
    #
    #  (string value)
    # Deprecated group/name - [glance_store]/os_region_name
    #cinder_os_region_name = <None>

    #
    # Location of a CA certificates file used for cinder client requests.
    #
    # The specified CA certificates file, if set, is used to verify cinder
    # connections via HTTPS endpoint. If the endpoint is HTTP, this value is
    # ignored.
    # ``cinder_api_insecure`` must be set to ``True`` to enable the verification.
    #
    # Possible values:
    #     * Path to a ca certificates file
    #
    # Related options:
    #     * cinder_api_insecure
    #
    #  (string value)
    #cinder_ca_certificates_file = <None>

    #
    # Number of cinderclient retries on failed http calls.
    #
    # When a call failed by any errors, cinderclient will retry the call up to the
    # specified times after sleeping a few seconds.
    #
    # Possible values:
    #     * A positive integer
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 0
    #cinder_http_retries = 3

    #
    # Time period, in seconds, to wait for a cinder volume transition to
    # complete.
    #
    # When the cinder volume is created, deleted, or attached to the glance node to
    # read/write the volume data, the volume's state is changed. For example, the
    # newly created volume status changes from ``creating`` to ``available`` after
    # the creation process is completed. This specifies the maximum time to wait for
    # the status change. If a timeout occurs while waiting, or the status is changed
    # to an unexpected value (e.g. `error``), the image creation fails.
    #
    # Possible values:
    #     * A positive integer
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 0
    #cinder_state_transition_timeout = 300

    #
    # Allow to perform insecure SSL requests to cinder.
    #
    # If this option is set to True, HTTPS endpoint connection is verified using the
    # CA certificates file specified by ``cinder_ca_certificates_file`` option.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * cinder_ca_certificates_file
    #
    #  (boolean value)
    #cinder_api_insecure = false

    #
    # The address where the cinder authentication service is listening.
    #
    # When all of ``cinder_store_auth_address``, ``cinder_store_user_name``,
    # ``cinder_store_project_name``, and ``cinder_store_password`` options are
    # specified, the specified values are always used for the authentication.
    # This is useful to hide the image volumes from users by storing them in a
    # project/tenant specific to the image service. It also enables users to share
    # the image volume among other projects under the control of glance's ACL.
    #
    # If either of these options are not set, the cinder endpoint is looked up
    # from the service catalog, and current context's user and project are used.
    #
    # Possible values:
    #     * A valid authentication service address, for example:
    #       ``http://openstack.example.org/identity/v2.0``
    #
    # Related options:
    #     * cinder_store_user_name
    #     * cinder_store_password
    #     * cinder_store_project_name
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_domain_name
    #
    #  (string value)
    #cinder_store_auth_address = <None>

    #
    # User name to authenticate against cinder.
    #
    # This must be used with all the following non-domain-related options.
    # If any of these are not specified (except domain-related options),
    # the user of the current context is used.
    #
    # Possible values:
    #     * A valid user name
    #
    # Related options:
    #     * cinder_store_auth_address
    #     * cinder_store_password
    #     * cinder_store_project_name
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_domain_name
    #
    #  (string value)
    #cinder_store_user_name = <None>

    #
    # Domain of the user to authenticate against cinder.
    #
    # Possible values:
    #     * A valid domain name for the user specified by ``cinder_store_user_name``
    #
    # Related options:
    #     * cinder_store_auth_address
    #     * cinder_store_password
    #     * cinder_store_project_name
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_name
    #
    #  (string value)
    #cinder_store_user_domain_name = Default

    #
    # Password for the user authenticating against cinder.
    #
    # This must be used with all the following related options.
    # If any of these are not specified (except domain-related options),
    # the user of the current context is used.
    #
    # Possible values:
    #     * A valid password for the user specified by ``cinder_store_user_name``
    #
    # Related options:
    #     * cinder_store_auth_address
    #     * cinder_store_user_name
    #     * cinder_store_project_name
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_domain_name
    #     * cinder_store_application_credential_id
    #     * cinder_store_application_credential_secret
    #
    #  (string value)
    #cinder_store_password = <None>

    #
    # Application credential ID for authenticating against cinder.
    #
    # When this option is set along with
    # ``cinder_store_application_credential_secret``,
    # the Cinder backend will use application credential authentication instead of
    # password authentication. This enables Zero Downtime Password Rotation (ZDPR)
    # support for Glance deployments using Cinder as the image backend.
    #
    # If both application credential options are set, they take precedence over
    # password authentication. If either option is not set, the driver falls back
    # to password authentication using ``cinder_store_password``.
    #
    # Possible values:
    #     * A valid application credential ID
    #
    # Related options:
    #     * cinder_store_auth_address
    #     * cinder_store_user_name
    #     * cinder_store_application_credential_secret
    #     * cinder_store_project_name
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_domain_name
    #
    #  (string value)
    #cinder_store_application_credential_id = <None>

    #
    # Application credential secret for authenticating against cinder.
    #
    # This must be used together with ``cinder_store_application_credential_id``.
    # When both options are set, the Cinder backend will use application credential
    # authentication instead of password authentication.
    #
    # Possible values:
    #     * A valid application credential secret
    #
    # Related options:
    #     * cinder_store_auth_address
    #     * cinder_store_user_name
    #     * cinder_store_application_credential_id
    #     * cinder_store_project_name
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_domain_name
    #
    #  (string value)
    #cinder_store_application_credential_secret = <None>

    #
    # Project name where the image volume is stored in cinder.
    #
    # If this configuration option is not set, the project in current context is
    # used.
    #
    # This must be used with all the following related options.
    # If any of these are not specified (except domain-related options),
    # the user of the current context is used.
    #
    # Possible values:
    #     * A valid project name
    #
    # Related options:
    #     * ``cinder_store_auth_address``
    #     * ``cinder_store_user_name``
    #     * ``cinder_store_password``
    #     * ``cinder_store_project_domain_name``
    #     * ``cinder_store_user_domain_name``
    #
    #  (string value)
    #cinder_store_project_name = <None>

    #
    # Domain of the project where the image volume is stored in cinder.
    #
    # Possible values:
    #     * A valid domain name of the project specified by
    #       ``cinder_store_project_name``
    #
    # Related options:
    #     * ``cinder_store_auth_address``
    #     * ``cinder_store_user_name``
    #     * ``cinder_store_password``
    #     * ``cinder_store_project_domain_name``
    #     * ``cinder_store_user_domain_name``
    #
    #  (string value)
    #cinder_store_project_domain_name = Default

    #
    # Path to the rootwrap configuration file to use for running commands as root.
    #
    # The cinder store requires root privileges to operate the image volumes (for
    # connecting to iSCSI/FC volumes and reading/writing the volume data, etc.).
    # The configuration file should allow the required commands by cinder store and
    # os-brick library.
    #
    # Possible values:
    #     * Path to the rootwrap config file
    #
    # Related options:
    #     * None
    #
    #  (string value)
    #rootwrap_config = /etc/glance/rootwrap.conf

    #
    # Volume type that will be used for volume creation in cinder.
    #
    # Some cinder backends can have several volume types to optimize storage usage.
    # Adding this option allows an operator to choose a specific volume type
    # in cinder that can be optimized for images.
    #
    # If this is not set, then the default volume type specified in the cinder
    # configuration will be used for volume creation.
    #
    # Possible values:
    #     * A valid volume type from cinder
    #
    # Related options:
    #     * None
    #
    # NOTE: You cannot use an encrypted volume_type associated with an NFS backend.
    # An encrypted volume stored on an NFS backend will raise an exception whenever
    # glance_store tries to write or access image data stored in that volume.
    # Consult your Cinder administrator to determine an appropriate volume_type.
    #
    #  (string value)
    #cinder_volume_type = <None>

    #
    # 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.
    #
    # Possible values:
    #     * True or False
    #
    # Related options:
    #     * cinder_use_multipath
    #
    #  (boolean value)
    #cinder_enforce_multipath = false

    #
    # Flag to identify multipath is supported or not in the deployment.
    #
    # Set it to False if multipath is not supported.
    #
    # Possible values:
    #     * True or False
    #
    # Related options:
    #     * cinder_enforce_multipath
    #
    #  (boolean value)
    #cinder_use_multipath = false

    #
    # Directory where the NFS volume is mounted on the glance node.
    #
    # Possible values:
    #
    # * A string representing absolute path of mount point.
    #  (string value)
    #cinder_mount_point_base = /var/lib/glance/mnt

    #
    # If this is set to True, glance will perform an extend operation
    # on the attached volume. Only enable this option if the cinder
    # backend driver supports the functionality of extending online
    # (in-use) volumes. Supported from cinder microversion 3.42 and
    # onwards. By default, it is set to False.
    #
    # Possible values:
    #     * True or False
    #
    #  (boolean value)
    #cinder_do_extend_attached = false

    #
    # Maximum number of retry attempts for cinder attachment create operations.
    #
    # When creating a volume attachment, cinder may be unable to complete the
    # request due to transient issues (e.g., volume in transitional state). This
    # option specifies the maximum number of times to retry the attachment_create
    # operation before giving up.
    #
    # Possible values:
    #     * A positive integer
    #
    #  (integer value)
    # Minimum value: 1
    #cinder_attachment_retry_attempts = 5

    #
    # Directory to which the filesystem backend store writes images.
    #
    # Upon start up, Glance creates the directory if it doesn't already
    # exist and verifies write access to the user under which
    # ``glance-api`` runs. If the write access isn't available, a
    # ``BadStoreConfiguration`` exception is raised and the filesystem
    # store may not be available for adding new images.
    #
    # NOTE: This directory is used only when filesystem store is used as a
    # storage backend. Either ``filesystem_store_datadir`` or
    # ``filesystem_store_datadirs`` option must be specified in
    # ``glance-api.conf``. If both options are specified, a
    # ``BadStoreConfiguration`` will be raised and the filesystem store
    # may not be available for adding new images.
    #
    # Possible values:
    #     * A valid path to a directory
    #
    # Related options:
    #     * ``filesystem_store_datadirs``
    #     * ``filesystem_store_file_perm``
    #
    #  (string value)
    #filesystem_store_datadir = /var/lib/glance/images

    # DEPRECATED:
    # List of directories and their priorities to which the filesystem
    # backend store writes images.
    #
    # The filesystem store can be configured to store images in multiple
    # directories as opposed to using a single directory specified by the
    # ``filesystem_store_datadir`` configuration option. When using
    # multiple directories, each directory can be given an optional
    # priority to specify the preference order in which they should
    # be used. Priority is an integer that is concatenated to the
    # directory path with a colon where a higher value indicates higher
    # priority. When two directories have the same priority, the directory
    # with most free space is used. When no priority is specified, it
    # defaults to zero.
    #
    # More information on configuring filesystem store with multiple store
    # directories can be found at
    # https://docs.openstack.org/glance/latest/configuration/configuring.html
    #
    # NOTE: This directory is used only when filesystem store is used as a
    # storage backend. Either ``filesystem_store_datadir`` or
    # ``filesystem_store_datadirs`` option must be specified in
    # ``glance-api.conf``. If both options are specified, a
    # ``BadStoreConfiguration`` will be raised and the filesystem store
    # may not be available for adding new images.
    #
    # Possible values:
    #     * List of strings of the following form:
    #         * ``<a valid directory path>:<optional integer priority>``
    #
    # Related options:
    #     * ``filesystem_store_datadir``
    #     * ``filesystem_store_file_perm``
    #
    #  (multi valued)
    # This option is deprecated for removal since Flamingo.
    # Its value may be silently ignored in the future.
    # Reason:
    # Users willing to use multiple data directories should configure multiple
    # filesystem stores instead of using filesystem_store_datadirs.
    #
    # This option is scheduled for removal in the H development cycle.
    #filesystem_store_datadirs =

    #
    # Filesystem store metadata file.
    #
    # The path to a file which contains the metadata to be returned with any
    # location
    # associated with the filesystem store. Once this option is set, it is used for
    # new images created afterward only - previously existing images are not
    # affected.
    #
    # The file must contain a valid JSON object. The object should contain the keys
    # ``id`` and ``mountpoint``. The value for both keys should be a string.
    #
    # Possible values:
    #     * A valid path to the store metadata file
    #
    # Related options:
    #     * None
    #
    #  (string value)
    #filesystem_store_metadata_file = <None>

    #
    # File access permissions for the image files.
    #
    # Set the intended file access permissions for image data. This provides
    # a way to enable other services, e.g. Nova, to consume images directly
    # from the filesystem store. The users running the services that are
    # intended to be given access to could be made a member of the group
    # that owns the files created. Assigning a value less then or equal to
    # zero for this configuration option signifies that no changes be made
    # to the  default permissions. This value will be decoded as an octal
    # digit.
    #
    # For more information, please refer the documentation at
    # https://docs.openstack.org/glance/latest/configuration/configuring.html
    #
    # Possible values:
    #     * A valid file access permission
    #     * Zero
    #     * Any negative integer
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    #filesystem_store_file_perm = 0

    #
    # Chunk size, in bytes.
    #
    # The chunk size used when reading or writing image files. Raising this value
    # may improve the throughput but it may also slightly increase the memory usage
    # when handling a large number of requests.
    #
    # Possible Values:
    #     * Any positive integer value
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 1
    #filesystem_store_chunk_size = 65536

    #
    # Enable or not thin provisioning in this backend.
    #
    # This configuration option enable the feature of not really write null byte
    # sequences on the filesystem, the holes who can appear will automatically
    # be interpreted by the filesystem as null bytes, and do not really consume
    # your storage.
    # Enabling this feature will also speed up image upload and save network traffic
    # in addition to save space in the backend, as null bytes sequences are not
    # sent over the network.
    #
    # Possible Values:
    #     * True
    #     * False
    #
    # Related options:
    #     * None
    #
    #  (boolean value)
    #filesystem_thin_provisioning = false

    #
    # Timeout for all filesystem operations (seconds).
    #
    # Set to 0 to disable timeout protection (blocking IO, normal behavior).
    # Set > 0 to enable timeout protection with thread pool.
    # Recommended: 30 seconds for network storage, higher for slow networks.
    #
    # When timeout protection is enabled, filesystem operations like delete(),
    # get_size(), and _get_capacity_info() will be wrapped with timeout
    # protection. If an operation exceeds the timeout, a TimeoutError will be
    # raised.
    #
    # Possible values:
    #     * 0 (disabled, blocking IO)
    #     * Any positive integer (timeout in seconds)
    #
    # Related options:
    #     * filesystem_store_thread_pool_size
    #     * filesystem_store_threadpool_threshold
    #
    #  (integer value)
    # Minimum value: 0
    #filesystem_store_timeout = 0

    #
    # Thread pool size for timeout-protected operations.
    #
    # Only meaningful when filesystem_store_timeout > 0.
    # Ignored when filesystem_store_timeout = 0 (no thread pool is created).
    # Each store instance gets its own pool to avoid starvation.
    # Set based on expected concurrency and WSGI worker count.
    #
    # Possible values:
    #     * Any positive integer
    #
    # Related options:
    #     * filesystem_store_timeout
    #     * filesystem_store_threadpool_threshold
    #
    #  (integer value)
    # Minimum value: 1
    #filesystem_store_thread_pool_size = 10

    #
    # Thread pool usage threshold for warning logs (percentage).
    #
    # Only meaningful when filesystem_store_timeout > 0.
    # Ignored when filesystem_store_timeout = 0 (no thread pool is created).
    # When thread pool usage exceeds this threshold, a warning is logged
    # indicating that the pool is getting busy and may start blocking.
    #
    # Possible values:
    #     * 0-100 (percentage)
    #
    # Related options:
    #     * filesystem_store_timeout
    #     * filesystem_store_thread_pool_size
    #
    #  (integer value)
    # Minimum value: 0
    # Maximum value: 100
    #filesystem_store_threadpool_threshold = 75

    #
    # Path to the CA bundle file.
    #
    # This configuration option enables the operator to use a custom
    # Certificate Authority file to verify the remote server certificate. If
    # this option is set, the ``https_insecure`` option will be ignored and
    # the CA file specified will be used to authenticate the server
    # certificate and establish a secure connection to the server.
    #
    # Possible values:
    #     * A valid path to a CA file
    #
    # Related options:
    #     * https_insecure
    #
    #  (string value)
    #https_ca_certificates_file = <None>

    #
    # Set verification of the remote server certificate.
    #
    # This configuration option takes in a boolean value to determine
    # whether or not to verify the remote server certificate. If set to
    # True, the remote server certificate is not verified. If the option is
    # set to False, then the default CA truststore is used for verification.
    #
    # This option is ignored if ``https_ca_certificates_file`` is set.
    # The remote server certificate will then be verified using the file
    # specified using the ``https_ca_certificates_file`` option.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * https_ca_certificates_file
    #
    #  (boolean value)
    #https_insecure = true

    #
    # The http/https proxy information to be used to connect to the remote
    # server.
    #
    # This configuration option specifies the http/https proxy information
    # that should be used to connect to the remote server. The proxy
    # information should be a key value pair of the scheme and proxy, for
    # example, http:10.0.0.1:3128. You can also specify proxies for multiple
    # schemes by separating the key value pairs with a comma, for example,
    # http:10.0.0.1:3128, https:10.0.0.1:1080.
    #
    # Possible values:
    #     * A comma separated list of scheme:proxy pairs as described above
    #
    # Related options:
    #     * None
    #
    #  (dict value)
    #http_proxy_information =

    #
    # Size, in megabytes, to chunk RADOS images into.
    #
    # Provide an integer value representing the size in megabytes to chunk
    # Glance images into. The default chunk size is 8 megabytes. For optimal
    # performance, the value should be a power of two.
    #
    # When Ceph's RBD object storage system is used as the storage backend
    # for storing Glance images, the images are chunked into objects of the
    # size set using this option. These chunked objects are then stored
    # across the distributed block data store to use for Glance.
    #
    # Possible Values:
    #     * Any positive integer value
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 1
    #rbd_store_chunk_size = 8

    #
    # RADOS pool in which images are stored.
    #
    # When RBD is used as the storage backend for storing Glance images, the
    # images are stored by means of logical grouping of the objects (chunks
    # of images) into a ``pool``. Each pool is defined with the number of
    # placement groups it can contain. The default pool that is used is
    # 'images'.
    #
    # More information on the RBD storage backend can be found here:
    # http://ceph.com/planet/how-data-is-stored-in-ceph-cluster/
    #
    # Possible Values:
    #     * A valid pool name
    #
    # Related options:
    #     * None
    #
    #  (string value)
    #rbd_store_pool = images

    #
    # RADOS user to authenticate as.
    #
    # This configuration option takes in the RADOS user to authenticate as.
    # This is only needed when RADOS authentication is enabled and is
    # applicable only if the user is using Cephx authentication. If the
    # value for this option is not set by the user or is set to None, a
    # default value will be chosen, which will be based on the client.
    # section in rbd_store_ceph_conf.
    #
    # Possible Values:
    #     * A valid RADOS user
    #
    # Related options:
    #     * rbd_store_ceph_conf
    #
    #  (string value)
    #rbd_store_user = <None>

    #
    # Ceph configuration file path.
    #
    # This configuration option specifies the path to the Ceph configuration
    # file to be used. If the value for this option is not set by the user
    # or is set to the empty string, librados will read the standard ceph.conf
    # file by searching the default Ceph configuration file locations in
    # sequential order.  See the Ceph documentation for details.
    #
    # NOTE: If using Cephx authentication, this file should include a reference
    # to the right keyring in a client.<USER> section
    #
    # NOTE 2: If you leave this option empty (the default), the actual Ceph
    # configuration file used may change depending on what version of librados
    # is being used.  If it is important for you to know exactly which configuration
    # file is in effect, you may specify that file here using this option.
    #
    # Possible Values:
    #     * A valid path to a configuration file
    #
    # Related options:
    #     * rbd_store_user
    #
    #  (string value)
    #rbd_store_ceph_conf =

    #
    # Timeout value for connecting to Ceph cluster.
    #
    # This configuration option takes in the timeout value in seconds used
    # when connecting to the Ceph cluster i.e. it sets the time to wait for
    # glance-api before closing the connection. This prevents glance-api
    # hangups during the connection to RBD. If the value for this option
    # is set to less than 0, no timeout is set and the default librados value
    # is used.
    #
    # Possible Values:
    #     * Any integer value
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    #rados_connect_timeout = -1

    #
    # Enable or not thin provisioning in this backend.
    #
    # This configuration option enable the feature of not really write null byte
    # sequences on the RBD backend, the holes who can appear will automatically
    # be interpreted by Ceph as null bytes, and do not really consume your storage.
    # Enabling this feature will also speed up image upload and save network traffic
    # in addition to save space in the backend, as null bytes sequences are not
    # sent over the network.
    #
    # Possible Values:
    #     * True
    #     * False
    #
    # Related options:
    #     * None
    #
    #  (boolean value)
    #rbd_thin_provisioning = false

    #
    # The host where the S3 server is listening.
    #
    # This configuration option sets the host of the S3 or S3 compatible storage
    # Server. This option is required when using the S3 storage backend.
    # The host can contain a DNS name (e.g. s3.amazonaws.com, my-object-storage.com)
    # or an IP address (127.0.0.1).
    #
    # Possible values:
    #     * A valid DNS name
    #     * A valid IPv4 address
    #
    # Related Options:
    #     * s3_store_access_key
    #     * s3_store_secret_key
    #
    #  (string value)
    #s3_store_host = <None>

    #
    # The S3 region name.
    #
    # This parameter will set the region_name used by boto.
    # If this parameter is not set, we we will try to compute it from the
    # s3_store_host.
    #
    # Possible values:
    #     * A valid region name
    #
    # Related Options:
    #     * s3_store_host
    #
    #  (string value)
    #s3_store_region_name =

    #
    # The S3 query token access key.
    #
    # This configuration option takes the access key for authenticating with the
    # Amazon S3 or S3 compatible storage server. This option is required when using
    # the S3 storage backend.
    #
    # Possible values:
    #     * Any string value that is the access key for a user with appropriate
    #       privileges
    #
    # Related Options:
    #     * s3_store_host
    #     * s3_store_secret_key
    #
    #  (string value)
    #s3_store_access_key = <None>

    #
    # The S3 query token secret key.
    #
    # This configuration option takes the secret key for authenticating with the
    # Amazon S3 or S3 compatible storage server. This option is required when using
    # the S3 storage backend.
    #
    # Possible values:
    #     * Any string value that is a secret key corresponding to the access key
    #       specified using the ``s3_store_host`` option
    #
    # Related Options:
    #     * s3_store_host
    #     * s3_store_access_key
    #
    #  (string value)
    #s3_store_secret_key = <None>

    #
    # The S3 bucket to be used to store the Glance data.
    #
    # This configuration option specifies where the glance images will be stored
    # in the S3. If ``s3_store_create_bucket_on_put`` is set to true, it will be
    # created automatically even if the bucket does not exist.
    #
    # Possible values:
    #     * Any string value
    #
    # Related Options:
    #     * s3_store_create_bucket_on_put
    #     * s3_store_bucket_url_format
    #
    #  (string value)
    #s3_store_bucket = <None>

    #
    # Determine whether S3 should create a new bucket.
    #
    # This configuration option takes boolean value to indicate whether Glance
    # should
    # create a new bucket to S3 if it does not exist.
    #
    # Possible values:
    #     * Any Boolean value
    #
    # Related Options:
    #     * None
    #
    #  (boolean value)
    #s3_store_create_bucket_on_put = false

    #
    # The S3 calling format used to determine the object.
    #
    # This configuration option takes access model that is used to specify the
    # address of an object in an S3 bucket.
    #
    # NOTE:
    # In ``path``-style, the endpoint for the object looks like
    # 'https://s3.amazonaws.com/bucket/example.img'.
    # And in ``virtual``-style, the endpoint for the object looks like
    # 'https://bucket.s3.amazonaws.com/example.img'.
    # If you do not follow the DNS naming convention in the bucket name, you can
    # get objects in the path style, but not in the virtual style.
    #
    # Possible values:
    #     * Any string value of ``auto``, ``virtual``, or ``path``
    #
    # Related Options:
    #     * s3_store_bucket
    #
    #  (string value)
    #s3_store_bucket_url_format = auto

    #
    # What size, in MB, should S3 start chunking image files and do a multipart
    # upload in S3.
    #
    # This configuration option takes a threshold in MB to determine whether to
    # upload the image to S3 as is or to split it (Multipart Upload).
    #
    # Note: You can only split up to 10,000 images.
    #
    # Possible values:
    #     * Any positive integer value or zero
    #
    # Related Options:
    #     * s3_store_large_object_chunk_size
    #     * s3_store_thread_pools
    #
    #  (integer value)
    # Minimum value: 0
    #s3_store_large_object_size = 100

    #
    # What multipart upload part size, in MB, should S3 use when uploading parts.
    #
    # This configuration option takes the image split size in MB for Multipart
    # Upload.
    #
    # Note: You can only split up to 10,000 images.
    #
    # Possible values:
    #     * Any positive integer value (must be greater than or equal to 5M)
    #
    # Related Options:
    #     * s3_store_large_object_size
    #     * s3_store_thread_pools
    #
    #  (integer value)
    #s3_store_large_object_chunk_size = 10

    #
    # The number of thread pools to perform a multipart upload in S3.
    #
    # This configuration option takes the number of thread pools when performing a
    # Multipart Upload.
    #
    # Possible values:
    #     * Any positive integer value
    #
    # Related Options:
    #     * s3_store_large_object_size
    #     * s3_store_large_object_chunk_size
    #
    #  (integer value)
    #s3_store_thread_pools = 10

    #
    # The path to the CA cert bundle to use. The default value (an empty string)
    # forces the use of the default CA cert bundle used by botocore.
    #
    # Possible values:
    #     * A path to the CA cert bundle to use
    #     * An empty string to use the default CA cert bundle used by botocore
    #
    #  (string value)
    #s3_store_cacert =

    #
    # Turn on S3 data integrity protections by enabling request checksum calculation
    # and response checksum validation. Setting this to False is the same as setting
    # the AWS_REQUEST_CHECKSUM_CALCULATION and AWS_RESPONSE_CHECKSUM_VALIDATION
    # environment variables to "when_required". Setting this to True gives the user
    # fine-grained control over the data integrity protections by using the
    # s3_store_request_checksum_calculation and
    # s3_store_response_checksum_validation
    # options.
    #
    # This defaults to False as to not change the default behaviour in glance_store,
    # which prevents upload failures when using S3-compatible storage backends that
    # do not implement S3 data integrity protection.
    #
    # Related Options:
    #     * s3_store_request_checksum_calculation
    #     * s3_store_response_checksum_validation
    #  (boolean value)
    #s3_store_enable_data_integrity_protection = false

    #
    # Controls when checksums are calculated for S3 upload requests.
    #
    # This configuration option provides fine-grained control over request checksum
    # calculation behavior. It maps directly to the botocore Config parameter
    # request_checksum_calculation.
    #
    # Possible values:
    #     * when_required - Only calculate checksums when required by the operation
    #     * when_supported - Calculate checksums when supported by the operation
    #
    # This option is only used when s3_store_enable_data_integrity_protection is
    # set to True. When s3_store_enable_data_integrity_protection is False, both
    # request and response checksums use 'when_required' regardless of this setting.
    #
    # Related Options:
    #     * s3_store_response_checksum_validation
    #     * s3_store_enable_data_integrity_protection
    #
    #  (string value)
    # Possible values:
    # when_required - <No description provided>
    # when_supported - <No description provided>
    #s3_store_request_checksum_calculation = when_required

    #
    # Controls when checksums are validated for S3 download responses.
    #
    # This configuration option provides fine-grained control over response checksum
    # validation behavior. It maps directly to the botocore Config parameter
    # response_checksum_validation.
    #
    # Possible values:
    #     * when_required - Only validate checksums when required by the operation
    #     * when_supported - Validate checksums when supported by the operation
    #
    # This option is only used when s3_store_enable_data_integrity_protection is
    # set to True. When s3_store_enable_data_integrity_protection is False, both
    # request and response checksums use 'when_required' regardless of this setting.
    #
    # Related Options:
    #     * s3_store_request_checksum_calculation
    #     * s3_store_enable_data_integrity_protection
    #
    #  (string value)
    # Possible values:
    # when_required - <No description provided>
    # when_supported - <No description provided>
    #s3_store_response_checksum_validation = when_required

    #
    # Set verification of the server certificate.
    #
    # This boolean determines whether or not to verify the server
    # certificate. If this option is set to True, swiftclient won't check
    # for a valid SSL certificate when authenticating. If the option is set
    # to False, then the default CA truststore is used for verification.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * swift_store_cacert
    #
    #  (boolean value)
    #swift_store_auth_insecure = false

    #
    # Path to the CA bundle file.
    #
    # This configuration option enables the operator to specify the path to
    # a custom Certificate Authority file for SSL verification when
    # connecting to Swift.
    #
    # Possible values:
    #     * A valid path to a CA file
    #
    # Related options:
    #     * swift_store_auth_insecure
    #
    #  (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #swift_store_cacert = /etc/ssl/certs/ca-certificates.crt

    #
    # The region of Swift endpoint to use by Glance.
    #
    # Provide a string value representing a Swift region where Glance
    # can connect to for image storage. By default, there is no region
    # set.
    #
    # When Glance uses Swift as the storage backend to store images
    # for a specific tenant that has multiple endpoints, setting of a
    # Swift region with ``swift_store_region`` allows Glance to connect
    # to Swift in the specified region as opposed to a single region
    # connectivity.
    #
    # This option can be configured for both single-tenant and
    # multi-tenant storage.
    #
    # NOTE: Setting the region with ``swift_store_region`` is
    # tenant-specific and is necessary ``only if`` the tenant has
    # multiple endpoints across different regions.
    #
    # Possible values:
    #     * A string value representing a valid Swift region.
    #
    # Related Options:
    #     * None
    #
    #  (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #swift_store_region = RegionTwo

    #
    # The URL endpoint to use for Swift backend storage.
    #
    # Provide a string value representing the URL endpoint to use for
    # storing Glance images in Swift store. By default, an endpoint
    # is not set and the storage URL returned by ``auth`` is used.
    # Setting an endpoint with ``swift_store_endpoint`` overrides the
    # storage URL and is used for Glance image storage.
    #
    # NOTE: The URL should include the path up to, but excluding the
    # container. The location of an object is obtained by appending
    # the container and object to the configured URL.
    #
    # Possible values:
    #     * String value representing a valid URL path up to a Swift container
    #
    # Related Options:
    #     * None
    #
    #  (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #swift_store_endpoint = https://swift.openstack.example.org/v1/path_not_including_container_name

    #
    # Endpoint Type of Swift service.
    #
    # This string value indicates the endpoint type to use to fetch the
    # Swift endpoint. The endpoint type determines the actions the user will
    # be allowed to perform, for instance, reading and writing to the Store.
    #
    # Possible values:
    #     * publicURL
    #     * adminURL
    #     * internalURL
    #
    # Related options:
    #     * swift_store_endpoint
    #
    #  (string value)
    # Possible values:
    # publicURL - <No description provided>
    # adminURL - <No description provided>
    # internalURL - <No description provided>
    #swift_store_endpoint_type = publicURL

    #
    # Type of Swift service to use.
    #
    # Provide a string value representing the service type to use for
    # storing images while using Swift backend storage. The default
    # service type is set to ``object-store``.
    #
    # Possible values:
    #     * A string representing a valid service type for Swift storage.
    #
    # Related Options:
    #     * None
    #
    #  (string value)
    #swift_store_service_type = object-store

    #
    # Name of single container to store images/name prefix for multiple containers
    #
    # When a single container is being used to store images, this configuration
    # option indicates the container within the Glance account to be used for
    # storing all images. When multiple containers are used to store images, this
    # will be the name prefix for all containers. Usage of single/multiple
    # containers can be controlled using the configuration option
    # ``swift_store_multiple_containers_seed``.
    #
    # When using multiple containers, the containers will be named after the value
    # set for this configuration option with the first N chars of the image UUID
    # as the suffix delimited by an underscore (where N is specified by
    # ``swift_store_multiple_containers_seed``).
    #
    # Example: if the seed is set to 3 and swift_store_container = ``glance``, then
    # an image with UUID ``fdae39a1-bac5-4238-aba4-69bcc726e848`` would be placed in
    # the container ``glance_fda``. All dashes in the UUID are included when
    # creating the container name but do not count toward the character limit, so
    # when N=10 the container name would be ``glance_fdae39a1-ba.``
    #
    # Possible values:
    #     * If using single container, this configuration option can be any string
    #       that is a valid swift container name in Glance's Swift account
    #     * If using multiple containers, this configuration option can be any
    #       string as long as it satisfies the container naming rules enforced by
    #       Swift. The value of ``swift_store_multiple_containers_seed`` should be
    #       taken into account as well.
    #
    # Related options:
    #     * ``swift_store_multiple_containers_seed``
    #     * ``swift_store_multi_tenant``
    #     * ``swift_store_create_container_on_put``
    #
    #  (string value)
    #swift_store_container = glance

    #
    # The size threshold, in MB, after which Glance will start segmenting image
    # data.
    #
    # Swift has an upper limit on the size of a single uploaded object. By default,
    # this is 5GB. To upload objects bigger than this limit, objects are segmented
    # into multiple smaller objects that are tied together with a manifest file.
    # For more detail, refer to
    # https://docs.openstack.org/swift/latest/overview_large_objects.html
    #
    # This configuration option specifies the size threshold over which the Swift
    # driver will start segmenting image data into multiple smaller files.
    # Currently, the Swift driver only supports creating Dynamic Large Objects.
    #
    # NOTE: This should be set by taking into account the large object limit
    # enforced by the Swift cluster in consideration.
    #
    # Possible values:
    #     * A positive integer that is less than or equal to the large object limit
    #       enforced by the Swift cluster in consideration.
    #
    # Related options:
    #     * ``swift_store_large_object_chunk_size``
    #
    #  (integer value)
    # Minimum value: 1
    #swift_store_large_object_size = 5120

    #
    # The maximum size, in MB, of the segments when image data is segmented.
    #
    # When image data is segmented to upload images that are larger than the limit
    # enforced by the Swift cluster, image data is broken into segments that are no
    # bigger than the size specified by this configuration option.
    # Refer to ``swift_store_large_object_size`` for more detail.
    #
    # For example: if ``swift_store_large_object_size`` is 5GB and
    # ``swift_store_large_object_chunk_size`` is 1GB, an image of size 6.2GB will be
    # segmented into 7 segments where the first six segments will be 1GB in size and
    # the seventh segment will be 0.2GB.
    #
    # Possible values:
    #     * A positive integer that is less than or equal to the large object limit
    #       enforced by Swift cluster in consideration.
    #
    # Related options:
    #     * ``swift_store_large_object_size``
    #
    #  (integer value)
    # Minimum value: 1
    #swift_store_large_object_chunk_size = 200

    #
    # Create container, if it doesn't already exist, when uploading image.
    #
    # At the time of uploading an image, if the corresponding container doesn't
    # exist, it will be created provided this configuration option is set to True.
    # By default, it won't be created. This behavior is applicable for both single
    # and multiple containers mode.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * None
    #
    #  (boolean value)
    #swift_store_create_container_on_put = false

    #
    # Store images in tenant's Swift account.
    #
    # This enables multi-tenant storage mode which causes Glance images to be stored
    # in tenant specific Swift accounts. If this is disabled, Glance stores all
    # images in its own account. More details multi-tenant store can be found at
    # https://wiki.openstack.org/wiki/GlanceSwiftTenantSpecificStorage
    #
    # NOTE: If using multi-tenant swift store, please make sure
    # that you do not set a swift configuration file with the
    # 'swift_store_config_file' option.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * swift_store_config_file
    #
    #  (boolean value)
    #swift_store_multi_tenant = false

    #
    # Seed indicating the number of containers to use for storing images.
    #
    # When using a single-tenant store, images can be stored in one or more than one
    # containers. When set to 0, all images will be stored in one single container.
    # When set to an integer value between 1 and 32, multiple containers will be
    # used to store images. This configuration option will determine how many
    # containers are created. The total number of containers that will be used is
    # equal to 16^N, so if this config option is set to 2, then 16^2=256 containers
    # will be used to store images.
    #
    # Please refer to ``swift_store_container`` for more detail on the naming
    # convention. More detail about using multiple containers can be found at
    # https://specs.openstack.org/openstack/glance-specs/specs/kilo/swift-store-
    # multiple-containers.html
    #
    # NOTE: This is used only when swift_store_multi_tenant is disabled.
    #
    # Possible values:
    #     * A non-negative integer less than or equal to 32
    #
    # Related options:
    #     * ``swift_store_container``
    #     * ``swift_store_multi_tenant``
    #     * ``swift_store_create_container_on_put``
    #
    #  (integer value)
    # Minimum value: 0
    # Maximum value: 32
    #swift_store_multiple_containers_seed = 0

    #
    # List of tenants that will be granted admin access.
    #
    # This is a list of tenants that will be granted read/write access on
    # all Swift containers created by Glance in multi-tenant mode. The
    # default value is an empty list.
    #
    # Possible values:
    #     * A comma separated list of strings representing UUIDs of Keystone
    #       projects/tenants
    #
    # Related options:
    #     * None
    #
    #  (list value)
    #swift_store_admin_tenants =

    #
    # SSL layer compression for HTTPS Swift requests.
    #
    # Provide a boolean value to determine whether or not to compress
    # HTTPS Swift requests for images at the SSL layer. By default,
    # compression is enabled.
    #
    # When using Swift as the backend store for Glance image storage,
    # SSL layer compression of HTTPS Swift requests can be set using
    # this option. If set to False, SSL layer compression of HTTPS
    # Swift requests is disabled. Disabling this option may improve
    # performance for images which are already in a compressed format,
    # for example, qcow2.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related Options:
    #     * None
    #
    #  (boolean value)
    #swift_store_ssl_compression = true

    #
    # The number of times a Swift download will be retried before the
    # request fails.
    #
    # Provide an integer value representing the number of times an image
    # download must be retried before erroring out. The default value is
    # zero (no retry on a failed image download). When set to a positive
    # integer value, ``swift_store_retry_get_count`` ensures that the
    # download is attempted this many more times upon a download failure
    # before sending an error message.
    #
    # Possible values:
    #     * Zero
    #     * Positive integer value
    #
    # Related Options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 0
    #swift_store_retry_get_count = 0

    #
    # Time in seconds defining the size of the window in which a new
    # token may be requested before the current token is due to expire.
    #
    # Typically, the Swift storage driver fetches a new token upon the
    # expiration of the current token to ensure continued access to
    # Swift. However, some Swift transactions (like uploading image
    # segments) may not recover well if the token expires on the fly.
    #
    # Hence, by fetching a new token before the current token expiration,
    # we make sure that the token does not expire or is close to expiry
    # before a transaction is attempted. By default, the Swift storage
    # driver requests for a new token 60 seconds or less before the
    # current token expiration.
    #
    # Possible values:
    #     * Zero
    #     * Positive integer value
    #
    # Related Options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 0
    #swift_store_expire_soon_interval = 60

    #
    # Use trusts for multi-tenant Swift store.
    #
    # This option instructs the Swift store to create a trust for each
    # add/get request when the multi-tenant store is in use. Using trusts
    # allows the Swift store to avoid problems that can be caused by an
    # authentication token expiring during the upload or download of data.
    #
    # By default, ``swift_store_use_trusts`` is set to ``True``(use of
    # trusts is enabled). If set to ``False``, a user token is used for
    # the Swift connection instead, eliminating the overhead of trust
    # creation.
    #
    # NOTE: This option is considered only when
    # ``swift_store_multi_tenant`` is set to ``True``
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * swift_store_multi_tenant
    #
    #  (boolean value)
    #swift_store_use_trusts = true

    #
    # Buffer image segments before upload to Swift.
    #
    # Provide a boolean value to indicate whether or not Glance should
    # buffer image data to disk while uploading to swift. This enables
    # Glance to resume uploads on error.
    #
    # NOTES:
    # When enabling this option, one should take great care as this
    # increases disk usage on the API node. Be aware that depending
    # upon how the file system is configured, the disk space used
    # for buffering may decrease the actual disk space available for
    # the glance image cache.  Disk utilization will cap according to
    # the following equation:
    # (``swift_store_large_object_chunk_size`` * ``workers`` * 1000)
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * swift_upload_buffer_dir
    #
    #  (boolean value)
    #swift_buffer_on_upload = false

    #
    # Reference to default Swift account/backing store parameters.
    #
    # Provide a string value representing a reference to the default set
    # of parameters required for using swift account/backing store for
    # image storage. The default reference value for this configuration
    # option is 'ref1'. This configuration option dereferences the
    # parameters and facilitates image storage in Swift storage backend
    # every time a new image is added.
    #
    # Possible values:
    #     * A valid string value
    #
    # Related options:
    #     * None
    #
    #  (string value)
    #default_swift_reference = ref1

    # DEPRECATED: The authentication version to be used. Currently The only valid
    # version is 3. (string value)
    # Possible values:
    # 3 - <No description provided>
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason:
    # This option is kept for backword-compatibility reasons but is no longer
    # required, because only the single version (3) is supported now.
    #swift_store_auth_version = 3

    # DEPRECATED: The address where the Swift authentication service is listening.
    # (string value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason:
    # The option 'auth_address' in the Swift back-end configuration file is
    # used instead.
    #swift_store_auth_address = <None>

    # DEPRECATED: The user to authenticate against the Swift authentication service.
    # (string value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason:
    # The option 'user' in the Swift back-end configuration file is set instead.
    #swift_store_user = <None>

    # DEPRECATED: Auth key for the user authenticating against the Swift
    # authentication service. (string value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason:
    # The option 'key' in the Swift back-end configuration file is used
    # to set the authentication key instead.
    #swift_store_key = <None>

    #
    # Application credential ID for authenticating against Swift.
    #
    # This option specifies the application credential ID to use for
    # authenticating with the Swift backend. When set along with
    # swift_store_application_credential_secret, the Swift driver will
    # use V3ApplicationCredential authentication instead of password
    # authentication.
    #
    # This enables Zero Downtime Password Rotation (ZDPR) support for
    # Swift backend operations, as application credentials are not
    # affected by password rotation.
    #
    # If not set, the driver falls back to password authentication
    # using swift_store_user and swift_store_key.
    #
    # Possible values:
    #     * A valid application credential ID string
    #
    # Related options:
    #     * swift_store_application_credential_secret
    #
    #  (string value)
    #swift_store_application_credential_id = <None>

    #
    # Application credential secret for authenticating against Swift.
    #
    # This option specifies the application credential secret to use
    # for authenticating with the Swift backend. When set along with
    # swift_store_application_credential_id, the Swift driver will
    # use V3ApplicationCredential authentication instead of password
    # authentication.
    #
    # This enables Zero Downtime Password Rotation (ZDPR) support for
    # Swift backend operations, as application credentials are not
    # affected by password rotation.
    #
    # If not set, the driver falls back to password authentication
    # using swift_store_user and swift_store_key.
    #
    # Possible values:
    #     * A valid application credential secret string
    #
    # Related options:
    #     * swift_store_application_credential_id
    #
    #  (string value)
    #swift_store_application_credential_secret = <None>

    # DEPRECATED: Project name for authenticating with application credentials
    # against the Swift authentication service. (string value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason:
    # The option 'project_name' in the Swift back-end configuration file is
    # used instead.
    #swift_store_project_name = <None>

    # DEPRECATED: Project ID for authenticating with application credentials against
    # the Swift authentication service. (string value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason:
    # The option 'project_id' in the Swift back-end configuration file is
    # used instead.
    #swift_store_project_id = <None>

    #
    # Absolute path to the file containing the swift account(s)
    # configurations.
    #
    # Include a string value representing the path to a configuration
    # file that has references for each of the configured Swift
    # account(s)/backing stores. By default, no file path is specified
    # and customized Swift referencing is disabled. Configuring this
    # option is highly recommended while using Swift storage backend for
    # image storage as it avoids storage of credentials in the database.
    #
    # NOTE: Please do not configure this option if you have set
    # ``swift_store_multi_tenant`` to ``True``.
    #
    # Possible values:
    #     * String value representing an absolute path on the glance-api
    #       node
    #
    # Related options:
    #     * swift_store_multi_tenant
    #
    #  (string value)
    #swift_store_config_file = <None>

    #
    # Directory to buffer image segments before upload to Swift.
    #
    # Provide a string value representing the absolute path to the
    # directory on the glance node where image segments will be
    # buffered briefly before they are uploaded to swift.
    #
    # NOTES:
    #     * This is required only when the configuration option
    #       ``swift_buffer_on_upload`` is set to True.
    #     * This directory should be provisioned keeping in mind the
    #       ``swift_store_large_object_chunk_size`` and the maximum
    #       number of images that could be uploaded simultaneously by
    #       a given glance node.
    #
    # Possible values:
    #     * String value representing an absolute directory path
    #
    # Related options:
    #     * swift_buffer_on_upload
    #     * swift_store_large_object_chunk_size
    #
    #  (string value)
    #swift_upload_buffer_dir = <None>

    #
    # Address of the ESX/ESXi or vCenter Server target system.
    #
    # This configuration option sets the address of the ESX/ESXi or vCenter
    # Server target system. This option is required when using the VMware
    # storage backend. The address can contain an IP address (127.0.0.1) or
    # a DNS name (www.my-domain.com).
    #
    # Possible Values:
    #     * A valid IPv4 or IPv6 address
    #     * A valid DNS name
    #
    # Related options:
    #     * vmware_server_username
    #     * vmware_server_password
    #
    #  (host address value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #vmware_server_host = 127.0.0.1

    #
    # Server username.
    #
    # This configuration option takes the username for authenticating with
    # the VMware ESX/ESXi or vCenter Server. This option is required when
    # using the VMware storage backend.
    #
    # Possible Values:
    #     * Any string that is the username for a user with appropriate
    #       privileges
    #
    # Related options:
    #     * vmware_server_host
    #     * vmware_server_password
    #
    #  (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #vmware_server_username = root

    #
    # Server password.
    #
    # This configuration option takes the password for authenticating with
    # the VMware ESX/ESXi or vCenter Server. This option is required when
    # using the VMware storage backend.
    #
    # Possible Values:
    #     * Any string that is a password corresponding to the username
    #       specified using the "vmware_server_username" option
    #
    # Related options:
    #     * vmware_server_host
    #     * vmware_server_username
    #
    #  (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #vmware_server_password = vmware

    #
    # The number of VMware API retries.
    #
    # This configuration option specifies the number of times the VMware
    # ESX/VC server API must be retried upon connection related issues or
    # server API call overload. It is not possible to specify 'retry
    # forever'.
    #
    # Possible Values:
    #     * Any positive integer value
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 1
    #vmware_api_retry_count = 10

    #
    # Interval in seconds used for polling remote tasks invoked on VMware
    # ESX/VC server.
    #
    # This configuration option takes in the sleep time in seconds for polling an
    # on-going async task as part of the VMWare ESX/VC server API call.
    #
    # Possible Values:
    #     * Any positive integer value
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 1
    #vmware_task_poll_interval = 5

    #
    # The directory where the glance images will be stored in the datastore.
    #
    # This configuration option specifies the path to the directory where the
    # glance images will be stored in the VMware datastore. If this option
    # is not set,  the default directory where the glance images are stored
    # is openstack_glance.
    #
    # Possible Values:
    #     * Any string that is a valid path to a directory
    #
    # Related options:
    #     * None
    #
    #  (string value)
    #vmware_store_image_dir = /openstack_glance

    #
    # Set verification of the ESX/vCenter server certificate.
    #
    # This configuration option takes a boolean value to determine
    # whether or not to verify the ESX/vCenter server certificate. If this
    # option is set to True, the ESX/vCenter server certificate is not
    # verified. If this option is set to False, then the default CA
    # truststore is used for verification.
    #
    # This option is ignored if the "vmware_ca_file" option is set. In that
    # case, the ESX/vCenter server certificate will then be verified using
    # the file specified using the "vmware_ca_file" option .
    #
    # Possible Values:
    #     * True
    #     * False
    #
    # Related options:
    #     * vmware_ca_file
    #
    #  (boolean value)
    # Deprecated group/name - [glance_store]/vmware_api_insecure
    #vmware_insecure = false

    #
    # Absolute path to the CA bundle file.
    #
    # This configuration option enables the operator to use a custom
    # Cerificate Authority File to verify the ESX/vCenter certificate.
    #
    # If this option is set, the "vmware_insecure" option will be ignored
    # and the CA file specified will be used to authenticate the ESX/vCenter
    # server certificate and establish a secure connection to the server.
    #
    # Possible Values:
    #     * Any string that is a valid absolute path to a CA file
    #
    # Related options:
    #     * vmware_insecure
    #
    #  (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #vmware_ca_file = /etc/ssl/certs/ca-certificates.crt

    #
    # The datastores where the image can be stored.
    #
    # This configuration option specifies the datastores where the image can
    # be stored in the VMWare store backend. This option may be specified
    # multiple times for specifying multiple datastores. The datastore name
    # should be specified after its datacenter path, separated by ":". An
    # optional weight may be given after the datastore name, separated again
    # by ":" to specify the priority. Thus, the required format becomes
    # <datacenter_path>:<datastore_name>:<optional_weight>.
    #
    # When adding an image, the datastore with highest weight will be
    # selected, unless there is not enough free space available in cases
    # where the image size is already known. If no weight is given, it is
    # assumed to be zero and the directory will be considered for selection
    # last. If multiple datastores have the same weight, then the one with
    # the most free space available is selected.
    #
    # Possible Values:
    #     * Any string of the format:
    #       <datacenter_path>:<datastore_name>:<optional_weight>
    #
    # Related options:
    #    * None
    #
    #  (multi valued)
    #vmware_datastores =

    [os_brick]

    #
    # From os_brick
    #

    # Directory to use for os-brick lock files. Defaults to
    # oslo_concurrency.lock_path which is a sensible default for compute nodes, but
    # not for HCI deployments or controllers where Glance uses Cinder as a backend,
    # as locks should use the same directory. (string value)
    #lock_path = <None>

    # Number of attempts for the multipath device to be ready for I/O after it was
    # created. Readiness is checked with ``multipath -C``. See related
    # ``wait_mpath_device_interval`` config option. (integer value)
    # Minimum value: 1
    #wait_mpath_device_attempts = 4

    # Interval value to wait for multipath device to be ready for I/O. Max number of
    # attempts is set in ``wait_mpath_device_attempts``. Time in seconds to wait for
    # each retry is ``base ^ attempt * interval``, so for 4 attempts (1 attempt 3
    # retries) and 1 second interval will yield: 2, 4 and 8 seconds. Note that there
    # is no wait before first attempt. (integer value)
    # Minimum value: 1
    #wait_mpath_device_interval = 1

    [oslo_concurrency]

    #
    # From oslo.concurrency
    #

    # Enables or disables inter-process locks. (boolean value)
    #disable_process_locking = false

    # Directory to use for lock files.  For security, the specified directory should
    # only be writable by the user running the processes that need locking. Defaults
    # to environment variable OSLO_LOCK_PATH. If external locks are used, a lock
    # path must be set. (string value)
    #lock_path = <None>

    [oslo_policy]

    #
    # From oslo.policy
    #

    # This option controls whether or not to use old deprecated defaults when
    # evaluating policies. If ``True``, the old deprecated defaults are not going to
    # be evaluated. This means if any existing token is allowed for old defaults but
    # is disallowed for new defaults, it will be disallowed. If ``False``, the
    # deprecated policy check string is logically OR'd with the new policy check
    # string, allowing for a graceful upgrade experience between releases with new
    # policies, which is the default behavior. (boolean value)
    #enforce_new_defaults = true

    # The relative or absolute path of a file that maps roles to permissions for a
    # given service. Relative paths must be specified in relation to the
    # configuration file setting this option. (string value)
    #policy_file = policy.yaml

    # Default rule. Enforced when a requested rule is not found. (string value)
    #policy_default_rule = default

    # Directories where policy configuration files are stored. They can be relative
    # to any directory in the search path defined by the config_dir option, or
    # absolute paths. The file defined by policy_file must exist for these
    # directories to be searched.  Missing or empty directories are ignored. (multi
    # valued)
    #policy_dirs = policy.d

    # Content Type to send and receive data for REST based policy check (string
    # value)
    # Possible values:
    # application/x-www-form-urlencoded - <No description provided>
    # application/json - <No description provided>
    #remote_content_type = application/x-www-form-urlencoded

    # server identity verification for REST based policy check (boolean value)
    #remote_ssl_verify_server_crt = false

    # Absolute path to ca cert file for REST based policy check (string value)
    #remote_ssl_ca_crt_file = <None>

    # Absolute path to client cert for REST based policy check (string value)
    #remote_ssl_client_crt_file = <None>

    # Absolute path client key file REST based policy check (string value)
    #remote_ssl_client_key_file = <None>

    # Timeout in seconds for REST based policy check (floating point value)
    # Minimum value: 0
    #remote_timeout = 60

## Sample configuration for Glance Manage

This sample configuration can also be viewed in glance-manage.conf.sample.

    [DEFAULT]

    #
    # From oslo.log
    #

    # If set to true, the logging level will be set to DEBUG instead of the default
    # INFO level. (boolean value)
    # Note: This option can be changed without restarting.
    #debug = false

    # The name of a logging configuration file. This file is appended to any
    # existing logging configuration files. For details about logging configuration
    # files, see the Python logging module documentation. Note that when logging
    # configuration files are used then all logging configuration is set in the
    # configuration file and other logging configuration options are ignored (for
    # example, log-date-format). (string value)
    # Note: This option can be changed without restarting.
    # Deprecated group/name - [DEFAULT]/log_config
    #log_config_append = <None>

    # Defines the format string for %%(asctime)s in log records. Default:
    # %(default)s . This option is ignored if log_config_append is set. (string
    # value)
    #log_date_format = %Y-%m-%d %H:%M:%S

    # (Optional) Name of log file to send logging output to. If no default is set,
    # logging will go to stderr as defined by use_stderr. This option is ignored if
    # log_config_append is set. (string value)
    # Deprecated group/name - [DEFAULT]/logfile
    #log_file = <None>

    # (Optional) The base directory used for relative log_file  paths. This option
    # is ignored if log_config_append is set. (string value)
    # Deprecated group/name - [DEFAULT]/logdir
    #log_dir = <None>

    # Use syslog for logging. Existing syslog format is DEPRECATED and will be
    # changed later to honor RFC5424. This option is ignored if log_config_append is
    # set. (boolean value)
    #use_syslog = false

    # Enable journald for logging. If running in a systemd environment you may wish
    # to enable journal support. Doing so will use the journal native protocol which
    # includes structured metadata in addition to log messages.This option is
    # ignored if log_config_append is set. (boolean value)
    #use_journal = false

    # Syslog facility to receive log lines. This option is ignored if
    # log_config_append is set. (string value)
    #syslog_log_facility = LOG_USER

    # Use JSON formatting for logging. This option is ignored if log_config_append
    # is set. (boolean value)
    #use_json = false

    # Log output to standard error. This option is ignored if log_config_append is
    # set. (boolean value)
    #use_stderr = false

    # (Optional) Set the 'color' key according to log levels. This option takes
    # effect only when logging to stderr or stdout is used. This option is ignored
    # if log_config_append is set. (boolean value)
    #log_color = false

    # The amount of time before the log files are rotated. This option is ignored
    # unless log_rotation_type is set to "interval". (integer value)
    #log_rotate_interval = 1

    # Rotation interval type. The time of the last file change (or the time when the
    # service was started) is used when scheduling the next rotation. (string value)
    # Possible values:
    # Seconds - <No description provided>
    # Minutes - <No description provided>
    # Hours - <No description provided>
    # Days - <No description provided>
    # Weekday - <No description provided>
    # Midnight - <No description provided>
    #log_rotate_interval_type = days

    # Maximum number of rotated log files. (integer value)
    #max_logfile_count = 30

    # Log file maximum size in MB. This option is ignored if "log_rotation_type" is
    # not set to "size". (integer value)
    #max_logfile_size_mb = 200

    # Log rotation type. (string value)
    # Possible values:
    # interval - Rotate logs at predefined time intervals.
    # size - Rotate logs once they reach a predefined size.
    # none - Do not rotate log files.
    #log_rotation_type = none

    # Format string to use for log messages with context. Used by
    # oslo_log.formatters.ContextFormatter (string value)
    #logging_context_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(global_request_id)s %(request_id)s %(user_identity)s] %(instance)s%(message)s

    # Format string to use for log messages when context is undefined. Used by
    # oslo_log.formatters.ContextFormatter (string value)
    #logging_default_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s

    # Additional data to append to log message when logging level for the message is
    # DEBUG. Used by oslo_log.formatters.ContextFormatter (string value)
    #logging_debug_format_suffix = %(funcName)s %(pathname)s:%(lineno)d

    # Prefix each line of exception output with this format. Used by
    # oslo_log.formatters.ContextFormatter (string value)
    #logging_exception_prefix = %(asctime)s.%(msecs)03d %(process)d ERROR %(name)s %(instance)s

    # Defines the format string for %(user_identity)s that is used in
    # logging_context_format_string. Used by oslo_log.formatters.ContextFormatter
    # (string value)
    #logging_user_identity_format = %(user)s %(project)s %(domain)s %(system_scope)s %(user_domain)s %(project_domain)s

    # List of package logging levels in logger=LEVEL pairs. This option is ignored
    # if log_config_append is set. (list value)
    #default_log_levels = amqp=WARN,boto=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,oslo_messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN,urllib3.connectionpool=WARN,websocket=WARN,requests.packages.urllib3.util.retry=WARN,urllib3.util.retry=WARN,keystonemiddleware=WARN,routes.middleware=WARN,stevedore=WARN,taskflow=WARN,keystoneauth=WARN,oslo.cache=INFO,oslo_policy=INFO,dogpile.core.dogpile=INFO

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

    # The format for an instance that is passed with the log message. (string value)
    #instance_format = "[instance: %(uuid)s] "

    # The format for an instance UUID that is passed with the log message. (string
    # value)
    #instance_uuid_format = "[instance: %(uuid)s] "

    # Interval, number of seconds, of log rate limiting. (integer value)
    #rate_limit_interval = 0

    # Maximum number of logged messages per rate_limit_interval. (integer value)
    #rate_limit_burst = 0

    # Log level name used by rate limiting. Logs with level greater or equal to
    # rate_limit_except_level are not filtered. An empty string means that all
    # levels are filtered. (string value)
    # Possible values:
    # CRITICAL - <No description provided>
    # ERROR - <No description provided>
    # INFO - <No description provided>
    # WARNING - <No description provided>
    # DEBUG - <No description provided>
    # '' - <No description provided>
    #rate_limit_except_level = CRITICAL

    # Enables or disables fatal status of deprecations. (boolean value)
    #fatal_deprecations = false

    [database]

    #
    # From oslo.db
    #

    # If True, SQLite uses synchronous mode. (boolean value)
    #sqlite_synchronous = true

    # The back end to use for the database. (string value)
    #backend = sqlalchemy

    # The SQLAlchemy connection string to use to connect to the database. (string
    # value)
    #connection = <None>

    # The SQLAlchemy connection string to use to connect to the slave database.
    # (string value)
    #slave_connection = <None>

    # The SQLAlchemy asyncio connection string to use to connect to the database.
    # (string value)
    #asyncio_connection = <None>

    # The SQLAlchemy asyncio connection string to use to connect to the slave
    # database. (string value)
    #asyncio_slave_connection = <None>

    # Whether or not to assume a reader context needs to guarantee it can read data
    # committed by a writer assuming replication lag is present; defaults to True.
    # When False, a reader context works the same as async_reader and will select
    # the slave database if present. When using a galera cluster, this can be set to
    # False only if you set mysql_wsrep_sync_wait to 1 (this will guarantee that the
    # reader will wait until writesets are committed).Note that this may incur a
    # performance degradation within the galera cluster. Note also that this
    # parameter has no effect if you do not set any slave_connection. (boolean
    # value)
    #synchronous_reader = true

    # The SQL mode to be used for MySQL sessions. This option, including the
    # default, overrides any server-set SQL mode. To use whatever SQL mode is set by
    # the server configuration, set this to no value. Example: mysql_sql_mode=
    # (string value)
    #mysql_sql_mode = TRADITIONAL

    # For Galera only, configure wsrep_sync_wait causality checks on new
    # connections.  Default is None, meaning don't configure any setting. (integer
    # value)
    #mysql_wsrep_sync_wait = <None>

    # Connections which have been present in the connection pool longer than this
    # number of seconds will be replaced with a new one the next time they are
    # checked out from the pool. (integer value)
    #connection_recycle_time = 3600

    # Maximum number of SQL connections to keep open in a pool. Setting a value of 0
    # indicates no limit. (integer value)
    #max_pool_size = 5

    # Maximum number of database connection retries during startup. Set to -1 to
    # specify an infinite retry count. (integer value)
    #max_retries = 10

    # Interval between retries of opening a SQL connection. (integer value)
    #retry_interval = 10

    # If set, use this value for max_overflow with SQLAlchemy. (integer value)
    #max_overflow = 50

    # Verbosity of SQL debugging information: 0=None, 100=Everything. (integer
    # value)
    # Minimum value: 0
    # Maximum value: 100
    #connection_debug = 0

    # Add Python stack traces to SQL as comment strings. (boolean value)
    #connection_trace = false

    # If set, use this value for pool_timeout with SQLAlchemy. (integer value)
    #pool_timeout = <None>

    # Enable the experimental use of database reconnect on connection lost. (boolean
    # value)
    #use_db_reconnect = false

    # Seconds between retries of a database transaction. (integer value)
    #db_retry_interval = 1

    # If True, increases the interval between retries of a database operation up to
    # db_max_retry_interval. (boolean value)
    #db_inc_retry_interval = true

    # If db_inc_retry_interval is set, the maximum seconds between retries of a
    # database operation. (integer value)
    #db_max_retry_interval = 10

    # Maximum retries in case of connection error or deadlock error before error is
    # raised. Set to -1 to specify an infinite retry count. (integer value)
    #db_max_retries = 20

    # Optional URL parameters to append onto the connection URL at connect time;
    # specify as param1=value1&param2=value2&... (string value)
    #connection_parameters =

## Sample configuration for Glance Cache

This sample configuration can also be viewed in glance-cache.conf.sample.

    [DEFAULT]

    #
    # From glance.cache
    #

    #
    # Secure hashing algorithm used for computing the 'os_hash_value' property.
    #
    # This option configures the Glance "multihash", which consists of two
    # image properties: the 'os_hash_algo' and the 'os_hash_value'.  The
    # 'os_hash_algo' will be populated by the value of this configuration
    # option, and the 'os_hash_value' will be populated by the hexdigest computed
    # when the algorithm is applied to the uploaded or imported image data.
    #
    # The value must be a valid secure hash algorithm name recognized by the
    # python 'hashlib' library.  You can determine what these are by examining
    # the 'hashlib.algorithms_available' data member of the version of the
    # library being used in your Glance installation.  For interoperability
    # purposes, however, we recommend that you use the set of secure hash
    # names supplied by the 'hashlib.algorithms_guaranteed' data member because
    # those algorithms are guaranteed to be supported by the 'hashlib' library
    # on all platforms.  Thus, any image consumer using 'hashlib' locally should
    # be able to verify the 'os_hash_value' of the image.
    #
    # The default value of 'sha512' is a performant secure hash algorithm.
    #
    # If this option is misconfigured, any attempts to store image data will fail.
    # For that reason, we recommend using the default value.
    #
    # Possible values:
    #     * Any secure hash algorithm name recognized by the Python 'hashlib'
    #       library
    #
    # Related options:
    #     * None
    #
    #  (string value)
    #hashing_algorithm = sha512

    #
    # Maximum number of image members per image.
    #
    # This limits the maximum of users an image can be shared with. Any negative
    # value is interpreted as unlimited.
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    #image_member_quota = 128

    #
    # Maximum number of properties allowed on an image.
    #
    # This enforces an upper limit on the number of additional properties an image
    # can have. Any negative value is interpreted as unlimited.
    #
    #  (integer value)
    #image_property_quota = 128

    #
    # Maximum number of tags allowed on an image.
    #
    # Any negative value is interpreted as unlimited.
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    #image_tag_quota = 128

    #
    # Maximum number of locations allowed on an image.
    #
    # Any negative value is interpreted as unlimited.
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    #image_location_quota = 10

    #
    # The default number of results to return for a request.
    #
    # Responses to certain API requests, like list images, may return
    # multiple items. The number of results returned can be explicitly
    # controlled by specifying the ``limit`` parameter in the API request.
    # However, if a ``limit`` parameter is not specified, this
    # configuration value will be used as the default number of results to
    # be returned for any API request.
    #
    # NOTES:
    #     * The value of this configuration option may not be greater than
    #       the value specified by ``api_limit_max``.
    #     * Setting this to a very large value may slow down database
    #       queries and increase response times. Setting this to a
    #       very low value may result in poor user experience.
    #
    # Possible values:
    #     * Any positive integer
    #
    # Related options:
    #     * api_limit_max
    #
    #  (integer value)
    # Minimum value: 1
    #limit_param_default = 25

    #
    # Maximum number of results that could be returned by a request.
    #
    # As described in the help text of ``limit_param_default``, some
    # requests may return multiple results. The number of results to be
    # returned are governed either by the ``limit`` parameter in the
    # request or the ``limit_param_default`` configuration option.
    # The value in either case, can't be greater than the absolute maximum
    # defined by this configuration option. Anything greater than this
    # value is trimmed down to the maximum value defined here.
    #
    # NOTE: Setting this to a very large value may slow down database
    #       queries and increase response times. Setting this to a
    #       very low value may result in poor user experience.
    #
    # Possible values:
    #     * Any positive integer
    #
    # Related options:
    #     * limit_param_default
    #
    #  (integer value)
    # Minimum value: 1
    #api_limit_max = 1000

    #
    # Show direct image location when returning an image.
    #
    # This configuration option indicates whether to show the direct image
    # location when returning image details to the user. The direct image
    # location is where the image data is stored in backend storage. This
    # image location is shown under the image property ``direct_url``.
    #
    # When multiple image locations exist for an image, the best location
    # is displayed based on the store weightage assigned for each store
    # indicated by the configuration option ``weight``.
    #
    # NOTES:
    #     * Revealing image locations can present a GRAVE SECURITY RISK as
    #       image locations can sometimes include credentials. Hence, this
    #       is set to ``False`` by default. Set this to ``True`` with
    #       EXTREME CAUTION and ONLY IF you know what you are doing!
    #     * If an operator wishes to avoid showing any image location(s)
    #       to the user, then both this option and
    #       ``show_multiple_locations`` MUST be set to ``False``.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * show_multiple_locations
    #     * weight
    #
    #  (boolean value)
    #show_image_direct_url = false

    # DEPRECATED:
    # Show all image locations when returning an image.
    #
    # This configuration option indicates whether to show all the image
    # locations when returning image details to the user. When multiple
    # image locations exist for an image, the locations are ordered based
    # on the store weightage assigned for each store indicated by the
    # configuration option ``weight``. The image locations are shown
    # under the image property ``locations``.
    #
    # NOTES:
    #     * Revealing image locations can present a GRAVE SECURITY RISK as
    #       image locations can sometimes include credentials. Hence, this
    #       is set to ``False`` by default. Set this to ``True`` with
    #       EXTREME CAUTION and ONLY IF you know what you are doing!
    #     * See https://wiki.openstack.org/wiki/OSSN/OSSN-0065 for more
    #       information.
    #     * If an operator wishes to avoid showing any image location(s)
    #       to the user, then both this option and
    #       ``show_image_direct_url`` MUST be set to ``False``.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * show_image_direct_url
    #     * weight
    #
    #  (boolean value)
    # This option is deprecated for removal since Newton.
    # Its value may be silently ignored in the future.
    # Reason: Use of this option, deprecated since Newton, is a security risk and
    # will be removed once we figure out a way to satisfy those use cases that
    # currently require it.  An earlier announcement that the same functionality can
    # be achieved with greater granularity by using policies is incorrect.  You
    # cannot work around this option via policy configuration at the present time,
    # though that is the direction we believe the fix will take.  Please keep an eye
    # on the Glance release notes to stay up to date on progress in addressing this
    # issue.
    #show_multiple_locations = false

    #
    # Calculate hash and checksum for the image.
    #
    # This configuration option indicates that /v2/images/{image_id}/locations
    # POST API will calculate hash and checksum of the image on the fly.
    # If False it will silently ignore the hash and checksum calculation.
    #
    # Possible values:
    #     * True
    #     * False
    #  (boolean value)
    #do_secure_hash = true

    #
    # The number of times to retry when any operation fails.
    #  (integer value)
    #http_retries = 3

    #
    # Maximum size of image a user can upload in bytes.
    #
    # An image upload greater than the size mentioned here would result
    # in an image creation failure. This configuration option defaults to
    # 1099511627776 bytes (1 TiB).
    #
    # NOTES:
    #     * This value should only be increased after careful
    #       consideration and must be set less than or equal to
    #       8 EiB (9223372036854775808).
    #     * This value must be set with careful consideration of the
    #       backend storage capacity. Setting this to a very low value
    #       may result in a large number of image failures. And, setting
    #       this to a very large value may result in faster consumption
    #       of storage. Hence, this must be set according to the nature of
    #       images created and storage capacity available.
    #
    # Possible values:
    #     * Any positive number less than or equal to 9223372036854775808
    #
    #  (integer value)
    # Minimum value: 1
    # Maximum value: 9223372036854775808
    #image_size_cap = 1099511627776

    #
    # Maximum amount of image storage per tenant.
    #
    # This enforces an upper limit on the cumulative storage consumed by all images
    # of a tenant across all stores. This is a per-tenant limit.
    #
    # The default unit for this configuration option is Bytes. However, storage
    # units can be specified using case-sensitive literals ``B``, ``KB``, ``MB``,
    # ``GB`` and ``TB`` representing Bytes, KiloBytes, MegaBytes, GigaBytes and
    # TeraBytes respectively. Note that there should not be any space between the
    # value and unit. Value ``0`` signifies no quota enforcement. Negative values
    # are invalid and result in errors.
    #
    # This has no effect if ``use_keystone_limits`` is enabled.
    #
    # Possible values:
    #     * A string that is a valid concatenation of a non-negative integer
    #       representing the storage value and an optional string literal
    #       representing storage units as mentioned above.
    #
    # Related options:
    #     * use_keystone_limits
    #
    #  (string value)
    #user_storage_quota = 0

    #
    # Utilize per-tenant resource limits registered in Keystone.
    #
    # Enabling this feature will cause Glance to retrieve limits set in keystone
    # for resource consumption and enforce them against API users. Before turning
    # this on, the limits need to be registered in Keystone or all quotas will be
    # considered to be zero, and thus reject all new resource requests.
    #
    # These per-tenant resource limits are independent from the static
    # global ones configured in this config file. If this is enabled, the
    # relevant static global limits will be ignored.
    #  (boolean value)
    #use_keystone_limits = false

    #
    # Host address of the pydev server.
    #
    # Provide a string value representing the hostname or IP of the
    # pydev server to use for debugging. The pydev server listens for
    # debug connections on this address, facilitating remote debugging
    # in Glance.
    #
    # Possible values:
    #     * Valid hostname
    #     * Valid IP address
    #
    # Related options:
    #     * None
    #
    #  (host address value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #pydev_worker_debug_host = localhost

    #
    # Port number that the pydev server will listen on.
    #
    # Provide a port number to bind the pydev server to. The pydev
    # process accepts debug connections on this port and facilitates
    # remote debugging in Glance.
    #
    # Possible values:
    #     * A valid port number
    #
    # Related options:
    #     * None
    #
    #  (port value)
    # Minimum value: 0
    # Maximum value: 65535
    #pydev_worker_debug_port = 5678

    # DEPRECATED:
    # AES key for encrypting store location metadata.
    #
    # Provide a string value representing the AES cipher to use for
    # encrypting Glance store metadata.
    #
    # NOTE: The AES key to use must be set to a random string of length
    # 16, 24 or 32 bytes.
    #
    # Possible values:
    #     * String value representing a valid AES key
    #
    # Related options:
    #     * None
    #
    #  (string value)
    # This option is deprecated for removal since Dalmatian.
    # Its value may be silently ignored in the future.
    # Reason:
    # This option doesnt serves the purpose of encryption of location metadata,
    # whereas it encrypts location url only for specific APIs. Also if enabled
    # this during an upgrade may disrupt existing deployments, as it does not
    # support/provide db upgrade script to encrypt existing location URLs.
    # Moreover, its functionality for encrypting location URLs is inconsistent
    # which is resulting in download failures.
    #metadata_encryption_key = <None>

    # DEPRECATED:
    # Digest algorithm to use for digital signature.
    #
    # Provide a string value representing the digest algorithm to
    # use for generating digital signatures. By default, ``sha256``
    # is used.
    #
    # To get a list of the available algorithms supported by the version
    # of OpenSSL on your platform, run the command:
    # ``openssl list-message-digest-algorithms``.
    # Examples are 'sha1', 'sha256', and 'sha512'.
    #
    # NOTE: ``digest_algorithm`` is not related to Glance's image signing
    # and verification. It is only used to sign the universally unique
    # identifier (UUID) as a part of the certificate file and key file
    # validation.
    #
    # Possible values:
    #     * An OpenSSL message digest algorithm identifier
    #
    # Related options:
    #     * None
    #
    #  (string value)
    # This option is deprecated for removal since Dalmatian.
    # Its value may be silently ignored in the future.
    # Reason:
    # This option has had no effect since the removal of native SSL support.
    #digest_algorithm = sha256

    #
    # The URL provides location where the temporary data will be stored
    #
    # This option is for Glance internal use only. Glance will save the
    # image data uploaded by the user to 'staging' endpoint during the
    # image import process.
    #
    # This option does not change the 'staging' API endpoint by any means.
    #
    # NOTE: It is discouraged to use same path as [task]/work_dir
    #
    # NOTE: 'file://<absolute-directory-path>' is the only option
    # api_image_import flow will support for now.
    #
    # NOTE: The staging path must be on shared filesystem available to all
    # Glance API nodes.
    #
    # Possible values:
    #     * String starting with 'file://' followed by absolute FS path
    #
    # Related options:
    #     * [task]/work_dir
    #
    #  (string value)
    #node_staging_uri = file:///tmp/staging/

    #
    # List of enabled Image Import Methods
    #
    # 'glance-direct', 'copy-image' and 'web-download' are enabled by default.
    # 'glance-download' is available, but requires federated deployments.
    #
    # Related options:
    #     * [DEFAULT]/node_staging_uri (list value)
    #enabled_import_methods = [glance-direct,web-download,copy-image]

    #
    # The URL to this worker.
    #
    # If this is set, other glance workers will know how to contact this one
    # directly if needed. For image import, a single worker stages the image
    # and other workers need to be able to proxy the import request to the
    # right one.
    #
    # If unset, this will be considered to be `public_endpoint`, which
    # normally would be set to the same value on all workers, effectively
    # disabling the proxying behavior.
    #
    # Possible values:
    #     * A URL by which this worker is reachable from other workers
    #
    # Related options:
    #     * public_endpoint
    #
    #  (string value)
    #worker_self_reference_url = <None>

    # DEPRECATED:
    # The relative path to sqlite file database that will be used for image cache
    # management.
    #
    # This is a relative path to the sqlite file database that tracks the age and
    # usage statistics of image cache. The path is relative to image cache base
    # directory, specified by the configuration option ``image_cache_dir``.
    #
    # This is a lightweight database with just one table.
    #
    # Possible values:
    #     * A valid relative path to sqlite file database
    #
    # Related options:
    #     * ``image_cache_dir``
    #
    #  (string value)
    # This option is deprecated for removal since Caracal (2024.1).
    # Its value may be silently ignored in the future.
    # Reason:
    # As centralized database will now be used for image cache management, the use
    # of `sqlite` database and driver will be dropped from 'E' (2025.1)
    # development cycle.
    #image_cache_sqlite_db = cache.db

    #
    # The driver to use for image cache management.
    #
    # This configuration option provides the flexibility to choose between the
    # different image-cache drivers available. An image-cache driver is responsible
    # for providing the essential functions of image-cache like write images to/read
    # images from cache, track age and usage of cached images, provide a list of
    # cached images, fetch size of the cache, queue images for caching and clean up
    # the cache, etc.
    #
    # The essential functions of a driver are defined in the base class
    # ``glance.image_cache.drivers.base.Driver``. All image-cache drivers (existing
    # and prospective) must implement this interface. Currently available drivers
    # are ``sqlite`` and ``xattr``. These drivers primarily differ in the way they
    # store the information about cached images:
    #
    # * The ``centralized_db`` driver uses a central database (which will be common
    #   for all glance nodes) to track the usage of cached images.
    # * The ``sqlite`` (deprecated) driver uses a sqlite database (which sits on
    #   every glance node locally) to track the usage of cached images.
    # * The ``xattr`` driver uses the extended attributes of files to store this
    #   information. It also requires a filesystem that sets ``atime`` on the files
    #   when accessed.
    #
    # Deprecation warning:
    #     * As centralized database will now be used for image cache management, the
    #       use of `sqlite` database and driver will be dropped from 'E' (2025.1)
    #       development cycle.
    #
    # Possible values:
    #     * centralized_db
    #     * sqlite
    #     * xattr
    #
    # Related options:
    #     * None
    #
    #  (string value)
    # Possible values:
    # centralized_db - <No description provided>
    # sqlite - <No description provided>
    # xattr - <No description provided>
    #image_cache_driver = centralized_db

    #
    # The upper limit on cache size, in bytes, after which the cache-pruner cleans
    # up the image cache.
    #
    # NOTE: This is just a threshold for cache-pruner to act upon. It is NOT a
    # hard limit beyond which the image cache would never grow. In fact, depending
    # on how often the cache-pruner runs and how quickly the cache fills, the image
    # cache can far exceed the size specified here very easily. Hence, care must be
    # taken to appropriately schedule the cache-pruner and in setting this limit.
    #
    # Glance caches an image when it is downloaded. Consequently, the size of the
    # image cache grows over time as the number of downloads increases. To keep the
    # cache size from becoming unmanageable, it is recommended to run the
    # cache-pruner as a periodic task. When the cache pruner is kicked off, it
    # compares the current size of image cache and triggers a cleanup if the image
    # cache grew beyond the size specified here. After the cleanup, the size of
    # cache is less than or equal to size specified here.
    #
    # Possible values:
    #     * Any non-negative integer
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 0
    #image_cache_max_size = 10737418240

    #
    # The amount of time, in seconds, an incomplete image remains in the cache.
    #
    # Incomplete images are images for which download is in progress. Please see the
    # description of configuration option ``image_cache_dir`` for more detail.
    # Sometimes, due to various reasons, it is possible the download may hang and
    # the incompletely downloaded image remains in the ``incomplete`` directory.
    # This configuration option sets a time limit on how long the incomplete images
    # should remain in the ``incomplete`` directory before they are cleaned up.
    # Once an incomplete image spends more time than is specified here, it'll be
    # removed by cache-cleaner on its next run.
    #
    # It is recommended to run cache-cleaner as a periodic task on the Glance API
    # nodes to keep the incomplete images from occupying disk space.
    #
    # Possible values:
    #     * Any non-negative integer
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 0
    #image_cache_stall_time = 86400

    #
    # Base directory for image cache.
    #
    # This is the location where image data is cached and served out of. All cached
    # images are stored directly under this directory. This directory also contains
    # three subdirectories, namely, ``incomplete``, ``invalid`` and ``queue``.
    #
    # The ``incomplete`` subdirectory is the staging area for downloading images. An
    # image is first downloaded to this directory. When the image download is
    # successful it is moved to the base directory. However, if the download fails,
    # the partially downloaded image file is moved to the ``invalid`` subdirectory.
    #
    # The ``queue``subdirectory is used for queuing images for download. This is
    # used primarily by the cache-prefetcher, which can be scheduled as a periodic
    # task like cache-pruner and cache-cleaner, to cache images ahead of their
    # usage.
    # Upon receiving the request to cache an image, Glance touches a file in the
    # ``queue`` directory with the image id as the file name. The cache-prefetcher,
    # when running, polls for the files in ``queue`` directory and starts
    # downloading them in the order they were created. When the download is
    # successful, the zero-sized file is deleted from the ``queue`` directory.
    # If the download fails, the zero-sized file remains and it'll be retried the
    # next time cache-prefetcher runs.
    #
    # Possible values:
    #     * A valid path
    #
    # Related options:
    #     * ``image_cache_sqlite_db``
    #
    #  (string value)
    #image_cache_dir = <None>

    #
    # From oslo.log
    #

    # If set to true, the logging level will be set to DEBUG instead of the default
    # INFO level. (boolean value)
    # Note: This option can be changed without restarting.
    #debug = false

    # The name of a logging configuration file. This file is appended to any
    # existing logging configuration files. For details about logging configuration
    # files, see the Python logging module documentation. Note that when logging
    # configuration files are used then all logging configuration is set in the
    # configuration file and other logging configuration options are ignored (for
    # example, log-date-format). (string value)
    # Note: This option can be changed without restarting.
    # Deprecated group/name - [DEFAULT]/log_config
    #log_config_append = <None>

    # Defines the format string for %%(asctime)s in log records. Default:
    # %(default)s . This option is ignored if log_config_append is set. (string
    # value)
    #log_date_format = %Y-%m-%d %H:%M:%S

    # (Optional) Name of log file to send logging output to. If no default is set,
    # logging will go to stderr as defined by use_stderr. This option is ignored if
    # log_config_append is set. (string value)
    # Deprecated group/name - [DEFAULT]/logfile
    #log_file = <None>

    # (Optional) The base directory used for relative log_file  paths. This option
    # is ignored if log_config_append is set. (string value)
    # Deprecated group/name - [DEFAULT]/logdir
    #log_dir = <None>

    # Use syslog for logging. Existing syslog format is DEPRECATED and will be
    # changed later to honor RFC5424. This option is ignored if log_config_append is
    # set. (boolean value)
    #use_syslog = false

    # Enable journald for logging. If running in a systemd environment you may wish
    # to enable journal support. Doing so will use the journal native protocol which
    # includes structured metadata in addition to log messages.This option is
    # ignored if log_config_append is set. (boolean value)
    #use_journal = false

    # Syslog facility to receive log lines. This option is ignored if
    # log_config_append is set. (string value)
    #syslog_log_facility = LOG_USER

    # Use JSON formatting for logging. This option is ignored if log_config_append
    # is set. (boolean value)
    #use_json = false

    # Log output to standard error. This option is ignored if log_config_append is
    # set. (boolean value)
    #use_stderr = false

    # (Optional) Set the 'color' key according to log levels. This option takes
    # effect only when logging to stderr or stdout is used. This option is ignored
    # if log_config_append is set. (boolean value)
    #log_color = false

    # The amount of time before the log files are rotated. This option is ignored
    # unless log_rotation_type is set to "interval". (integer value)
    #log_rotate_interval = 1

    # Rotation interval type. The time of the last file change (or the time when the
    # service was started) is used when scheduling the next rotation. (string value)
    # Possible values:
    # Seconds - <No description provided>
    # Minutes - <No description provided>
    # Hours - <No description provided>
    # Days - <No description provided>
    # Weekday - <No description provided>
    # Midnight - <No description provided>
    #log_rotate_interval_type = days

    # Maximum number of rotated log files. (integer value)
    #max_logfile_count = 30

    # Log file maximum size in MB. This option is ignored if "log_rotation_type" is
    # not set to "size". (integer value)
    #max_logfile_size_mb = 200

    # Log rotation type. (string value)
    # Possible values:
    # interval - Rotate logs at predefined time intervals.
    # size - Rotate logs once they reach a predefined size.
    # none - Do not rotate log files.
    #log_rotation_type = none

    # Format string to use for log messages with context. Used by
    # oslo_log.formatters.ContextFormatter (string value)
    #logging_context_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(global_request_id)s %(request_id)s %(user_identity)s] %(instance)s%(message)s

    # Format string to use for log messages when context is undefined. Used by
    # oslo_log.formatters.ContextFormatter (string value)
    #logging_default_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s

    # Additional data to append to log message when logging level for the message is
    # DEBUG. Used by oslo_log.formatters.ContextFormatter (string value)
    #logging_debug_format_suffix = %(funcName)s %(pathname)s:%(lineno)d

    # Prefix each line of exception output with this format. Used by
    # oslo_log.formatters.ContextFormatter (string value)
    #logging_exception_prefix = %(asctime)s.%(msecs)03d %(process)d ERROR %(name)s %(instance)s

    # Defines the format string for %(user_identity)s that is used in
    # logging_context_format_string. Used by oslo_log.formatters.ContextFormatter
    # (string value)
    #logging_user_identity_format = %(user)s %(project)s %(domain)s %(system_scope)s %(user_domain)s %(project_domain)s

    # List of package logging levels in logger=LEVEL pairs. This option is ignored
    # if log_config_append is set. (list value)
    #default_log_levels = amqp=WARN,boto=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,oslo_messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN,urllib3.connectionpool=WARN,websocket=WARN,requests.packages.urllib3.util.retry=WARN,urllib3.util.retry=WARN,keystonemiddleware=WARN,routes.middleware=WARN,stevedore=WARN,taskflow=WARN,keystoneauth=WARN,oslo.cache=INFO,oslo_policy=INFO,dogpile.core.dogpile=INFO

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

    # The format for an instance that is passed with the log message. (string value)
    #instance_format = "[instance: %(uuid)s] "

    # The format for an instance UUID that is passed with the log message. (string
    # value)
    #instance_uuid_format = "[instance: %(uuid)s] "

    # Interval, number of seconds, of log rate limiting. (integer value)
    #rate_limit_interval = 0

    # Maximum number of logged messages per rate_limit_interval. (integer value)
    #rate_limit_burst = 0

    # Log level name used by rate limiting. Logs with level greater or equal to
    # rate_limit_except_level are not filtered. An empty string means that all
    # levels are filtered. (string value)
    # Possible values:
    # CRITICAL - <No description provided>
    # ERROR - <No description provided>
    # INFO - <No description provided>
    # WARNING - <No description provided>
    # DEBUG - <No description provided>
    # '' - <No description provided>
    #rate_limit_except_level = CRITICAL

    # Enables or disables fatal status of deprecations. (boolean value)
    #fatal_deprecations = false

    [glance_store]

    #
    # From glance.store
    #

    # DEPRECATED:
    # List of enabled Glance stores.
    #
    # Register the storage backends to use for storing disk images
    # as a comma separated list. The default stores enabled for
    # storing disk images with Glance are ``file`` and ``http``.
    #
    # Possible values:
    #     * A comma separated list that could include:
    #         * file
    #         * http
    #         * swift
    #         * rbd
    #         * cinder
    #         * vmware
    #         * s3
    #
    # Related Options:
    #     * default_store
    #
    #  (list value)
    # This option is deprecated for removal since Rocky.
    # Its value may be silently ignored in the future.
    # Reason:
    # This option is deprecated against new config option
    # ``enabled_backends`` which helps to configure multiple backend stores
    # of different schemes.
    #
    # This option is scheduled for removal in the U development
    # cycle.
    #stores = file,http

    # DEPRECATED:
    # The default scheme to use for storing images.
    #
    # Provide a string value representing the default scheme to use for
    # storing images. If not set, Glance uses ``file`` as the default
    # scheme to store images with the ``file`` store.
    #
    # NOTE: The value given for this configuration option must be a valid
    # scheme for a store registered with the ``stores`` configuration
    # option.
    #
    # Possible values:
    #     * file
    #     * filesystem
    #     * http
    #     * https
    #     * swift
    #     * swift+http
    #     * swift+https
    #     * swift+config
    #     * rbd
    #     * cinder
    #     * vsphere
    #     * s3
    #
    # Related Options:
    #     * stores
    #
    #  (string value)
    # Possible values:
    # file - <No description provided>
    # filesystem - <No description provided>
    # http - <No description provided>
    # https - <No description provided>
    # swift - <No description provided>
    # swift+http - <No description provided>
    # swift+https - <No description provided>
    # swift+config - <No description provided>
    # rbd - <No description provided>
    # cinder - <No description provided>
    # vsphere - <No description provided>
    # s3 - <No description provided>
    # This option is deprecated for removal since Rocky.
    # Its value may be silently ignored in the future.
    # Reason:
    # This option is deprecated against new config option
    # ``default_backend`` which acts similar to ``default_store`` config
    # option.
    #
    # This option is scheduled for removal in the U development
    # cycle.
    #default_store = file

    #
    # Information to match when looking for cinder in the service catalog.
    #
    # When the ``cinder_endpoint_template`` is not set and any of
    # ``cinder_store_auth_address``, ``cinder_store_user_name``,
    # ``cinder_store_project_name``, ``cinder_store_password`` is not set,
    # cinder store uses this information to lookup cinder endpoint from the service
    # catalog in the current context. ``cinder_os_region_name``, if set, is taken
    # into consideration to fetch the appropriate endpoint.
    #
    # The service catalog can be listed by the ``openstack catalog list`` command.
    #
    # Possible values:
    #     * A string of of the following form:
    #       ``<service_type>:<service_name>:<interface>``
    #       At least ``service_type`` and ``interface`` should be specified.
    #       ``service_name`` can be omitted.
    #
    # Related options:
    #     * cinder_os_region_name
    #     * cinder_endpoint_template
    #     * cinder_store_auth_address
    #     * cinder_store_user_name
    #     * cinder_store_project_name
    #     * cinder_store_password
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_domain_name
    #
    #  (string value)
    #cinder_catalog_info = volumev3::publicURL

    #
    # Override service catalog lookup with template for cinder endpoint.
    #
    # When this option is set, this value is used to generate cinder endpoint,
    # instead of looking up from the service catalog.
    # This value is ignored if ``cinder_store_auth_address``,
    # ``cinder_store_user_name``, ``cinder_store_project_name``, and
    # ``cinder_store_password`` are specified.
    #
    # If this configuration option is set, ``cinder_catalog_info`` will be ignored.
    #
    # Possible values:
    #     * URL template string for cinder endpoint, where ``%%(tenant)s`` is
    #       replaced with the current tenant (project) name.
    #       For example: ``http://cinder.openstack.example.org/v2/%%(tenant)s``
    #
    # Related options:
    #     * cinder_store_auth_address
    #     * cinder_store_user_name
    #     * cinder_store_project_name
    #     * cinder_store_password
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_domain_name
    #     * cinder_catalog_info
    #
    #  (string value)
    #cinder_endpoint_template = <None>

    #
    # Region name to lookup cinder service from the service catalog.
    #
    # This is used only when ``cinder_catalog_info`` is used for determining the
    # endpoint. If set, the lookup for cinder endpoint by this node is filtered to
    # the specified region. It is useful when multiple regions are listed in the
    # catalog. If this is not set, the endpoint is looked up from every region.
    #
    # Possible values:
    #     * A string that is a valid region name.
    #
    # Related options:
    #     * cinder_catalog_info
    #
    #  (string value)
    # Deprecated group/name - [glance_store]/os_region_name
    #cinder_os_region_name = <None>

    #
    # Location of a CA certificates file used for cinder client requests.
    #
    # The specified CA certificates file, if set, is used to verify cinder
    # connections via HTTPS endpoint. If the endpoint is HTTP, this value is
    # ignored.
    # ``cinder_api_insecure`` must be set to ``True`` to enable the verification.
    #
    # Possible values:
    #     * Path to a ca certificates file
    #
    # Related options:
    #     * cinder_api_insecure
    #
    #  (string value)
    #cinder_ca_certificates_file = <None>

    #
    # Number of cinderclient retries on failed http calls.
    #
    # When a call failed by any errors, cinderclient will retry the call up to the
    # specified times after sleeping a few seconds.
    #
    # Possible values:
    #     * A positive integer
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 0
    #cinder_http_retries = 3

    #
    # Time period, in seconds, to wait for a cinder volume transition to
    # complete.
    #
    # When the cinder volume is created, deleted, or attached to the glance node to
    # read/write the volume data, the volume's state is changed. For example, the
    # newly created volume status changes from ``creating`` to ``available`` after
    # the creation process is completed. This specifies the maximum time to wait for
    # the status change. If a timeout occurs while waiting, or the status is changed
    # to an unexpected value (e.g. `error``), the image creation fails.
    #
    # Possible values:
    #     * A positive integer
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 0
    #cinder_state_transition_timeout = 300

    #
    # Allow to perform insecure SSL requests to cinder.
    #
    # If this option is set to True, HTTPS endpoint connection is verified using the
    # CA certificates file specified by ``cinder_ca_certificates_file`` option.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * cinder_ca_certificates_file
    #
    #  (boolean value)
    #cinder_api_insecure = false

    #
    # The address where the cinder authentication service is listening.
    #
    # When all of ``cinder_store_auth_address``, ``cinder_store_user_name``,
    # ``cinder_store_project_name``, and ``cinder_store_password`` options are
    # specified, the specified values are always used for the authentication.
    # This is useful to hide the image volumes from users by storing them in a
    # project/tenant specific to the image service. It also enables users to share
    # the image volume among other projects under the control of glance's ACL.
    #
    # If either of these options are not set, the cinder endpoint is looked up
    # from the service catalog, and current context's user and project are used.
    #
    # Possible values:
    #     * A valid authentication service address, for example:
    #       ``http://openstack.example.org/identity/v2.0``
    #
    # Related options:
    #     * cinder_store_user_name
    #     * cinder_store_password
    #     * cinder_store_project_name
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_domain_name
    #
    #  (string value)
    #cinder_store_auth_address = <None>

    #
    # User name to authenticate against cinder.
    #
    # This must be used with all the following non-domain-related options.
    # If any of these are not specified (except domain-related options),
    # the user of the current context is used.
    #
    # Possible values:
    #     * A valid user name
    #
    # Related options:
    #     * cinder_store_auth_address
    #     * cinder_store_password
    #     * cinder_store_project_name
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_domain_name
    #
    #  (string value)
    #cinder_store_user_name = <None>

    #
    # Domain of the user to authenticate against cinder.
    #
    # Possible values:
    #     * A valid domain name for the user specified by ``cinder_store_user_name``
    #
    # Related options:
    #     * cinder_store_auth_address
    #     * cinder_store_password
    #     * cinder_store_project_name
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_name
    #
    #  (string value)
    #cinder_store_user_domain_name = Default

    #
    # Password for the user authenticating against cinder.
    #
    # This must be used with all the following related options.
    # If any of these are not specified (except domain-related options),
    # the user of the current context is used.
    #
    # Possible values:
    #     * A valid password for the user specified by ``cinder_store_user_name``
    #
    # Related options:
    #     * cinder_store_auth_address
    #     * cinder_store_user_name
    #     * cinder_store_project_name
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_domain_name
    #     * cinder_store_application_credential_id
    #     * cinder_store_application_credential_secret
    #
    #  (string value)
    #cinder_store_password = <None>

    #
    # Application credential ID for authenticating against cinder.
    #
    # When this option is set along with
    # ``cinder_store_application_credential_secret``,
    # the Cinder backend will use application credential authentication instead of
    # password authentication. This enables Zero Downtime Password Rotation (ZDPR)
    # support for Glance deployments using Cinder as the image backend.
    #
    # If both application credential options are set, they take precedence over
    # password authentication. If either option is not set, the driver falls back
    # to password authentication using ``cinder_store_password``.
    #
    # Possible values:
    #     * A valid application credential ID
    #
    # Related options:
    #     * cinder_store_auth_address
    #     * cinder_store_user_name
    #     * cinder_store_application_credential_secret
    #     * cinder_store_project_name
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_domain_name
    #
    #  (string value)
    #cinder_store_application_credential_id = <None>

    #
    # Application credential secret for authenticating against cinder.
    #
    # This must be used together with ``cinder_store_application_credential_id``.
    # When both options are set, the Cinder backend will use application credential
    # authentication instead of password authentication.
    #
    # Possible values:
    #     * A valid application credential secret
    #
    # Related options:
    #     * cinder_store_auth_address
    #     * cinder_store_user_name
    #     * cinder_store_application_credential_id
    #     * cinder_store_project_name
    #     * cinder_store_project_domain_name
    #     * cinder_store_user_domain_name
    #
    #  (string value)
    #cinder_store_application_credential_secret = <None>

    #
    # Project name where the image volume is stored in cinder.
    #
    # If this configuration option is not set, the project in current context is
    # used.
    #
    # This must be used with all the following related options.
    # If any of these are not specified (except domain-related options),
    # the user of the current context is used.
    #
    # Possible values:
    #     * A valid project name
    #
    # Related options:
    #     * ``cinder_store_auth_address``
    #     * ``cinder_store_user_name``
    #     * ``cinder_store_password``
    #     * ``cinder_store_project_domain_name``
    #     * ``cinder_store_user_domain_name``
    #
    #  (string value)
    #cinder_store_project_name = <None>

    #
    # Domain of the project where the image volume is stored in cinder.
    #
    # Possible values:
    #     * A valid domain name of the project specified by
    #       ``cinder_store_project_name``
    #
    # Related options:
    #     * ``cinder_store_auth_address``
    #     * ``cinder_store_user_name``
    #     * ``cinder_store_password``
    #     * ``cinder_store_project_domain_name``
    #     * ``cinder_store_user_domain_name``
    #
    #  (string value)
    #cinder_store_project_domain_name = Default

    #
    # Path to the rootwrap configuration file to use for running commands as root.
    #
    # The cinder store requires root privileges to operate the image volumes (for
    # connecting to iSCSI/FC volumes and reading/writing the volume data, etc.).
    # The configuration file should allow the required commands by cinder store and
    # os-brick library.
    #
    # Possible values:
    #     * Path to the rootwrap config file
    #
    # Related options:
    #     * None
    #
    #  (string value)
    #rootwrap_config = /etc/glance/rootwrap.conf

    #
    # Volume type that will be used for volume creation in cinder.
    #
    # Some cinder backends can have several volume types to optimize storage usage.
    # Adding this option allows an operator to choose a specific volume type
    # in cinder that can be optimized for images.
    #
    # If this is not set, then the default volume type specified in the cinder
    # configuration will be used for volume creation.
    #
    # Possible values:
    #     * A valid volume type from cinder
    #
    # Related options:
    #     * None
    #
    # NOTE: You cannot use an encrypted volume_type associated with an NFS backend.
    # An encrypted volume stored on an NFS backend will raise an exception whenever
    # glance_store tries to write or access image data stored in that volume.
    # Consult your Cinder administrator to determine an appropriate volume_type.
    #
    #  (string value)
    #cinder_volume_type = <None>

    #
    # 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.
    #
    # Possible values:
    #     * True or False
    #
    # Related options:
    #     * cinder_use_multipath
    #
    #  (boolean value)
    #cinder_enforce_multipath = false

    #
    # Flag to identify multipath is supported or not in the deployment.
    #
    # Set it to False if multipath is not supported.
    #
    # Possible values:
    #     * True or False
    #
    # Related options:
    #     * cinder_enforce_multipath
    #
    #  (boolean value)
    #cinder_use_multipath = false

    #
    # Directory where the NFS volume is mounted on the glance node.
    #
    # Possible values:
    #
    # * A string representing absolute path of mount point.
    #  (string value)
    #cinder_mount_point_base = /var/lib/glance/mnt

    #
    # If this is set to True, glance will perform an extend operation
    # on the attached volume. Only enable this option if the cinder
    # backend driver supports the functionality of extending online
    # (in-use) volumes. Supported from cinder microversion 3.42 and
    # onwards. By default, it is set to False.
    #
    # Possible values:
    #     * True or False
    #
    #  (boolean value)
    #cinder_do_extend_attached = false

    #
    # Maximum number of retry attempts for cinder attachment create operations.
    #
    # When creating a volume attachment, cinder may be unable to complete the
    # request due to transient issues (e.g., volume in transitional state). This
    # option specifies the maximum number of times to retry the attachment_create
    # operation before giving up.
    #
    # Possible values:
    #     * A positive integer
    #
    #  (integer value)
    # Minimum value: 1
    #cinder_attachment_retry_attempts = 5

    #
    # Directory to which the filesystem backend store writes images.
    #
    # Upon start up, Glance creates the directory if it doesn't already
    # exist and verifies write access to the user under which
    # ``glance-api`` runs. If the write access isn't available, a
    # ``BadStoreConfiguration`` exception is raised and the filesystem
    # store may not be available for adding new images.
    #
    # NOTE: This directory is used only when filesystem store is used as a
    # storage backend. Either ``filesystem_store_datadir`` or
    # ``filesystem_store_datadirs`` option must be specified in
    # ``glance-api.conf``. If both options are specified, a
    # ``BadStoreConfiguration`` will be raised and the filesystem store
    # may not be available for adding new images.
    #
    # Possible values:
    #     * A valid path to a directory
    #
    # Related options:
    #     * ``filesystem_store_datadirs``
    #     * ``filesystem_store_file_perm``
    #
    #  (string value)
    #filesystem_store_datadir = /var/lib/glance/images

    # DEPRECATED:
    # List of directories and their priorities to which the filesystem
    # backend store writes images.
    #
    # The filesystem store can be configured to store images in multiple
    # directories as opposed to using a single directory specified by the
    # ``filesystem_store_datadir`` configuration option. When using
    # multiple directories, each directory can be given an optional
    # priority to specify the preference order in which they should
    # be used. Priority is an integer that is concatenated to the
    # directory path with a colon where a higher value indicates higher
    # priority. When two directories have the same priority, the directory
    # with most free space is used. When no priority is specified, it
    # defaults to zero.
    #
    # More information on configuring filesystem store with multiple store
    # directories can be found at
    # https://docs.openstack.org/glance/latest/configuration/configuring.html
    #
    # NOTE: This directory is used only when filesystem store is used as a
    # storage backend. Either ``filesystem_store_datadir`` or
    # ``filesystem_store_datadirs`` option must be specified in
    # ``glance-api.conf``. If both options are specified, a
    # ``BadStoreConfiguration`` will be raised and the filesystem store
    # may not be available for adding new images.
    #
    # Possible values:
    #     * List of strings of the following form:
    #         * ``<a valid directory path>:<optional integer priority>``
    #
    # Related options:
    #     * ``filesystem_store_datadir``
    #     * ``filesystem_store_file_perm``
    #
    #  (multi valued)
    # This option is deprecated for removal since Flamingo.
    # Its value may be silently ignored in the future.
    # Reason:
    # Users willing to use multiple data directories should configure multiple
    # filesystem stores instead of using filesystem_store_datadirs.
    #
    # This option is scheduled for removal in the H development cycle.
    #filesystem_store_datadirs =

    #
    # Filesystem store metadata file.
    #
    # The path to a file which contains the metadata to be returned with any
    # location
    # associated with the filesystem store. Once this option is set, it is used for
    # new images created afterward only - previously existing images are not
    # affected.
    #
    # The file must contain a valid JSON object. The object should contain the keys
    # ``id`` and ``mountpoint``. The value for both keys should be a string.
    #
    # Possible values:
    #     * A valid path to the store metadata file
    #
    # Related options:
    #     * None
    #
    #  (string value)
    #filesystem_store_metadata_file = <None>

    #
    # File access permissions for the image files.
    #
    # Set the intended file access permissions for image data. This provides
    # a way to enable other services, e.g. Nova, to consume images directly
    # from the filesystem store. The users running the services that are
    # intended to be given access to could be made a member of the group
    # that owns the files created. Assigning a value less then or equal to
    # zero for this configuration option signifies that no changes be made
    # to the  default permissions. This value will be decoded as an octal
    # digit.
    #
    # For more information, please refer the documentation at
    # https://docs.openstack.org/glance/latest/configuration/configuring.html
    #
    # Possible values:
    #     * A valid file access permission
    #     * Zero
    #     * Any negative integer
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    #filesystem_store_file_perm = 0

    #
    # Chunk size, in bytes.
    #
    # The chunk size used when reading or writing image files. Raising this value
    # may improve the throughput but it may also slightly increase the memory usage
    # when handling a large number of requests.
    #
    # Possible Values:
    #     * Any positive integer value
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 1
    #filesystem_store_chunk_size = 65536

    #
    # Enable or not thin provisioning in this backend.
    #
    # This configuration option enable the feature of not really write null byte
    # sequences on the filesystem, the holes who can appear will automatically
    # be interpreted by the filesystem as null bytes, and do not really consume
    # your storage.
    # Enabling this feature will also speed up image upload and save network traffic
    # in addition to save space in the backend, as null bytes sequences are not
    # sent over the network.
    #
    # Possible Values:
    #     * True
    #     * False
    #
    # Related options:
    #     * None
    #
    #  (boolean value)
    #filesystem_thin_provisioning = false

    #
    # Timeout for all filesystem operations (seconds).
    #
    # Set to 0 to disable timeout protection (blocking IO, normal behavior).
    # Set > 0 to enable timeout protection with thread pool.
    # Recommended: 30 seconds for network storage, higher for slow networks.
    #
    # When timeout protection is enabled, filesystem operations like delete(),
    # get_size(), and _get_capacity_info() will be wrapped with timeout
    # protection. If an operation exceeds the timeout, a TimeoutError will be
    # raised.
    #
    # Possible values:
    #     * 0 (disabled, blocking IO)
    #     * Any positive integer (timeout in seconds)
    #
    # Related options:
    #     * filesystem_store_thread_pool_size
    #     * filesystem_store_threadpool_threshold
    #
    #  (integer value)
    # Minimum value: 0
    #filesystem_store_timeout = 0

    #
    # Thread pool size for timeout-protected operations.
    #
    # Only meaningful when filesystem_store_timeout > 0.
    # Ignored when filesystem_store_timeout = 0 (no thread pool is created).
    # Each store instance gets its own pool to avoid starvation.
    # Set based on expected concurrency and WSGI worker count.
    #
    # Possible values:
    #     * Any positive integer
    #
    # Related options:
    #     * filesystem_store_timeout
    #     * filesystem_store_threadpool_threshold
    #
    #  (integer value)
    # Minimum value: 1
    #filesystem_store_thread_pool_size = 10

    #
    # Thread pool usage threshold for warning logs (percentage).
    #
    # Only meaningful when filesystem_store_timeout > 0.
    # Ignored when filesystem_store_timeout = 0 (no thread pool is created).
    # When thread pool usage exceeds this threshold, a warning is logged
    # indicating that the pool is getting busy and may start blocking.
    #
    # Possible values:
    #     * 0-100 (percentage)
    #
    # Related options:
    #     * filesystem_store_timeout
    #     * filesystem_store_thread_pool_size
    #
    #  (integer value)
    # Minimum value: 0
    # Maximum value: 100
    #filesystem_store_threadpool_threshold = 75

    #
    # Path to the CA bundle file.
    #
    # This configuration option enables the operator to use a custom
    # Certificate Authority file to verify the remote server certificate. If
    # this option is set, the ``https_insecure`` option will be ignored and
    # the CA file specified will be used to authenticate the server
    # certificate and establish a secure connection to the server.
    #
    # Possible values:
    #     * A valid path to a CA file
    #
    # Related options:
    #     * https_insecure
    #
    #  (string value)
    #https_ca_certificates_file = <None>

    #
    # Set verification of the remote server certificate.
    #
    # This configuration option takes in a boolean value to determine
    # whether or not to verify the remote server certificate. If set to
    # True, the remote server certificate is not verified. If the option is
    # set to False, then the default CA truststore is used for verification.
    #
    # This option is ignored if ``https_ca_certificates_file`` is set.
    # The remote server certificate will then be verified using the file
    # specified using the ``https_ca_certificates_file`` option.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * https_ca_certificates_file
    #
    #  (boolean value)
    #https_insecure = true

    #
    # The http/https proxy information to be used to connect to the remote
    # server.
    #
    # This configuration option specifies the http/https proxy information
    # that should be used to connect to the remote server. The proxy
    # information should be a key value pair of the scheme and proxy, for
    # example, http:10.0.0.1:3128. You can also specify proxies for multiple
    # schemes by separating the key value pairs with a comma, for example,
    # http:10.0.0.1:3128, https:10.0.0.1:1080.
    #
    # Possible values:
    #     * A comma separated list of scheme:proxy pairs as described above
    #
    # Related options:
    #     * None
    #
    #  (dict value)
    #http_proxy_information =

    #
    # Size, in megabytes, to chunk RADOS images into.
    #
    # Provide an integer value representing the size in megabytes to chunk
    # Glance images into. The default chunk size is 8 megabytes. For optimal
    # performance, the value should be a power of two.
    #
    # When Ceph's RBD object storage system is used as the storage backend
    # for storing Glance images, the images are chunked into objects of the
    # size set using this option. These chunked objects are then stored
    # across the distributed block data store to use for Glance.
    #
    # Possible Values:
    #     * Any positive integer value
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 1
    #rbd_store_chunk_size = 8

    #
    # RADOS pool in which images are stored.
    #
    # When RBD is used as the storage backend for storing Glance images, the
    # images are stored by means of logical grouping of the objects (chunks
    # of images) into a ``pool``. Each pool is defined with the number of
    # placement groups it can contain. The default pool that is used is
    # 'images'.
    #
    # More information on the RBD storage backend can be found here:
    # http://ceph.com/planet/how-data-is-stored-in-ceph-cluster/
    #
    # Possible Values:
    #     * A valid pool name
    #
    # Related options:
    #     * None
    #
    #  (string value)
    #rbd_store_pool = images

    #
    # RADOS user to authenticate as.
    #
    # This configuration option takes in the RADOS user to authenticate as.
    # This is only needed when RADOS authentication is enabled and is
    # applicable only if the user is using Cephx authentication. If the
    # value for this option is not set by the user or is set to None, a
    # default value will be chosen, which will be based on the client.
    # section in rbd_store_ceph_conf.
    #
    # Possible Values:
    #     * A valid RADOS user
    #
    # Related options:
    #     * rbd_store_ceph_conf
    #
    #  (string value)
    #rbd_store_user = <None>

    #
    # Ceph configuration file path.
    #
    # This configuration option specifies the path to the Ceph configuration
    # file to be used. If the value for this option is not set by the user
    # or is set to the empty string, librados will read the standard ceph.conf
    # file by searching the default Ceph configuration file locations in
    # sequential order.  See the Ceph documentation for details.
    #
    # NOTE: If using Cephx authentication, this file should include a reference
    # to the right keyring in a client.<USER> section
    #
    # NOTE 2: If you leave this option empty (the default), the actual Ceph
    # configuration file used may change depending on what version of librados
    # is being used.  If it is important for you to know exactly which configuration
    # file is in effect, you may specify that file here using this option.
    #
    # Possible Values:
    #     * A valid path to a configuration file
    #
    # Related options:
    #     * rbd_store_user
    #
    #  (string value)
    #rbd_store_ceph_conf =

    #
    # Timeout value for connecting to Ceph cluster.
    #
    # This configuration option takes in the timeout value in seconds used
    # when connecting to the Ceph cluster i.e. it sets the time to wait for
    # glance-api before closing the connection. This prevents glance-api
    # hangups during the connection to RBD. If the value for this option
    # is set to less than 0, no timeout is set and the default librados value
    # is used.
    #
    # Possible Values:
    #     * Any integer value
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    #rados_connect_timeout = -1

    #
    # Enable or not thin provisioning in this backend.
    #
    # This configuration option enable the feature of not really write null byte
    # sequences on the RBD backend, the holes who can appear will automatically
    # be interpreted by Ceph as null bytes, and do not really consume your storage.
    # Enabling this feature will also speed up image upload and save network traffic
    # in addition to save space in the backend, as null bytes sequences are not
    # sent over the network.
    #
    # Possible Values:
    #     * True
    #     * False
    #
    # Related options:
    #     * None
    #
    #  (boolean value)
    #rbd_thin_provisioning = false

    #
    # The host where the S3 server is listening.
    #
    # This configuration option sets the host of the S3 or S3 compatible storage
    # Server. This option is required when using the S3 storage backend.
    # The host can contain a DNS name (e.g. s3.amazonaws.com, my-object-storage.com)
    # or an IP address (127.0.0.1).
    #
    # Possible values:
    #     * A valid DNS name
    #     * A valid IPv4 address
    #
    # Related Options:
    #     * s3_store_access_key
    #     * s3_store_secret_key
    #
    #  (string value)
    #s3_store_host = <None>

    #
    # The S3 region name.
    #
    # This parameter will set the region_name used by boto.
    # If this parameter is not set, we we will try to compute it from the
    # s3_store_host.
    #
    # Possible values:
    #     * A valid region name
    #
    # Related Options:
    #     * s3_store_host
    #
    #  (string value)
    #s3_store_region_name =

    #
    # The S3 query token access key.
    #
    # This configuration option takes the access key for authenticating with the
    # Amazon S3 or S3 compatible storage server. This option is required when using
    # the S3 storage backend.
    #
    # Possible values:
    #     * Any string value that is the access key for a user with appropriate
    #       privileges
    #
    # Related Options:
    #     * s3_store_host
    #     * s3_store_secret_key
    #
    #  (string value)
    #s3_store_access_key = <None>

    #
    # The S3 query token secret key.
    #
    # This configuration option takes the secret key for authenticating with the
    # Amazon S3 or S3 compatible storage server. This option is required when using
    # the S3 storage backend.
    #
    # Possible values:
    #     * Any string value that is a secret key corresponding to the access key
    #       specified using the ``s3_store_host`` option
    #
    # Related Options:
    #     * s3_store_host
    #     * s3_store_access_key
    #
    #  (string value)
    #s3_store_secret_key = <None>

    #
    # The S3 bucket to be used to store the Glance data.
    #
    # This configuration option specifies where the glance images will be stored
    # in the S3. If ``s3_store_create_bucket_on_put`` is set to true, it will be
    # created automatically even if the bucket does not exist.
    #
    # Possible values:
    #     * Any string value
    #
    # Related Options:
    #     * s3_store_create_bucket_on_put
    #     * s3_store_bucket_url_format
    #
    #  (string value)
    #s3_store_bucket = <None>

    #
    # Determine whether S3 should create a new bucket.
    #
    # This configuration option takes boolean value to indicate whether Glance
    # should
    # create a new bucket to S3 if it does not exist.
    #
    # Possible values:
    #     * Any Boolean value
    #
    # Related Options:
    #     * None
    #
    #  (boolean value)
    #s3_store_create_bucket_on_put = false

    #
    # The S3 calling format used to determine the object.
    #
    # This configuration option takes access model that is used to specify the
    # address of an object in an S3 bucket.
    #
    # NOTE:
    # In ``path``-style, the endpoint for the object looks like
    # 'https://s3.amazonaws.com/bucket/example.img'.
    # And in ``virtual``-style, the endpoint for the object looks like
    # 'https://bucket.s3.amazonaws.com/example.img'.
    # If you do not follow the DNS naming convention in the bucket name, you can
    # get objects in the path style, but not in the virtual style.
    #
    # Possible values:
    #     * Any string value of ``auto``, ``virtual``, or ``path``
    #
    # Related Options:
    #     * s3_store_bucket
    #
    #  (string value)
    #s3_store_bucket_url_format = auto

    #
    # What size, in MB, should S3 start chunking image files and do a multipart
    # upload in S3.
    #
    # This configuration option takes a threshold in MB to determine whether to
    # upload the image to S3 as is or to split it (Multipart Upload).
    #
    # Note: You can only split up to 10,000 images.
    #
    # Possible values:
    #     * Any positive integer value or zero
    #
    # Related Options:
    #     * s3_store_large_object_chunk_size
    #     * s3_store_thread_pools
    #
    #  (integer value)
    # Minimum value: 0
    #s3_store_large_object_size = 100

    #
    # What multipart upload part size, in MB, should S3 use when uploading parts.
    #
    # This configuration option takes the image split size in MB for Multipart
    # Upload.
    #
    # Note: You can only split up to 10,000 images.
    #
    # Possible values:
    #     * Any positive integer value (must be greater than or equal to 5M)
    #
    # Related Options:
    #     * s3_store_large_object_size
    #     * s3_store_thread_pools
    #
    #  (integer value)
    #s3_store_large_object_chunk_size = 10

    #
    # The number of thread pools to perform a multipart upload in S3.
    #
    # This configuration option takes the number of thread pools when performing a
    # Multipart Upload.
    #
    # Possible values:
    #     * Any positive integer value
    #
    # Related Options:
    #     * s3_store_large_object_size
    #     * s3_store_large_object_chunk_size
    #
    #  (integer value)
    #s3_store_thread_pools = 10

    #
    # The path to the CA cert bundle to use. The default value (an empty string)
    # forces the use of the default CA cert bundle used by botocore.
    #
    # Possible values:
    #     * A path to the CA cert bundle to use
    #     * An empty string to use the default CA cert bundle used by botocore
    #
    #  (string value)
    #s3_store_cacert =

    #
    # Turn on S3 data integrity protections by enabling request checksum calculation
    # and response checksum validation. Setting this to False is the same as setting
    # the AWS_REQUEST_CHECKSUM_CALCULATION and AWS_RESPONSE_CHECKSUM_VALIDATION
    # environment variables to "when_required". Setting this to True gives the user
    # fine-grained control over the data integrity protections by using the
    # s3_store_request_checksum_calculation and
    # s3_store_response_checksum_validation
    # options.
    #
    # This defaults to False as to not change the default behaviour in glance_store,
    # which prevents upload failures when using S3-compatible storage backends that
    # do not implement S3 data integrity protection.
    #
    # Related Options:
    #     * s3_store_request_checksum_calculation
    #     * s3_store_response_checksum_validation
    #  (boolean value)
    #s3_store_enable_data_integrity_protection = false

    #
    # Controls when checksums are calculated for S3 upload requests.
    #
    # This configuration option provides fine-grained control over request checksum
    # calculation behavior. It maps directly to the botocore Config parameter
    # request_checksum_calculation.
    #
    # Possible values:
    #     * when_required - Only calculate checksums when required by the operation
    #     * when_supported - Calculate checksums when supported by the operation
    #
    # This option is only used when s3_store_enable_data_integrity_protection is
    # set to True. When s3_store_enable_data_integrity_protection is False, both
    # request and response checksums use 'when_required' regardless of this setting.
    #
    # Related Options:
    #     * s3_store_response_checksum_validation
    #     * s3_store_enable_data_integrity_protection
    #
    #  (string value)
    # Possible values:
    # when_required - <No description provided>
    # when_supported - <No description provided>
    #s3_store_request_checksum_calculation = when_required

    #
    # Controls when checksums are validated for S3 download responses.
    #
    # This configuration option provides fine-grained control over response checksum
    # validation behavior. It maps directly to the botocore Config parameter
    # response_checksum_validation.
    #
    # Possible values:
    #     * when_required - Only validate checksums when required by the operation
    #     * when_supported - Validate checksums when supported by the operation
    #
    # This option is only used when s3_store_enable_data_integrity_protection is
    # set to True. When s3_store_enable_data_integrity_protection is False, both
    # request and response checksums use 'when_required' regardless of this setting.
    #
    # Related Options:
    #     * s3_store_request_checksum_calculation
    #     * s3_store_enable_data_integrity_protection
    #
    #  (string value)
    # Possible values:
    # when_required - <No description provided>
    # when_supported - <No description provided>
    #s3_store_response_checksum_validation = when_required

    #
    # Set verification of the server certificate.
    #
    # This boolean determines whether or not to verify the server
    # certificate. If this option is set to True, swiftclient won't check
    # for a valid SSL certificate when authenticating. If the option is set
    # to False, then the default CA truststore is used for verification.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * swift_store_cacert
    #
    #  (boolean value)
    #swift_store_auth_insecure = false

    #
    # Path to the CA bundle file.
    #
    # This configuration option enables the operator to specify the path to
    # a custom Certificate Authority file for SSL verification when
    # connecting to Swift.
    #
    # Possible values:
    #     * A valid path to a CA file
    #
    # Related options:
    #     * swift_store_auth_insecure
    #
    #  (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #swift_store_cacert = /etc/ssl/certs/ca-certificates.crt

    #
    # The region of Swift endpoint to use by Glance.
    #
    # Provide a string value representing a Swift region where Glance
    # can connect to for image storage. By default, there is no region
    # set.
    #
    # When Glance uses Swift as the storage backend to store images
    # for a specific tenant that has multiple endpoints, setting of a
    # Swift region with ``swift_store_region`` allows Glance to connect
    # to Swift in the specified region as opposed to a single region
    # connectivity.
    #
    # This option can be configured for both single-tenant and
    # multi-tenant storage.
    #
    # NOTE: Setting the region with ``swift_store_region`` is
    # tenant-specific and is necessary ``only if`` the tenant has
    # multiple endpoints across different regions.
    #
    # Possible values:
    #     * A string value representing a valid Swift region.
    #
    # Related Options:
    #     * None
    #
    #  (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #swift_store_region = RegionTwo

    #
    # The URL endpoint to use for Swift backend storage.
    #
    # Provide a string value representing the URL endpoint to use for
    # storing Glance images in Swift store. By default, an endpoint
    # is not set and the storage URL returned by ``auth`` is used.
    # Setting an endpoint with ``swift_store_endpoint`` overrides the
    # storage URL and is used for Glance image storage.
    #
    # NOTE: The URL should include the path up to, but excluding the
    # container. The location of an object is obtained by appending
    # the container and object to the configured URL.
    #
    # Possible values:
    #     * String value representing a valid URL path up to a Swift container
    #
    # Related Options:
    #     * None
    #
    #  (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #swift_store_endpoint = https://swift.openstack.example.org/v1/path_not_including_container_name

    #
    # Endpoint Type of Swift service.
    #
    # This string value indicates the endpoint type to use to fetch the
    # Swift endpoint. The endpoint type determines the actions the user will
    # be allowed to perform, for instance, reading and writing to the Store.
    #
    # Possible values:
    #     * publicURL
    #     * adminURL
    #     * internalURL
    #
    # Related options:
    #     * swift_store_endpoint
    #
    #  (string value)
    # Possible values:
    # publicURL - <No description provided>
    # adminURL - <No description provided>
    # internalURL - <No description provided>
    #swift_store_endpoint_type = publicURL

    #
    # Type of Swift service to use.
    #
    # Provide a string value representing the service type to use for
    # storing images while using Swift backend storage. The default
    # service type is set to ``object-store``.
    #
    # Possible values:
    #     * A string representing a valid service type for Swift storage.
    #
    # Related Options:
    #     * None
    #
    #  (string value)
    #swift_store_service_type = object-store

    #
    # Name of single container to store images/name prefix for multiple containers
    #
    # When a single container is being used to store images, this configuration
    # option indicates the container within the Glance account to be used for
    # storing all images. When multiple containers are used to store images, this
    # will be the name prefix for all containers. Usage of single/multiple
    # containers can be controlled using the configuration option
    # ``swift_store_multiple_containers_seed``.
    #
    # When using multiple containers, the containers will be named after the value
    # set for this configuration option with the first N chars of the image UUID
    # as the suffix delimited by an underscore (where N is specified by
    # ``swift_store_multiple_containers_seed``).
    #
    # Example: if the seed is set to 3 and swift_store_container = ``glance``, then
    # an image with UUID ``fdae39a1-bac5-4238-aba4-69bcc726e848`` would be placed in
    # the container ``glance_fda``. All dashes in the UUID are included when
    # creating the container name but do not count toward the character limit, so
    # when N=10 the container name would be ``glance_fdae39a1-ba.``
    #
    # Possible values:
    #     * If using single container, this configuration option can be any string
    #       that is a valid swift container name in Glance's Swift account
    #     * If using multiple containers, this configuration option can be any
    #       string as long as it satisfies the container naming rules enforced by
    #       Swift. The value of ``swift_store_multiple_containers_seed`` should be
    #       taken into account as well.
    #
    # Related options:
    #     * ``swift_store_multiple_containers_seed``
    #     * ``swift_store_multi_tenant``
    #     * ``swift_store_create_container_on_put``
    #
    #  (string value)
    #swift_store_container = glance

    #
    # The size threshold, in MB, after which Glance will start segmenting image
    # data.
    #
    # Swift has an upper limit on the size of a single uploaded object. By default,
    # this is 5GB. To upload objects bigger than this limit, objects are segmented
    # into multiple smaller objects that are tied together with a manifest file.
    # For more detail, refer to
    # https://docs.openstack.org/swift/latest/overview_large_objects.html
    #
    # This configuration option specifies the size threshold over which the Swift
    # driver will start segmenting image data into multiple smaller files.
    # Currently, the Swift driver only supports creating Dynamic Large Objects.
    #
    # NOTE: This should be set by taking into account the large object limit
    # enforced by the Swift cluster in consideration.
    #
    # Possible values:
    #     * A positive integer that is less than or equal to the large object limit
    #       enforced by the Swift cluster in consideration.
    #
    # Related options:
    #     * ``swift_store_large_object_chunk_size``
    #
    #  (integer value)
    # Minimum value: 1
    #swift_store_large_object_size = 5120

    #
    # The maximum size, in MB, of the segments when image data is segmented.
    #
    # When image data is segmented to upload images that are larger than the limit
    # enforced by the Swift cluster, image data is broken into segments that are no
    # bigger than the size specified by this configuration option.
    # Refer to ``swift_store_large_object_size`` for more detail.
    #
    # For example: if ``swift_store_large_object_size`` is 5GB and
    # ``swift_store_large_object_chunk_size`` is 1GB, an image of size 6.2GB will be
    # segmented into 7 segments where the first six segments will be 1GB in size and
    # the seventh segment will be 0.2GB.
    #
    # Possible values:
    #     * A positive integer that is less than or equal to the large object limit
    #       enforced by Swift cluster in consideration.
    #
    # Related options:
    #     * ``swift_store_large_object_size``
    #
    #  (integer value)
    # Minimum value: 1
    #swift_store_large_object_chunk_size = 200

    #
    # Create container, if it doesn't already exist, when uploading image.
    #
    # At the time of uploading an image, if the corresponding container doesn't
    # exist, it will be created provided this configuration option is set to True.
    # By default, it won't be created. This behavior is applicable for both single
    # and multiple containers mode.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * None
    #
    #  (boolean value)
    #swift_store_create_container_on_put = false

    #
    # Store images in tenant's Swift account.
    #
    # This enables multi-tenant storage mode which causes Glance images to be stored
    # in tenant specific Swift accounts. If this is disabled, Glance stores all
    # images in its own account. More details multi-tenant store can be found at
    # https://wiki.openstack.org/wiki/GlanceSwiftTenantSpecificStorage
    #
    # NOTE: If using multi-tenant swift store, please make sure
    # that you do not set a swift configuration file with the
    # 'swift_store_config_file' option.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * swift_store_config_file
    #
    #  (boolean value)
    #swift_store_multi_tenant = false

    #
    # Seed indicating the number of containers to use for storing images.
    #
    # When using a single-tenant store, images can be stored in one or more than one
    # containers. When set to 0, all images will be stored in one single container.
    # When set to an integer value between 1 and 32, multiple containers will be
    # used to store images. This configuration option will determine how many
    # containers are created. The total number of containers that will be used is
    # equal to 16^N, so if this config option is set to 2, then 16^2=256 containers
    # will be used to store images.
    #
    # Please refer to ``swift_store_container`` for more detail on the naming
    # convention. More detail about using multiple containers can be found at
    # https://specs.openstack.org/openstack/glance-specs/specs/kilo/swift-store-
    # multiple-containers.html
    #
    # NOTE: This is used only when swift_store_multi_tenant is disabled.
    #
    # Possible values:
    #     * A non-negative integer less than or equal to 32
    #
    # Related options:
    #     * ``swift_store_container``
    #     * ``swift_store_multi_tenant``
    #     * ``swift_store_create_container_on_put``
    #
    #  (integer value)
    # Minimum value: 0
    # Maximum value: 32
    #swift_store_multiple_containers_seed = 0

    #
    # List of tenants that will be granted admin access.
    #
    # This is a list of tenants that will be granted read/write access on
    # all Swift containers created by Glance in multi-tenant mode. The
    # default value is an empty list.
    #
    # Possible values:
    #     * A comma separated list of strings representing UUIDs of Keystone
    #       projects/tenants
    #
    # Related options:
    #     * None
    #
    #  (list value)
    #swift_store_admin_tenants =

    #
    # SSL layer compression for HTTPS Swift requests.
    #
    # Provide a boolean value to determine whether or not to compress
    # HTTPS Swift requests for images at the SSL layer. By default,
    # compression is enabled.
    #
    # When using Swift as the backend store for Glance image storage,
    # SSL layer compression of HTTPS Swift requests can be set using
    # this option. If set to False, SSL layer compression of HTTPS
    # Swift requests is disabled. Disabling this option may improve
    # performance for images which are already in a compressed format,
    # for example, qcow2.
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related Options:
    #     * None
    #
    #  (boolean value)
    #swift_store_ssl_compression = true

    #
    # The number of times a Swift download will be retried before the
    # request fails.
    #
    # Provide an integer value representing the number of times an image
    # download must be retried before erroring out. The default value is
    # zero (no retry on a failed image download). When set to a positive
    # integer value, ``swift_store_retry_get_count`` ensures that the
    # download is attempted this many more times upon a download failure
    # before sending an error message.
    #
    # Possible values:
    #     * Zero
    #     * Positive integer value
    #
    # Related Options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 0
    #swift_store_retry_get_count = 0

    #
    # Time in seconds defining the size of the window in which a new
    # token may be requested before the current token is due to expire.
    #
    # Typically, the Swift storage driver fetches a new token upon the
    # expiration of the current token to ensure continued access to
    # Swift. However, some Swift transactions (like uploading image
    # segments) may not recover well if the token expires on the fly.
    #
    # Hence, by fetching a new token before the current token expiration,
    # we make sure that the token does not expire or is close to expiry
    # before a transaction is attempted. By default, the Swift storage
    # driver requests for a new token 60 seconds or less before the
    # current token expiration.
    #
    # Possible values:
    #     * Zero
    #     * Positive integer value
    #
    # Related Options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 0
    #swift_store_expire_soon_interval = 60

    #
    # Use trusts for multi-tenant Swift store.
    #
    # This option instructs the Swift store to create a trust for each
    # add/get request when the multi-tenant store is in use. Using trusts
    # allows the Swift store to avoid problems that can be caused by an
    # authentication token expiring during the upload or download of data.
    #
    # By default, ``swift_store_use_trusts`` is set to ``True``(use of
    # trusts is enabled). If set to ``False``, a user token is used for
    # the Swift connection instead, eliminating the overhead of trust
    # creation.
    #
    # NOTE: This option is considered only when
    # ``swift_store_multi_tenant`` is set to ``True``
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * swift_store_multi_tenant
    #
    #  (boolean value)
    #swift_store_use_trusts = true

    #
    # Buffer image segments before upload to Swift.
    #
    # Provide a boolean value to indicate whether or not Glance should
    # buffer image data to disk while uploading to swift. This enables
    # Glance to resume uploads on error.
    #
    # NOTES:
    # When enabling this option, one should take great care as this
    # increases disk usage on the API node. Be aware that depending
    # upon how the file system is configured, the disk space used
    # for buffering may decrease the actual disk space available for
    # the glance image cache.  Disk utilization will cap according to
    # the following equation:
    # (``swift_store_large_object_chunk_size`` * ``workers`` * 1000)
    #
    # Possible values:
    #     * True
    #     * False
    #
    # Related options:
    #     * swift_upload_buffer_dir
    #
    #  (boolean value)
    #swift_buffer_on_upload = false

    #
    # Reference to default Swift account/backing store parameters.
    #
    # Provide a string value representing a reference to the default set
    # of parameters required for using swift account/backing store for
    # image storage. The default reference value for this configuration
    # option is 'ref1'. This configuration option dereferences the
    # parameters and facilitates image storage in Swift storage backend
    # every time a new image is added.
    #
    # Possible values:
    #     * A valid string value
    #
    # Related options:
    #     * None
    #
    #  (string value)
    #default_swift_reference = ref1

    # DEPRECATED: The authentication version to be used. Currently The only valid
    # version is 3. (string value)
    # Possible values:
    # 3 - <No description provided>
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason:
    # This option is kept for backword-compatibility reasons but is no longer
    # required, because only the single version (3) is supported now.
    #swift_store_auth_version = 3

    # DEPRECATED: The address where the Swift authentication service is listening.
    # (string value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason:
    # The option 'auth_address' in the Swift back-end configuration file is
    # used instead.
    #swift_store_auth_address = <None>

    # DEPRECATED: The user to authenticate against the Swift authentication service.
    # (string value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason:
    # The option 'user' in the Swift back-end configuration file is set instead.
    #swift_store_user = <None>

    # DEPRECATED: Auth key for the user authenticating against the Swift
    # authentication service. (string value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason:
    # The option 'key' in the Swift back-end configuration file is used
    # to set the authentication key instead.
    #swift_store_key = <None>

    #
    # Application credential ID for authenticating against Swift.
    #
    # This option specifies the application credential ID to use for
    # authenticating with the Swift backend. When set along with
    # swift_store_application_credential_secret, the Swift driver will
    # use V3ApplicationCredential authentication instead of password
    # authentication.
    #
    # This enables Zero Downtime Password Rotation (ZDPR) support for
    # Swift backend operations, as application credentials are not
    # affected by password rotation.
    #
    # If not set, the driver falls back to password authentication
    # using swift_store_user and swift_store_key.
    #
    # Possible values:
    #     * A valid application credential ID string
    #
    # Related options:
    #     * swift_store_application_credential_secret
    #
    #  (string value)
    #swift_store_application_credential_id = <None>

    #
    # Application credential secret for authenticating against Swift.
    #
    # This option specifies the application credential secret to use
    # for authenticating with the Swift backend. When set along with
    # swift_store_application_credential_id, the Swift driver will
    # use V3ApplicationCredential authentication instead of password
    # authentication.
    #
    # This enables Zero Downtime Password Rotation (ZDPR) support for
    # Swift backend operations, as application credentials are not
    # affected by password rotation.
    #
    # If not set, the driver falls back to password authentication
    # using swift_store_user and swift_store_key.
    #
    # Possible values:
    #     * A valid application credential secret string
    #
    # Related options:
    #     * swift_store_application_credential_id
    #
    #  (string value)
    #swift_store_application_credential_secret = <None>

    # DEPRECATED: Project name for authenticating with application credentials
    # against the Swift authentication service. (string value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason:
    # The option 'project_name' in the Swift back-end configuration file is
    # used instead.
    #swift_store_project_name = <None>

    # DEPRECATED: Project ID for authenticating with application credentials against
    # the Swift authentication service. (string value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason:
    # The option 'project_id' in the Swift back-end configuration file is
    # used instead.
    #swift_store_project_id = <None>

    #
    # Absolute path to the file containing the swift account(s)
    # configurations.
    #
    # Include a string value representing the path to a configuration
    # file that has references for each of the configured Swift
    # account(s)/backing stores. By default, no file path is specified
    # and customized Swift referencing is disabled. Configuring this
    # option is highly recommended while using Swift storage backend for
    # image storage as it avoids storage of credentials in the database.
    #
    # NOTE: Please do not configure this option if you have set
    # ``swift_store_multi_tenant`` to ``True``.
    #
    # Possible values:
    #     * String value representing an absolute path on the glance-api
    #       node
    #
    # Related options:
    #     * swift_store_multi_tenant
    #
    #  (string value)
    #swift_store_config_file = <None>

    #
    # Directory to buffer image segments before upload to Swift.
    #
    # Provide a string value representing the absolute path to the
    # directory on the glance node where image segments will be
    # buffered briefly before they are uploaded to swift.
    #
    # NOTES:
    #     * This is required only when the configuration option
    #       ``swift_buffer_on_upload`` is set to True.
    #     * This directory should be provisioned keeping in mind the
    #       ``swift_store_large_object_chunk_size`` and the maximum
    #       number of images that could be uploaded simultaneously by
    #       a given glance node.
    #
    # Possible values:
    #     * String value representing an absolute directory path
    #
    # Related options:
    #     * swift_buffer_on_upload
    #     * swift_store_large_object_chunk_size
    #
    #  (string value)
    #swift_upload_buffer_dir = <None>

    #
    # Address of the ESX/ESXi or vCenter Server target system.
    #
    # This configuration option sets the address of the ESX/ESXi or vCenter
    # Server target system. This option is required when using the VMware
    # storage backend. The address can contain an IP address (127.0.0.1) or
    # a DNS name (www.my-domain.com).
    #
    # Possible Values:
    #     * A valid IPv4 or IPv6 address
    #     * A valid DNS name
    #
    # Related options:
    #     * vmware_server_username
    #     * vmware_server_password
    #
    #  (host address value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #vmware_server_host = 127.0.0.1

    #
    # Server username.
    #
    # This configuration option takes the username for authenticating with
    # the VMware ESX/ESXi or vCenter Server. This option is required when
    # using the VMware storage backend.
    #
    # Possible Values:
    #     * Any string that is the username for a user with appropriate
    #       privileges
    #
    # Related options:
    #     * vmware_server_host
    #     * vmware_server_password
    #
    #  (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #vmware_server_username = root

    #
    # Server password.
    #
    # This configuration option takes the password for authenticating with
    # the VMware ESX/ESXi or vCenter Server. This option is required when
    # using the VMware storage backend.
    #
    # Possible Values:
    #     * Any string that is a password corresponding to the username
    #       specified using the "vmware_server_username" option
    #
    # Related options:
    #     * vmware_server_host
    #     * vmware_server_username
    #
    #  (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #vmware_server_password = vmware

    #
    # The number of VMware API retries.
    #
    # This configuration option specifies the number of times the VMware
    # ESX/VC server API must be retried upon connection related issues or
    # server API call overload. It is not possible to specify 'retry
    # forever'.
    #
    # Possible Values:
    #     * Any positive integer value
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 1
    #vmware_api_retry_count = 10

    #
    # Interval in seconds used for polling remote tasks invoked on VMware
    # ESX/VC server.
    #
    # This configuration option takes in the sleep time in seconds for polling an
    # on-going async task as part of the VMWare ESX/VC server API call.
    #
    # Possible Values:
    #     * Any positive integer value
    #
    # Related options:
    #     * None
    #
    #  (integer value)
    # Minimum value: 1
    #vmware_task_poll_interval = 5

    #
    # The directory where the glance images will be stored in the datastore.
    #
    # This configuration option specifies the path to the directory where the
    # glance images will be stored in the VMware datastore. If this option
    # is not set,  the default directory where the glance images are stored
    # is openstack_glance.
    #
    # Possible Values:
    #     * Any string that is a valid path to a directory
    #
    # Related options:
    #     * None
    #
    #  (string value)
    #vmware_store_image_dir = /openstack_glance

    #
    # Set verification of the ESX/vCenter server certificate.
    #
    # This configuration option takes a boolean value to determine
    # whether or not to verify the ESX/vCenter server certificate. If this
    # option is set to True, the ESX/vCenter server certificate is not
    # verified. If this option is set to False, then the default CA
    # truststore is used for verification.
    #
    # This option is ignored if the "vmware_ca_file" option is set. In that
    # case, the ESX/vCenter server certificate will then be verified using
    # the file specified using the "vmware_ca_file" option .
    #
    # Possible Values:
    #     * True
    #     * False
    #
    # Related options:
    #     * vmware_ca_file
    #
    #  (boolean value)
    # Deprecated group/name - [glance_store]/vmware_api_insecure
    #vmware_insecure = false

    #
    # Absolute path to the CA bundle file.
    #
    # This configuration option enables the operator to use a custom
    # Cerificate Authority File to verify the ESX/vCenter certificate.
    #
    # If this option is set, the "vmware_insecure" option will be ignored
    # and the CA file specified will be used to authenticate the ESX/vCenter
    # server certificate and establish a secure connection to the server.
    #
    # Possible Values:
    #     * Any string that is a valid absolute path to a CA file
    #
    # Related options:
    #     * vmware_insecure
    #
    #  (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #vmware_ca_file = /etc/ssl/certs/ca-certificates.crt

    #
    # The datastores where the image can be stored.
    #
    # This configuration option specifies the datastores where the image can
    # be stored in the VMWare store backend. This option may be specified
    # multiple times for specifying multiple datastores. The datastore name
    # should be specified after its datacenter path, separated by ":". An
    # optional weight may be given after the datastore name, separated again
    # by ":" to specify the priority. Thus, the required format becomes
    # <datacenter_path>:<datastore_name>:<optional_weight>.
    #
    # When adding an image, the datastore with highest weight will be
    # selected, unless there is not enough free space available in cases
    # where the image size is already known. If no weight is given, it is
    # assumed to be zero and the directory will be considered for selection
    # last. If multiple datastores have the same weight, then the one with
    # the most free space available is selected.
    #
    # Possible Values:
    #     * Any string of the format:
    #       <datacenter_path>:<datastore_name>:<optional_weight>
    #
    # Related options:
    #    * None
    #
    #  (multi valued)
    #vmware_datastores =

    [os_brick]

    #
    # From os_brick
    #

    # Directory to use for os-brick lock files. Defaults to
    # oslo_concurrency.lock_path which is a sensible default for compute nodes, but
    # not for HCI deployments or controllers where Glance uses Cinder as a backend,
    # as locks should use the same directory. (string value)
    #lock_path = <None>

    # Number of attempts for the multipath device to be ready for I/O after it was
    # created. Readiness is checked with ``multipath -C``. See related
    # ``wait_mpath_device_interval`` config option. (integer value)
    # Minimum value: 1
    #wait_mpath_device_attempts = 4

    # Interval value to wait for multipath device to be ready for I/O. Max number of
    # attempts is set in ``wait_mpath_device_attempts``. Time in seconds to wait for
    # each retry is ``base ^ attempt * interval``, so for 4 attempts (1 attempt 3
    # retries) and 1 second interval will yield: 2, 4 and 8 seconds. Note that there
    # is no wait before first attempt. (integer value)
    # Minimum value: 1
    #wait_mpath_device_interval = 1

    [oslo_policy]

    #
    # From oslo.policy
    #

    # This option controls whether or not to use old deprecated defaults when
    # evaluating policies. If ``True``, the old deprecated defaults are not going to
    # be evaluated. This means if any existing token is allowed for old defaults but
    # is disallowed for new defaults, it will be disallowed. If ``False``, the
    # deprecated policy check string is logically OR'd with the new policy check
    # string, allowing for a graceful upgrade experience between releases with new
    # policies, which is the default behavior. (boolean value)
    #enforce_new_defaults = true

    # The relative or absolute path of a file that maps roles to permissions for a
    # given service. Relative paths must be specified in relation to the
    # configuration file setting this option. (string value)
    #policy_file = policy.yaml

    # Default rule. Enforced when a requested rule is not found. (string value)
    #policy_default_rule = default

    # Directories where policy configuration files are stored. They can be relative
    # to any directory in the search path defined by the config_dir option, or
    # absolute paths. The file defined by policy_file must exist for these
    # directories to be searched.  Missing or empty directories are ignored. (multi
    # valued)
    #policy_dirs = policy.d

    # Content Type to send and receive data for REST based policy check (string
    # value)
    # Possible values:
    # application/x-www-form-urlencoded - <No description provided>
    # application/json - <No description provided>
    #remote_content_type = application/x-www-form-urlencoded

    # server identity verification for REST based policy check (boolean value)
    #remote_ssl_verify_server_crt = false

    # Absolute path to ca cert file for REST based policy check (string value)
    #remote_ssl_ca_crt_file = <None>

    # Absolute path to client cert for REST based policy check (string value)
    #remote_ssl_client_crt_file = <None>

    # Absolute path client key file REST based policy check (string value)
    #remote_ssl_client_key_file = <None>

    # Timeout in seconds for REST based policy check (floating point value)
    # Minimum value: 0
    #remote_timeout = 60

## Sample Policy File for Glance

The following is a Glance sample policy file for adaptation and use.

The sample policy can also be viewed in `file form`.

Important

The sample policy file is auto-generated from glance when this documentation is built. You must ensure your version of glance matches the version of this documentation.

    # Defines the default rule used for policies that historically had an
    # empty policy in the supplied policy.json file.
    #"default": ""

    # DEPRECATED
    # "default":"rule:context_is_admin" has been deprecated since Ussuri
    # in favor of "default":"".
    # In order to allow operators to accept the default policies from code
    # by not defining them in the policy file, while still working with
    # old policy files that rely on the ``default`` rule for policies that
    # are not specified in the policy file, the ``default`` rule must now
    # be explicitly set to ``"role:admin"`` when that is the desired
    # default for unspecified rules.

    # Defines the rule for the is_admin:True check.
    #"context_is_admin": "role:admin"

    # Default rule for the service-to-service API.
    #"service_api": "role:service or role:admin"

    # Create new image
    # POST  /v2/images
    # Intended scope(s): project
    #"add_image": "rule:context_is_admin or (role:member and project_id:%(project_id)s and project_id:%(owner)s)"

    # DEPRECATED
    # "add_image":"rule:default" has been deprecated since W in favor of
    # "add_image":"rule:context_is_admin or (role:member and
    # project_id:%(project_id)s and project_id:%(owner)s)".
    # The image API now supports roles.

    # Deletes the image
    # DELETE  /v2/images/{image_id}
    # Intended scope(s): project
    #"delete_image": "rule:context_is_admin or (role:member and project_id:%(project_id)s)"

    # DEPRECATED
    # "delete_image":"rule:default" has been deprecated since W in favor
    # of "delete_image":"rule:context_is_admin or (role:member and
    # project_id:%(project_id)s)".
    # The image API now supports roles.

    # Get specified image
    # GET  /v2/images/{image_id}
    # Intended scope(s): project
    #"get_image": "rule:context_is_admin or (role:reader and (project_id:%(project_id)s or project_id:%(member_id)s or 'community':%(visibility)s or 'public':%(visibility)s or 'shared':%(visibility)s))"

    # DEPRECATED
    # "get_image":"rule:default" has been deprecated since W in favor of
    # "get_image":"rule:context_is_admin or (role:reader and
    # (project_id:%(project_id)s or project_id:%(member_id)s or
    # 'community':%(visibility)s or 'public':%(visibility)s or
    # 'shared':%(visibility)s))".
    # The image API now supports roles.

    # Get all available images
    # GET  /v2/images
    # Intended scope(s): project
    #"get_images": "rule:context_is_admin or (role:reader and project_id:%(project_id)s)"

    # DEPRECATED
    # "get_images":"rule:default" has been deprecated since W in favor of
    # "get_images":"rule:context_is_admin or (role:reader and
    # project_id:%(project_id)s)".
    # The image API now supports roles.

    # Updates given image
    # PATCH  /v2/images/{image_id}
    # Intended scope(s): project
    #"modify_image": "rule:context_is_admin or (role:member and project_id:%(project_id)s)"

    # DEPRECATED
    # "modify_image":"rule:default" has been deprecated since W in favor
    # of "modify_image":"rule:context_is_admin or (role:member and
    # project_id:%(project_id)s)".
    # The image API now supports roles.

    # Publicize given image
    # PATCH  /v2/images/{image_id}
    # Intended scope(s): project
    #"publicize_image": "rule:context_is_admin"

    # Communitize given image
    # PATCH  /v2/images/{image_id}
    # Intended scope(s): project
    #"communitize_image": "rule:context_is_admin or (role:member and project_id:%(project_id)s)"

    # DEPRECATED
    # "communitize_image":"rule:default" has been deprecated since W in
    # favor of "communitize_image":"rule:context_is_admin or (role:member
    # and project_id:%(project_id)s)".
    # The image API now supports roles.

    # Downloads given image
    # GET  /v2/images/{image_id}/file
    # Intended scope(s): project
    #"download_image": "rule:context_is_admin or (role:member and (project_id:%(project_id)s or project_id:%(member_id)s or 'community':%(visibility)s or 'public':%(visibility)s or 'shared':%(visibility)s))"

    # DEPRECATED
    # "download_image":"rule:default" has been deprecated since W in favor
    # of "download_image":"rule:context_is_admin or (role:member and
    # (project_id:%(project_id)s or project_id:%(member_id)s or
    # 'community':%(visibility)s or 'public':%(visibility)s or
    # 'shared':%(visibility)s))".
    # The image API now supports roles.

    # Downloads image from specific store using store selection parameters
    # GET  /v2/images/{image_id}/file
    # Intended scope(s): project
    #"download_from_store": "rule:context_is_admin or (role:member and (project_id:%(project_id)s or project_id:%(member_id)s or 'community':%(visibility)s or 'public':%(visibility)s or 'shared':%(visibility)s))"

    # Uploads data to specified image
    # PUT  /v2/images/{image_id}/file
    # Intended scope(s): project
    #"upload_image": "rule:context_is_admin or (role:member and project_id:%(project_id)s)"

    # DEPRECATED
    # "upload_image":"rule:default" has been deprecated since W in favor
    # of "upload_image":"rule:context_is_admin or (role:member and
    # project_id:%(project_id)s)".
    # The image API now supports roles.

    # Deletes the location of given image
    # PATCH  /v2/images/{image_id}
    # Intended scope(s): project
    #"delete_image_location": "rule:context_is_admin"

    # DEPRECATED
    # "delete_image_location":"rule:default" has been deprecated since W
    # in favor of "delete_image_location":"rule:context_is_admin".
    # The image API now supports roles.

    # Reads the location of the image
    # GET  /v2/images/{image_id}
    # Intended scope(s): project
    #"get_image_location": "rule:context_is_admin or (role:reader and project_id:%(project_id)s)"

    # DEPRECATED
    # "get_image_location":"rule:default" has been deprecated since W in
    # favor of "get_image_location":"rule:context_is_admin or (role:reader
    # and project_id:%(project_id)s)".
    # The image API now supports roles.

    # Sets location URI to given image
    # PATCH  /v2/images/{image_id}
    # Intended scope(s): project
    #"set_image_location": "rule:context_is_admin or (role:member and project_id:%(project_id)s)"

    # DEPRECATED
    # "set_image_location":"rule:default" has been deprecated since W in
    # favor of "set_image_location":"rule:context_is_admin or (role:member
    # and project_id:%(project_id)s)".
    # The image API now supports roles.

    # Add location URI to given image
    # POST  /v2/images/{image_id}/locations
    # Intended scope(s): project
    #"add_image_location": "rule:service_api or (role:member and project_id:%(project_id)s and project_id:%(owner)s)"

    # Show all locations associated to given image
    # GET  /v2/images/{image_id}/locations
    # Intended scope(s): project
    #"fetch_image_location": "rule:service_api"

    # Create image member
    # POST  /v2/images/{image_id}/members
    # Intended scope(s): project
    #"add_member": "rule:context_is_admin or (role:member and project_id:%(project_id)s)"

    # DEPRECATED
    # "add_member":"rule:default" has been deprecated since W in favor of
    # "add_member":"rule:context_is_admin or (role:member and
    # project_id:%(project_id)s)".
    # The image API now supports roles.

    # Delete image member
    # DELETE  /v2/images/{image_id}/members/{member_id}
    # Intended scope(s): project
    #"delete_member": "rule:context_is_admin or (role:member and project_id:%(project_id)s)"

    # DEPRECATED
    # "delete_member":"rule:default" has been deprecated since W in favor
    # of "delete_member":"rule:context_is_admin or (role:member and
    # project_id:%(project_id)s)".
    # The image API now supports roles.

    # Show image member details
    # GET  /v2/images/{image_id}/members/{member_id}
    # Intended scope(s): project
    #"get_member": "rule:context_is_admin or role:reader and (project_id:%(project_id)s or project_id:%(member_id)s)"

    # DEPRECATED
    # "get_member":"rule:default" has been deprecated since W in favor of
    # "get_member":"rule:context_is_admin or role:reader and
    # (project_id:%(project_id)s or project_id:%(member_id)s)".
    # The image API now supports roles.

    # List image members
    # GET  /v2/images/{image_id}/members
    # Intended scope(s): project
    #"get_members": "rule:context_is_admin or role:reader and (project_id:%(project_id)s or project_id:%(member_id)s)"

    # DEPRECATED
    # "get_members":"rule:default" has been deprecated since W in favor of
    # "get_members":"rule:context_is_admin or role:reader and
    # (project_id:%(project_id)s or project_id:%(member_id)s)".
    # The image API now supports roles.

    # Update image member
    # PUT  /v2/images/{image_id}/members/{member_id}
    # Intended scope(s): project
    #"modify_member": "rule:context_is_admin or (role:member and project_id:%(member_id)s)"

    # DEPRECATED
    # "modify_member":"rule:default" has been deprecated since W in favor
    # of "modify_member":"rule:context_is_admin or (role:member and
    # project_id:%(member_id)s)".
    # The image API now supports roles.

    # Manage image cache
    # Intended scope(s): project
    #"manage_image_cache": "rule:context_is_admin"

    # Deactivate image
    # POST  /v2/images/{image_id}/actions/deactivate
    # Intended scope(s): project
    #"deactivate": "rule:context_is_admin or (role:member and project_id:%(project_id)s)"

    # DEPRECATED
    # "deactivate":"rule:default" has been deprecated since W in favor of
    # "deactivate":"rule:context_is_admin or (role:member and
    # project_id:%(project_id)s)".
    # The image API now supports roles.

    # Reactivate image
    # POST  /v2/images/{image_id}/actions/reactivate
    # Intended scope(s): project
    #"reactivate": "rule:context_is_admin or (role:member and project_id:%(project_id)s)"

    # DEPRECATED
    # "reactivate":"rule:default" has been deprecated since W in favor of
    # "reactivate":"rule:context_is_admin or (role:member and
    # project_id:%(project_id)s)".
    # The image API now supports roles.

    # Copy existing image to other stores
    # POST  /v2/images/{image_id}/import
    # Intended scope(s): project
    #"copy_image": "rule:context_is_admin"

    # Get all nodes where specified image is cached
    # GET  /v2/cache/nodes/{image_id}
    # Intended scope(s): project
    #"list_cached_nodes": "rule:context_is_admin"

    # Get an image task.
    #
    # This granular policy controls access to tasks, both from the tasks
    # API as well as internal locations in Glance that use tasks (like
    # import). Practically this cannot be more restrictive than the policy
    # that controls import or things will break, and changing it from the
    # default is almost certainly not what you want. Access to the
    # external tasks API should be restricted as desired by the
    # tasks_api_access policy. This may change in the future.
    # GET  /v2/tasks/{task_id}
    # Intended scope(s): project
    #"get_task": "rule:default"

    # DEPRECATED
    # "get_task":"rule:default" has been deprecated since X in favor of
    # "get_task":"rule:default".
    # From Xena we are enforcing policy checks in the API and policy layer
    # where task policies were enforcing will be removed. Since task APIs
    # are already deprecated and `tasks_api_access` is checked for each
    # API at API layer, there will be no benefit of other having other
    # task related policies.

    # List tasks for all images.
    #
    # This granular policy controls access to tasks, both from the tasks
    # API as well as internal locations in Glance that use tasks (like
    # import). Practically this cannot be more restrictive than the policy
    # that controls import or things will break, and changing it from the
    # default is almost certainly not what you want. Access to the
    # external tasks API should be restricted as desired by the
    # tasks_api_access policy. This may change in the future.
    # GET  /v2/tasks
    # Intended scope(s): project
    #"get_tasks": "rule:default"

    # DEPRECATED
    # "get_tasks":"rule:default" has been deprecated since X in favor of
    # "get_tasks":"rule:default".
    # From Xena we are enforcing policy checks in the API and policy layer
    # where task policies were enforcing will be removed. Since task APIs
    # are already deprecated and `tasks_api_access` is checked for each
    # API at API layer, there will be no benefit of other having other
    # task related policies.

    # List tasks for all images.
    #
    # This granular policy controls access to tasks, both from the tasks
    # API as well as internal locations in Glance that use tasks (like
    # import). Practically this cannot be more restrictive than the policy
    # that controls import or things will break, and changing it from the
    # default is almost certainly not what you want. Access to the
    # external tasks API should be restricted as desired by the
    # tasks_api_access policy. This may change in the future.
    # POST  /v2/tasks
    # Intended scope(s): project
    #"add_task": "rule:default"

    # DEPRECATED
    # "add_task":"rule:default" has been deprecated since X in favor of
    # "add_task":"rule:default".
    # From Xena we are enforcing policy checks in the API and policy layer
    # where task policies were enforcing will be removed. Since task APIs
    # are already deprecated and `tasks_api_access` is checked for each
    # API at API layer, there will be no benefit of other having other
    # task related policies.

    # DEPRECATED
    # "modify_task" has been deprecated since W.
    # This policy check has never been honored by the API. It will be
    # removed in a future release.
    # This policy is not used.
    # DELETE  /v2/tasks/{task_id}
    # Intended scope(s): project
    #"modify_task": "rule:default"

    # This is a generic blanket policy for protecting all task APIs. It is
    # not granular and will not allow you to separate writable and
    # readable task operations into different roles.
    # GET  /v2/tasks/{task_id}
    # GET  /v2/tasks
    # POST  /v2/tasks
    # DELETE  /v2/tasks/{task_id}
    # Intended scope(s): project
    #"tasks_api_access": "rule:context_is_admin"

    #"metadef_default": ""

    #"metadef_admin": "rule:context_is_admin"

    # Get a specific namespace.
    # GET  /v2/metadefs/namespaces/{namespace_name}
    # Intended scope(s): project
    #"get_metadef_namespace": "rule:context_is_admin or (role:reader and (project_id:%(project_id)s or 'public':%(visibility)s))"

    # DEPRECATED
    # "get_metadef_namespace":"rule:metadef_default" has been deprecated
    # since X in favor of "get_metadef_namespace":"rule:context_is_admin
    # or (role:reader and (project_id:%(project_id)s or
    # 'public':%(visibility)s))".
    # The metadata API now supports project scope and default roles.

    # List namespace.
    # GET  /v2/metadefs/namespaces
    # Intended scope(s): project
    #"get_metadef_namespaces": "rule:context_is_admin or (role:reader and project_id:%(project_id)s)"

    # DEPRECATED
    # "get_metadef_namespaces":"rule:metadef_default" has been deprecated
    # since X in favor of "get_metadef_namespaces":"rule:context_is_admin
    # or (role:reader and project_id:%(project_id)s)".
    # The metadata API now supports project scope and default roles.

    # Modify an existing namespace.
    # PUT  /v2/metadefs/namespaces/{namespace_name}
    # Intended scope(s): project
    #"modify_metadef_namespace": "rule:metadef_admin"

    # Create a namespace.
    # POST  /v2/metadefs/namespaces
    # Intended scope(s): project
    #"add_metadef_namespace": "rule:metadef_admin"

    # Delete a namespace.
    # DELETE  /v2/metadefs/namespaces/{namespace_name}
    # Intended scope(s): project
    #"delete_metadef_namespace": "rule:metadef_admin"

    # Get a specific object from a namespace.
    # GET  /v2/metadefs/namespaces/{namespace_name}/objects/{object_name}
    # Intended scope(s): project
    #"get_metadef_object": "rule:context_is_admin or (role:reader and (project_id:%(project_id)s or 'public':%(visibility)s))"

    # DEPRECATED
    # "get_metadef_object":"rule:metadef_default" has been deprecated
    # since X in favor of "get_metadef_object":"rule:context_is_admin or
    # (role:reader and (project_id:%(project_id)s or
    # 'public':%(visibility)s))".
    # The metadata API now supports project scope and default roles.

    # Get objects from a namespace.
    # GET  /v2/metadefs/namespaces/{namespace_name}/objects
    # Intended scope(s): project
    #"get_metadef_objects": "rule:context_is_admin or (role:reader and (project_id:%(project_id)s or 'public':%(visibility)s))"

    # DEPRECATED
    # "get_metadef_objects":"rule:metadef_default" has been deprecated
    # since X in favor of "get_metadef_objects":"rule:context_is_admin or
    # (role:reader and (project_id:%(project_id)s or
    # 'public':%(visibility)s))".
    # The metadata API now supports project scope and default roles.

    # Update an object within a namespace.
    # PUT  /v2/metadefs/namespaces/{namespace_name}/objects/{object_name}
    # Intended scope(s): project
    #"modify_metadef_object": "rule:metadef_admin"

    # Create an object within a namespace.
    # POST  /v2/metadefs/namespaces/{namespace_name}/objects
    # Intended scope(s): project
    #"add_metadef_object": "rule:metadef_admin"

    # Delete an object within a namespace.
    # DELETE  /v2/metadefs/namespaces/{namespace_name}/objects/{object_name}
    # Intended scope(s): project
    #"delete_metadef_object": "rule:metadef_admin"

    # List meta definition resource types.
    # GET  /v2/metadefs/resource_types
    # Intended scope(s): project
    #"list_metadef_resource_types": "rule:context_is_admin or (role:reader and (project_id:%(project_id)s or 'public':%(visibility)s))"

    # DEPRECATED
    # "list_metadef_resource_types":"rule:metadef_default" has been
    # deprecated since X in favor of
    # "list_metadef_resource_types":"rule:context_is_admin or (role:reader
    # and (project_id:%(project_id)s or 'public':%(visibility)s))".
    # The metadata API now supports project scope and default roles.

    # Get meta definition resource types associations.
    # GET  /v2/metadefs/namespaces/{namespace_name}/resource_types
    # Intended scope(s): project
    #"get_metadef_resource_type": "rule:context_is_admin or (role:reader and (project_id:%(project_id)s or 'public':%(visibility)s))"

    # DEPRECATED
    # "get_metadef_resource_type":"rule:metadef_default" has been
    # deprecated since X in favor of
    # "get_metadef_resource_type":"rule:context_is_admin or (role:reader
    # and (project_id:%(project_id)s or 'public':%(visibility)s))".
    # The metadata API now supports project scope and default roles.

    # Create meta definition resource types association.
    # POST  /v2/metadefs/namespaces/{namespace_name}/resource_types
    # Intended scope(s): project
    #"add_metadef_resource_type_association": "rule:metadef_admin"

    # Delete meta definition resource types association.
    # POST  /v2/metadefs/namespaces/{namespace_name}/resource_types/{name}
    # Intended scope(s): project
    #"remove_metadef_resource_type_association": "rule:metadef_admin"

    # Get a specific meta definition property.
    # GET  /v2/metadefs/namespaces/{namespace_name}/properties/{property_name}
    # Intended scope(s): project
    #"get_metadef_property": "rule:context_is_admin or (role:reader and (project_id:%(project_id)s or 'public':%(visibility)s))"

    # DEPRECATED
    # "get_metadef_property":"rule:metadef_default" has been deprecated
    # since X in favor of "get_metadef_property":"rule:context_is_admin or
    # (role:reader and (project_id:%(project_id)s or
    # 'public':%(visibility)s))".
    # The metadata API now supports project scope and default roles.

    # List meta definition properties.
    # GET  /v2/metadefs/namespaces/{namespace_name}/properties
    # Intended scope(s): project
    #"get_metadef_properties": "rule:context_is_admin or (role:reader and (project_id:%(project_id)s or 'public':%(visibility)s))"

    # DEPRECATED
    # "get_metadef_properties":"rule:metadef_default" has been deprecated
    # since X in favor of "get_metadef_properties":"rule:context_is_admin
    # or (role:reader and (project_id:%(project_id)s or
    # 'public':%(visibility)s))".
    # The metadata API now supports project scope and default roles.

    # Update meta definition property.
    # GET  /v2/metadefs/namespaces/{namespace_name}/properties/{property_name}
    # Intended scope(s): project
    #"modify_metadef_property": "rule:metadef_admin"

    # Create meta definition property.
    # POST  /v2/metadefs/namespaces/{namespace_name}/properties
    # Intended scope(s): project
    #"add_metadef_property": "rule:metadef_admin"

    # Delete meta definition property.
    # DELETE  /v2/metadefs/namespaces/{namespace_name}/properties/{property_name}
    # Intended scope(s): project
    #"remove_metadef_property": "rule:metadef_admin"

    # Get tag definition.
    # GET  /v2/metadefs/namespaces/{namespace_name}/tags/{tag_name}
    # Intended scope(s): project
    #"get_metadef_tag": "rule:context_is_admin or (role:reader and (project_id:%(project_id)s or 'public':%(visibility)s))"

    # DEPRECATED
    # "get_metadef_tag":"rule:metadef_default" has been deprecated since X
    # in favor of "get_metadef_tag":"rule:context_is_admin or (role:reader
    # and (project_id:%(project_id)s or 'public':%(visibility)s))".
    # The metadata API now supports project scope and default roles.

    # List tag definitions.
    # GET  /v2/metadefs/namespaces/{namespace_name}/tags
    # Intended scope(s): project
    #"get_metadef_tags": "rule:context_is_admin or (role:reader and (project_id:%(project_id)s or 'public':%(visibility)s))"

    # DEPRECATED
    # "get_metadef_tags":"rule:metadef_default" has been deprecated since
    # X in favor of "get_metadef_tags":"rule:context_is_admin or
    # (role:reader and (project_id:%(project_id)s or
    # 'public':%(visibility)s))".
    # The metadata API now supports project scope and default roles.

    # Update tag definition.
    # PUT  /v2/metadefs/namespaces/{namespace_name}/tags/{tag_name}
    # Intended scope(s): project
    #"modify_metadef_tag": "rule:metadef_admin"

    # Add tag definition.
    # POST  /v2/metadefs/namespaces/{namespace_name}/tags/{tag_name}
    # Intended scope(s): project
    #"add_metadef_tag": "rule:metadef_admin"

    # Create tag definitions.
    # POST  /v2/metadefs/namespaces/{namespace_name}/tags
    # Intended scope(s): project
    #"add_metadef_tags": "rule:metadef_admin"

    # Delete tag definition.
    # DELETE  /v2/metadefs/namespaces/{namespace_name}/tags/{tag_name}
    # Intended scope(s): project
    #"delete_metadef_tag": "rule:metadef_admin"

    # Delete tag definitions.
    # DELETE  /v2/metadefs/namespaces/{namespace_name}/tags
    # Intended scope(s): project
    #"delete_metadef_tags": "rule:metadef_admin"

    # Queue image for caching
    # PUT  /v2/cache/{image_id}
    # Intended scope(s): project
    #"cache_image": "rule:context_is_admin"

    # DEPRECATED
    # "cache_image":"rule:manage_image_cache" has been deprecated since X
    # in favor of "cache_image":"rule:context_is_admin".
    # The image API now supports roles.

    # List cache status
    # GET  /v2/cache
    # Intended scope(s): project
    #"cache_list": "rule:context_is_admin"

    # DEPRECATED
    # "cache_list":"rule:manage_image_cache" has been deprecated since X
    # in favor of "cache_list":"rule:context_is_admin".
    # The image API now supports roles.

    # Delete image(s) from cache and/or queue
    # DELETE  /v2/cache
    # DELETE  /v2/cache/{image_id}
    # Intended scope(s): project
    #"cache_delete": "rule:context_is_admin"

    # DEPRECATED
    # "cache_delete":"rule:manage_image_cache" has been deprecated since X
    # in favor of "cache_delete":"rule:context_is_admin".
    # The image API now supports roles.

    # Clean invalid and stalled cached images
    # POST  /v2/cache/clean
    # Intended scope(s): project
    #"cache_clean": "rule:context_is_admin"

    # Prune cached images to reduce cache size
    # POST  /v2/cache/prune
    # Intended scope(s): project
    #"cache_prune": "rule:context_is_admin"

    # Expose store specific information
    # GET  /v2/info/stores/detail
    # Intended scope(s): project
    #"stores_info_detail": "rule:context_is_admin or rule:service_api"

    # DEPRECATED
    # "stores_info_detail":"rule:context_is_admin" has been deprecated
    # since 2025.1 in favor of "stores_info_detail":"rule:context_is_admin
    # or rule:service_api".
    # Stores info detail now supports service role.

this page last updated: 2026-08-19 03:42:39

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.

found an error? report a bug