Minor refactoring, and env variable for log-level
This commit is contained in:
parent
f17e72f491
commit
52dad2e3c7
@ -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
16
src/main/logging_setup.py
Normal 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
21
src/main/model.py
Normal 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
|
Loading…
x
Reference in New Issue
Block a user