From 464da8019c48fc82daedb3d0fd8f849d7cca99ef Mon Sep 17 00:00:00 2001 From: Benjamin Bertrand <benjamin.bertrand@esss.se> Date: Wed, 8 Aug 2018 22:01:03 +0200 Subject: [PATCH] Add elasticsearch dependency JIRA INFRA-575 --- .env | 3 ++- Makefile | 2 +- app/factory.py | 6 ++++++ app/settings.py | 2 ++ docker-compose.override.yml | 5 +++++ docker-compose.yml | 13 +++++++++++++ requirements-to-freeze.txt | 1 + requirements.txt | 1 + 8 files changed, 31 insertions(+), 2 deletions(-) diff --git a/.env b/.env index e028ff2..29cca1b 100644 --- a/.env +++ b/.env @@ -1,4 +1,5 @@ POSTGRES_USER=ics POSTGRES_PASSWORD=icspwd POSTGRES_DB=csentry_db -PGDATA_VOLUME=./data +PGDATA_VOLUME=./data/postgres +ELASTIC_DATA_VOLUME=./data/elastic diff --git a/Makefile b/Makefile index 78966b9..d7220b3 100644 --- a/Makefile +++ b/Makefile @@ -38,7 +38,7 @@ release: refresh \ release: ## build, tag, and push all stacks db: ## start postgres and redis for development - docker-compose up -d postgres redis worker + docker-compose up -d postgres redis elasticsearch worker init_db: ## initialize the dev database docker-compose run --rm web flask db upgrade head diff --git a/app/factory.py b/app/factory.py index 8d11576..060d692 100644 --- a/app/factory.py +++ b/app/factory.py @@ -14,6 +14,7 @@ import sqlalchemy as sa import rq_dashboard from flask import Flask from whitenoise import WhiteNoise +from elasticsearch import Elasticsearch from . import settings, models from .extensions import ( db, @@ -113,6 +114,11 @@ def create_app(config=None): app.config["SESSION_REDIS"] = session_redis_store fsession.init_app(app) cache.init_app(app) + app.elasticsearch = ( + Elasticsearch([app.config["ELASTICSEARCH_URL"]]) + if app.config["ELASTICSEARCH_URL"] + else None + ) admin.init_app(app) admin.add_view(UserAdmin(models.User, db.session, endpoint="users")) diff --git a/app/settings.py b/app/settings.py index 14784a8..254a6e7 100644 --- a/app/settings.py +++ b/app/settings.py @@ -36,6 +36,8 @@ CACHE_REDIS_URL = "redis://redis:6379/1" REDIS_URL = "redis://redis:6379/2" QUEUES = ["default"] +ELASTICSEARCH_URL = "http://elasticsearch:9200" + LDAP_HOST = "esss.lu.se" LDAP_BASE_DN = "DC=esss,DC=lu,DC=se" LDAP_USER_DN = "OU=ESS Users" diff --git a/docker-compose.override.yml b/docker-compose.override.yml index 239d28f..a36399a 100644 --- a/docker-compose.override.yml +++ b/docker-compose.override.yml @@ -26,3 +26,8 @@ services: volumes: - ./postgres/create-test-db.sh:/docker-entrypoint-initdb.d/create-test-db.sh - ${PGDATA_VOLUME}:/var/lib/postgresql/data/pgdata + elasticsearch: + volumes: + - ${ELASTIC_DATA_VOLUME}:/usr/share/elasticsearch/data + ports: + - "9200:9200" diff --git a/docker-compose.yml b/docker-compose.yml index 7700c32..ac0a319 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,6 +7,7 @@ services: depends_on: - postgres - redis + - elasticsearch worker: image: registry.esss.lu.se/ics-infrastructure/csentry:master container_name: csentry_worker @@ -28,3 +29,15 @@ services: redis: image: redis:4.0 container_name: csentry_redis + elasticsearch: + image: docker.elastic.co/elasticsearch/elasticsearch:6.4.2 + container_name: csentry_elasticsearch + environment: + - cluster.name=csentry-cluster + - bootstrap.memory_lock=true + - discovery.type=single-node + - "ES_JAVA_OPTS=-Xms512m -Xmx512m" + ulimits: + memlock: + soft: -1 + hard: -1 diff --git a/requirements-to-freeze.txt b/requirements-to-freeze.txt index 7d087bb..336128f 100644 --- a/requirements-to-freeze.txt +++ b/requirements-to-freeze.txt @@ -1,3 +1,4 @@ +elasticsearch flask>=1.0.0 flask-admin flask-caching diff --git a/requirements.txt b/requirements.txt index 21a2a7b..c3ff3a8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,6 +6,7 @@ certifi==2018.4.16 chardet==3.0.4 click==6.7 colorama==0.3.9 +elasticsearch==6.3.1 et-xmlfile==1.0.1 Flask==1.0.2 Flask-Admin==1.5.1 -- GitLab