diff --git a/src/main/app.py b/src/main/app.py index 01d8c28..4b4ae8e 100644 --- a/src/main/app.py +++ b/src/main/app.py @@ -4,47 +4,25 @@ import json import os import re import requests -import sys -from dataclasses import dataclass -from enum import auto + from http.server import HTTPServer, BaseHTTPRequestHandler -from strenum import StrEnum from typing import Iterable from prometheus_client import start_http_server, Enum as PromEnum from prometheus_client.metrics_core import METRIC_NAME_RE -import logging -logger = logging.getLogger(__name__) -logger.setLevel(logging.INFO) -# TODO - extract logging configuration somewhere -handler = logging.StreamHandler(sys.stdout) -handler.setLevel(logging.INFO) -formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') -handler.setFormatter(formatter) -logger.addHandler(handler) +from model import Repo, BuildStatus + + +from logging_setup import create_logger +logger = create_logger(__name__) global build_statuses -class BuildStatus(StrEnum): - running = auto() - success = auto() - failure = auto() - unknown = auto() - - -@dataclass -class Repo: - id: int - name: str - owner: str - build_status_tracker: PromEnum = None - - def get_repos(access_token: str, drone_domain: str) -> Iterable[Repo]: repo_response = requests.get(f'{drone_domain}/api/user/repos', headers={'Authorization': f'Bearer {access_token}'}) # TODO - must be possible to get status of a private repo if you are the owner, surely? @@ -140,8 +118,11 @@ def create_promEnums(): global build_statuses access_token = os.environ['ACCESS_TOKEN'] drone_domain = os.environ['DRONE_DOMAIN'] + logger.debug(f'Access Token starts with {access_token[:4]}') + logger.debug(f'{drone_domain=}') repo_list = get_repos(access_token, drone_domain) build_statuses = {} + logger.info(f'{repo_list=}') for repo in repo_list: repo.build_status_tracker =\ make_build_status_tracker( diff --git a/src/main/logging_setup.py b/src/main/logging_setup.py new file mode 100644 index 0000000..4e65940 --- /dev/null +++ b/src/main/logging_setup.py @@ -0,0 +1,16 @@ +import os +import logging +import sys + + +def create_logger(name_for_logger: str) -> logging.Logger: + logger = logging.getLogger(name_for_logger) + log_level = os.environ.get('LOG_LEVEL', 'INFO').upper() + logger.setLevel(log_level) + # TODO - extract logging configuration somewhere + handler = logging.StreamHandler(sys.stdout) + handler.setLevel(log_level) + formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') + handler.setFormatter(formatter) + logger.addHandler(handler) + return logger diff --git a/src/main/model.py b/src/main/model.py new file mode 100644 index 0000000..101ba49 --- /dev/null +++ b/src/main/model.py @@ -0,0 +1,21 @@ +from dataclasses import dataclass +from enum import auto + +from strenum import StrEnum + +from prometheus_client import Enum + + +class BuildStatus(StrEnum): + running = auto() + success = auto() + failure = auto() + unknown = auto() + + +@dataclass +class Repo: + id: int + name: str + owner: str + build_status_tracker: Enum = None \ No newline at end of file