9 changed files with 255 additions and 2 deletions
@ -0,0 +1,16 @@ |
|||||||
|
FROM python:3.8-slim |
||||||
|
|
||||||
|
RUN mkdir -p /usr/src/app |
||||||
|
WORKDIR /usr/src/app |
||||||
|
|
||||||
|
COPY requirements.txt /usr/src/app/ |
||||||
|
|
||||||
|
RUN pip3 install --no-cache-dir -r requirements.txt |
||||||
|
|
||||||
|
COPY . /usr/src/app |
||||||
|
|
||||||
|
EXPOSE 8080 |
||||||
|
|
||||||
|
RUN chmod +x /usr/src/app/entrypoint.sh |
||||||
|
|
||||||
|
ENTRYPOINT ["/usr/src/app/entrypoint.sh"] |
@ -1,3 +1,3 @@ |
|||||||
# redis_clean_trigger |
# alarmlist_trigger |
||||||
|
|
||||||
En kubernetes cronjobb för att tömma redis stream |
Microservice trigger of larmlist updates |
||||||
|
@ -0,0 +1,3 @@ |
|||||||
|
#!/bin/bash |
||||||
|
python trigger_redis_clean.py |
||||||
|
echo "Yeah, the job has run, I will die now" |
@ -0,0 +1,46 @@ |
|||||||
|
-- |
||||||
|
apiVersion: v1 |
||||||
|
kind: ConfigMap |
||||||
|
metadata: |
||||||
|
name: redis-clean-trigger |
||||||
|
namespace: k2 |
||||||
|
data: |
||||||
|
REDIS_TRIM: "10000" |
||||||
|
--- |
||||||
|
apiVersion: v1 |
||||||
|
kind: CronJob |
||||||
|
metadata: |
||||||
|
name: redis-clean-trigger |
||||||
|
spec: |
||||||
|
schedule: "0 6 * * *" |
||||||
|
successfulJobsHistoryLimit: 4 |
||||||
|
failedJobsHistoryLimit: 1 |
||||||
|
concurrencyPolicy: Forbid |
||||||
|
jobTemplate: |
||||||
|
spec: |
||||||
|
template: |
||||||
|
spec: |
||||||
|
#imagePullSecrets: |
||||||
|
# - name: k2-repository |
||||||
|
containers: |
||||||
|
- name: alarmlist-trigger |
||||||
|
image: 935062023832.dkr.ecr.eu-west-1.amazonaws.com/redis_clean_trigger:1.0.0 |
||||||
|
envFrom: |
||||||
|
- configMapRef: |
||||||
|
name: k2 |
||||||
|
- configMapRef: |
||||||
|
name: redis_clean_trigger |
||||||
|
env: |
||||||
|
- name: REDIS_PASSWORD |
||||||
|
valueFrom: |
||||||
|
secretKeyRef: |
||||||
|
name: redis |
||||||
|
key: redis-password |
||||||
|
|
||||||
|
resources: |
||||||
|
limits: |
||||||
|
memory: 128M |
||||||
|
requests: |
||||||
|
cpu: 100m |
||||||
|
memory: 128M |
||||||
|
restartPolicy: OnFailure |
@ -0,0 +1,2 @@ |
|||||||
|
# This will create or update your pipeline |
||||||
|
fly -t se set-pipeline -p alarmlist_trigger -c pipeline.yaml -l $1 |
@ -0,0 +1,152 @@ |
|||||||
|
resource_types: |
||||||
|
- name: slack-notification |
||||||
|
type: docker-image |
||||||
|
source: |
||||||
|
repository: cfcommunity/slack-notification-resource |
||||||
|
tag: latest |
||||||
|
- name: kubernetes |
||||||
|
type: docker-image |
||||||
|
source: |
||||||
|
repository: zlabjp/kubernetes-resource |
||||||
|
tag: "1.10" |
||||||
|
- name: kubernetes_2 |
||||||
|
type: docker-image |
||||||
|
source: |
||||||
|
repository: ferrologic/concourse-kubernetes |
||||||
|
tag: "1.1.0" |
||||||
|
|
||||||
|
resources: |
||||||
|
- name: se-gitea |
||||||
|
type: git |
||||||
|
source: |
||||||
|
uri: https://git.smartenergi.org/smartenergi/redis_clean_trigger.git |
||||||
|
branch: master |
||||||
|
username: ((git_username)) |
||||||
|
password: ((git_password)) |
||||||
|
- name: docker-repository |
||||||
|
type: docker-image |
||||||
|
source: |
||||||
|
repository: 935062023832.dkr.ecr.eu-west-1.amazonaws.com/redis_clean_trigger |
||||||
|
aws_access_key_id: ((aws_access_key_id)) |
||||||
|
aws_secret_access_key: ((aws_secret_access_key)) |
||||||
|
- name: version |
||||||
|
type: semver |
||||||
|
source: |
||||||
|
initial_version: 1.0.0 |
||||||
|
driver: git |
||||||
|
uri: https://git.smartenergi.org/smartenergi/versionfiles.git |
||||||
|
branch: master |
||||||
|
file: redis_clean_trigger-version |
||||||
|
username: ((git_username)) |
||||||
|
password: ((git_password)) |
||||||
|
- name: notify |
||||||
|
type: slack-notification |
||||||
|
source: |
||||||
|
url: https://hooks.slack.com/services/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 |
||||||
|
insecure: true |
||||||
|
- name: kubernetes_io |
||||||
|
type: kubernetes_2 |
||||||
|
source: |
||||||
|
cluster_url: https://api.k8s.smartenergi.io |
||||||
|
namespace: k2 |
||||||
|
cluster_ca: ((kube_cluster_ca)) |
||||||
|
admin_key: ((kube_admin_key)) |
||||||
|
admin_cert: ((kube_admin_cert)) |
||||||
|
resource_type: cronjob |
||||||
|
resource_name: redis-clean-trigger |
||||||
|
- name: kubernetes_demo |
||||||
|
type: kubernetes_2 |
||||||
|
source: |
||||||
|
cluster_url: https://api.k8s.smartenergi.org |
||||||
|
namespace: k2 |
||||||
|
cluster_ca: ((demo_kube_cluster_ca)) |
||||||
|
admin_key: ((demo_kube_admin_key)) |
||||||
|
admin_cert: ((demo_kube_admin_cert)) |
||||||
|
resource_type: cronjob |
||||||
|
resource_name: redis-clean-trigger |
||||||
|
|
||||||
|
jobs: |
||||||
|
- name: "Build" |
||||||
|
public: true |
||||||
|
serial: true |
||||||
|
plan: |
||||||
|
- get: version |
||||||
|
params: { bump: patch } |
||||||
|
- get: se-gitea |
||||||
|
trigger: true |
||||||
|
- put: docker-repository |
||||||
|
params: |
||||||
|
build: se-gitea |
||||||
|
tag: version/number |
||||||
|
tag_as_latest: true |
||||||
|
- put: version |
||||||
|
params: { bump: patch } |
||||||
|
- put: notify |
||||||
|
params: |
||||||
|
text: | |
||||||
|
*Result*: Success! |
||||||
|
*Build Pipeline Name*: $BUILD_PIPELINE_NAME |
||||||
|
*Job*: Build & Test |
||||||
|
*URL*: http://cicd.smartenergi.io:8080/builds/$BUILD_ID |
||||||
|
on_failure: |
||||||
|
put: notify |
||||||
|
params: |
||||||
|
text: | |
||||||
|
*Result*: Failure! |
||||||
|
*Build Pipeline Name*: $BUILD_PIPELINE_NAME |
||||||
|
*Job*: Build & Test |
||||||
|
*URL*: http://cicd.smartenergi.io:8080/builds/$BUILD_ID |
||||||
|
- name: "Deploy to internal" |
||||||
|
public: true |
||||||
|
plan: |
||||||
|
- get: docker-repository |
||||||
|
trigger: true |
||||||
|
passed: |
||||||
|
- "Build" |
||||||
|
- get: version |
||||||
|
- put: kubernetes_io |
||||||
|
params: |
||||||
|
image_name: docker-repository/repository |
||||||
|
image_tag: version/number |
||||||
|
- put: notify |
||||||
|
params: |
||||||
|
text: | |
||||||
|
*Result*: Success! |
||||||
|
*Build Pipeline Name*: $BUILD_PIPELINE_NAME |
||||||
|
*Job*: Deployment to Internal |
||||||
|
*URL*: http://pipeline.smartenergi.io:8080/builds/$BUILD_ID |
||||||
|
on_failure: |
||||||
|
put: notify |
||||||
|
params: |
||||||
|
text: | |
||||||
|
*Result*: Failure! |
||||||
|
*Build Pipeline Name*: $BUILD_PIPELINE_NAME |
||||||
|
*Job*: Deploy to internal |
||||||
|
*URL*: http://pipeline.smartenergi.io:8080/builds/$BUILD_ID |
||||||
|
- name: "Deploy to demo" |
||||||
|
public: true |
||||||
|
plan: |
||||||
|
- get: docker-repository |
||||||
|
trigger: false |
||||||
|
passed: |
||||||
|
- "Deploy to internal" |
||||||
|
- get: version |
||||||
|
- put: kubernetes_demo |
||||||
|
params: |
||||||
|
image_name: docker-repository/repository |
||||||
|
image_tag: version/number |
||||||
|
- put: notify |
||||||
|
params: |
||||||
|
text: | |
||||||
|
*Result*: Success! |
||||||
|
*Build Pipeline Name*: $BUILD_PIPELINE_NAME |
||||||
|
*Job*: Deployment to Demo |
||||||
|
*URL*: http://pipeline.smartenergi.io:8080/builds/$BUILD_ID |
||||||
|
on_failure: |
||||||
|
put: notify |
||||||
|
params: |
||||||
|
text: | |
||||||
|
*Result*: Failure! |
||||||
|
*Build Pipeline Name*: $BUILD_PIPELINE_NAME |
||||||
|
*Job*: Deploy to demo |
||||||
|
*URL*: http://pipeline.smartenergi.io:8080/builds/$BUILD_ID |
@ -0,0 +1,29 @@ |
|||||||
|
import requests |
||||||
|
import os |
||||||
|
import logging |
||||||
|
from redis import Redis |
||||||
|
|
||||||
|
logging.basicConfig() |
||||||
|
logging.getLogger().setLevel(logging.INFO) |
||||||
|
log = logging.getLogger(__name__) |
||||||
|
REDIS_HOST = os.environ['REDIS_HOST'] |
||||||
|
REDIS_PORT = os.environ['REDIS_PORT'] |
||||||
|
REDIS_EVENT_LOG_STREAM = os.environ['REDIS_EVENT_LOG_STREAM'] |
||||||
|
REDIS_MREADINGS_NOT_VALIDATED_STREAM = os.environ['REDIS_MREADINGS_NOT_VALIDATED_STREAM'] |
||||||
|
REDIS_MREADINGS_VALIDATED_STREAM = os.environ['REDIS_MREADINGS_VALIDATED_STREAM'] |
||||||
|
REDIS_PASSWORD = os.getenv('REDIS_PASSWORD') |
||||||
|
REDIS_TRIM = os.getenv('REDIS_TRIM') |
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__': |
||||||
|
try: |
||||||
|
redis = Redis(host=REDIS_HOST, port=REDIS_PORT, password=REDIS_PASSWORD) |
||||||
|
deleted_entries = redis.xtrim(REDIS_EVENT_LOG_STREAM,REDIS_TRIM) |
||||||
|
log.info(f'Removed {deleted_entries} old entries from {REDIS_EVENT_LOG_STREAM}') |
||||||
|
deleted_entries = redis.xtrim(REDIS_MREADINGS_VALIDATED_STREAM,REDIS_TRIM) |
||||||
|
log.info(f'Removed {deleted_entries} old entries {REDIS_MREADINGS_VALIDATED_STREAM}') |
||||||
|
deleted_entries = redis.xtrim(REDIS_MREADINGS_NOT_VALIDATED_STREAM,REDIS_TRIM) |
||||||
|
log.info(f'Removed {deleted_entries} old entries from {REDIS_MREADINGS_NOT_VALIDATED_STREAM}') |
||||||
|
|
||||||
|
except Exception as e: |
||||||
|
log.error(e) |
Loading…
Reference in new issue