diff --git a/README.rst b/README.rst
index 6740272f28d43c11bde5c7907c0be9e32659442c..3b532c011156cff69768be5afa08777493c4f97d 100644
--- a/README.rst
+++ b/README.rst
@@ -68,7 +68,6 @@ Kolla-Ansible deploys containers for the following OpenStack projects:
 - `Panko <https://docs.openstack.org/panko/latest/>`__
 - `Rally <https://docs.openstack.org/rally/latest/>`__
 - `Sahara <https://docs.openstack.org/sahara/latest/>`__
-- `Searchlight <https://docs.openstack.org/searchlight/latest/>`__
 - `Senlin <https://docs.openstack.org/senlin/latest/>`__
 - `Solum <https://docs.openstack.org/solum/latest/>`__
 - `Swift <https://docs.openstack.org/swift/latest/>`__
diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml
index 40e114df9cadcd9fefa9075415fb4fba6fbbe6d3..b72ffea5c812d47388974425d4cc4ccc39b79999 100644
--- a/ansible/group_vars/all.yml
+++ b/ansible/group_vars/all.yml
@@ -456,8 +456,6 @@ redis_sentinel_port: "26379"
 
 sahara_api_port: "8386"
 
-searchlight_api_port: "9393"
-
 senlin_internal_fqdn: "{{ kolla_internal_fqdn }}"
 senlin_external_fqdn: "{{ kolla_external_fqdn }}"
 senlin_api_port: "8778"
@@ -616,7 +614,6 @@ enable_horizon_murano: "{{ enable_murano | bool }}"
 enable_horizon_neutron_vpnaas: "{{ enable_neutron_vpnaas | bool }}"
 enable_horizon_octavia: "{{ enable_octavia | bool }}"
 enable_horizon_sahara: "{{ enable_sahara | bool }}"
-enable_horizon_searchlight: "{{ enable_searchlight | bool }}"
 enable_horizon_senlin: "{{ enable_senlin | bool }}"
 enable_horizon_solum: "{{ enable_solum | bool }}"
 enable_horizon_tacker: "{{ enable_tacker | bool }}"
@@ -674,7 +671,6 @@ enable_qdrouterd: "{{ 'yes' if om_rpc_transport == 'amqp' else 'no' }}"
 enable_rally: "no"
 enable_redis: "no"
 enable_sahara: "no"
-enable_searchlight: "no"
 enable_senlin: "no"
 enable_skydive: "no"
 enable_solum: "no"
diff --git a/ansible/inventory/all-in-one b/ansible/inventory/all-in-one
index abdccf20e71c461137cf932d98ef04faeea1e4c8..afe0a2909f662c59b65c894135d0aacbce9b0f70 100644
--- a/ansible/inventory/all-in-one
+++ b/ansible/inventory/all-in-one
@@ -209,9 +209,6 @@ control
 [rally:children]
 control
 
-[searchlight:children]
-control
-
 [octavia:children]
 control
 
@@ -610,13 +607,6 @@ senlin
 [senlin-health-manager:children]
 senlin
 
-# Searchlight
-[searchlight-api:children]
-searchlight
-
-[searchlight-listener:children]
-searchlight
-
 # Octavia
 [octavia-api:children]
 octavia
diff --git a/ansible/inventory/multinode b/ansible/inventory/multinode
index ca3f148f8ead30e37baa29638275a436ae7cd6c9..f91025eaeb6b1c4373e01b210aa19a32be40d161 100644
--- a/ansible/inventory/multinode
+++ b/ansible/inventory/multinode
@@ -227,9 +227,6 @@ control
 [rally:children]
 control
 
-[searchlight:children]
-control
-
 [octavia:children]
 control
 
@@ -628,13 +625,6 @@ senlin
 [senlin-health-manager:children]
 senlin
 
-# Searchlight
-[searchlight-api:children]
-searchlight
-
-[searchlight-listener:children]
-searchlight
-
 # Octavia
 [octavia-api:children]
 octavia
diff --git a/ansible/roles/barbican/defaults/main.yml b/ansible/roles/barbican/defaults/main.yml
index ccdf4d7a9f7d1b9bd07d82c8cdb4f3162c456fa8..491d9c3fe543ec94cdf20009dbe7a2e747241ceb 100644
--- a/ansible/roles/barbican/defaults/main.yml
+++ b/ansible/roles/barbican/defaults/main.yml
@@ -146,7 +146,7 @@ barbican_ks_roles:
 ####################
 barbican_notification_topics:
   - name: notifications
-    enabled: "{{ enable_ceilometer | bool or enable_searchlight | bool }}"
+    enabled: "{{ enable_ceilometer | bool }}"
 
 barbican_enabled_notification_topics: "{{ barbican_notification_topics | selectattr('enabled', 'equalto', true) | list }}"
 
diff --git a/ansible/roles/common/defaults/main.yml b/ansible/roles/common/defaults/main.yml
index 662eedff4bc54054123dc0063951c5d32801f0cc..9c493160bb8b23a5717aa87ee6a5e75585060c90 100644
--- a/ansible/roles/common/defaults/main.yml
+++ b/ansible/roles/common/defaults/main.yml
@@ -166,8 +166,6 @@ fluentd_input_openstack_services:
     enabled: "{{ enable_rally | bool }}"
   - name: sahara
     enabled: "{{ enable_sahara | bool }}"
-  - name: searchlight
-    enabled: "{{ enable_searchlight | bool }}"
   - name: senlin
     enabled: "{{ enable_senlin | bool }}"
   - name: solum
diff --git a/ansible/roles/common/tasks/config.yml b/ansible/roles/common/tasks/config.yml
index 659806b3ccf40028fb1c062d12c48f6207cadc42..2c4c54ad787d7172cc02d45b243c2142543448d0 100644
--- a/ansible/roles/common/tasks/config.yml
+++ b/ansible/roles/common/tasks/config.yml
@@ -212,7 +212,6 @@
       - { name: "rabbitmq", enabled: "{{ enable_rabbitmq | bool }}" }
       - { name: "rally", enabled: "{{ enable_rally | bool }}" }
       - { name: "sahara", enabled: "{{ enable_sahara | bool }}" }
-      - { name: "searchlight", enabled: "{{ enable_searchlight | bool }}" }
       - { name: "senlin", enabled: "{{ enable_senlin | bool }}" }
       - { name: "skydive", enabled: "{{ enable_skydive | bool }}" }
       - { name: "solum", enabled: "{{ enable_solum | bool }}" }
diff --git a/ansible/roles/common/templates/cron-logrotate-searchlight.conf.j2 b/ansible/roles/common/templates/cron-logrotate-searchlight.conf.j2
deleted file mode 100644
index da916664ae499e9c1b6b3a21762c9d96d2c0876f..0000000000000000000000000000000000000000
--- a/ansible/roles/common/templates/cron-logrotate-searchlight.conf.j2
+++ /dev/null
@@ -1,3 +0,0 @@
-"/var/log/kolla/searchlight/*.log"
-{
-}
diff --git a/ansible/roles/glance/defaults/main.yml b/ansible/roles/glance/defaults/main.yml
index 0e6191ba9b82f1dad8d92077fb7a42e92c59571e..9bd0984347fb4763da45c09096640daffcf09f66 100644
--- a/ansible/roles/glance/defaults/main.yml
+++ b/ansible/roles/glance/defaults/main.yml
@@ -96,7 +96,7 @@ glance_ks_users:
 ####################
 glance_notification_topics:
   - name: notifications
-    enabled: "{{ enable_ceilometer | bool or enable_searchlight | bool }}"
+    enabled: "{{ enable_ceilometer | bool }}"
 
 glance_enabled_notification_topics: "{{ glance_notification_topics | selectattr('enabled', 'equalto', true) | list }}"
 
diff --git a/ansible/roles/haproxy/tasks/precheck.yml b/ansible/roles/haproxy/tasks/precheck.yml
index db6dfee17ca551c78829df181e04b963907e1a3d..b4f4eb0c0a01965236d2b51f533360055eb958f6 100644
--- a/ansible/roles/haproxy/tasks/precheck.yml
+++ b/ansible/roles/haproxy/tasks/precheck.yml
@@ -767,19 +767,6 @@
     - haproxy_stat.find('sahara_api') == -1
     - haproxy_vip_prechecks
 
-- name: Checking free port for Searchlight API HAProxy
-  wait_for:
-    host: "{{ kolla_internal_vip_address }}"
-    port: "{{ searchlight_api_port }}"
-    connect_timeout: 1
-    timeout: 1
-    state: stopped
-  when:
-    - enable_searchlight | bool
-    - inventory_hostname in groups['haproxy']
-    - haproxy_stat.find('searchlight_api') == -1
-    - haproxy_vip_prechecks
-
 - name: Checking free port for Senlin API HAProxy
   wait_for:
     host: "{{ kolla_internal_vip_address }}"
diff --git a/ansible/roles/horizon/defaults/main.yml b/ansible/roles/horizon/defaults/main.yml
index 4388da50790250084a2337b84f8400f5dfff8233..b65856e8041448de31745e8b178d113c8b69c5f4 100644
--- a/ansible/roles/horizon/defaults/main.yml
+++ b/ansible/roles/horizon/defaults/main.yml
@@ -24,7 +24,6 @@ horizon_services:
       ENABLE_NEUTRON_VPNAAS: "{{ 'yes' if enable_horizon_neutron_vpnaas | bool else 'no' }}"
       ENABLE_OCTAVIA: "{{ 'yes' if enable_horizon_octavia | bool else 'no' }}"
       ENABLE_SAHARA: "{{ 'yes' if enable_horizon_sahara | bool else 'no' }}"
-      ENABLE_SEARCHLIGHT: "{{ 'yes' if enable_horizon_searchlight | bool else 'no' }}"
       ENABLE_SENLIN: "{{ 'yes' if enable_horizon_senlin | bool else 'no' }}"
       ENABLE_SOLUM: "{{ 'yes' if enable_horizon_solum | bool else 'no' }}"
       ENABLE_TACKER: "{{ 'yes' if enable_horizon_tacker | bool else 'no' }}"
diff --git a/ansible/roles/horizon/tasks/config.yml b/ansible/roles/horizon/tasks/config.yml
index 2c551cbfea4ad23b109c1a2df730b930915d315e..5247a1f356daf7ea6430d4a05597a9c6f4367045 100644
--- a/ansible/roles/horizon/tasks/config.yml
+++ b/ansible/roles/horizon/tasks/config.yml
@@ -41,7 +41,6 @@
     - { name: "nova", enabled: "{{ enable_nova_horizon_policy_file }}" }
     - { name: "octavia", enabled: "{{ enable_horizon_octavia }}" }
     - { name: "sahara", enabled: "{{ enable_horizon_sahara }}" }
-    - { name: "searchlight", enabled: "{{ enable_horizon_searchlight }}" }
     - { name: "senlin", enabled: "{{ enable_horizon_senlin }}" }
     - { name: "solum", enabled: "{{ enable_horizon_solum }}" }
     - { name: "tacker", enabled: "{{ enable_horizon_tacker }}" }
diff --git a/ansible/roles/neutron/defaults/main.yml b/ansible/roles/neutron/defaults/main.yml
index f449844f57f649172052b3a3ce3de6f0dfae95a5..7e46c4326ec018db0b8c5a306c041989ec2fde1e 100644
--- a/ansible/roles/neutron/defaults/main.yml
+++ b/ansible/roles/neutron/defaults/main.yml
@@ -636,7 +636,7 @@ neutron_service_plugins: "{{ service_plugins | selectattr('enabled', 'equalto',
 ####################
 neutron_notification_topics:
   - name: notifications
-    enabled: "{{ enable_ceilometer | bool or enable_searchlight | bool or enable_neutron_infoblox_ipam_agent | bool }}"
+    enabled: "{{ enable_ceilometer | bool or enable_neutron_infoblox_ipam_agent | bool }}"
   - name: notifications_designate
     enabled: "{{ enable_designate | bool }}"
   - name: vitrage_notifications
diff --git a/ansible/roles/nova-cell/defaults/main.yml b/ansible/roles/nova-cell/defaults/main.yml
index 0060ffb5f7c15607e6436e70783f99fd9b2dad1e..0385ea201752852b90c24a42f223cf3cacf4e79f 100644
--- a/ansible/roles/nova-cell/defaults/main.yml
+++ b/ansible/roles/nova-cell/defaults/main.yml
@@ -467,7 +467,7 @@ nova_cell_conductor_has_api_database: "yes"
 ####################
 nova_notification_topics:
   - name: notifications
-    enabled: "{{ enable_ceilometer | bool or enable_searchlight | bool or enable_neutron_infoblox_ipam_agent | bool }}"
+    enabled: "{{ enable_ceilometer | bool or enable_neutron_infoblox_ipam_agent | bool }}"
   - name: notifications_designate
     enabled: "{{ enable_designate | bool }}"
   - name: vitrage_notifications
diff --git a/ansible/roles/nova-cell/templates/nova.conf.j2 b/ansible/roles/nova-cell/templates/nova.conf.j2
index 81852d5e700b1ea40bafedc204e8540bdc4f8be5..78abab8538f97e7c2ed33b37a32ab20368f267f1 100644
--- a/ansible/roles/nova-cell/templates/nova.conf.j2
+++ b/ansible/roles/nova-cell/templates/nova.conf.j2
@@ -26,7 +26,7 @@ compute_driver = libvirt.LibvirtDriver
 # Though my_ip is not used directly, lots of other variables use $my_ip
 my_ip = {{ api_interface_address }}
 
-{% if enable_ceilometer | bool or enable_searchlight | bool or enable_designate | bool %}
+{% if enable_ceilometer | bool or enable_designate | bool %}
 instance_usage_audit = True
 instance_usage_audit_period = hour
 {% if enable_watcher | bool %}
@@ -217,15 +217,9 @@ cafile = {{ openstack_cacert }}
 valid_interfaces = internal
 
 [notifications]
-{% if enable_ceilometer | bool or enable_searchlight | bool or enable_designate | bool or enable_neutron_infoblox_ipam_agent | bool %}
+{% if enable_ceilometer | bool or enable_designate | bool or enable_neutron_infoblox_ipam_agent | bool %}
 notify_on_state_change = vm_and_task_state
 {% endif %}
-{% if not enable_searchlight | bool %}
-notification_format = unversioned
-{% else %}
-notification_format = both
-{% endif %}
-
 
 {% if enable_osprofiler | bool %}
 [profiler]
diff --git a/ansible/roles/nova/defaults/main.yml b/ansible/roles/nova/defaults/main.yml
index 55fc1670040c392807f826e36d5aebb1e9f6dc8a..dd15f220db4360b356f91f0727b1a25585b06a3b 100644
--- a/ansible/roles/nova/defaults/main.yml
+++ b/ansible/roles/nova/defaults/main.yml
@@ -224,7 +224,7 @@ nova_ks_users:
 ####################
 nova_notification_topics:
   - name: notifications
-    enabled: "{{ enable_ceilometer | bool or enable_searchlight | bool or enable_neutron_infoblox_ipam_agent | bool }}"
+    enabled: "{{ enable_ceilometer | bool or enable_neutron_infoblox_ipam_agent | bool }}"
   - name: notifications_designate
     enabled: "{{ enable_designate | bool }}"
   - name: vitrage_notifications
diff --git a/ansible/roles/nova/templates/nova.conf.j2 b/ansible/roles/nova/templates/nova.conf.j2
index 2795c1475945d217c3d61dc6f4d0c0cdc4e3f2d5..74540fdac4f14b850e11b8c5aa3283ed399ba6f9 100644
--- a/ansible/roles/nova/templates/nova.conf.j2
+++ b/ansible/roles/nova/templates/nova.conf.j2
@@ -13,7 +13,7 @@ allow_resize_to_same_host = true
 # Though my_ip is not used directly, lots of other variables use $my_ip
 my_ip = {{ api_interface_address }}
 
-{% if enable_ceilometer | bool or enable_searchlight | bool or enable_designate | bool %}
+{% if enable_ceilometer | bool or enable_designate | bool %}
 instance_usage_audit = True
 instance_usage_audit_period = hour
 {% endif %}
@@ -176,15 +176,9 @@ cafile = {{ openstack_cacert }}
 valid_interfaces = internal
 
 [notifications]
-{% if enable_ceilometer | bool or enable_searchlight | bool or enable_designate | bool or enable_neutron_infoblox_ipam_agent | bool %}
+{% if enable_ceilometer | bool or enable_designate | bool or enable_neutron_infoblox_ipam_agent | bool %}
 notify_on_state_change = vm_and_task_state
 {% endif %}
-{% if not enable_searchlight | bool %}
-notification_format = unversioned
-{% else %}
-notification_format = both
-{% endif %}
-
 
 {% if enable_osprofiler | bool %}
 [profiler]
diff --git a/ansible/roles/placement/defaults/main.yml b/ansible/roles/placement/defaults/main.yml
index 1bcfabdb1a36a7ce5b6fe3b6b86f9706f0e0d906..5a885706661a115678e2e97d796fd6ef52802e49 100644
--- a/ansible/roles/placement/defaults/main.yml
+++ b/ansible/roles/placement/defaults/main.yml
@@ -84,7 +84,7 @@ openstack_placement_auth: "{{ openstack_auth }}"
 ####################
 placement_notification_topics:
   - name: notifications
-    enabled: "{{ enable_ceilometer | bool or enable_searchlight | bool or enable_neutron_infoblox_ipam_agent | bool }}"
+    enabled: "{{ enable_ceilometer | bool or enable_neutron_infoblox_ipam_agent | bool }}"
   - name: notifications_designate
     enabled: "{{ enable_designate | bool }}"
 
diff --git a/ansible/roles/searchlight/defaults/main.yml b/ansible/roles/searchlight/defaults/main.yml
deleted file mode 100644
index b09411b9f714c95c649de05d71421b17255dae02..0000000000000000000000000000000000000000
--- a/ansible/roles/searchlight/defaults/main.yml
+++ /dev/null
@@ -1,107 +0,0 @@
----
-project_name: "searchlight"
-
-searchlight_services:
-  searchlight-api:
-    container_name: searchlight_api
-    group: searchlight-api
-    enabled: true
-    image: "{{ searchlight_api_image_full }}"
-    volumes: "{{ searchlight_api_default_volumes + searchlight_api_extra_volumes }}"
-    dimensions: "{{ searchlight_api_dimensions }}"
-    haproxy:
-      searchlight_api:
-        enabled: "{{ enable_searchlight }}"
-        mode: "http"
-        external: false
-        port: "{{ searchlight_api_port }}"
-      searchlight_api_external:
-        enabled: "{{ enable_searchlight }}"
-        mode: "http"
-        external: true
-        port: "{{ searchlight_api_port }}"
-  searchlight-listener:
-    container_name: searchlight_listener
-    group: searchlight-listener
-    enabled: true
-    image: "{{ searchlight_listener_image_full }}"
-    volumes: "{{ searchlight_listener_default_volumes + searchlight_listener_extra_volumes }}"
-    dimensions: "{{ searchlight_listener_dimensions }}"
-
-####################
-# Elasticsearch
-####################
-searchlight_elasticsearch_url: "{{ elasticsearch_address | put_address_in_context('url') }}:{{ elasticsearch_port }}"
-
-####################
-# Docker
-####################
-searchlight_install_type: "{{ kolla_install_type }}"
-searchlight_tag: "{{ openstack_tag }}"
-
-searchlight_listener_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ searchlight_install_type }}-searchlight-listener"
-searchlight_listener_tag: "{{ searchlight_tag }}"
-searchlight_listener_image_full: "{{ searchlight_listener_image }}:{{ searchlight_listener_tag }}"
-
-searchlight_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ searchlight_install_type }}-searchlight-api"
-searchlight_api_tag: "{{ searchlight_tag }}"
-searchlight_api_image_full: "{{ searchlight_api_image }}:{{ searchlight_api_tag }}"
-
-searchlight_api_dimensions: "{{ default_container_dimensions }}"
-searchlight_listener_dimensions: "{{ default_container_dimensions }}"
-
-searchlight_api_default_volumes:
-  - "{{ node_config_directory }}/searchlight-api/:{{ container_config_directory }}/:ro"
-  - "/etc/localtime:/etc/localtime:ro"
-  - "{{ '/etc/timezone:/etc/timezone:ro' if ansible_os_family == 'Debian' else '' }}"
-  - "kolla_logs:/var/log/kolla/"
-searchlight_listener_default_volumes:
-  - "{{ node_config_directory }}/searchlight-listener/:{{ container_config_directory }}/:ro"
-  - "/etc/localtime:/etc/localtime:ro"
-  - "{{ '/etc/timezone:/etc/timezone:ro' if ansible_os_family == 'Debian' else '' }}"
-  - "kolla_logs:/var/log/kolla/"
-
-searchlight_extra_volumes: "{{ default_extra_volumes }}"
-searchlight_api_extra_volumes: "{{ searchlight_extra_volumes }}"
-searchlight_listener_extra_volumes: "{{ searchlight_extra_volumes }}"
-
-####################
-# OpenStack
-####################
-searchlight_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ searchlight_api_port }}"
-searchlight_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ searchlight_api_port }}"
-searchlight_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ searchlight_api_port }}"
-
-searchlight_logging_debug: "{{ openstack_logging_debug }}"
-
-searchlight_keystone_user: "searchlight"
-
-openstack_searchlight_auth: "{{ openstack_auth }}"
-
-
-####################
-# Notifications
-####################
-searchlight_notification_topics:
-  - name: notifications
-    enabled: "{{ enable_ceilometer | bool }}"
-
-searchlight_enabled_notification_topics: "{{ searchlight_notification_topics | selectattr('enabled', 'equalto', true) | list }}"
-
-####################
-# Keystone
-####################
-searchlight_ks_services:
-  - name: "searchlight"
-    type: "search"
-    description: "Openstack Index Service"
-    endpoints:
-      - {'interface': 'admin', 'url': '{{ searchlight_admin_endpoint }}'}
-      - {'interface': 'internal', 'url': '{{ searchlight_internal_endpoint }}'}
-      - {'interface': 'public', 'url': '{{ searchlight_public_endpoint }}'}
-
-searchlight_ks_users:
-  - project: "service"
-    user: "{{ searchlight_keystone_user }}"
-    password: "{{ searchlight_keystone_password }}"
-    role: "admin"
diff --git a/ansible/roles/searchlight/handlers/main.yml b/ansible/roles/searchlight/handlers/main.yml
deleted file mode 100644
index dc94797b6787be1cb3a4a2b6725bd6512aa4cf06..0000000000000000000000000000000000000000
--- a/ansible/roles/searchlight/handlers/main.yml
+++ /dev/null
@@ -1,30 +0,0 @@
----
-- name: Restart searchlight-api container
-  vars:
-    service_name: "searchlight-api"
-    service: "{{ searchlight_services[service_name] }}"
-  become: true
-  kolla_docker:
-    action: "recreate_or_restart_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ service.container_name }}"
-    image: "{{ service.image }}"
-    volumes: "{{ service.volumes }}"
-    dimensions: "{{ service.dimensions }}"
-  when:
-    - kolla_action != "config"
-
-- name: Restart searchlight-listener container
-  vars:
-    service_name: "searchlight-listener"
-    service: "{{ searchlight_services[service_name] }}"
-  become: true
-  kolla_docker:
-    action: "recreate_or_restart_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ service.container_name }}"
-    image: "{{ service.image }}"
-    volumes: "{{ service.volumes }}"
-    dimensions: "{{ service.dimensions }}"
-  when:
-    - kolla_action != "config"
diff --git a/ansible/roles/searchlight/tasks/bootstrap.yml b/ansible/roles/searchlight/tasks/bootstrap.yml
deleted file mode 100644
index 2115ef6239ffd134e25b49237082c856fa2b332e..0000000000000000000000000000000000000000
--- a/ansible/roles/searchlight/tasks/bootstrap.yml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- import_tasks: bootstrap_service.yml
diff --git a/ansible/roles/searchlight/tasks/bootstrap_service.yml b/ansible/roles/searchlight/tasks/bootstrap_service.yml
deleted file mode 100644
index 53c44a3838cee362c4d645473a1e5ce50832e6ff..0000000000000000000000000000000000000000
--- a/ansible/roles/searchlight/tasks/bootstrap_service.yml
+++ /dev/null
@@ -1,20 +0,0 @@
----
-- name: Running Searchlight bootstrap container
-  vars:
-    searchlight_api: "{{ searchlight_services['searchlight-api'] }}"
-  become: true
-  kolla_docker:
-    action: "start_container"
-    common_options: "{{ docker_common_options }}"
-    detach: False
-    environment:
-      KOLLA_BOOTSTRAP:
-      KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
-    image: "{{ searchlight_api.image }}"
-    labels:
-      BOOTSTRAP:
-    name: "bootstrap_searchlight"
-    restart_policy: no
-    volumes: "{{ searchlight_api.volumes }}"
-  run_once: True
-  delegate_to: "{{ groups[searchlight_api.group][0] }}"
diff --git a/ansible/roles/searchlight/tasks/check-containers.yml b/ansible/roles/searchlight/tasks/check-containers.yml
deleted file mode 100644
index c544b70ddeecd8b19c9c146361bbfa582556ae5c..0000000000000000000000000000000000000000
--- a/ansible/roles/searchlight/tasks/check-containers.yml
+++ /dev/null
@@ -1,16 +0,0 @@
----
-- name: Check searchlight containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ searchlight_services }}"
-  notify:
-    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/searchlight/tasks/check.yml b/ansible/roles/searchlight/tasks/check.yml
deleted file mode 100644
index ed97d539c095cf1413af30cc23dea272095b97dd..0000000000000000000000000000000000000000
--- a/ansible/roles/searchlight/tasks/check.yml
+++ /dev/null
@@ -1 +0,0 @@
----
diff --git a/ansible/roles/searchlight/tasks/config.yml b/ansible/roles/searchlight/tasks/config.yml
deleted file mode 100644
index 5b661eb6d7a40ee1bf800712c2ea2f584b462cea..0000000000000000000000000000000000000000
--- a/ansible/roles/searchlight/tasks/config.yml
+++ /dev/null
@@ -1,82 +0,0 @@
----
-- name: Ensuring config directories exist
-  file:
-    path: "{{ node_config_directory }}/{{ item.key }}"
-    state: "directory"
-    owner: "{{ config_owner_user }}"
-    group: "{{ config_owner_group }}"
-    mode: "0770"
-  become: true
-  when:
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ searchlight_services }}"
-
-- name: Check if policies shall be overwritten
-  stat:
-    path: "{{ item }}"
-  delegate_to: localhost
-  run_once: True
-  register: searchlight_policy
-  with_first_found:
-    - files: "{{ supported_policy_format_list }}"
-      paths:
-        - "{{ node_custom_config }}/searchlight/"
-      skip: true
-
-- name: Set searchlight policy file
-  set_fact:
-    searchlight_policy_file: "{{ searchlight_policy.results.0.stat.path | basename }}"
-    searchlight_policy_file_path: "{{ searchlight_policy.results.0.stat.path }}"
-  when:
-    - searchlight_policy.results
-
-- include_tasks: copy-certs.yml
-  when:
-    - kolla_copy_ca_into_containers | bool
-
-- name: Copying over config.json files for services
-  template:
-    src: "{{ item.key }}.json.j2"
-    dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
-    mode: "0660"
-  become: true
-  when:
-    - item.value.enabled | bool
-    - inventory_hostname in groups[item.value.group]
-  with_dict: "{{ searchlight_services }}"
-  notify:
-    - Restart {{ item.key }} container
-
-- name: Copying over searchlight.conf
-  vars:
-    service_name: "{{ item.key }}"
-  merge_configs:
-    sources:
-      - "{{ role_path }}/templates/searchlight.conf.j2"
-      - "{{ node_custom_config }}/global.conf"
-      - "{{ node_custom_config }}/searchlight.conf"
-      - "{{ node_custom_config }}/searchlight/{{ inventory_hostname }}/searchlight.conf"
-    dest: "{{ node_config_directory }}/{{ item.key }}/searchlight.conf"
-    mode: "0660"
-  become: true
-  when:
-    - item.value.enabled | bool
-    - inventory_hostname in groups[item.value.group]
-  with_dict: "{{ searchlight_services }}"
-  notify:
-    - Restart {{ item.key }} container
-
-- name: Copying over existing policy file
-  template:
-    src: "{{ searchlight_policy_file_path }}"
-    dest: "{{ node_config_directory }}/{{ item.key }}/{{ searchlight_policy_file }}"
-    mode: "0660"
-  become: true
-  when:
-    - searchlight_policy_file is defined
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ searchlight_services }}"
-  notify:
-    - Restart {{ item.key }} container
diff --git a/ansible/roles/searchlight/tasks/copy-certs.yml b/ansible/roles/searchlight/tasks/copy-certs.yml
deleted file mode 100644
index 39d605bcd2985288ef9c21c8cd692e91a3b894b7..0000000000000000000000000000000000000000
--- a/ansible/roles/searchlight/tasks/copy-certs.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-- name: "Copy certificates and keys for {{ project_name }}"
-  import_role:
-    role: service-cert-copy
-  vars:
-    project_services: "{{ searchlight_services }}"
diff --git a/ansible/roles/searchlight/tasks/deploy-containers.yml b/ansible/roles/searchlight/tasks/deploy-containers.yml
deleted file mode 100644
index eb24ab5c7a7bfaf98f711ffe96f0b76120874b14..0000000000000000000000000000000000000000
--- a/ansible/roles/searchlight/tasks/deploy-containers.yml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- import_tasks: check-containers.yml
diff --git a/ansible/roles/searchlight/tasks/deploy.yml b/ansible/roles/searchlight/tasks/deploy.yml
deleted file mode 100644
index d793a349da297600baecce7e178d9b390920518c..0000000000000000000000000000000000000000
--- a/ansible/roles/searchlight/tasks/deploy.yml
+++ /dev/null
@@ -1,11 +0,0 @@
----
-- import_tasks: register.yml
-
-- import_tasks: config.yml
-
-- import_tasks: check-containers.yml
-
-- import_tasks: bootstrap.yml
-
-- name: Flush handlers
-  meta: flush_handlers
diff --git a/ansible/roles/searchlight/tasks/loadbalancer.yml b/ansible/roles/searchlight/tasks/loadbalancer.yml
deleted file mode 100644
index 5f38f2a0683591ee7f6c3de90a7b6eae7bebec16..0000000000000000000000000000000000000000
--- a/ansible/roles/searchlight/tasks/loadbalancer.yml
+++ /dev/null
@@ -1,7 +0,0 @@
----
-- name: "Configure haproxy for {{ project_name }}"
-  import_role:
-    name: haproxy-config
-  vars:
-    project_services: "{{ searchlight_services }}"
-  tags: always
diff --git a/ansible/roles/searchlight/tasks/main.yml b/ansible/roles/searchlight/tasks/main.yml
deleted file mode 100644
index bc5d1e62576375cb42a2a0d62540aa54d212db7c..0000000000000000000000000000000000000000
--- a/ansible/roles/searchlight/tasks/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- include_tasks: "{{ kolla_action }}.yml"
diff --git a/ansible/roles/searchlight/tasks/precheck.yml b/ansible/roles/searchlight/tasks/precheck.yml
deleted file mode 100644
index fd1a2f2da575eb6b6a4c2c99002d467e71f0aa9a..0000000000000000000000000000000000000000
--- a/ansible/roles/searchlight/tasks/precheck.yml
+++ /dev/null
@@ -1,24 +0,0 @@
----
-- import_role:
-    name: service-precheck
-  vars:
-    service_precheck_services: "{{ searchlight_services }}"
-    service_name: "{{ project_name }}"
-
-- name: Get container facts
-  become: true
-  kolla_container_facts:
-    name:
-      - searchlight_api
-  register: container_facts
-
-- name: Checking free port for Searchlight API
-  wait_for:
-    host: "{{ api_interface_address }}"
-    port: "{{ searchlight_api_port }}"
-    connect_timeout: 1
-    timeout: 1
-    state: stopped
-  when:
-    - container_facts['searchlight_api'] is not defined
-    - inventory_hostname in groups['searchlight-api']
diff --git a/ansible/roles/searchlight/tasks/pull.yml b/ansible/roles/searchlight/tasks/pull.yml
deleted file mode 100644
index 6cfb58d99c0ec237fb22c057ac252500673774ef..0000000000000000000000000000000000000000
--- a/ansible/roles/searchlight/tasks/pull.yml
+++ /dev/null
@@ -1,11 +0,0 @@
----
-- name: Pulling searchlight images
-  become: true
-  kolla_docker:
-    action: "pull_image"
-    common_options: "{{ docker_common_options }}"
-    image: "{{ item.value.image }}"
-  when:
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ searchlight_services }}"
diff --git a/ansible/roles/searchlight/tasks/reconfigure.yml b/ansible/roles/searchlight/tasks/reconfigure.yml
deleted file mode 100644
index 5b10a7e111766fff1f9dd187cdcb8fea97dcadd1..0000000000000000000000000000000000000000
--- a/ansible/roles/searchlight/tasks/reconfigure.yml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- import_tasks: deploy.yml
diff --git a/ansible/roles/searchlight/tasks/register.yml b/ansible/roles/searchlight/tasks/register.yml
deleted file mode 100644
index 6750024289bb73692bb127c844e3b75538117803..0000000000000000000000000000000000000000
--- a/ansible/roles/searchlight/tasks/register.yml
+++ /dev/null
@@ -1,7 +0,0 @@
----
-- import_role:
-    name: service-ks-register
-  vars:
-    service_ks_register_auth: "{{ openstack_searchlight_auth }}"
-    service_ks_register_services: "{{ searchlight_ks_services }}"
-    service_ks_register_users: "{{ searchlight_ks_users }}"
diff --git a/ansible/roles/searchlight/tasks/stop.yml b/ansible/roles/searchlight/tasks/stop.yml
deleted file mode 100644
index 7ad29acfd87251151edcbd93e0c186da3846d51e..0000000000000000000000000000000000000000
--- a/ansible/roles/searchlight/tasks/stop.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-- import_role:
-    name: service-stop
-  vars:
-    project_services: "{{ searchlight_services }}"
-    service_name: "{{ project_name }}"
diff --git a/ansible/roles/searchlight/tasks/upgrade.yml b/ansible/roles/searchlight/tasks/upgrade.yml
deleted file mode 100644
index 6ba9f997992dcffee8153fbefd1b385d9ccdc694..0000000000000000000000000000000000000000
--- a/ansible/roles/searchlight/tasks/upgrade.yml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-- import_tasks: config.yml
-
-- import_tasks: check-containers.yml
-
-- import_tasks: bootstrap_service.yml
-
-- name: Flush handlers
-  meta: flush_handlers
diff --git a/ansible/roles/searchlight/templates/searchlight-api.json.j2 b/ansible/roles/searchlight/templates/searchlight-api.json.j2
deleted file mode 100644
index 4dc10528e52d41b787dce23dab2f082b1b99b2b0..0000000000000000000000000000000000000000
--- a/ansible/roles/searchlight/templates/searchlight-api.json.j2
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-    "command": "searchlight-api",
-    "config_files": [
-        {
-            "source": "{{ container_config_directory }}/searchlight.conf",
-            "dest": "/etc/searchlight/searchlight.conf",
-            "owner": "searchlight",
-            "perm": "0600"
-        }{% if searchlight_policy_file is defined %},
-        {
-            "source": "{{ container_config_directory }}/{{ searchlight_policy_file }}",
-            "dest": "/etc/searchlight/{{ searchlight_policy_file }}",
-            "owner": "searchlight",
-            "perm": "0600"
-        }{% endif %}
-    ],
-    "permissions": [
-        {
-            "path": "/var/log/kolla/searchlight",
-            "owner": "searchlight:searchlight",
-            "recurse": true
-        }
-    ]
-}
diff --git a/ansible/roles/searchlight/templates/searchlight-listener.json.j2 b/ansible/roles/searchlight/templates/searchlight-listener.json.j2
deleted file mode 100644
index 88a631a15da1d82a8b552f8f27eb321d761568d1..0000000000000000000000000000000000000000
--- a/ansible/roles/searchlight/templates/searchlight-listener.json.j2
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-    "command": "searchlight-listener",
-    "config_files": [
-        {
-            "source": "{{ container_config_directory }}/searchlight.conf",
-            "dest": "/etc/searchlight/searchlight.conf",
-            "owner": "searchlight",
-            "perm": "0600"
-        }{% if searchlight_policy_file is defined %},
-        {
-            "source": "{{ container_config_directory }}/{{ searchlight_policy_file }}",
-            "dest": "/etc/searchlight/{{ searchlight_policy_file }}",
-            "owner": "searchlight",
-            "perm": "0600"
-        }{% endif %}
-    ],
-    "permissions": [
-        {
-            "path": "/var/log/kolla/searchlight",
-            "owner": "searchlight:searchlight",
-            "recurse": true
-        }
-    ]
-}
diff --git a/ansible/roles/searchlight/templates/searchlight.conf.j2 b/ansible/roles/searchlight/templates/searchlight.conf.j2
deleted file mode 100644
index 1c51fbcc619fa1e5831d98ad657f3232d9e69ed3..0000000000000000000000000000000000000000
--- a/ansible/roles/searchlight/templates/searchlight.conf.j2
+++ /dev/null
@@ -1,147 +0,0 @@
-[DEFAULT]
-debug = {{ searchlight_logging_debug }}
-
-log_dir = /var/log/kolla/searchlight
-transport_url = {{ rpc_transport_url }}
-
-[api]
-port = {{ searchlight_api_port }}
-bind_host = {{ api_interface_address }}
-public_endpoint = {{ searchlight_public_endpoint }}
-workers = {{ openstack_service_workers }}
-
-[elasticsearch]
-hosts = {{ searchlight_elasticsearch_url }}
-
-[listener]
-workers = {{ openstack_service_workers }}
-notifications_pool = searchlight-listener
-
-[paste_deploy]
-flavor = keystone
-
-[keystone_authtoken]
-www_authenticate_uri = {{ keystone_internal_url }}
-auth_url = {{ keystone_admin_url }}
-project_domain_name = {{ default_project_domain_name }}
-project_name = service
-user_domain_name = {{ default_user_domain_name }}
-username = {{ searchlight_keystone_user }}
-password = {{ searchlight_keystone_password }}
-auth_type = password
-cafile = {{ openstack_cacert }}
-
-memcache_security_strategy = ENCRYPT
-memcache_secret_key = {{ memcache_secret_key }}
-memcached_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}
-
-[oslo_messaging_notifications]
-transport_url = {{ notify_transport_url }}
-{% if searchlight_enabled_notification_topics %}
-driver = messagingv2
-topics = {{ searchlight_enabled_notification_topics | map(attribute='name') | join(',') }}
-{% else %}
-driver = noop
-{% endif %}
-
-{% if om_enable_rabbitmq_tls | bool %}
-[oslo_messaging_rabbit]
-ssl = true
-ssl_ca_file = {{ om_rabbitmq_cacert }}
-{% endif %}
-
-{% if searchlight_policy_file is defined %}
-[oslo_policy]
-policy_file = {{ searchlight_policy_file }}
-{% endif %}
-
-[service_credentials]
-auth_uri = {{ keystone_internal_url }}
-auth_url = {{ keystone_admin_url }}
-region_name = {{ openstack_region_name }}
-project_domain_name = default
-project_name = service
-user_domain_name = default
-username = {{ searchlight_keystone_user }}
-password = {{ searchlight_keystone_password }}
-auth_type = password
-auth_plugin = password
-cafile = {{ openstack_cacert }}
-
-memcache_security_strategy = ENCRYPT
-memcache_secret_key = {{ memcache_secret_key }}
-memcached_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}
-
-[resource_plugin:os_cinder_volume]
-enabled = {{ enable_cinder | bool }}
-
-[resource_plugin:os_cinder_snapshot]
-enabled = {{ enable_cinder | bool }}
-
-[resource_plugin:os_designate_zone]
-enabled = {{ enable_designate | bool }}
-
-[resource_plugin:os_designate_recordset]
-enabled = {{ enable_designate | bool }}
-
-[resource_plugin:os_swift_account]
-enabled = {{ enable_swift | bool }}
-
-[resource_plugin:os_swift_container]
-enabled = {{ enable_swift | bool }}
-
-[resource_plugin:os_swift_object]
-enabled = {{ enable_swift | bool }}
-
-[resource_plugin:os_nova_server]
-enabled = {{ enable_nova | bool }}
-
-[resource_plugin:os_nova_hypervisor]
-enabled = {{ enable_nova | bool }}
-
-[resource_plugin:os_nova_flavor]
-enabled = {{ enable_nova | bool }}
-notifications_topics_exchanges = versioned_notifications,nova
-
-[resource_plugin:os_nova_servergroup]
-enabled = {{ enable_nova | bool }}
-
-[resource_plugin:os_glance_image]
-enabled = {{ enable_glance | bool }}
-
-[resource_plugin:os_glance_metadef]
-enabled = {{ enable_glance | bool }}
-
-[resource_plugin:os_neutron_net]
-enabled = {{ enable_neutron | bool }}
-
-[resource_plugin:os_neutron_port]
-enabled = {{ enable_neutron | bool }}
-
-[resource_plugin:os_neutron_floatingip]
-enabled = {{ enable_neutron | bool }}
-
-[resource_plugin:os_neutron_security_group]
-enabled = {{ enable_neutron | bool }}
-
-[resource_plugin:os_ironic_chassis]
-enabled = {{ enable_ironic | bool }}
-notifications_topics_exchanges = ironic_versioned_notifications,ironic
-
-[resource_plugin:os_ironic_node]
-enabled = {{ enable_ironic | bool }}
-notifications_topics_exchanges = ironic_versioned_notifications,ironic
-
-[resource_plugin:os_ironic_port]
-enabled = {{ enable_ironic | bool }}
-notifications_topics_exchanges = ironic_versioned_notifications,ironic
-
-{# TODO(blallau): enabling osprofiler when fixed in searchlight #}
-
-{# {% if enable_osprofiler | bool %} #}
-{# [profiler] #}
-{# enabled = true #}
-{# trace_sqlalchemy = true #}
-{# hmac_keys = {{ osprofiler_secret }} #}
-{# connection_string = {{ osprofiler_backend_connection_string }} #}
-{# {% endif %} #}
diff --git a/ansible/site.yml b/ansible/site.yml
index c7cde2313c9eb86bdd652fed823fd876e8318b28..9fa73a5f27870fd4a971329722495d5d55052108 100644
--- a/ansible/site.yml
+++ b/ansible/site.yml
@@ -66,7 +66,6 @@
         - enable_rally_{{ enable_rally | bool }}
         - enable_redis_{{ enable_redis | bool }}
         - enable_sahara_{{ enable_sahara | bool }}
-        - enable_searchlight_{{ enable_searchlight | bool }}
         - enable_senlin_{{ enable_senlin | bool }}
         - enable_skydive_{{ enable_skydive | bool }}
         - enable_solum_{{ enable_solum | bool }}
@@ -314,11 +313,6 @@
             tasks_from: loadbalancer
           tags: sahara
           when: enable_sahara | bool
-        - include_role:
-            name: searchlight
-            tasks_from: loadbalancer
-          tags: searchlight
-          when: enable_searchlight | bool
         - include_role:
             name: senlin
             tasks_from: loadbalancer
@@ -1084,18 +1078,6 @@
         tags: senlin,
         when: enable_senlin | bool }
 
-- name: Apply role searchlight
-  gather_facts: false
-  hosts:
-    - searchlight-api
-    - searchlight-listener
-    - '&enable_searchlight_True'
-  serial: '{{ kolla_serial|default("0") }}'
-  roles:
-    - { role: searchlight,
-        tags: searchlight,
-        when: enable_searchlight | bool }
-
 - name: Apply role tacker
   gather_facts: false
   hosts:
diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml
index 99a514b53ccc605c7b4b9e588f9648ece302d165..81550c986f1993728fc36b9fea4b3aed523ec92f 100644
--- a/etc/kolla/globals.yml
+++ b/etc/kolla/globals.yml
@@ -313,7 +313,6 @@
 #enable_horizon_neutron_vpnaas: "{{ enable_neutron_vpnaas | bool }}"
 #enable_horizon_octavia: "{{ enable_octavia | bool }}"
 #enable_horizon_sahara: "{{ enable_sahara | bool }}"
-#enable_horizon_searchlight: "{{ enable_searchlight | bool }}"
 #enable_horizon_senlin: "{{ enable_senlin | bool }}"
 #enable_horizon_solum: "{{ enable_solum | bool }}"
 #enable_horizon_tacker: "{{ enable_tacker | bool }}"
@@ -371,7 +370,6 @@
 #enable_rally: "no"
 #enable_redis: "no"
 #enable_sahara: "no"
-#enable_searchlight: "no"
 #enable_senlin: "no"
 #enable_skydive: "no"
 #enable_solum: "no"
diff --git a/etc/kolla/passwords.yml b/etc/kolla/passwords.yml
index 77626405eb69f62f7c3cbf66e560781af3af4a10..b37e018a095ce8ec099a6ce5c019e9381c1c1ea5 100644
--- a/etc/kolla/passwords.yml
+++ b/etc/kolla/passwords.yml
@@ -172,8 +172,6 @@ octavia_keystone_password:
 octavia_ca_password:
 octavia_client_ca_password:
 
-searchlight_keystone_password:
-
 tacker_database_password:
 tacker_keystone_password:
 
diff --git a/releasenotes/notes/remove-searchlight-roles-7fde75ff93812b09.yaml b/releasenotes/notes/remove-searchlight-roles-7fde75ff93812b09.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..c109592f24b92835535d50f68e8c28f2d21dfbf0
--- /dev/null
+++ b/releasenotes/notes/remove-searchlight-roles-7fde75ff93812b09.yaml
@@ -0,0 +1,8 @@
+---
+upgrade:
+  - |
+    The ``Searchlight`` project is no longer maintained and
+    `retired since Wallaby cycle`__ . Its support and roles
+    are also removed since Wallaby cycle.
+
+    __ http://lists.openstack.org/pipermail/openstack-discuss/2020-November/018637.html
diff --git a/tests/templates/inventory.j2 b/tests/templates/inventory.j2
index 1417517b785b34a347b6e9e06beb95d8c98d3595..8ea1ed0ccff64cc42a922a5a161df6bcb51145a1 100644
--- a/tests/templates/inventory.j2
+++ b/tests/templates/inventory.j2
@@ -241,9 +241,6 @@ control
 [rally:children]
 control
 
-[searchlight:children]
-control
-
 [octavia:children]
 control
 
@@ -642,13 +639,6 @@ senlin
 [senlin-health-manager:children]
 senlin
 
-# Searchlight
-[searchlight-api:children]
-searchlight
-
-[searchlight-listener:children]
-searchlight
-
 # Octavia
 [octavia-api:children]
 octavia