From 6e1933b47eb4c84ebbee3905546f57532d67e708 Mon Sep 17 00:00:00 2001 From: Peter Razumovsky Date: Thu, 8 Dec 2016 17:31:46 +0400 Subject: [PATCH] Add searchlight listener and api services searchlight-api and searchlight-listener allows to use searchlight service. Change-Id: Idc37e788436299f2ff08956e960d51e66236b9b9 --- docker/searchlight-api/Dockerfile.j2 | 4 + docker/searchlight-base/Dockerfile.j2 | 11 +++ docker/searchlight-listener/Dockerfile.j2 | 4 + service/files/defaults.yaml | 22 +++++ service/files/searchlight.conf.j2 | 97 +++++++++++++++++++++++ service/searchlight-api.yaml | 75 ++++++++++++++++++ service/searchlight-listener.yaml | 23 ++++++ 7 files changed, 236 insertions(+) create mode 100644 docker/searchlight-api/Dockerfile.j2 create mode 100644 docker/searchlight-base/Dockerfile.j2 create mode 100644 docker/searchlight-listener/Dockerfile.j2 create mode 100644 service/files/defaults.yaml create mode 100644 service/files/searchlight.conf.j2 create mode 100644 service/searchlight-api.yaml create mode 100644 service/searchlight-listener.yaml diff --git a/docker/searchlight-api/Dockerfile.j2 b/docker/searchlight-api/Dockerfile.j2 new file mode 100644 index 0000000..bd09109 --- /dev/null +++ b/docker/searchlight-api/Dockerfile.j2 @@ -0,0 +1,4 @@ +FROM {{ image_spec("searchlight-base") }} +MAINTAINER {{ maintainer }} + +USER searchlight diff --git a/docker/searchlight-base/Dockerfile.j2 b/docker/searchlight-base/Dockerfile.j2 new file mode 100644 index 0000000..190bee5 --- /dev/null +++ b/docker/searchlight-base/Dockerfile.j2 @@ -0,0 +1,11 @@ +FROM {{ image_spec("openstack-base") }} +MAINTAINER {{ maintainer }} + +{{ copy_sources("openstack/searchlight", "/searchlight") }} + +RUN useradd --user-group -G microservices searchlight \ + && /var/lib/microservices/venv/bin/pip install --upgrade /searchlight \ + && mkdir -p /var/lib/searchlight /etc/searchlight \ + && cp -r /searchlight/etc/* /etc/searchlight/ \ + && chown -R searchlight:searchlight /etc/searchlight /var/lib/searchlight \ + && rm -r /searchlight diff --git a/docker/searchlight-listener/Dockerfile.j2 b/docker/searchlight-listener/Dockerfile.j2 new file mode 100644 index 0000000..bd09109 --- /dev/null +++ b/docker/searchlight-listener/Dockerfile.j2 @@ -0,0 +1,4 @@ +FROM {{ image_spec("searchlight-base") }} +MAINTAINER {{ maintainer }} + +USER searchlight diff --git a/service/files/defaults.yaml b/service/files/defaults.yaml new file mode 100644 index 0000000..a2ebe0a --- /dev/null +++ b/service/files/defaults.yaml @@ -0,0 +1,22 @@ +configs: + searchlight: + api_port: + cont: 9393 + ingress: search + debug: false + user: searchlight + password: password + notification_driver: messagingv2 + services: + # enable only services from fuel-ccp/etc/topology-example.yaml by default + nova: true + neutron: true + glance: true + cinder: false + # do not enable this service until it has no ccp plugin + swift: false + +sources: + openstack/searchlight: + git_url: https://git.openstack.org/openstack/searchlight.git + git_ref: stable/newton diff --git a/service/files/searchlight.conf.j2 b/service/files/searchlight.conf.j2 new file mode 100644 index 0000000..0b3ae64 --- /dev/null +++ b/service/files/searchlight.conf.j2 @@ -0,0 +1,97 @@ +[DEFAULT] +use_syslog = false +use_stderr = true +debug = {{ searchlight.debug }} +transport_url = rabbit://{{ rabbitmq.user }}:{{ rabbitmq.password }}@{{ address("rabbitmq") }}:{{ rabbitmq.port.cont }}/ + +[api] +bind_port = {{ searchlight.api_port.cont }} +bind_host = {{ network_topology["private"]["address"] }} + +[service_credentials] +auth_plugin = password +username = {{ searchlight.user }} +password = {{ searchlight.password }} +tenant_name = service +os_region_name = RegionOne +auth_uri = {{ address('keystone', keystone.public_port, with_scheme=True) }} +auth_url = {{ address('keystone', keystone.admin_port, with_scheme=True) }} + +[keystone_authtoken] +auth_uri = {{ address('keystone', keystone.public_port, with_scheme=True) }} +auth_url = {{ address('keystone', keystone.admin_port, with_scheme=True) }} +auth_type = password +project_domain_id = default +user_domain_id = default +project_name = service +username = {{ searchlight.user }} +password = {{ searchlight.password }} +memcached_servers = {{ address("memcached", memcached.port) }} + +[paste_deploy] +flavor = keystone + +[oslo_concurrency] +lock_path = /var/lib/searchlight/temp + +[listener] +notifications_pool = searchlight + +[resource_plugin] +resource_group_name = searchlight + +[service_credentials:nova] +compute_api_version = 2.1 + +[resource_plugin:os_nova_server] +enabled = {{ searchlight.services.nova }} +admin_only_fields = OS-EXT-SRV*,OS-EXT-STS:vm_state + +[resource_plugin:os_nova_hypervisor] +enabled = {{ searchlight.services.nova }} + +[resource_plugin:os_nova_flavor] +enabled = {{ searchlight.services.nova }} + +[resource_plugin:os_nova_servergroup] +enabled = {{ searchlight.services.nova }} + +[resource_plugin:os_glance_image] +enabled = {{ searchlight.services.glance }} + +[resource_plugin:os_glance_metadef] +enabled = {{ searchlight.services.glance }} + +[resource_plugin:os_cinder_volume] +enabled = {{ searchlight.services.cinder }} + +[resource_plugin:os_cinder_snapshot] +enabled = {{ searchlight.services.cinder }} + +[resource_plugin:os_neutron_net] +enabled = {{ searchlight.services.neutron }} +admin_only_fields=admin_state_up,status + +[resource_plugin:os_neutron_port] +enabled = {{ searchlight.services.neutron }} + +[resource_plugin:os_neutron_security_group] +enabled = {{ searchlight.services.neutron }} + +[resource_plugin:os_designate_zone] +enabled = false + +[resource_plugin:os_designate_recordset] +enabled = false + +[resource_plugin:os_swift_account] +enabled = {{ searchlight.services.swift }} + +[resource_plugin:os_swift_container] +enabled = {{ searchlight.services.swift }} + +[resource_plugin:os_swift_object] +enabled = {{ searchlight.services.swift }} + +[elasticsearch] +hosts = {{ address('elasticsearch', elasticsearch.port, with_scheme=True) }} diff --git a/service/searchlight-api.yaml b/service/searchlight-api.yaml new file mode 100644 index 0000000..eec8c3b --- /dev/null +++ b/service/searchlight-api.yaml @@ -0,0 +1,75 @@ +dsl_version: 0.1.0 +service: + name: searchlight-api + ports: + - {{ searchlight.api_port }} + containers: + - name: searchlight-api + image: searchlight-api + # TODO(prazumovsky): add probes + pre: + - name: searchlight-elasticsearch-sync + dependencies: + - elasticsearch + # {% if searchlight.services.nova %} + - nova-api + # {% endif %} + # {% if searchlight.services.glance %} + - glance-api + # {% endif %} + # {% if searchlight.services.neutron %} + - neutron-server + # {% endif %} + # {% if searchlight.services.cinder %} + - cinder-api + # {% endif %} + files: + - searchlight-conf + type: local + command: searchlight-manage --config-file /etc/searchlight/searchlight.conf index sync --force + - name: searchlight-user-create + dependencies: + - keystone-create-project + type: single + command: openstack user create --domain default --password {{ searchlight.password }} {{ searchlight.user }} + + - name: searchlight-admin-role-add + dependencies: + - searchlight-user-create + type: single + command: openstack role add --project service --user {{ searchlight.user }} admin + + - name: searchlight-service-create + dependencies: + - keystone-create-project + type: single + command: openstack service create --name searchlight --description "Searchlight Service" search + + - name: searchlight-public-endpoint-create + dependencies: + - searchlight-service-create + type: single + command: openstack endpoint create --region RegionOne search public {{ address('searchlight-api', searchlight.api_port, external=True, with_scheme=True) }} + + - name: searchlight-internal-endpoint-create + dependencies: + - searchlight-service-create + type: single + command: openstack endpoint create --region RegionOne search internal {{ address('searchlight-api', searchlight.api_port, with_scheme=True) }} + + - name: searchlight-admin-endpoint-create + dependencies: + - searchlight-service-create + type: single + command: openstack endpoint create --region RegionOne search admin {{ address('searchlight-api', searchlight.api_port, with_scheme=True) }} + daemon: + dependencies: + - rabbitmq + files: + - searchlight-conf + command: searchlight-api --config-file /etc/searchlight/searchlight.conf + +files: + searchlight-conf: + path: /etc/searchlight/searchlight.conf + content: searchlight.conf.j2 diff --git a/service/searchlight-listener.yaml b/service/searchlight-listener.yaml new file mode 100644 index 0000000..48420fc --- /dev/null +++ b/service/searchlight-listener.yaml @@ -0,0 +1,23 @@ +dsl_version: 0.1.0 +service: + name: searchlight-listener + containers: + - name: searchlight-listener + image: searchlight-listener + # TODO(prazumovsky): add probes + probes: + readiness: "true" + liveness: + command: "true" + type: "exec" + daemon: + dependencies: + - searchlight-api + files: + - searchlight-conf + command: searchlight-listener --config-file /etc/searchlight/searchlight.conf + +files: + searchlight-conf: + path: /etc/searchlight/searchlight.conf + content: searchlight.conf.j2