From 3a4a0758c8a4d2c1017e832515de6324b1d33003 Mon Sep 17 00:00:00 2001 From: marcsello Date: Sun, 12 Dec 2021 00:42:00 +0100 Subject: [PATCH] Initial commit --- .gitignore | 106 +++++++++++++++++++++++++++++++++++++++ birb_scheduler/config.py | 34 +++++++++++++ birb_scheduler/main.py | 45 +++++++++++++++++ requirements.txt | 5 ++ 4 files changed, 190 insertions(+) create mode 100644 .gitignore create mode 100644 birb_scheduler/config.py create mode 100644 birb_scheduler/main.py create mode 100644 requirements.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4c915d1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,106 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# pyenv +.python-version + +# celery beat schedule file +celerybeat-schedule + +# SageMath parsed files +*.sage.py + +# dotenv +.env + +# virtualenv +.venv +venv/ +ENV/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ + +# IDE settings +.vscode/ +.idea/ diff --git a/birb_scheduler/config.py b/birb_scheduler/config.py new file mode 100644 index 0000000..4b4088d --- /dev/null +++ b/birb_scheduler/config.py @@ -0,0 +1,34 @@ +import os +import sys +from dataclasses import dataclass +from typing import List + + +@dataclass +class SiteDescription: + name: str + baseurl: str + + +def parse_site_list(raw_site_list: str) -> List[SiteDescription]: + parsed_sites = [] + for pair in raw_site_list.split(' '): + name, baseurl = pair.split(';', 1) + parsed_sites.append( + SiteDescription( + name=name, + baseurl=baseurl + ) + ) + return parsed_sites + + +class Config: + INTERVAL = int(os.environ.get("INTERVAL", 30)) + SITE_LIST = parse_site_list(os.environ.get("SITES")) + + SENTRY_DSN = os.environ.get("SENTRY_DSN") + + RELEASE_ID = os.environ.get("RELEASE_ID", "test") + RELEASEMODE = os.environ.get("RELEASEMODE", "dev") + DEBUG = ('--debug' in sys.argv) or bool(os.environ.get("DEBUG", "").upper() in ['YES', 'TRUE', '1']) diff --git a/birb_scheduler/main.py b/birb_scheduler/main.py new file mode 100644 index 0000000..119c0bf --- /dev/null +++ b/birb_scheduler/main.py @@ -0,0 +1,45 @@ +#!/usr/bin/env pyton3 +import logging +import sys + +import sentry_sdk +from sentry_sdk.integrations.logging import LoggingIntegration + +from config import Config +from apscheduler.schedulers.blocking import BlockingScheduler + + +def run(): + logging.info("Csirip") + + +def main(): + sentry_logging = LoggingIntegration( + level=logging.INFO, + event_level=logging.ERROR + ) + + if Config.SENTRY_DSN: + sentry_sdk.init( + dsn=Config.SENTRY_DSN, + integrations=[sentry_logging], + traces_sample_rate=0.0, + send_default_pii=True, + release=Config.RELEASE_ID, + environment=Config.RELEASEMODE, + _experiments={"auto_enabling_integrations": True} + ) + + logging.basicConfig( + stream=sys.stdout, + format="%(asctime)s - %(name)s [%(levelname)s]: %(message)s", + level=logging.DEBUG if Config.DEBUG else logging.INFO + ) + + scheduler = BlockingScheduler() + scheduler.add_job(run, trigger='interval', seconds=Config.INTERVAL) + scheduler.start() + + +if __name__ == '__main__': + main() diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..3f1933e --- /dev/null +++ b/requirements.txt @@ -0,0 +1,5 @@ +requests~=2.26.0 +redis~=4.0.2 +apscheduler~=3.8.1 +kubernetes~=20.13.0 +sentry_sdk~=1.5.0