logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

masakari - masakari 19.0.0

Author

       Author name not set

Masakari Api References

       The MasakariAPI is extensive. We provide a concept guide which gives some of the high level details,  as
       well as a more detailed API reference.

Name

       masakari - masakari 19.0.0

       Masakari  is an OpenStack project designed to ensure high availability of instances and compute processes
       running on hosts.

       This documentation is intended to help explain the  current  scope  of  the  Masakari  project  and   the
       architectural  decisions  made  to  support  this  scope.   The  documentation  will  include  the future
       architectural roadmap and  the current development process and policies.

Operator Guide

ArchitectureOverviewMasakariarchitecture: An overview of how all the components in masakari work together.

   Installation
       A detailed install guide for masakari.

   MasakariservicesMasakariserviceoverview
       Masakari  provides  Virtual  Machines High Availability(VMHA), and rescues KVM-based Virtual Machines(VM)
       from a failure events described below:

       • VMprocessdown - restart vm (use nova stop API, and nova start API).   Libvirt  events  will  be  also
         emitted by other failures.

       • Provisioningprocessdown - restarts process, changes nova-compute service status to maintenance mode
         (use nova service-disable).

       • nova-computehostfailure - evacuate all the VMs from failure host according to the following  recovery
         methods (use nova evacuate API).

         • auto - evacuate all the VMs with no destination node for nova scheduler.

         • reserved_host - evacuate all the VMs with reserved hosts as the destination nodes for nova scheduler.

         • auto_priority  -  evacuate  all the VMs by using auto recovery method firstly.  If failed, then using
           reserved_host recovery method.

         • rh_priority - evacuate all the VMs by using reserved_host recovery method firstly.  If  failed,  then
           using auto recovery method.

       The below services enables deplores to integrate with the Masakari directly or through custom plug-ins.

       The Masakari service consists of the following components:

       masakari-api
              An  OpenStack-native  REST  API that processes API requests by sending them to the masakari-engine
              over RemoteProcedureCall(RPC).

       masakari-engine
              Processes the notifications received from masakari-api  by  executing  the  recovery  workflow  in
              asynchronous way.

   Installandconfigure
       This section describes how to install and configure Masakari services on the compute node.

       This  section assumes that you already have a working OpenStack environment with the following components
       installed: Nova, Glance, Cinder, Neutron and Identity.

       The installation and configuration vary by distribution.

   InstallandconfigureforUbuntu
       This section describes how to install and configure Masakari for Ubuntu 18.04 (bionic).

   Prerequisites
       Before you install and configure the masakari service, you must create  databases,  service  credentials,
       and API endpoints.

       1. To create the masakari database, follow these steps:

          • Use the database access client to connect to the database server as the root user:

                # mysql

          • Create the masakari database:

                mysql> CREATE DATABASE masakari CHARACTER SET utf8;

          • Grant access privileges to the databases:

                mysql> GRANT ALL PRIVILEGES ON masakari.* TO 'username'@'localhost' \
                  IDENTIFIED BY 'MASAKARI_DBPASS';
                mysql> GRANT ALL PRIVILEGES ON masakari.* TO 'username'@'%' \
                  IDENTIFIED BY 'MASAKARI_DBPASS';

             Replace MASAKARI_DBPASS with a suitable password.

          • Exit the database access client.

       2. Source the admin credentials to gain access to admin-only CLI commands:

             $ . admin-openrc

       3. Create the Masakari service credentials:

          • Create the masakari user with password as masakari:

                $ openstack user create --password-prompt masakari

                User Password:
                Repeat User Password:
                +---------------------+----------------------------------+
                | Field               | Value                            |
                +---------------------+----------------------------------+
                | domain_id           | default                          |
                | enabled             | True                             |
                | id                  | 8a7dbf5279404537b1c7b86c033620fe |
                | name                | masakari                             |
                | options             | {}                               |
                | password_expires_at | None                             |
                +---------------------+----------------------------------+

          • Add the admin role to the masakari user:

                $ openstack role add --project service --user masakari admin

          • Create the masakari service entity:

                $ openstack service create --name masakari \
                --description "masakari high availability" instance-ha

                +-------------+----------------------------------+
                | Field       | Value                            |
                +-------------+----------------------------------+
                | description | masakari high availability       |
                | enabled     | True                             |
                | id          | 060d59eac51b4594815603d75a00aba2 |
                | name        | masakari                         |
                | type        | instance-ha                      |
                +-------------+----------------------------------+

       4. Create the Masakari API service endpoints:

             $ openstack endpoint create --region RegionOne \
               masakari public http://<CONTROLLER_IP>/instance-ha/v1/$\(tenant_id\)s

             +--------------+-------------------------------------------------------+
             | Field        | Value                                                 |
             +--------------+-------------------------------------------------------+
             | enabled      | True                                                  |
             | id           | 38f7af91666a47cfb97b4dc790b94424                      |
             | interface    | public                                                 |
             | region       | RegionOne                                             |
             | region_id    | RegionOne                                             |
             | service_id   | 060d59eac51b4594815603d75a00aba2                      |
             | service_name | masakari                                              |
             | service_type | instance-ha                                           |
             | url          | http://<CONTROLLER_IP>/instance-ha/v1/$(tenant_id)s   |
             +--------------+-------------------------------------------------------+

             $ openstack endpoint create --region RegionOne \
               masakari internal http://<CONTROLLER_IP>/instance-ha/v1/$\(tenant_id\)s

             +--------------+-------------------------------------------------------+
             | Field        | Value                                                 |
             +--------------+-------------------------------------------------------+
             | enabled      | True                                                  |
             | id           | 38f7af91666a47cfb97b4dc790b94424                      |
             | interface    | internal                                              |
             | region       | RegionOne                                             |
             | region_id    | RegionOne                                             |
             | service_id   | 060d59eac51b4594815603d75a00aba2                      |
             | service_name | masakari                                              |
             | service_type | instance-ha                                           |
             | url          | http://<CONTROLLER_IP>/instance-ha/v1/$(tenant_id)s   |
             +--------------+-------------------------------------------------------+

             $ openstack endpoint create --region RegionOne \
               masakari admin http://<CONTROLLER_IP>/instance-ha/v1/$\(tenant_id\)s

             +--------------+-------------------------------------------------------+
             | Field        | Value                                                 |
             +--------------+-------------------------------------------------------+
             | enabled      | True                                                  |
             | id           | 38f7af91666a47cfb97b4dc790b94424                      |
             | interface    | admin                                                 |
             | region       | RegionOne                                             |
             | region_id    | RegionOne                                             |
             | service_id   | 060d59eac51b4594815603d75a00aba2                      |
             | service_name | masakari                                              |
             | service_type | instance-ha                                           |
             | url          | http://<CONTROLLER_IP>/instance-ha/v1/$(tenant_id)s   |
             +--------------+-------------------------------------------------------+

   InstallandconfigureMasakariNOTE:

          • You must install Masakari on the Controller Nodes only.

       1. Clone masakari using:

             # git clone https://opendev.org/openstack/masakari.git

       2. Prepare the masakari configuration files:

          1. Generate via tox:

             Go  to /opt/stack/masakari and execute the command below.  This will generate masakari.conf.sample,
             a sample configuration file, at /opt/stack/masakari/etc/masakari/:

                # tox -egenconfig

          2. Download from:

             # masakari.conf.sample

          3. Rename masakari.conf.sample file to masakari.conf, and edit sections as shown below:

                [DEFAULT]
                transport_url = rabbit://stackrabbit:admin@<CONTROLLER_IP>:5672/
                graceful_shutdown_timeout = 5
                os_privileged_user_tenant = service
                os_privileged_user_password = admin
                os_privileged_user_auth_url = http://<CONTROLLER_IP>/identity
                os_privileged_user_name = nova
                logging_exception_prefix = %(color)s%(asctime)s.%(msecs)03d TRACE %(name)s [01;35m%(instance)s[00m
                logging_debug_format_suffix = [00;33mfrom (pid=%(process)d) %(funcName)s %(pathname)s:%(lineno)d[00m
                logging_default_format_string = %(asctime)s.%(msecs)03d %(color)s%(levelname)s %(name)s [[00;36m-%(color)s] [01;35m%(instance)s%(color)s%(message)s[00m
                logging_context_format_string = %(asctime)s.%(msecs)03d %(color)s%(levelname)s %(name)s [[01;36m%(request_id)s [00;36m%(project_name)s %(user_name)s%(color)s] [01;35m%(instance)s%(color)s%(message)s[00m
                use_syslog = False
                debug = True
                masakari_api_workers = 2

                [database]
                connection = mysql+pymysql://root:admin@1<CONTROLLER_IP>/masakari?charset=utf8

                [keystone_authtoken]
                memcached_servers = localhost:11211
                cafile = /opt/stack/data/ca-bundle.pem
                project_domain_name = Default
                project_name = service
                user_domain_name = Default
                password = <MASAKARI_PASS>
                username = masakari
                auth_url = http://<CONTROLLER_IP>/identity
                auth_type = password

                [taskflow]
                connection = mysql+pymysql://root:admin@<CONTROLLER_IP>/masakari?charset=utf8

             NOTE:
                Replace CONTROLLER_IP with the IP address of controller node.

                Replace MASAKARI_PASS with the password you chose for the masakari user in the Identity service.

          4. Create masakari directory in /etc/:

             Copy masakari.conf file to /etc/masakari/

                # cp -p etc/masakari/masakari.conf.sample /etc/masakari/masakari.conf

       3. To install masakari run setup.py from masakari:

             # cd masakari
             # sudo python -m pip install -r requirements.txt
             # sudo python setup.py install

       4. Run below db command to sync database:

             # masakari-manage db sync

   Finalizeinstallation
       • Start masakari services:

            # masakari-api
            # masakari-engine

   Verifyoperation
       Verify Masakari installation.

       1. Source the admin credentials to gain access to admin-only CLI commands:

             $ . admin-openrc

       2. List API endpoints in the Identity service to verify connectivity with the Identity service:

          NOTE:
             Below endpoints list may differ depending on the installation of OpenStack components.

             $ openstack endpoint list

             +-------------+----------------+--------------------------------------------------------+
             | Name        | Type           | Endpoints                                              |
             +-------------+----------------+--------------------------------------------------------+
             | nova_legacy | compute_legacy | RegionOne                                              |
             |             |                |   public: http://controller/compute/v2/<tenant_id>     |
             |             |                |                                                        |
             | nova        | compute        | RegionOne                                              |
             |             |                |   public: http://controller/compute/v2.1               |
             |             |                |                                                        |
             | cinder      | block-storage  | RegionOne                                              |
             |             |                |   public: http://controller/volume/v3/<tenant_id>      |
             |             |                |                                                        |
             | glance      | image          | RegionOne                                              |
             |             |                |   public: http://controller/image                      |
             |             |                |                                                        |
             | cinderv3    | volumev3       | RegionOne                                              |
             |             |                |   public: http://controller/volume/v3/<tenant_id>      |
             |             |                |                                                        |
             | masakari    | instance-ha    | RegionOne                                              |
             |             |                | internal: http://controller/instance-ha/v1/<tenant_id> |
             |             |                | RegionOne                                              |
             |             |                |  admin: http://controller/instance-ha/v1/<tenant_id>   |
             |             |                | RegionOne                                              |
             |             |                |  public: http://controller/instance-ha/v1/<tenant_id>  |
             |             |                |                                                        |
             | keystone    | identity       | RegionOne                                              |
             |             |                |   public: http://controller/identity                   |
             |             |                | RegionOne                                              |
             |             |                |   admin: http://controller/identity                    |
             |             |                |                                                        |
             | cinderv2    | volumev2       | RegionOne                                              |
             |             |                |   public: http://controller/volume/v2/<tenant_id>      |
             |             |                |                                                        |
             | placement   | placement      | RegionOne                                              |
             |             |                |   public: http://controller/placement                  |
             |             |                |                                                        |
             | neutron     | network        | RegionOne                                              |
             |             |                |   public: http://controller:9696/                      |
             |             |                |                                                        |
             +-------------+----------------+--------------------------------------------------------+

       3. Run segmentlist command to verify masakari-api is running properly.  This will return  empty  segment
          list as you haven’t yet configured Failoversegments.

             $ openstack segment list

          NOTE:
             Since  Failoversegments  are not configured, there is no way to verify masakari-engine is running
             properly as the notification cannot be sent from masakari-api to masakari-engine.

   ReferenceMaterialConfigurationGuide: Information on configuration files.

       • CustomRecoveryWorkflowConfigurationGuideCLICommandsforMasakari: The complete command reference for Masakari.

       • VersionedNotifications: This provides  the  list  of  existing  versioned  notifications  with  sample
         payloads.  This will help newcomers understand basics of Masakari

       • NovaDocs: A collection of guides for Nova.

   MasakariCLIDocumentation
       In this section you will find information on Masakari’s command line interface.

   masakari-statusCLIinterfaceforMasakaristatuscommandsSynopsis
          masakari-status <category> <command> [<args>]

   Descriptionmasakari-status is a tool that provides routines for checking the status of a Masakari deployment.

   Options
       The standard pattern for executing a masakari-status command is:

          masakari-status <category> <command> [<args>]

       Run without arguments to see a list of available command categories:

          masakari-status

       Categories are:

       • upgrade

       Detailed descriptions are below:

       You can also run with a category argument such as upgrade to see a list of all commands in that category:

          masakari-status upgrade

       These sections describe the available categories and arguments for masakari-status.

   Upgrademasakari-statusupgradecheck
              Performs a release-specific readiness check before restarting services with new code. For example,
              missing  or  changed  configuration  options, incompatible object states, or other conditions that
              could lead to failures while upgrading.

              ReturnCodes
                                   ┌─────────────┬───────────────────────────────────────┐
                                   │ Return code │ Description                           │
                                   ├─────────────┼───────────────────────────────────────┤
                                   │ 0           │ All upgrade readiness  checks  passed │
                                   │             │ successfully  and there is nothing to │
                                   │             │ do.                                   │
                                   ├─────────────┼───────────────────────────────────────┤
                                   │ 1           │ At least  one  check  encountered  an │
                                   │             │ issue     and     requires    further │
                                   │             │ investigation. This is  considered  a │
                                   │             │ warning but the upgrade may be OK.    │
                                   ├─────────────┼───────────────────────────────────────┤
                                   │ 2           │ There  was  an  upgrade  status check │
                                   │             │ failure    that    needs    to     be │
                                   │             │ investigated.    This    should    be │
                                   │             │ considered something  that  stops  an │
                                   │             │ upgrade.                              │
                                   ├─────────────┼───────────────────────────────────────┤
                                   │ 255         │ An unexpected error occurred.         │
                                   └─────────────┴───────────────────────────────────────┘

              HistoryofChecks7.0.0(Stein)

              • Sample check to be filled in with checks as they are added in Stein.

   masakari-manageControlandmanagemasakaridatabaseSynopsis
          masakari-manage <category> <action> [<args>]

   Descriptionmasakari-manage controls DB by managing various admin-only aspects of masakari.

   Options
       The standard pattern for executing a masakari-manage command is:

          masakari-manage <category> <command> [<args>]

       Run without arguments to see a list of available command categories:

          masakari-manage

       You can also run with a category argument such as db to see a list of all commands in that category:

          masakari-manage db

       These sections describe the available categories and arguments for masakari-manage.

   MasakariDatabasemasakari-managedbversion
              Print the current main database version.

       masakari-managedbsync[--version<version>]
              Upgrade the main database schema up to the most recent version or --version if specified.

       masakari-managedbpurge
              Deleting rows older than 30 day(s) from table hosts, failover_segments and notifications.

   openstackmasakari
       To control and manage masakari operations, the extended commandlist available in openstack command.

   api-paste.ini
       The masakari service stores its API configuration settings in the api-paste.ini file.

          [composite:masakari_api]
          use = call:masakari.api.urlmap:urlmap_factory
          /: apiversions
          /v1: masakari_api_v1

          [composite:masakari_api_v1]
          use = call:masakari.api.auth:pipeline_factory_v1
          keystone = cors http_proxy_to_wsgi request_id faultwrap sizelimit authtoken keystonecontext osapi_masakari_app_v1
          noauth2 = cors http_proxy_to_wsgi request_id faultwrap sizelimit noauth2 osapi_masakari_app_v1

          # filters
          [filter:cors]
          paste.filter_factory = oslo_middleware.cors:filter_factory
          oslo_config_project = masakari

          [filter:http_proxy_to_wsgi]
          paste.filter_factory = oslo_middleware.http_proxy_to_wsgi:HTTPProxyToWSGI.factory

          [filter:request_id]
          paste.filter_factory = oslo_middleware:RequestId.factory

          [filter:faultwrap]
          paste.filter_factory = masakari.api.openstack:FaultWrapper.factory

          [filter:sizelimit]
          paste.filter_factory = oslo_middleware:RequestBodySizeLimiter.factory

          [filter:authtoken]
          paste.filter_factory = keystonemiddleware.auth_token:filter_factory

          [filter:keystonecontext]
          paste.filter_factory = masakari.api.auth:MasakariKeystoneContext.factory

          [filter:noauth2]
          paste.filter_factory = masakari.api.auth:NoAuthMiddleware.factory

          # apps
          [app:osapi_masakari_app_v1]
          paste.app_factory = masakari.api.openstack.ha:APIRouterV1.factory

          [pipeline:apiversions]
          pipeline = faultwrap http_proxy_to_wsgi apiversionsapp

          [app:apiversionsapp]
          paste.app_factory = masakari.api.openstack.ha.versions:Versions.factory

   ConfigurationOptions
       The following is an overview of all available configuration options in Masakari.

   DEFAULTauth_strategyType   string

              DefaultkeystoneValidValues
                     keystone, noauth2

              This  determines  the  strategy  to  use  for  authentication:  keystone or noauth2.  ‘noauth2’ is
              designed for  testing  only,  as  it  does  no  actual  credential  checking.  ‘noauth2’  provides
              administrative credentials only if ‘admin’ is specified as the username.

              • Possible values:

                Either ‘keystone’ (default) or ‘noauth2’.

              • Services that use this:

                masakari-api

              • Related options:

                None

       use_forwarded_forType   boolean

              DefaultFalse

              When  True,  the  ‘X-Forwarded-For’  header is treated as the canonical remote address. When False
              (the default), the ‘remote_address’ header is used.

              You should only enable this if you have an HTML sanitizing proxy.

              • Possible values:

                True, False (default)

              • Services that use this:

                masakari-api

              • Related options:

                None

       osapi_max_limitType   integer

              Default1000

              As a query can potentially return many thousands of items, you can limit  the  maximum  number  of
              items in a single response by setting this option.

              • Possible values:

                Any positive integer. Default is 1000.

              • Services that use this:

                masakari-api

              • Related options:

                None

       osapi_masakari_link_prefixType   string

              Default<None>

              This  string  is  prepended  to the normal URL that is returned in links to the OpenStack Masakari
              API. If it is empty (the default), the URLs are returned unchanged.

              • Possible values:

                Any string, including an empty string (the default).

              • Services that use this:

                masakari-api

              • Related options:

                None

       tempdirType   string

              Default<None>

              Explicitly specify the temporary working directory.

       monkey_patchType   boolean

              DefaultFalse

              Determine if monkey patching should be applied.

              Related options:

              • monkey_patch_modules: This must have values set for this option to have any effect

       monkey_patch_modulesType   list

              Default['masakari.api:masakari.cmd']

              List of modules/decorators to monkey patch.

              This option allows you to patch a decorator for all functions in specified modules.

              Related options:

              • monkey_patch: This must be set to True for this option to have any effect

       masakari_topicType   string

              Defaultha_engine

              This is the message queue topic that the masakari  engine  ‘listens’  on.  It  is  used  when  the
              masakari  engine  is  started  up to configure the queue, and whenever an RPC call to the masakari
              engine is made.

              • Possible values:

                Any string, but there is almost never any reason to ever change this value from its  default  of
                ‘engine’.

              • Services that use this:

                masakari-engine

              • Related options:

                None

              WARNING:
                 This  option  is  deprecated for removal since 3.0.0.  Its value may be silently ignored in the
                 future.

                 Reason Configurable RPC topic provides little  value  and  it  can  easily  break  Masakari  if
                        operator configures it to the same topic used by other OpenStack services.

       duplicate_notification_detection_intervalType   integer

              Default180MinimumValue
                     0

              Interval  in  seconds  for  identifying  duplicate  notifications. If the notification received is
              identical to the previous ones whose status is either new or running and if it’s created_timestamp
              and the current timestamp is less than this config option value, then  the  notification  will  be
              considered as duplicate and it will be ignored.

       wait_period_after_service_updateType   integer

              Default180

              Number of seconds to wait after a service is enabled or disabled.

       wait_period_after_evacuationType   integer

              Default90

              Wait until instance is evacuated

       verify_intervalType   integer

              Default1

              The monitoring interval for looping

       wait_period_after_power_offType   integer

              Default180

              Number of seconds to wait for instance to shut down

       wait_period_after_power_onType   integer

              Default60

              Number of seconds to wait for instance to start

       process_unfinished_notifications_intervalType   integer

              Default120

              Interval in seconds for processing notifications which are in error or new state.

       retry_notification_new_status_intervalType   integer

              Default60Mutable
                     This option can be changed without restarting.

              Interval  in  seconds for identifying notifications which are in new state. If the notification is
              in new state till this config option value after it’s generated_time, then it is  considered  that
              notification    is    ignored    by    the    messaging   queue   and   will   be   processed   by
              ‘process_unfinished_notifications’ periodic task.

       check_expired_notifications_intervalType   integer

              Default600

              Interval in seconds for checking running notifications.

       notifications_expired_intervalType   integer

              Default86400

              Interval in seconds for identifying running notifications expired.

       host_failure_recovery_threadsType   integer

              Default3MinimumValue
                     1

              Number of threads to  be  used  for  evacuating  and  confirming  instances  during  execution  of
              host_failure workflow.

       notification_driverType   string

              Defaulttaskflow_driver

              Defines which driver to use for executing notification workflows.

       fatal_exception_format_errorsType   boolean

              DefaultFalse

              Make exception message format errors fatal

       nova_catalog_admin_infoType   string

              Defaultcompute:nova:publicURL

              Match  this  value  when searching for nova in the service catalog. Format is: separated values of
              the form: <service_type>:<service_name>:<endpoint_type>

       os_region_nameType   string

              Default<None>

              Region name of this node

       nova_ca_certificates_fileType   string

              Default<None>

              Location of ca certificates file to use for nova client requests.

       nova_api_insecureType   boolean

              DefaultFalse

              Allow to perform insecure SSL requests to nova

       os_privileged_user_nameType   string

              Default<None>

              OpenStack privileged account username. Used for requests to other services  (such  as  Nova)  that
              require an account with special rights.

       os_privileged_user_passwordType   string

              Default<None>

              Password associated with the OpenStack privileged account.

       os_privileged_user_tenantType   string

              Default<None>

              Tenant name associated with the OpenStack privileged account.

       os_privileged_user_auth_urlType   URI

              Default<None>

              Auth URL associated with the OpenStack privileged account.

       os_user_domain_nameType   string

              Defaultdefault

              User domain name associated with the OpenStack privileged account.

       os_project_domain_nameType   string

              Defaultdefault

              Project domain name associated with the OpenStack privileged account.

       os_system_scopeType   string

              Default<None>

              Scope for system operations.

       pybasedirType   string

              Default/build/masakari-WWqACF/masakari-19.0.0

              Directory where the masakari python module is installed

       bindirType   string

              Default/usr/local/bin

              Directory where masakari binaries are installed

       state_pathType   string

              Default$pybasedir

              Top-level directory for maintaining masakari’s state

       hostType   host address

              Defaultlcy02-amd64-028

              Hostname, FQDN or IP address of this host. Must be valid within AMQP key.

              Possible values:

              • String with hostname, FQDN or IP address. Default is hostname of this host.

       engine_managerType   string

              Defaultmasakari.engine.manager.MasakariManager

              Full class name for the Manager for masakari engine

       report_intervalType   integer

              Default10

              Seconds between nodes reporting state to datastore

       periodic_enableType   boolean

              DefaultTrue

              Enable periodic tasks

       periodic_interval_maxType   integer

              Default300

              Max interval time between periodic tasks execution in seconds.

       periodic_fuzzy_delayType   integer

              Default60

              Range of seconds to randomly delay when starting the periodic task scheduler to reduce stampeding.
              (Disable by setting to 0)

       use_sslType   boolean

              DefaultFalse

              Use APIs with SSL enabled

       masakari_api_listenType   host address

              Default0.0.0.0

              The IP address on which the Masakari API will listen.

       masakari_api_listen_portType   integer

              Default15868MinimumValue
                     1

              MaximumValue
                     65535

              The port on which the Masakari API will listen.

       masakari_api_workersType   integer

              Default<None>

              Number of workers for Masakari API service. The default will be the number of CPUs available.

       service_down_timeType   integer

              Default60

              Maximum time since last check-in for up service

       backdoor_portType   string

              Default<None>

              Enable  eventlet backdoor.  Acceptable values are 0, <port>, and <start>:<end>, where 0 results in
              listening on a random tcp port number; <port> results in listening on the  specified  port  number
              (and  not enabling backdoor if that port is in use); and <start>:<end> results in listening on the
              smallest unused port number within the specified  range  of  port  numbers.  The  chosen  port  is
              displayed in the service’s log file.

              WARNING:
                 This option is deprecated for removal.  Its value may be silently ignored in the future.

                 Reason The ‘backdoor_port’ option is deprecated and will be removed in a future release.

       backdoor_socketType   string

              Default<None>

              Enable  eventlet  backdoor, using the provided path as a unix socket that can receive connections.
              This option is mutually exclusive with ‘backdoor_port’ in that only one  should  be  provided.  If
              both are provided then the existence of this option overrides the usage of that option. Inside the
              path {pid} will be replaced with the PID of the current process.

              WARNING:
                 This option is deprecated for removal.  Its value may be silently ignored in the future.

                 Reason The ‘backdoor_socket’ option is deprecated and will be removed in a future release.

       log_optionsType   boolean

              DefaultTrue

              Enables  or  disables  logging  values of all registered options when starting a service (at DEBUG
              level).

       graceful_shutdown_timeoutType   integer

              Default60

              Specify a timeout after which a gracefully shutdown server will exit.  Zero  value  means  endless
              wait.

       api_paste_configType   string

              Defaultapi-paste.ini

              File name for the paste.deploy config for api service

              WARNING:
                 This option is deprecated for removal.  Its value may be silently ignored in the future.

                 Reason The ‘api_paste_config’ option is deprecated and will be removed in a future release.

       wsgi_log_formatType   string

              Default%(client_ip)s"%(request_line)s"status:%(status_code)slen:%(body_length)stime:%(wall_seconds).7f

              A python format string that is used as the template to generate log lines.  The  following  values
              can   beformatted   into   it:   client_ip,  date_time,  request_line,  status_code,  body_length,
              wall_seconds.

              WARNING:
                 This option is deprecated for removal.  Its value may be silently ignored in the future.

                 Reason The ‘wsgi_log_format’ option is deprecated and will be removed in a future release.

       tcp_keepidleType   integer

              Default600

              Sets the value of TCP_KEEPIDLE in seconds for each server socket. Not supported on OS X.

              WARNING:
                 This option is deprecated for removal.  Its value may be silently ignored in the future.

                 Reason The ‘tcp_keepidle’ option is deprecated and will be removed in a future release.

       wsgi_default_pool_sizeType   integer

              Default100

              Size of the pool of greenthreads used by wsgi

              WARNING:
                 This option is deprecated for removal.  Its value may be silently ignored in the future.

                 Reason The ‘wsgi_default_pool_size’ option is deprecated  and  will  be  removed  in  a  future
                        release.

       max_header_lineType   integer

              Default16384

              Maximum line size of message headers to be accepted. max_header_line may need to be increased when
              using  large  tokens (typically those generated when keystone is configured to use PKI tokens with
              big service catalogs).

              WARNING:
                 This option is deprecated for removal.  Its value may be silently ignored in the future.

                 Reason The ‘max_header_line’ option is deprecated and will be removed in a future release.

       wsgi_keep_aliveType   boolean

              DefaultTrue

              If False, closes the client socket connection explicitly.

              WARNING:
                 This option is deprecated for removal.  Its value may be silently ignored in the future.

                 Reason The ‘wsgi_keep_alive’ option is deprecated and will be removed in a future release.

       client_socket_timeoutType   integer

              Default900

              Timeout for client connections’ socket operations. If an incoming  connection  is  idle  for  this
              number of seconds it will be closed. A value of ‘0’ means wait forever.

              WARNING:
                 This option is deprecated for removal.  Its value may be silently ignored in the future.

                 Reason The  ‘client_socket_timeout’  option  is  deprecated  and  will  be  removed in a future
                        release.

       wsgi_server_debugType   boolean

              DefaultFalse

              True if the server should send exception tracebacks to the clients on 500 errors.  If  False,  the
              server will respond with empty bodies.

              WARNING:
                 This option is deprecated for removal.  Its value may be silently ignored in the future.

                 Reason The ‘wsgi_server_debug’ option is deprecated and will be removed in a future release.

       debugType   boolean

              DefaultFalseMutable
                     This option can be changed without restarting.

              If set to true, the logging level will be set to DEBUG instead of the default INFO level.

       log_config_appendType   string

              Default<None>Mutable
                     This option can be changed without restarting.

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

   DeprecatedVariations
                                               ┌─────────┬────────────┐
                                               │ Group   │ Name       │
                                               ├─────────┼────────────┤
                                               │ DEFAULT │ log-config │
                                               ├─────────┼────────────┤
                                               │ DEFAULT │ log_config │
                                               └─────────┴────────────┘

       log_date_formatType   string

              Default%Y-%m-%d%H:%M:%S

              Defines the format string for %(asctime)s in log records. Default: the value above .  This  option
              is ignored if log_config_append is set.

       log_fileType   string

              Default<None>

              (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.

   DeprecatedVariations
                                                ┌─────────┬─────────┐
                                                │ Group   │ Name    │
                                                ├─────────┼─────────┤
                                                │ DEFAULT │ logfile │
                                                └─────────┴─────────┘

       log_dirType   string

              Default<None>

              (Optional) The base directory used for  relative  log_file   paths.  This  option  is  ignored  if
              log_config_append is set.

   DeprecatedVariations
                                                 ┌─────────┬────────┐
                                                 │ Group   │ Name   │
                                                 ├─────────┼────────┤
                                                 │ DEFAULT │ logdir │
                                                 └─────────┴────────┘

       watch_log_fileType   boolean

              DefaultFalse

              Uses logging handler designed to watch file system. When log file is moved or removed this handler
              will  open  a  new  log  file with specified path instantaneously. It makes sense only if log_file
              option is specified and Linux platform is used. This option is  ignored  if  log_config_append  is
              set.

              WARNING:
                 This option is deprecated for removal.  Its value may be silently ignored in the future.

                 Reason This  function  is  known  to  have  bene  broken  for  long  time,  and  depends on the
                        unmaintained library

       use_syslogType   boolean

              DefaultFalse

              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.

       use_journalType   boolean

              DefaultFalse

              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.

       syslog_log_facilityType   string

              DefaultLOG_USER

              Syslog facility to receive log lines. This option is ignored if log_config_append is set.

       use_jsonType   boolean

              DefaultFalse

              Use JSON formatting for logging. This option is ignored if log_config_append is set.

       use_stderrType   boolean

              DefaultFalse

              Log output to standard error. This option is ignored if log_config_append is set.

       log_colorType   boolean

              DefaultFalse

              (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.

       log_rotate_intervalType   integer

              Default1

              The   amount   of  time  before  the  log  files  are  rotated.  This  option  is  ignored  unless
              log_rotation_type is set to “interval”.

       log_rotate_interval_typeType   string

              DefaultdaysValidValues
                     Seconds, Minutes, Hours, Days, Weekday, Midnight

              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.

       max_logfile_countType   integer

              Default30

              Maximum number of rotated log files.

       max_logfile_size_mbType   integer

              Default200

              Log file maximum size in MB. This option is ignored if “log_rotation_type” is not set to “size”.

       log_rotation_typeType   string

              DefaultnoneValidValues
                     interval, size, none

              Log rotation type.

              Possible values

              interval
                     Rotate logs at predefined time intervals.

              size   Rotate logs once they reach a predefined size.

              none   Do not rotate log files.

       logging_context_format_stringType   string

              Default%(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 with context. Used by oslo_log.formatters.ContextFormatter

       logging_default_format_stringType   string

              Default%(asctime)s.%(msecs)03d%(process)d%(levelname)s%(name)s[-]%(instance)s%(message)s

              Format   string   to   use   for   log   messages   when   context   is   undefined.    Used    by
              oslo_log.formatters.ContextFormatter

       logging_debug_format_suffixType   string

              Default%(funcName)s%(pathname)s:%(lineno)d

              Additional  data  to  append  to  log message when logging level for the message is DEBUG. Used by
              oslo_log.formatters.ContextFormatter

       logging_exception_prefixType   string

              Default%(asctime)s.%(msecs)03d%(process)dERROR%(name)s%(instance)s

              Prefix    each    line    of    exception     output     with     this     format.     Used     by
              oslo_log.formatters.ContextFormatter

       logging_user_identity_formatType   string

              Default%(user)s%(project)s%(domain)s%(system_scope)s%(user_domain)s%(project_domain)s

              Defines  the  format  string  for %(user_identity)s that is used in logging_context_format_string.
              Used by oslo_log.formatters.ContextFormatter

       default_log_levelsType   list

              Default['amqp=WARN','amqplib=WARN','boto=WARN','qpid=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']

              List  of package logging levels in logger=LEVEL pairs. This option is ignored if log_config_append
              is set.

       publish_errorsType   boolean

              DefaultFalse

              Enables or disables publication of error events.

       instance_formatType   string

              Default"[instance:%(uuid)s]"

              The format for an instance that is passed with the log message.

       instance_uuid_formatType   string

              Default"[instance:%(uuid)s]"

              The format for an instance UUID that is passed with the log message.

       rate_limit_intervalType   integer

              Default0

              Interval, number of seconds, of log rate limiting.

       rate_limit_burstType   integer

              Default0

              Maximum number of logged messages per rate_limit_interval.

       rate_limit_except_levelType   string

              DefaultCRITICALValidValues
                     CRITICAL, ERROR, INFO, WARNING, DEBUG, ‘’

              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.

       fatal_deprecationsType   boolean

              DefaultFalse

              Enables or disables fatal status of deprecations.

       executor_thread_pool_sizeType   integer

              Default64

              Size of executor thread pool when executor is threading or eventlet.

   DeprecatedVariations
                                          ┌─────────┬──────────────────────┐
                                          │ Group   │ Name                 │
                                          ├─────────┼──────────────────────┤
                                          │ DEFAULT │ rpc_thread_pool_size │
                                          └─────────┴──────────────────────┘

       rpc_response_timeoutType   integer

              Default60

              Seconds to wait for a response from a call.

       transport_urlType   string

              Defaultrabbit://

              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.htmlcontrol_exchangeType   string

              Defaultopenstack

              The  default  exchange  under  which  topics  are  scoped.  May  be overridden by an exchange name
              specified in the transport_url option.

       rpc_ping_enabledType   boolean

              DefaultFalse

              Add an endpoint to answer to ping calls. Endpoint is named oslo_rpc_server_ping

   coordinationbackend_urlType   string

              Default<None>

              The backend URL to use  for  distributed  coordination.By  default  it’s  None  which  means  that
              coordination  is disabled. The coordination is implemented for distributed lock management and was
              tested with etcd.Coordination doesn’t work for file driver because lock files aren’t removed after
              lock releasing.

   corsallowed_originType   list

              Default<None>

              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.comallow_credentialsType   boolean

              DefaultTrue

              Indicate that the actual request can include user credentials

       expose_headersType   list

              Default[]

              Indicate which headers are safe to expose to the API. Defaults to HTTP Simple Headers.

       max_ageType   integer

              Default3600

              Maximum cache age of CORS preflight requests.

       allow_methodsType   list

              Default['OPTIONS','GET','HEAD','POST','PUT','DELETE','TRACE','PATCH']

              Indicate which methods can be used during the actual request.

       allow_headersType   list

              Default[]

              Indicate which header field names may be used during the actual request.

   databasesqlite_synchronousType   boolean

              DefaultTrue

              If True, SQLite uses synchronous mode.

       backendType   string

              Defaultsqlalchemy

              The back end to use for the database.

       connectionType   string

              Default<None>

              The SQLAlchemy connection string to use to connect to the database.

       slave_connectionType   string

              Default<None>

              The SQLAlchemy connection string to use to connect to the slave database.

       asyncio_connectionType   string

              Default<None>

              The SQLAlchemy asyncio connection string to use to connect to the database.

       asyncio_slave_connectionType   string

              Default<None>

              The SQLAlchemy asyncio connection string to use to connect to the slave database.

       mysql_sql_modeType   string

              DefaultTRADITIONAL

              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=

       mysql_wsrep_sync_waitType   integer

              Default<None>

              For Galera only, configure wsrep_sync_wait causality checks on new connections.  Default is  None,
              meaning don’t configure any setting.

       connection_recycle_timeType   integer

              Default3600

              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.

       max_pool_sizeType   integer

              Default5

              Maximum number of SQL connections to keep open in a pool. Setting a value of 0 indicates no limit.

       max_retriesType   integer

              Default10

              Maximum  number  of  database  connection retries during startup. Set to -1 to specify an infinite
              retry count.

       retry_intervalType   integer

              Default10

              Interval between retries of opening a SQL connection.

       max_overflowType   integer

              Default50

              If set, use this value for max_overflow with SQLAlchemy.

       connection_debugType   integer

              Default0MinimumValue
                     0

              MaximumValue
                     100

              Verbosity of SQL debugging information: 0=None, 100=Everything.

       connection_traceType   boolean

              DefaultFalse

              Add Python stack traces to SQL as comment strings.

       pool_timeoutType   integer

              Default<None>

              If set, use this value for pool_timeout with SQLAlchemy.

       use_db_reconnectType   boolean

              DefaultFalse

              Enable the experimental use of database reconnect on connection lost.

       db_retry_intervalType   integer

              Default1

              Seconds between retries of a database transaction.

       db_inc_retry_intervalType   boolean

              DefaultTrue

              If  True,  increases  the   interval   between   retries   of   a   database   operation   up   to
              db_max_retry_interval.

       db_max_retry_intervalType   integer

              Default10

              If db_inc_retry_interval is set, the maximum seconds between retries of a database operation.

       db_max_retriesType   integer

              Default20

              Maximum retries in case of connection error or deadlock error before error is raised. Set to -1 to
              specify an infinite retry count.

       connection_parametersType   string

              Default''

              Optional  URL  parameters  to  append  onto  the  connection  URL  at  connect  time;  specify  as
              param1=value1&param2=value2&…

   healthcheckpathType   string

              Default/healthcheck

              The path to respond to healtcheck requests on.

              WARNING:
                 This option is deprecated for removal.  Its value may be silently ignored in the future.

       detailedType   boolean

              DefaultFalse

              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.

       backendsType   list

              Default[]

              Additional backends that can perform health checks and report that information back as part  of  a
              request.

       allowed_source_rangesType   list

              Default[]

              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.

       ignore_proxied_requestsType   boolean

              DefaultFalse

              Ignore requests with proxy headers.

       disable_by_file_pathType   string

              Default<None>

              Check the presence of a file to determine if  an  application  is  running  on  a  port.  Used  by
              DisableByFileHealthcheck plugin.

       disable_by_file_pathsType   list

              Default[]

              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.

       enable_by_file_pathsType   list

              Default[]

              Check the presence of files. Used by EnableByFilesHealthcheck plugin.

   host_failureevacuate_all_instancesType   boolean

              DefaultTrue

              Operators  can   decide   whether   all   instances   or   only   those   instances   which   have
              [host_failure]\ha_enabled_instance_metadata_key  set to True should be allowed for evacuation from
              a failed source compute node.  When set to True, it will evacuate  all  instances  from  a  failed
              source   compute   node.    First   preference  will  be  given  to  those  instances  which  have
              [host_failure]\ha_enabled_instance_metadata_key set  to  True,  and  then  it  will  evacuate  the
              remaining   ones.   When  set  to  False,  it  will  evacuate  only  those  instances  which  have
              [host_failure]\ha_enabled_instance_metadata_key set to True.

       ha_enabled_instance_metadata_keyType   string

              DefaultHA_Enabled

              Operators can decide on the instance metadata key naming that affects the  per-instance  behaviour
              of  [host_failure]\evacuate_all_instances.   The default is the same for both failure types (host,
              instance) but the value can be overridden to make the metadata key different per failure type.

       ignore_instances_in_error_stateType   boolean

              DefaultFalse

              Operators can decide whether error instances should be allowed for evacuation from a failed source
              compute node or not. When set to True, it will ignore  error  instances  from  evacuation  from  a
              failed  source  compute node. When set to False, it will evacuate error instances along with other
              instances from a failed source compute node.

       add_reserved_host_to_aggregateType   boolean

              DefaultFalse

              Operators can decide whether reserved_host should be added to aggregate group  of  failed  compute
              host. When set to True, reserved host will be added to the aggregate group of failed compute host.
              When  set  to  False, the reserved_host will not be added to the aggregate group of failed compute
              host.

       service_disable_reasonType   string

              DefaultMasakaridetectedhostfailed.

              Compute disable reason in case Masakari detects host failure.

   instance_failureprocess_all_instancesType   boolean

              DefaultFalse

              Operators  can   decide   whether   all   instances   or   only   those   instances   which   have
              [instance_failure]\ha_enabled_instance_metadata_key  set  to  True should be taken into account to
              recover from instance failure events.  When set to True, it will execute instance failure recovery
              actions   for   an   instance   irrespective   of   whether   that   particular    instance    has
              [instance_failure]\ha_enabled_instance_metadata_key  set to True.  When set to False, it will only
              execute    instance    failure    recovery    actions    for     an     instance     which     has
              [instance_failure]\ha_enabled_instance_metadata_key set to True.

       ha_enabled_instance_metadata_keyType   string

              DefaultHA_Enabled

              Operators  can  decide on the instance metadata key naming that affects the per-instance behaviour
              of [instance_failure]\process_all_instances.  The default is  the  same  for  both  failure  types
              (host,  instance)  but  the value can be overridden to make the metadata key different per failure
              type.

   keystone_authtokenwww_authenticate_uriType   string

              Default<None>

              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.  If  you’re  using a versioned v2 endpoint here, then this should not be the same endpoint
              the service user utilizes for validating tokens, because normal end users may not be able to reach
              that endpoint.

   DeprecatedVariations
                                          ┌────────────────────┬──────────┐
                                          │ Group              │ Name     │
                                          ├────────────────────┼──────────┤
                                          │ keystone_authtoken │ auth_uri │
                                          └────────────────────┴──────────┘

       auth_uriType   string

              Default<None>

              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.  If  you’re  using a versioned v2 endpoint here, then this should not be the same endpoint
              the service user utilizes for validating tokens, because normal end users may not be able to reach
              that endpoint. This option is deprecated in favor of www_authenticate_uri and will be  removed  in
              the S release.

              WARNING:
                 This  option  is deprecated for removal since Queens.  Its value may be silently ignored in the
                 future.

                 Reason The auth_uri option is deprecated in favor of www_authenticate_uri and will  be  removed
                        in the S  release.

       auth_versionType   string

              Default<None>

              API version of the Identity API endpoint.

       interfaceType   string

              Defaultinternal

              Interface to use for the Identity API endpoint. Valid values are “public”, “internal” (default) or
              “admin”.

       delay_auth_decisionType   boolean

              DefaultFalse

              Do  not  handle  authorization  requests  within  the  middleware,  but delegate the authorization
              decision to downstream WSGI components.

       http_connect_timeoutType   integer

              Default<None>

              Request timeout value for communicating with Identity API server.

       http_request_max_retriesType   integer

              Default3

              How many times are we trying to reconnect when communicating with Identity API Server.

       cacheType   string

              Default<None>

              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.

       certfileType   string

              Default<None>

              Required if identity server requires client certificate

       keyfileType   string

              Default<None>

              Required if identity server requires client certificate

       cafileType   string

              Default<None>

              A PEM encoded Certificate Authority to use when verifying HTTPs connections.  Defaults  to  system
              CAs.

       insecureType   boolean

              DefaultFalse

              Verify HTTPS connections.

       region_nameType   string

              Default<None>

              The region in which the identity server can be found.

       memcached_serversType   list

              Default<None>

              Optionally  specify  a  list  of memcached server(s) to use for caching. If left undefined, tokens
              will instead be cached in-process.

   DeprecatedVariations
                                      ┌────────────────────┬──────────────────┐
                                      │ Group              │ Name             │
                                      ├────────────────────┼──────────────────┤
                                      │ keystone_authtoken │ memcache_servers │
                                      └────────────────────┴──────────────────┘

       token_cache_timeType   integer

              Default300

              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.

       memcache_security_strategyType   string

              DefaultNoneValidValues
                     None, MAC, ENCRYPT

              (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.

       memcache_secret_keyType   string

              Default<None>

              (Optional, mandatory if memcache_security_strategy  is  defined)  This  string  is  used  for  key
              derivation.

       memcache_pool_dead_retryType   integer

              Default300

              (Optional) Number of seconds memcached server is considered dead before it is tried again.

       memcache_pool_maxsizeType   integer

              Default10

              (Optional) Maximum total number of open connections to every memcached server.

       memcache_pool_socket_timeoutType   integer

              Default3

              (Optional) Socket timeout in seconds for communicating with a memcached server.

       memcache_pool_unused_timeoutType   integer

              Default60

              (Optional)  Number  of  seconds  a connection to memcached is held unused in the pool before it is
              closed.

       memcache_pool_conn_get_timeoutType   integer

              Default10

              (Optional) Number of seconds that an operation will wait to get a memcached client connection from
              the pool.

       memcache_use_advanced_poolType   boolean

              DefaultTrue

              (Optional) Use the advanced (eventlet safe) memcached client pool.

       include_service_catalogType   boolean

              DefaultTrue

              (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.

       enforce_token_bindType   string

              Defaultpermissive

              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.

       service_token_rolesType   list

              Default['service']

              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.

       service_token_roles_requiredType   boolean

              DefaultFalse

              For backwards compatibility reasons we must let valid service tokens  pass  that  don’t  pass  the
              service_token_roles  check as valid. Setting this true will become the default in a future release
              and should be enabled if possible.

       service_typeType   string

              Default<None>

              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.

       memcache_sasl_enabledType   boolean

              DefaultFalse

              Enable  the  SASL(Simple  Authentication  and  Security  Layer)  if  the SASL_enable is true, else
              disable.

       memcache_usernameType   string

              Default''

              the user name for the SASL

       memcache_passwordType   string

              Default''

              the username password for SASL

       auth_typeType   unknown type

              Default<None>

              Authentication type to load

   DeprecatedVariations
                                         ┌────────────────────┬─────────────┐
                                         │ Group              │ Name        │
                                         ├────────────────────┼─────────────┤
                                         │ keystone_authtoken │ auth_plugin │
                                         └────────────────────┴─────────────┘

       auth_sectionType   unknown type

              Default<None>

              Config Section from which to load plugin specific options

   osapi_v1extensions_blacklistType   list

              Default[]DEPRECATED

              This option is a list of all of the v2.1 API extensions to never load. However, it will be removed
              in the near future, after which the all the functionality that was previously in  extensions  will
              be part of the standard API, and thus always accessible.

              • Possible values:

                A list of strings, each being the alias of an extension that you do not wish to load.

              • Services that use this:

                masakari-api

              • Related options:

                enabled, extensions_whitelist

   DeprecatedVariations
                                         ┌──────────┬──────────────────────┐
                                         │ Group    │ Name                 │
                                         ├──────────┼──────────────────────┤
                                         │ osapi_v1 │ extensions_blacklist │
                                         └──────────┴──────────────────────┘

       WARNING:
                 This option is deprecated for removal.  Its value may be silently ignored in the future.

       extensions_whitelistType   list

              Default[]DEPRECATED

              This  is  a  list of extensions. If it is empty, then all extensions except those specified in the
              extensions_blacklist option will be loaded. If it is not empty, then only those extensions in this
              list will be loaded, provided that they are also not in the extensions_blacklist option. Once this
              deprecated option is removed, after which  the  all  the  functionality  that  was  previously  in
              extensions will be part of the standard API, and thus always accessible.

              • Possible values:

                A list of strings, each being the alias of an extension that you wish to load, or an empty list,
                which indicates that all extensions are to be run.

              • Services that use this:

                masakari-api

              • Related options:

                enabled, extensions_blacklist

   DeprecatedVariations
                                         ┌──────────┬──────────────────────┐
                                         │ Group    │ Name                 │
                                         ├──────────┼──────────────────────┤
                                         │ osapi_v1 │ extensions_whitelist │
                                         └──────────┴──────────────────────┘

       WARNING:
                 This option is deprecated for removal.  Its value may be silently ignored in the future.

       project_id_regexType   string

              Default<None>DEPRECATED

              This  option  is a string representing a regular expression (regex) that matches the project_id as
              contained in URLs. If not set, it will match normal UUIDs created by keystone.

              • Possible values:

                A string representing any legal regular expression

              • Services that use this:

                masakari-api

              • Related options:

                None

   DeprecatedVariations
                                           ┌──────────┬──────────────────┐
                                           │ Group    │ Name             │
                                           ├──────────┼──────────────────┤
                                           │ osapi_v1 │ project_id_regex │
                                           └──────────┴──────────────────┘

       WARNING:
                 This option is deprecated for removal.  Its value may be silently ignored in the future.

   oslo_messaging_kafkakafka_max_fetch_bytesType   integer

              Default1048576

              Max fetch bytes of Kafka consumer

       kafka_consumer_timeoutType   floating point

              Default1.0

              Default timeout(s) for Kafka consumers

       consumer_groupType   string

              Defaultoslo_messaging_consumer

              Group id for Kafka consumer. Consumers in one group will coordinate message consumption

       producer_batch_timeoutType   floating point

              Default0.0

              Upper bound on the delay for KafkaProducer batching in seconds

       producer_batch_sizeType   integer

              Default16384

              Size of batch for the producer async send

       compression_codecType   string

              DefaultnoneValidValues
                     none, gzip, snappy, lz4, zstd

              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

       enable_auto_commitType   boolean

              DefaultFalse

              Enable asynchronous consumer commits

       max_poll_recordsType   integer

              Default500

              The maximum number of records returned in a poll call

       security_protocolType   string

              DefaultPLAINTEXTValidValues
                     PLAINTEXT, SASL_PLAINTEXT, SSL, SASL_SSL

              Protocol used to communicate with brokers

       sasl_mechanismType   string

              DefaultPLAIN

              Mechanism when security protocol is SASL

       ssl_cafileType   string

              Default''

              CA certificate PEM file used to verify the server certificate

       ssl_client_cert_fileType   string

              Default''

              Client certificate PEM file used for authentication.

       ssl_client_key_fileType   string

              Default''

              Client key PEM file used for authentication.

       ssl_client_key_passwordType   string

              Default''

              Client key password file used for authentication.

   oslo_messaging_notificationsdriverType   multi-valued

              Default''

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

       transport_urlType   string

              Default<None>

              A URL representing the messaging driver to use for notifications. If not set, we fall back to  the
              same configuration used for RPC.

       topicsType   list

              Default['notifications']

              AMQP topic used for OpenStack notifications.

       retryType   integer

              Default-1

              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

   oslo_messaging_rabbitamqp_durable_queuesType   boolean

              DefaultFalse

              Use durable queues in AMQP. If rabbit_quorum_queue is enabled, queues will  be  durable  and  this
              value will be ignored.

       amqp_auto_deleteType   boolean

              DefaultFalse

              Auto-delete queues in AMQP.

       rpc_conn_pool_sizeType   integer

              Default30MinimumValue
                     1

              Size of RPC connection pool.

       conn_pool_min_sizeType   integer

              Default2

              The pool size limit for connections expiration policy

       conn_pool_ttlType   integer

              Default1200

              The time-to-live in sec of idle connections in the pool

       sslType   boolean

              DefaultFalse

              Connect over SSL.

       ssl_versionType   string

              Default''

              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.

       ssl_key_fileType   string

              Default''

              SSL key file (valid only if SSL enabled).

       ssl_cert_fileType   string

              Default''

              SSL cert file (valid only if SSL enabled).

       ssl_ca_fileType   string

              Default''

              SSL certification authority file (valid only if SSL enabled).

       ssl_enforce_fips_modeType   boolean

              DefaultFalse

              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.

       heartbeat_in_pthreadType   boolean

              DefaultFalse

              (DEPRECATED) It is recommend not to use this option anymore. Run the health check heartbeat thread
              through  a native python thread by default. If this option is equal to False then the health check
              heartbeat will inherit the execution model from the parent process.  For  example  if  the  parent
              process  has  monkey  patched the stdlib by using eventlet/greenlet then the heartbeat will be run
              through a green thread. This option should be set to True only for the wsgi services.

              WARNING:
                 This option is deprecated for removal.  Its value may be silently ignored in the future.

                 Reason The option is related to Eventlet which will be removed.  In  addition  this  has  never
                        worked as expected with services using eventlet for core service framework.

       kombu_reconnect_delayType   floating point

              Default1.0MinimumValue
                     0.0

              MaximumValue
                     4.5

              How  long  to  wait  (in  seconds)  before  reconnecting  in  response  to an AMQP consumer cancel
              notification.

       kombu_reconnect_splayType   floating point

              Default0.0MinimumValue
                     0.0

              Random time to wait for when reconnecting in response to an AMQP consumer cancel notification.

       kombu_compressionType   string

              Default<None>

              EXPERIMENTAL: Possible values are: gzip, bz2. If not set compression will not be used. This option
              may not be available in future versions.

       kombu_missing_consumer_retry_timeoutType   integer

              Default60

              How long to wait a missing client before abandoning to send it its replies. This value should  not
              be longer than rpc_response_timeout.

   DeprecatedVariations
                                 ┌───────────────────────┬─────────────────────────┐
                                 │ Group                 │ Name                    │
                                 ├───────────────────────┼─────────────────────────┤
                                 │ oslo_messaging_rabbit │ kombu_reconnect_timeout │
                                 └───────────────────────┴─────────────────────────┘

       kombu_failover_strategyType   string

              Defaultround-robinValidValues
                     round-robin, shuffle

              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.

       rabbit_login_methodType   string

              DefaultAMQPLAINValidValues
                     PLAIN, AMQPLAIN, EXTERNAL, RABBIT-CR-DEMO

              The RabbitMQ login method.

       rabbit_retry_intervalType   integer

              Default1MinimumValue
                     1

              How frequently to retry connecting with RabbitMQ.

       rabbit_retry_backoffType   integer

              Default2MinimumValue
                     0

              How long to backoff for between retries when connecting to RabbitMQ.

       rabbit_interval_maxType   integer

              Default30MinimumValue
                     1

              Maximum interval of RabbitMQ connection retries.

       rabbit_ha_queuesType   boolean

              DefaultFalse

              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”}’ “

       rabbit_quorum_queueType   boolean

              DefaultFalse

              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.

       rabbit_transient_quorum_queueType   boolean

              DefaultFalse

              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.

       rabbit_quorum_delivery_limitType   integer

              Default0

              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.

       rabbit_quorum_max_memory_lengthType   integer

              Default0

              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.

   DeprecatedVariations
                             ┌───────────────────────┬─────────────────────────────────┐
                             │ Group                 │ Name                            │
                             ├───────────────────────┼─────────────────────────────────┤
                             │ oslo_messaging_rabbit │ rabbit_quroum_max_memory_length │
                             └───────────────────────┴─────────────────────────────────┘

       rabbit_quorum_max_memory_bytesType   integer

              Default0

              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.

   DeprecatedVariations
                              ┌───────────────────────┬────────────────────────────────┐
                              │ Group                 │ Name                           │
                              ├───────────────────────┼────────────────────────────────┤
                              │ oslo_messaging_rabbit │ rabbit_quroum_max_memory_bytes │
                              └───────────────────────┴────────────────────────────────┘

       rabbit_transient_queues_ttlType   integer

              Default1800MinimumValue
                     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

       rabbit_qos_prefetch_countType   integer

              Default0

              Specifies the number of messages to prefetch. Setting to zero allows unlimited messages.

       heartbeat_timeout_thresholdType   integer

              Default60

              Number of seconds after which the Rabbit broker is considered down if heartbeat’s keep-alive fails
              (0 disables heartbeat).

       heartbeat_rateType   integer

              Default3

              How often times during the heartbeat_timeout_threshold we check the heartbeat.

       direct_mandatory_flagType   boolean

              DefaultTrue

              (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

              WARNING:
                 This option is deprecated for removal.  Its value may be silently ignored in the future.

                 Reason Mandatory flag no longer deactivable.

       enable_cancel_on_failoverType   boolean

              DefaultFalse

              Enable  x-cancel-on-ha-failover  flag so that rabbitmq server will cancel and notify consumerswhen
              queue is down

       use_queue_managerType   boolean

              DefaultFalse

              Should we use consistant queue names or random ones

       hostnameType   string

              Defaultnode1.example.com

              This option has a sample default set, which means that its actual default value may vary from  the
              one documented above.

              Hostname used by queue manager. Defaults to the value returned by socket.gethostname().

       processnameType   string

              Defaultnova-api

              This  option has a sample default set, which means that its actual default value may vary from the
              one documented above.

              Process name used by queue manager

       rabbit_stream_fanoutType   boolean

              DefaultFalse

              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.

   oslo_middlewaremax_request_body_sizeType   integer

              Default114688

              The maximum body size for each  request, in bytes.

   DeprecatedVariations
                                      ┌─────────┬─────────────────────────────┐
                                      │ Group   │ Name                        │
                                      ├─────────┼─────────────────────────────┤
                                      │ DEFAULT │ osapi_max_request_body_size │
                                      ├─────────┼─────────────────────────────┤
                                      │ DEFAULT │ max_request_body_size       │
                                      └─────────┴─────────────────────────────┘

       enable_proxy_headers_parsingType   boolean

              DefaultFalse

              Whether  the  application is behind a proxy or not. This determines if the middleware should parse
              the headers or not.

       http_basic_auth_user_fileType   string

              Default/etc/htpasswd

              HTTP basic auth password file.

   oslo_policyenforce_scopeType   boolean

              DefaultTrue

              This option controls whether or not to enforce scope when evaluating policies. If True, the  scope
              of  the  token used in the request is compared to the scope_types of the policy being enforced. If
              the scopes do not match, an InvalidScope exception will be raised. If False,  a  message  will  be
              logged informing operators that policies are being invoked with mismatching scope.

              WARNING:
                 This option is deprecated for removal.  Its value may be silently ignored in the future.

                 Reason This  configuration  was  added temporarily to facilitate a smooth transition to the new
                        RBAC.  OpenStack  will  always  enforce  scope  checks.  This  configuration  option  is
                        deprecated and will be removed in the 2025.2 cycle.

       enforce_new_defaultsType   boolean

              DefaultTrue

              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. It is
              encouraged to enable this flag along with the enforce_scope flag so that you can get the  benefits
              of new defaults and scope_type together. 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.

       policy_fileType   string

              Defaultpolicy.yaml

              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.

       policy_default_ruleType   string

              Defaultdefault

              Default rule. Enforced when a requested rule is not found.

       policy_dirsType   multi-valued

              Defaultpolicy.d

              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.

       remote_content_typeType   string

              Defaultapplication/x-www-form-urlencodedValidValues
                     application/x-www-form-urlencoded, application/json

              Content Type to send and receive data for REST based policy check

       remote_ssl_verify_server_crtType   boolean

              DefaultFalse

              server identity verification for REST based policy check

       remote_ssl_ca_crt_fileType   string

              Default<None>

              Absolute path to ca cert file for REST based policy check

       remote_ssl_client_crt_fileType   string

              Default<None>

              Absolute path to client cert for REST based policy check

       remote_ssl_client_key_fileType   string

              Default<None>

              Absolute path client key file REST based policy check

       remote_timeoutType   floating point

              Default60MinimumValue
                     0

              Timeout in seconds for REST based policy check

   oslo_versionedobjectsfatal_exception_format_errorsType   boolean

              DefaultFalse

              Make exception message format errors fatal

   process_failureservice_disable_reasonType   string

              DefaultMasakaridetectedprocessfailed.

              Compute disable reason in case Masakari detects process failure.

   sslca_fileType   string

              Default<None>

              CA certificate file to use to verify connecting clients.

              WARNING:
                 This option is deprecated for removal.  Its value may be silently ignored in the future.

                 Reason The ‘ca_file’ option is deprecated and will be removed in a future release.

       cert_fileType   string

              Default<None>

              Certificate file to use when starting the server securely.

              WARNING:
                 This option is deprecated for removal.  Its value may be silently ignored in the future.

                 Reason The ‘cert_file’ option is deprecated and will be removed in a future release.

       key_fileType   string

              Default<None>

              Private key file to use when starting the server securely.

              WARNING:
                 This option is deprecated for removal.  Its value may be silently ignored in the future.

                 Reason The ‘key_file’ option is deprecated and will be removed in a future release.

       versionType   string

              Default<None>

              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.

              WARNING:
                 This option is deprecated for removal.  Its value may be silently ignored in the future.

                 Reason The ‘version’ option is deprecated and will be removed in a future release.

       ciphersType   string

              Default<None>

              Sets the list of available ciphers. value should be a string in the OpenSSL cipher list format.

              WARNING:
                 This option is deprecated for removal.  Its value may be silently ignored in the future.

                 Reason The ‘ciphers’ option is deprecated and will be removed in a future release.

   taskflowconnectionType   string

              Default<None>

              The SQLAlchemy connection string to use to connect to the taskflow database.

   wsgiapi_paste_configType   string

              Defaultapi-paste.ini

              File name for the paste.deploy config for masakari-api

   DeprecatedVariations
                                            ┌─────────┬──────────────────┐
                                            │ Group   │ Name             │
                                            ├─────────┼──────────────────┤
                                            │ DEFAULT │ api_paste_config │
                                            └─────────┴──────────────────┘

       wsgi_log_formatType   string

              Default%(client_ip)s"%(request_line)s"status:%(status_code)slen:%(body_length)stime:%(wall_seconds).7f

              A  python  format  string that is used as the template to generate log lines. The following values
              can  be  formatted  into  it:  client_ip,  date_time,  request_line,   status_code,   body_length,
              wall_seconds.

   DeprecatedVariations
                                            ┌─────────┬─────────────────┐
                                            │ Group   │ Name            │
                                            ├─────────┼─────────────────┤
                                            │ DEFAULT │ wsgi_log_format │
                                            └─────────┴─────────────────┘

       secure_proxy_ssl_headerType   string

              Default<None>

              The  HTTP  header used to determine the scheme for the original request, even if it was removed by
              an SSL terminating proxy. Typical value is “HTTP_X_FORWARDED_PROTO”.

   DeprecatedVariations
                                        ┌─────────┬─────────────────────────┐
                                        │ Group   │ Name                    │
                                        ├─────────┼─────────────────────────┤
                                        │ DEFAULT │ secure_proxy_ssl_header │
                                        └─────────┴─────────────────────────┘

       ssl_ca_fileType   string

              Default<None>

              CA certificate file to use to verify connecting clients

   DeprecatedVariations
                                              ┌─────────┬─────────────┐
                                              │ Group   │ Name        │
                                              ├─────────┼─────────────┤
                                              │ DEFAULT │ ssl_ca_file │
                                              └─────────┴─────────────┘

       ssl_cert_fileType   string

              Default<None>

              SSL certificate of API server

   DeprecatedVariations
                                             ┌─────────┬───────────────┐
                                             │ Group   │ Name          │
                                             ├─────────┼───────────────┤
                                             │ DEFAULT │ ssl_cert_file │
                                             └─────────┴───────────────┘

       ssl_key_fileType   string

              Default<None>

              SSL private key of API server

   DeprecatedVariations
                                              ┌─────────┬──────────────┐
                                              │ Group   │ Name         │
                                              ├─────────┼──────────────┤
                                              │ DEFAULT │ ssl_key_file │
                                              └─────────┴──────────────┘

       tcp_keepidleType   integer

              Default600

              Sets the value of TCP_KEEPIDLE in seconds for each server socket. Not supported on OS X.

   DeprecatedVariations
                                              ┌─────────┬──────────────┐
                                              │ Group   │ Name         │
                                              ├─────────┼──────────────┤
                                              │ DEFAULT │ tcp_keepidle │
                                              └─────────┴──────────────┘

       default_pool_sizeType   integer

              Default1000

              Size of the pool of greenthreads used by wsgi

   DeprecatedVariations
                                         ┌─────────┬────────────────────────┐
                                         │ Group   │ Name                   │
                                         ├─────────┼────────────────────────┤
                                         │ DEFAULT │ wsgi_default_pool_size │
                                         └─────────┴────────────────────────┘

       max_header_lineType   integer

              Default16384

              Maximum line size of message headers to be accepted. max_header_line may need to be increased when
              using large tokens (typically those generated by the Keystone v3 API with big service catalogs).

   DeprecatedVariations
                                            ┌─────────┬─────────────────┐
                                            │ Group   │ Name            │
                                            ├─────────┼─────────────────┤
                                            │ DEFAULT │ max_header_line │
                                            └─────────┴─────────────────┘

       keep_aliveType   boolean

              DefaultTrue

              If False, closes the client socket connection explicitly.

   DeprecatedVariations
                                            ┌─────────┬─────────────────┐
                                            │ Group   │ Name            │
                                            ├─────────┼─────────────────┤
                                            │ DEFAULT │ wsgi_keep_alive │
                                            └─────────┴─────────────────┘

       client_socket_timeoutType   integer

              Default900

              Timeout for client connections’ socket operations. If an incoming  connection  is  idle  for  this
              number of seconds it will be closed. A value of ‘0’ means wait forever.

   DeprecatedVariations
                                         ┌─────────┬───────────────────────┐
                                         │ Group   │ Name                  │
                                         ├─────────┼───────────────────────┤
                                         │ DEFAULT │ client_socket_timeout │
                                         └─────────┴───────────────────────┘

   ConfigurationGuide
       The configuration for masakari lies in below described files.

   Configuration
       Masakari has two main config files: masakari.conf and recovery_workflow_sample_config.conf.

       • ConfigReference: A complete reference of all config points in masakari and what they impact.

       • RecoveryConfigReference: A complete reference of all config points in masakari and what they impact.

   Policy
       Masakari,  like  most  OpenStack  projects,  uses  a  policy language to restrict permissions on REST API
       actions.

       • PolicyReference: A complete reference of all policy points in masakari and what they impact.

       • SamplepolicyFile: A sample policy file with inline documentation.

   APIconfigurationsettingsAPIconfiguration: A complete reference of API configuration settings.

   MasakariPoliciesWARNING:
          JSON  formatted   policy   file   is   deprecated   since   Masakari   11.0.0   (Wallaby).    This   ‐
          oslopolicy-convert-json-to-yaml  tool will migrate your existing JSON-formatted policy file to YAML in
          a backward-compatible way.

       The following is an overview of all available policies in masakari.  For  a  sample  configuration  file,
       refer to SampleMasakariPolicyFile.

   masakaricontext_is_adminDefaultrole:admin

              Decides what is required for the ‘is_admin:True’ check to succeed.

       admin_or_ownerDefaultis_admin:Trueorproject_id:%(project_id)s

              Default rule for most non-Admin APIs.

       admin_apiDefaultis_admin:True

              Default rule for most Admin APIs.

       os_masakari_api:extensions:indexDefaultrule:admin_apiOperationsGET/extensions

              List available extensions.

       os_masakari_api:extensions:detailDefaultrule:admin_apiOperationsGET/extensions/{extensions_id}

              Shows information for an extension.

       os_masakari_api:extensions:discoverableDefaultrule:admin_api

              Extension Info API extensions to change the API.

       os_masakari_api:os-hosts:indexDefaultrule:admin_apiOperationsGET/segments/{segment_id}/hosts

              Lists IDs, names, type, reserved, on_maintenance for all hosts.

       os_masakari_api:os-hosts:detailDefaultrule:admin_apiOperationsGET/segments/{segment_id}/hosts/{host_id}

              Shows details for a host.

       os_masakari_api:os-hosts:createDefaultrule:admin_apiOperationsPOST/segments/{segment_id}/hosts

              Creates a host under given segment.

       os_masakari_api:os-hosts:updateDefaultrule:admin_apiOperationsPUT/segments/{segment_id}/hosts/{host_id}

              Updates the editable attributes of an existing host.

       os_masakari_api:os-hosts:deleteDefaultrule:admin_apiOperationsDELETE/segments/{segment_id}/hosts/{host_id}

              Deletes a host from given segment.

       os_masakari_api:os-hosts:discoverableDefaultrule:admin_api

              Host API extensions to change the API.

       os_masakari_api:notifications:indexDefaultrule:admin_apiOperationsGET/notifications

              Lists   IDs,   notification   types,   host_name,  generated_time,  payload  and  status  for  all
              notifications.

       os_masakari_api:notifications:detailDefaultrule:admin_apiOperationsGET/notifications/{notification_id}

              Shows details for a notification.

       os_masakari_api:notifications:createDefaultrule:admin_apiOperationsPOST/notifications

              Creates a notification.

       os_masakari_api:notifications:discoverableDefaultrule:admin_api

              Notification API extensions to change the API.

       os_masakari_api:segments:indexDefaultrule:admin_apiOperationsGET/segments

              Lists IDs, names, description, recovery_method, service_type for all segments.

       os_masakari_api:segments:detailDefaultrule:admin_apiOperationsGET/segments/{segment_id}

              Shows details for a segment.

       os_masakari_api:segments:createDefaultrule:admin_apiOperationsPOST/segments

              Creates a segment.

       os_masakari_api:segments:updateDefaultrule:admin_apiOperationsPUT/segments/{segment_id}

              Updates the editable attributes of an existing host.

       os_masakari_api:segments:deleteDefaultrule:admin_apiOperationsDELETE/segments/{segment_id}

              Deletes a segment.

       os_masakari_api:segments:discoverableDefaultrule:admin_api

              Segment API extensions to change the API.

       os_masakari_api:versions:indexDefault@OperationsGET/

              List all versions.

       os_masakari_api:versions:discoverableDefault@

              Version API extensions to change the API.

       os_masakari_api:vmoves:indexDefaultrule:admin_apiOperationsGET/notifications/{notification_id}/vmoves

              Lists IDs, notification_id, instance_id, source_host, dest_host, status and type for all VM moves.

       os_masakari_api:vmoves:detailDefaultrule:admin_apiOperationsGET/notifications/{notification_id}/vmoves/{vmove_id}

              Shows details for one VM move.

       os_masakari_api:vmoves:discoverableDefaultrule:admin_api

              VM moves API extensions to change the API.

   ConfigurationOptions
       The following is an overview of all available configuration options in Masakari.

   taskflow_driver_recovery_flowshost_auto_failure_recovery_tasksType   unknown type

              Default{'pre':['disable_compute_service_task'],'main':['prepare_HA_enabled_instances_task'],'post':['evacuate_instances_task']}

              This  option  allows  operator  to  customize  tasks to be executed for host failure auto recovery
              workflow.

              Provide list of strings reflecting to the task classes that should be included to the host failure
              recovery workflow. The full  classname  path  of  all  task  classes  should  be  defined  in  the
              ‘masakari.task_flow.tasks’  of  setup.cfg  and  these  classes  may  be  implemented  by OpenStack
              Masaskari project team, deployer or third party.

              By default below three tasks will be part of this config option:- 1.  disable_compute_service_task
              2. prepare_HA_enabled_instances_task 3. evacuate_instances_task

              The  allowed values for this option is comma separated dictionary of object names in between { and
              }.

       host_rh_failure_recovery_tasksType   unknown type

              Default{'pre':['disable_compute_service_task'],'main':['prepare_HA_enabled_instances_task','evacuate_instances_task'],'post':[]}

              This  option  allows  operator  to  customize  tasks to be executed for host failure reserved_host
              recovery workflow.

              Provide list of strings reflecting to the task classes that should be included to the host failure
              recovery workflow. The full  classname  path  of  all  task  classes  should  be  defined  in  the
              ‘masakari.task_flow.tasks’  of  setup.cfg  and  these  classes  may  be  implemented  by OpenStack
              Masaskari project team, deployer or third party.

              By default below three tasks will be part of this config option:- 1.  disable_compute_service_task
              2. prepare_HA_enabled_instances_task 3. evacuate_instances_task

              The  allowed values for this option is comma separated dictionary of object names in between { and
              }.

       instance_failure_recovery_tasksType   unknown type

              Default{'pre':['stop_instance_task'],'main':['start_instance_task'],'post':['confirm_instance_active_task']}

              This  option  allows  operator  to  customize  tasks  to be executed for instance failure recovery
              workflow.

              Provide list of strings reflecting to the task classes that should be  included  to  the  instance
              failure  recovery  workflow.  The full classname path of all task classes should be defined in the
              ‘masakari.task_flow.tasks’ of  setup.cfg  and  these  classes  may  be  implemented  by  OpenStack
              Masaskari project team, deployer or third party.

              By  default  below  three  tasks  will  be  part  of this config option:- 1. stop_instance_task 2.
              start_instance_task 3. confirm_instance_active_task

              The allowed values for this option is comma separated dictionary of object names in between {  and
              }.

       process_failure_recovery_tasksType   unknown type

              Default{'pre':['disable_compute_node_task'],'main':['confirm_compute_node_disabled_task'],'post':[]}

              This option allows operator to customize  tasks  to  be  executed  for  process  failure  recovery
              workflow.

              Provide  list  of  strings  reflecting  to the task classes that should be included to the process
              failure recovery workflow. The full classname path of all task classes should be  defined  in  the
              ‘masakari.task_flow.tasks’  of  setup.cfg  and  these  classes  may  be  implemented  by OpenStack
              Masaskari project team, deployer or third party.

              By default below two tasks will be part of this config option:-  1.  disable_compute_node_task  2.
              confirm_compute_node_disabled_task

              The  allowed values for this option is comma separated dictionary of object names in between { and
              }.

   GuideforCustomRecoveryWorkflowConfiguration
       If operator wants customized recovery workflow, so here is guidelines  mentioned  for  how  to  associate
       custom tasks from Third Party Library along with standard recovery workflows in Masakari.:

       1. First  make  sure  required Third Party Library is installed on the Masakari engine node. Below is the
          sample custom task file.  For example:

          from oslo_log import log as logging
          from taskflow import task

          LOG = logging.getLogger(__name__)

          class Noop(task.Task):

              def __init__(self, novaclient):
                  self.novaclient = novaclient
                  super(Noop, self).__init__()

              def execute(self, **kwargs):
                  LOG.info("Custom task executed successfully..!!")
                  return

       1. Configure custom task in Third Party Library’s setup.cfg as below:

       For example, Third Party Library’s setup.cfg will have following entry points

          masakari.task_flow.tasks =
              custom_pre_task = <custom_task_class_path_from_third_party_library>
              custom_main_task = <custom_task_class_path_from_third_party_library>
              custom_post_task = <custom_task_class_path_from_third_party_library>

       Note: Entry point in Third Party Library’s setup.cfg should have same key as in  Masakari  setup.cfg  for
       respective failure recovery.

       1. Configure  custom  task  in Masakari’s new conf file custom-recovery-methods.conf with same name which
          was given in the setup.cfg to locate class path.  For example(custom task added in host  auto  failure
          config option):

          host_auto_failure_recovery_tasks = {
          'pre': ['disable_compute_service_task', 'custom_pre_task'],
          'main': ['custom_main_task', 'prepare_HA_enabled_instances_task'],
          'post': ['evacuate_instances_task', 'custom_post_task']}

       1. If   there   are   any  configuration  parameters  required  for  custom  task,  then  add  them  into
          custom-recovery-methods.conf under the same group/section where they are  registered  in  Third  Party
          Library.  All config parameters related to recovery method customization should be part of newly added
          conf  file.  Operator will be responsible to generate masakari.conf and related configuration files by
          themselves.

       2. Operator should ensure output of each task should be made available to the next tasks needing them.

   SampleMasakariPolicyFileWARNING:
          JSON  formatted   policy   file   is   deprecated   since   Masakari   11.0.0   (Wallaby).    This   ‐
          oslopolicy-convert-json-to-yaml  tool will migrate your existing JSON-formatted policy file to YAML in
          a backward-compatible way.

       The following is a sample masakari policy file for adaptation and use.

       The sample policy can also be viewed in fileform.

       IMPORTANT:
          The sample policy file is auto-generated from masakari when this documentation is built.

          # Decides what is required for the 'is_admin:True' check to succeed.
          #"context_is_admin": "role:admin"

          # Default rule for most non-Admin APIs.
          #"admin_or_owner": "is_admin:True or project_id:%(project_id)s"

          # Default rule for most Admin APIs.
          #"admin_api": "is_admin:True"

          # List available extensions.
          # GET  /extensions
          #"os_masakari_api:extensions:index": "rule:admin_api"

          # Shows information for an extension.
          # GET  /extensions/{extensions_id}
          #"os_masakari_api:extensions:detail": "rule:admin_api"

          # Extension Info API extensions to change the API.
          #"os_masakari_api:extensions:discoverable": "rule:admin_api"

          # Lists IDs, names, type, reserved, on_maintenance for all hosts.
          # GET  /segments/{segment_id}/hosts
          #"os_masakari_api:os-hosts:index": "rule:admin_api"

          # Shows details for a host.
          # GET  /segments/{segment_id}/hosts/{host_id}
          #"os_masakari_api:os-hosts:detail": "rule:admin_api"

          # Creates a host under given segment.
          # POST  /segments/{segment_id}/hosts
          #"os_masakari_api:os-hosts:create": "rule:admin_api"

          # Updates the editable attributes of an existing host.
          # PUT  /segments/{segment_id}/hosts/{host_id}
          #"os_masakari_api:os-hosts:update": "rule:admin_api"

          # Deletes a host from given segment.
          # DELETE  /segments/{segment_id}/hosts/{host_id}
          #"os_masakari_api:os-hosts:delete": "rule:admin_api"

          # Host API extensions to change the API.
          #"os_masakari_api:os-hosts:discoverable": "rule:admin_api"

          # Lists IDs, notification types, host_name, generated_time, payload
          # and status for all notifications.
          # GET  /notifications
          #"os_masakari_api:notifications:index": "rule:admin_api"

          # Shows details for a notification.
          # GET  /notifications/{notification_id}
          #"os_masakari_api:notifications:detail": "rule:admin_api"

          # Creates a notification.
          # POST  /notifications
          #"os_masakari_api:notifications:create": "rule:admin_api"

          # Notification API extensions to change the API.
          #"os_masakari_api:notifications:discoverable": "rule:admin_api"

          # Lists IDs, names, description, recovery_method, service_type for all
          # segments.
          # GET  /segments
          #"os_masakari_api:segments:index": "rule:admin_api"

          # Shows details for a segment.
          # GET  /segments/{segment_id}
          #"os_masakari_api:segments:detail": "rule:admin_api"

          # Creates a segment.
          # POST  /segments
          #"os_masakari_api:segments:create": "rule:admin_api"

          # Updates the editable attributes of an existing host.
          # PUT  /segments/{segment_id}
          #"os_masakari_api:segments:update": "rule:admin_api"

          # Deletes a segment.
          # DELETE  /segments/{segment_id}
          #"os_masakari_api:segments:delete": "rule:admin_api"

          # Segment API extensions to change the API.
          #"os_masakari_api:segments:discoverable": "rule:admin_api"

          # List all versions.
          # GET  /
          #"os_masakari_api:versions:index": "@"

          # Version API extensions to change the API.
          #"os_masakari_api:versions:discoverable": "@"

          # Lists IDs, notification_id, instance_id, source_host, dest_host,
          # status and type for all VM moves.
          # GET  /notifications/{notification_id}/vmoves
          #"os_masakari_api:vmoves:index": "rule:admin_api"

          # Shows details for one VM move.
          # GET  /notifications/{notification_id}/vmoves/{vmove_id}
          #"os_masakari_api:vmoves:detail": "rule:admin_api"

          # VM moves API extensions to change the API.
          #"os_masakari_api:vmoves:discoverable": "rule:admin_api"

   MasakariSystemArchitecture
       Masakari comprises of two services api and engine, each performing different functions.  The  user-facing
       interface is a REST API, while internally Masakari communicates via an RPC message passing mechanism.

       The  API  servers  process  REST  requests,  which  typically  involve database reads/writes, sending RPC
       messages to other Masakari engine, and generating responses to the REST calls.  RPC messaging is done via
       the oslo.messaging library, an abstraction on top of message queues.  The Masakari engine will run on the
       same host where the Masakari api is running, and has a manager that is listening for RPC  messages.   The
       manager too has periodic tasks.

   Components
       Below  you  will  find  a  helpful  explanation  of  the key components of a typical Masakari deployment.
       [image]

       • DB: sql database for data storage.

       • API: component that receives HTTP requests, converts commands and communicates with masakari engine via
         the oslo.messaging queue.

       • Engine: Executes recovery workflow and communicates with nova via HTTP.

   NotificationsinMasakari
       Similar to other OpenStack services Masakari emits notifications to the message  bus  with  the  Notifier
       class  provided  by oslo.messaging.  From the notification consumer point of view a notification consists
       of two parts: an envelope with a fixed structure defined by oslo.messaging and a payload defined  by  the
       service emitting the notification.  The envelope format is the following:

          {
              "priority": <string, selected from a predefined list by the sender>,
              "event_type": <string, defined by the sender>,
              "timestamp": <string, the isotime of when the notification emitted>,
              "publisher_id": <string, defined by the sender>,
              "message_id": <uuid, generated by oslo>,
              "payload": <json serialized dict, defined by the sender>
          }

       oslo.messagingprovidesbelowchoicesofnotificationdrivers:
                                   ┌─────────────┬───────────────────────────────────────┐
                                   │ Driver      │ Description                           │
                                   ├─────────────┼───────────────────────────────────────┤
                                   │ messaging   │ Send   notifications  using  the  1.0 │
                                   │             │ message format                        │
                                   ├─────────────┼───────────────────────────────────────┤
                                   │ messagingv2 │ Send  notifications  using  the   2.0 │
                                   │             │ message   format   (with   a  message │
                                   │             │ envelope)                             │
                                   ├─────────────┼───────────────────────────────────────┤
                                   │ routing     │ Configurable  routing  notifier   (by │
                                   │             │ priority or event_type)               │
                                   ├─────────────┼───────────────────────────────────────┤
                                   │ log         │ Publish   notifications   via  Python │
                                   │             │ logging infrastructure                │
                                   ├─────────────┼───────────────────────────────────────┤
                                   │ test        │ Store  notifications  in  memory  for │
                                   │             │ test verification                     │
                                   ├─────────────┼───────────────────────────────────────┤
                                   │ noop        │ Disable     sending     notifications │
                                   │             │ entirely                              │
                                   └─────────────┴───────────────────────────────────────┘

       So notifications can be completely disabled by setting the following in Masakari configuration file:

          [oslo_messaging_notifications]
          driver = noop

       Masakari supports only Versioned notifications.

   Versionednotifications
       Masakari code uses the masakari.rpc.get_notifier call to get a configured oslo.messaging Notifier  object
       and  it  uses the oslo provided functions on the Notifier object to emit notifications. The configuration
       of the returned Notifier object depends on the parameters of the get_notifier call and the value  of  the
       oslo.messaging configuration options driver and topics.  The versioned notification payload is not a free
       form dictionary but a serialized oslo.versionedobjects.

       For example the wire format of the segment.update notification looks like the following:

          {
              "event_type": "api.update.segments.start",
              "timestamp": "2018-11-27 14:32:20.396940",
              "payload": {
                  "masakari_object.name": "SegmentApiPayload",
                  "masakari_object.data": {
                      "description": null,
                      "fault": null,
                      "recovery_method": "auto",
                      "name": "test",
                      "service_type": "compute",
                      "id": 877,
                      "uuid": "89597691-bebd-4860-a93e-1b6e9de34b9e"
                  }, "
                  "masakari_object.version": "1.0",
                  "masakari_object.namespace": "masakari"
              },
              "priority": "INFO",
              "publisher_id": "masakari-api:test-virtualbox",
              "message_id": "e6322900-025d-4dd6-a3a1-3e0e1e9badeb"
          }

       The  serialized  oslo  versionedobject  as  a  payload  provides  a version number to the consumer so the
       consumer can detect if the structure of the payload is changed. Masakari provides the following  contract
       regarding the versioned notification payload:

       • the  payload version defined by the masakari_object.version field of the payload will be increased only
         if the syntax or the semantics of the masakari_object.data field of the payload is changed.

       • a minor version bump indicates a backward compatible change which means that only new fields are  added
         to the payload so a well written consumer can still consume the new payload without any change.

       • a  major  version  bump  indicates a backward incompatible change of the payload which can mean removed
         fields, type change, etc in the payload.

       • there is an additional field masakari_object.name for every payload  besides  masakari_object.data  and
         masakari_object.version.   This  field contains the name of the Masakari internal representation of the
         payload type. Client code should not depend on this name.

   Existingversionednotifications
       • This provides the list of existing versioned notifications with sample payloads.
            ┌────────────────────────────┬─────────────────────────────┬────────────────────────┬────────┐
            │ EventtypeNotificationclassPayloadclassSample │
            ├────────────────────────────┼─────────────────────────────┼────────────────────────┼────────┤
            │ error.exceptionExceptionNotificationExceptionPayload       │        │
            ├────────────────────────────┼─────────────────────────────┼────────────────────────┼────────┤
            │ create.host.endHostApiNotificationHostApiPayload         │        │
            ├────────────────────────────┼─────────────────────────────┼────────────────────────┼────────┤
            │ create.host.startHostApiNotificationHostApiPayload         │        │
            ├────────────────────────────┼─────────────────────────────┼────────────────────────┼────────┤
            │ delete.host.endHostApiNotificationHostApiPayload         │        │
            ├────────────────────────────┼─────────────────────────────┼────────────────────────┼────────┤
            │ delete.host.startHostApiNotificationHostApiPayload         │        │
            ├────────────────────────────┼─────────────────────────────┼────────────────────────┼────────┤
            │ update.host.endHostApiNotificationHostApiPayload         │        │
            ├────────────────────────────┼─────────────────────────────┼────────────────────────┼────────┤
            │ update.host.startHostApiNotificationHostApiPayload         │        │
            ├────────────────────────────┼─────────────────────────────┼────────────────────────┼────────┤
            │ create.notification.endNotificationApiNotificationNotificationApiPayload │        │
            ├────────────────────────────┼─────────────────────────────┼────────────────────────┼────────┤
            │ create.notification.startNotificationApiNotificationNotificationApiPayload │        │
            ├────────────────────────────┼─────────────────────────────┼────────────────────────┼────────┤
            │ process.notification.endNotificationApiNotificationNotificationApiPayload │        │
            ├────────────────────────────┼─────────────────────────────┼────────────────────────┼────────┤
            │ process.notification.errorNotificationApiNotificationNotificationApiPayload │        │
            ├────────────────────────────┼─────────────────────────────┼────────────────────────┼────────┤
            │ process.notification.startNotificationApiNotificationNotificationApiPayload │        │
            ├────────────────────────────┼─────────────────────────────┼────────────────────────┼────────┤
            │ create.segment.endSegmentApiNotificationSegmentApiPayload      │        │
            ├────────────────────────────┼─────────────────────────────┼────────────────────────┼────────┤
            │ create.segment.startSegmentApiNotificationSegmentApiPayload      │        │
            ├────────────────────────────┼─────────────────────────────┼────────────────────────┼────────┤
            │ delete.segment.endSegmentApiNotificationSegmentApiPayload      │        │
            ├────────────────────────────┼─────────────────────────────┼────────────────────────┼────────┤
            │ delete.segment.startSegmentApiNotificationSegmentApiPayload      │        │
            ├────────────────────────────┼─────────────────────────────┼────────────────────────┼────────┤
            │ update.segment.endSegmentApiNotificationSegmentApiPayload      │        │
            ├────────────────────────────┼─────────────────────────────┼────────────────────────┼────────┤
            │ update.segment.startSegmentApiNotificationSegmentApiPayload      │        │
            └────────────────────────────┴─────────────────────────────┴────────────────────────┴────────┘

See Also