From 33b85f5eabd7e0775e20b78fb10751c3d7989d38 Mon Sep 17 00:00:00 2001 From: Hannes Feldt <feldt@astron.nl> Date: Mon, 27 Nov 2023 09:52:24 +0000 Subject: [PATCH] L2SS-1618: Fix lifecycle configuration --- .gitignore | 3 ++- .gitlab-ci.yml | 6 ++---- .prepare.gitlab-ci.yml | 3 --- compose.yaml => docker/compose.yaml | 0 Dockerfile => docker/package/Dockerfile | 4 ++-- docs/cleanup.py | 19 ++++++++++++++++ docs/cleanup.sh | 19 ---------------- docs/requirements.txt | 1 + docs/source/deployment.rst | 14 ++++++++++++ docs/source/index.rst | 1 + docs/source/infra_diagrams.py | 20 +++++++++++++++++ docs/source/infrastructure.png | Bin 0 -> 52344 bytes docs/source/source_documentation/index.rst | 7 ++++++ infra/env.yaml | 24 ++++++++++----------- infra/jobs/station/stingray.levant.nomad | 12 +++++------ lofar_stingray/writer.py | 2 +- requirements.txt | 2 +- tox.ini | 6 +----- 18 files changed, 89 insertions(+), 54 deletions(-) rename compose.yaml => docker/compose.yaml (100%) rename Dockerfile => docker/package/Dockerfile (90%) create mode 100644 docs/cleanup.py delete mode 100644 docs/cleanup.sh create mode 100644 docs/source/deployment.rst create mode 100644 docs/source/infra_diagrams.py create mode 100644 docs/source/infrastructure.png create mode 100644 docs/source/source_documentation/index.rst diff --git a/.gitignore b/.gitignore index 02e835b..ec464cd 100644 --- a/.gitignore +++ b/.gitignore @@ -10,7 +10,8 @@ build dist # Documentation -docs/source/source_documentation +docs/source/source_documentation/* +!docs/source/source_documentation/index.rst docs/build # Setuptools SCM diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fedcccb..af8ea8d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -18,8 +18,6 @@ stages: # Caching of dependencies to speed up builds variables: PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" - DOCKER_DRIVER: overlay2 - DOCKER_TLS_CERTDIR: "" include: - template: Security/SAST.gitlab-ci.yml @@ -124,7 +122,7 @@ docker_build: - name: docker:dind script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - - docker build . --build-arg BUILD_ENV=copy --tag $CI_REGISTRY_IMAGE/stingray:$CI_COMMIT_REF_SLUG + - docker build -f docker/package/Dockerfile . --build-arg BUILD_ENV=copy --tag $CI_REGISTRY_IMAGE/stingray:$CI_COMMIT_REF_SLUG - docker push $CI_REGISTRY_IMAGE/stingray:$CI_COMMIT_REF_SLUG run_integration_tests: @@ -186,5 +184,5 @@ deploy_nomad: levant deploy \ -address="http://${STATION}c.control.lofar:4646" \ -var-file=infra/env.yaml \ - -var image_tag="$CI_COMMIT_TAG" \ + -var image_tag="$CI_COMMIT_REF_SLUG" \ infra/jobs/station/stingray.levant.nomad diff --git a/.prepare.gitlab-ci.yml b/.prepare.gitlab-ci.yml index 718ab4c..e531b6d 100644 --- a/.prepare.gitlab-ci.yml +++ b/.prepare.gitlab-ci.yml @@ -6,9 +6,6 @@ build_ci_runner_image: image: docker:stable services: - docker:dind - variables: - DOCKER_DRIVER: overlay2 - DOCKER_TLS_CERTDIR: "" script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - | diff --git a/compose.yaml b/docker/compose.yaml similarity index 100% rename from compose.yaml rename to docker/compose.yaml diff --git a/Dockerfile b/docker/package/Dockerfile similarity index 90% rename from Dockerfile rename to docker/package/Dockerfile index bce53c9..22d9ef5 100644 --- a/Dockerfile +++ b/docker/package/Dockerfile @@ -1,8 +1,8 @@ ARG BUILD_ENV=no_copy FROM python:3.12 AS build_no_copy -ADD requirements.txt . -COPY . /work +ADD ../../requirements.txt . +COPY ../.. /work RUN rm -r /work/dist | true RUN python -m pip install --user tox WORKDIR /work diff --git a/docs/cleanup.py b/docs/cleanup.py new file mode 100644 index 0000000..f5890d9 --- /dev/null +++ b/docs/cleanup.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python3 + +# Copyright (C) 2023 ASTRON (Netherlands Institute for Radio Astronomy) +# SPDX-License-Identifier: Apache-2.0 + +import os + +file_dir = os.path.dirname(os.path.realpath(__file__)) + +clean_dir = os.path.join(file_dir, "source", "source_documentation") +print(f"Cleaning.. {clean_dir}/*") + +for file_name in os.listdir(clean_dir): + file = os.path.join(clean_dir, file_name) + match file_name: + case "index.rst": continue + case _: + print(f"Removing.. {file}") + os.remove(file) diff --git a/docs/cleanup.sh b/docs/cleanup.sh deleted file mode 100644 index 282221a..0000000 --- a/docs/cleanup.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -# -# Copyright (C) 2023 ASTRON (Netherlands Institute for Radio Astronomy) -# SPDX-License-Identifier: Apache-2.0 -# - -FILE_DIR=$(dirname -- "$(readlink -f -- "${0}")") - -echo "Cleaning.. ${FILE_DIR}/source/source_documentation/*" - -for f in "${FILE_DIR}"/source/source_documentation/* -do - - case $f in - */index.rst) true;; - *) echo "Removing.. ${f}"; rm "${f}";; - esac -done diff --git a/docs/requirements.txt b/docs/requirements.txt index 3c6e46c..8fb62db 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -3,3 +3,4 @@ sphinx-rtd-theme>=0.4.3 #MIT sphinxcontrib-apidoc>=0.3.0 #BSD myst-parser>=2.0 # MIT docutils>=0.17 # BSD +diagrams # MIT diff --git a/docs/source/deployment.rst b/docs/source/deployment.rst new file mode 100644 index 0000000..566775f --- /dev/null +++ b/docs/source/deployment.rst @@ -0,0 +1,14 @@ +Deployment / Infrastructure +---------------------------- + +Stingray is deployed as containers running on the station. +For each statistic type (XST, SST, BST) and each antenna field, one container instance is running. + +Each container is receiving the statistics packets for a specific type and antenna field via TCP, +recording them in chunks of up to 5 minutes and writing the result JSON encoded to a S3 bucket. + +The bucket is located on the stations MinIO instance and configured to replicate the individual objects +to the central MinIO instance. To reduce the risk of data loss the objects are stored on the station for 24 hours. + +.. image:: infrastructure.png + diff --git a/docs/source/index.rst b/docs/source/index.rst index b9b73e3..b0505ce 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -14,3 +14,4 @@ Contents: readme source_documentation/index + deployment diff --git a/docs/source/infra_diagrams.py b/docs/source/infra_diagrams.py new file mode 100644 index 0000000..f808fae --- /dev/null +++ b/docs/source/infra_diagrams.py @@ -0,0 +1,20 @@ +# Copyright (C) 2023 ASTRON (Netherlands Institute for Radio Astronomy) +# SPDX-License-Identifier: Apache-2.0 + +from diagrams import Diagram, Cluster, Edge +from diagrams.aws.storage import SimpleStorageServiceS3BucketWithObjects +from diagrams.digitalocean.compute import Docker +from diagrams.onprem.compute import Server + +with Diagram("Infrastructure", show=False, direction="LR"): + with Cluster("Central"): + central_minio = SimpleStorageServiceS3BucketWithObjects("MinIO") + + with Cluster("Station"): + minio = SimpleStorageServiceS3BucketWithObjects("MinIO") + sd = Server("statistics devices") + statistics_container = Docker("statistics writers") + sd >> Edge(label="statistics packets") >> statistics_container >> Edge(label="write blocks of 5m") >> minio + minio >> Edge(label="replicate") >> central_minio + + diff --git a/docs/source/infrastructure.png b/docs/source/infrastructure.png new file mode 100644 index 0000000000000000000000000000000000000000..76f70278716df14152c9ce0e59d745575d6512d8 GIT binary patch literal 52344 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 E0Cs%gRsaA1 literal 0 HcmV?d00001 diff --git a/docs/source/source_documentation/index.rst b/docs/source/source_documentation/index.rst new file mode 100644 index 0000000..ec205be --- /dev/null +++ b/docs/source/source_documentation/index.rst @@ -0,0 +1,7 @@ +Source code documentation +========================= + +.. toctree:: + :maxdepth: 3 + + lofar_stingray diff --git a/infra/env.yaml b/infra/env.yaml index a0617c5..6597eea 100644 --- a/infra/env.yaml +++ b/infra/env.yaml @@ -1,13 +1,13 @@ stingray: - sst: - lba: 5101 - hba0: 5111 - hba1: 5121 - bst: - lba: 5103 - hba0: 5113 - hba1: 5123 - xst: - lba: 5102 - hba0: 5112 - hba1: 5122 + lba: + sst: 5101 + xst: 5102 + bst: 5103 + hba0: + sst: 5111 + xst: 5112 + bst: 5113 + hba1: + sst: 5121 + xst: 5122 + bst: 5123 diff --git a/infra/jobs/station/stingray.levant.nomad b/infra/jobs/station/stingray.levant.nomad index 532c6e5..0575250 100644 --- a/infra/jobs/station/stingray.levant.nomad +++ b/infra/jobs/station/stingray.levant.nomad @@ -8,12 +8,12 @@ job "statistics" { delay_function = "constant" } - [[ range $st, $fields := $.stingray ]] - [[ range $af, $port := $fields ]] - group "stingray-[[ $st ]]-[[ $af ]]" { - count = 1 + [[ range $af, $fields := $.stingray ]] + group "stingray-[[ $af ]]" { + count = 1 - task "stingray-[[ $st ]]-[[ $af ]]" { + [[ range $st, $port := $fields ]] + task "stingray-[[ $af ]]-[[ $st ]]" { driver = "docker" config { @@ -37,7 +37,7 @@ job "statistics" { memory = 512 } } + [[ end ]] } [[ end ]] - [[ end ]] } diff --git a/lofar_stingray/writer.py b/lofar_stingray/writer.py index 9109f29..a1cd6b7 100644 --- a/lofar_stingray/writer.py +++ b/lofar_stingray/writer.py @@ -71,7 +71,7 @@ class Storage: Rule( ENABLED, expiration=Expiration(days=1), - rule_filter=Filter(prefix="/"), + rule_filter=Filter(prefix=""), ) ] ), diff --git a/requirements.txt b/requirements.txt index c2b2c4d..f9e7926 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ importlib-metadata>=0.12, <5.0;python_version<"3.8" numpy minio~=7.1.17 -lofar-station-client==0.18.3.dev0 # Apache 2 +lofar-station-client>=0.18.3 # Apache 2 setuptools~=68.2.0 logfmter # MIT diff --git a/tox.ini b/tox.ini index ec3b6ac..15f8c05 100644 --- a/tox.ini +++ b/tox.ini @@ -9,8 +9,6 @@ package = wheel wheel_build_env = .pkg setenv = - LANGUAGE=en_US - LC_ALL=en_US.UTF-8 PYTHONWARNINGS=default::DeprecationWarning PIP_EXTRA_INDEX_URL={env:PIP_EXTRA_INDEX_URL:https://git.astron.nl/api/v4/projects/395/packages/pypi/simple} deps = @@ -42,14 +40,12 @@ commands = format: {envpython} -m black -v lofar_stingray tests [testenv:docs] -allowlist_externals = - bash deps = -r{toxinidir}/requirements.txt -r{toxinidir}/docs/requirements.txt changedir = {toxinidir} commands = - bash docs/cleanup.sh + {envpython} docs/cleanup.py sphinx-build -b html docs/source docs/build/html [testenv:build] -- GitLab