..
    c) Copyright 2015 Hewlett-Packard Development Company, L.P.

    Licensed under the Apache License, Version 2.0 (the "License"); you may
    not use this file except in compliance with the License. You may obtain
    a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
    License for the specific language governing permissions and limitations
    under the License.

**********************
Designate Plugin Guide
**********************

Integration is provided via a plugin. There are multiple configuration
settings required for proper indexing and incremental updates. Some of the
settings are specified in Searchlight configuration files. Others are
provided in other service configuration files.

Searchlight Configuration
=========================

Searchlight resource configuration options are shown below with their
configuration file and default values.

See :ref:`searchlight-plugins` for common options with their default values,
general configuration information, and an example complete configuration.

.. note::

    Unless you are changing to a non-default value, you do not need to
    specify any of the following configuration options.

searchlight.conf
----------------

Plugin: OS::Designate::Zone
^^^^^^^^^^^^^^^^^^^^^^^^^^^
::

    [resource_plugin:os_designate_zone]
    enabled = true
    resource_group_name = searchlight

Plugin: OS::Designate::RecordSet
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::

    [resource_plugin:os_designate_recordset]
    enabled = true
    resource_group_name = searchlight

.. warning::

    *OS::Designate::Zone* documents have a parent relationship to
    *OS::Designate::RecordSet* documents. Because of this you must have
    both *os_designate_zone* and *os_designate_recordset* plugin
    configurations enabled or disabled together.

Designate Configuration
=======================

The Designate services must be configured properly to work with searchlight.

designate.conf
--------------

Notifications must be configured properly for searchlight to process
incremental updates. Enable notifications using the following::

    [oslo_messaging_notifications]
    driver = messagingv2

.. note::

    Restart ``designate-central``, ``designate-pool-manager``, and
    ``designate-zone-manager`` after making changes.
    See :ref:`plugin_notifications` for more information on
    notification topics.

local.conf (devstack)
---------------------

.. note::

    Designate resource types are *not* enabled by default (``enabled = false``)
    in the Searchlight devstack script because Designate is not
    installed by default in devstack. If you have Designate installed in
    devstack, you have two options for enabling designate resource types in
    Searchlight:

    1. Prior to stacking: modify the searchlight post config section in
       ``local.conf`` by adding a ``[[post-config|$SEARCHLIGHT_CONF]]`` section.

    2. After stacking: manually edit the ``searchlight.conf`` file.

The Designate plugin must be enabled and run with devstack to include Designate
with your devstack deployment. Follow the instructions here:
https://opendev.org/openstack/designate/src/branch/master/devstack

The settings above may be automatically configured by ``stack.sh``
by adding them to the following post config section in devstack.
Just place the following in local.conf and copy the above settings
underneath it.::

    [[post-config|$DESIGNATE_CONF]]
    [DEFAULT]

Release Notes
=============

0.2.0.0 (Mitaka)
----------------

Notifications must be configured properly for searchlight to process
incremental updates. Searchlight must use its own topic. Use the following::

    notification_driver = messaging
    notification_topics = searchlight_indexer

The Designate notification limitations mentioned in Liberty still apply.

You no longer need to use the --no-delete option mentioned below. Zero
downtime reindexing implemented in Mitaka handles all re-indexing
transparently.

0.1.0.0 (Liberty)
-----------------

For best results, use the v2 Designate API. Using the Designate v1 API to
create domains results in the Designate service not sending all possible
status change notifications. This causes Designate record set documents to
stay in the ``Pending`` status in the search index.

The Horizon UI uses the v1 API and causes the above issue to be seen.
So in order to ensure the search index contains the correct status values
for record sets when using Horizon, you may set up a cron job to
re-index Designate data.

You should use the ``--no-delete`` option to prevent the index from
temporarily not containing any data (which otherwise would happen with a full
bulk indexing job)::

    searchlight-manage index sync --type OS::Designate::Zone,OS::Designate::RecordSet --force --no-delete

