Minor refactoring, and env variable for log-level

This commit is contained in:
Jack Jackson 2022-12-30 11:00:47 -08:00
parent f17e72f491
commit 52dad2e3c7
3 changed files with 46 additions and 28 deletions

View File

@ -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(

16
src/main/logging_setup.py Normal file
View File

@ -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

21
src/main/model.py Normal file
View File

@ -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