From a623126f8c1fe1659c6b3d98301b3275bec1a802 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20Re=C3=A9?= Date: Fri, 17 Nov 2023 15:34:29 +0100 Subject: [PATCH] Add solr support (#1) --- MANIFEST.in | 1 + Makefile | 44 ++++++++++++++++++++++++++++ docker-compose.yml | 15 ++++++++++ news/1.feature | 0 scripts/solr_activate_and_reindex.py | 20 +++++++++++++ 5 files changed, 80 insertions(+) create mode 100644 docker-compose.yml create mode 100644 news/1.feature create mode 100644 scripts/solr_activate_and_reindex.py diff --git a/MANIFEST.in b/MANIFEST.in index c06f19f..a5d3cc5 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -17,3 +17,4 @@ recursive-exclude frontend * exclude instance.yaml global-exclude *.pyc global-exclude .DS_Store +recursive-include scripts *.py diff --git a/Makefile b/Makefile index 5efd2c4..e307c71 100644 --- a/Makefile +++ b/Makefile @@ -8,6 +8,11 @@ SHELL:=bash MAKEFLAGS+=--warn-undefined-variables MAKEFLAGS+=--no-builtin-rules +CURRENT_DIR:=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) + +COMPOSE_PROJECT_NAME?="kitconcept_intranet" +SOLR_ONLY_COMPOSE?=${CURRENT_DIR}/docker-compose.yml + # We like colors # From: https://coderwall.com/p/izxssa/colored-makefile-for-golang-projects RED=`tput setaf 1` @@ -127,3 +132,42 @@ build-image: ## Build Docker Image .PHONY: run-image run-image: build-image ## Build Docker Image docker run --rm -it -p 8080:8080 $(IMAGE_NAME):$(IMAGE_TAG) + +## Solr only +.PHONY: solr-prepare + solr-prepare: ## Prepare solr + @echo "$(RED)==> Preparing solr $(RESET)" + mkdir -p ${SOLR_DATA_FOLDER}/solr + +.PHONY: start-solr +start-solr: solr-start + +.PHONY: stop-solr +stop-solr: solr-stop + +.PHONY: start-solr-fg +start-solr-fg: solr-start-fg + +.PHONY: solr-start +solr-start: ## Start solr + @echo "Start solr" + @COMPOSE_PROJECT_NAME=${COMPOSE_PROJECT_NAME} docker compose -f ${SOLR_ONLY_COMPOSE} up -d + +.PHONY: solr-start-fg +solr-start-fg: ## Start solr in foreground + @echo "Start solr in foreground" + @COMPOSE_PROJECT_NAME=${COMPOSE_PROJECT_NAME} docker compose -f ${SOLR_ONLY_COMPOSE} up + +.PHONY: solr-stop +solr-stop: ## Stop solr + @echo "Stop solr" + @COMPOSE_PROJECT_NAME=${COMPOSE_PROJECT_NAME} docker compose -f ${SOLR_ONLY_COMPOSE} down + +.PHONY: solr-logs +solr-logs: ## Show solr logs + @echo "Show solr logs" + @COMPOSE_PROJECT_NAME=${COMPOSE_PROJECT_NAME} docker compose -f ${SOLR_ONLY_COMPOSE} logs -f + +.PHONY: solr-activate-and-reindex +solr-activate-and-reindex: instance/etc/zope.ini ## Activate and reindex solr + PYTHONWARNINGS=ignore ./bin/zconsole run instance/etc/zope.conf scripts/solr_activate_and_reindex.py --clear diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..402354c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,15 @@ +version: "3" +services: + solr: + image: ghcr.io/kitconcept/solr:latest + ports: + - 8983:8983 + volumes: + - solr-data:/var/solr/data + command: + - solr-precreate + - plone + - /plone-config + +volumes: + solr-data: {} diff --git a/news/1.feature b/news/1.feature new file mode 100644 index 0000000..e69de29 diff --git a/scripts/solr_activate_and_reindex.py b/scripts/solr_activate_and_reindex.py new file mode 100644 index 0000000..96ff3c2 --- /dev/null +++ b/scripts/solr_activate_and_reindex.py @@ -0,0 +1,20 @@ +from kitconcept.solr.reindex_helpers import activate_and_reindex +from Testing.makerequest import makerequest +from zope.site.hooks import setSite + +import sys +import transaction + + +if __name__ == "__main__": + app = makerequest(app) # noQA + + # Set site to Plone + site_id = "Plone" + portal = app.unrestrictedTraverse(site_id) + setSite(portal) + + activate_and_reindex(portal, clear="--clear" in sys.argv) + + transaction.commit() + app._p_jar.sync()