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 os
|
||||||
import re
|
import re
|
||||||
import requests
|
import requests
|
||||||
import sys
|
|
||||||
|
|
||||||
from dataclasses import dataclass
|
|
||||||
from enum import auto
|
|
||||||
from http.server import HTTPServer, BaseHTTPRequestHandler
|
from http.server import HTTPServer, BaseHTTPRequestHandler
|
||||||
from strenum import StrEnum
|
|
||||||
from typing import Iterable
|
from typing import Iterable
|
||||||
|
|
||||||
|
|
||||||
from prometheus_client import start_http_server, Enum as PromEnum
|
from prometheus_client import start_http_server, Enum as PromEnum
|
||||||
from prometheus_client.metrics_core import METRIC_NAME_RE
|
from prometheus_client.metrics_core import METRIC_NAME_RE
|
||||||
|
|
||||||
import logging
|
from model import Repo, BuildStatus
|
||||||
logger = logging.getLogger(__name__)
|
|
||||||
logger.setLevel(logging.INFO)
|
|
||||||
# TODO - extract logging configuration somewhere
|
from logging_setup import create_logger
|
||||||
handler = logging.StreamHandler(sys.stdout)
|
logger = create_logger(__name__)
|
||||||
handler.setLevel(logging.INFO)
|
|
||||||
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
|
|
||||||
handler.setFormatter(formatter)
|
|
||||||
logger.addHandler(handler)
|
|
||||||
|
|
||||||
|
|
||||||
global build_statuses
|
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]:
|
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}'})
|
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?
|
# 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
|
global build_statuses
|
||||||
access_token = os.environ['ACCESS_TOKEN']
|
access_token = os.environ['ACCESS_TOKEN']
|
||||||
drone_domain = os.environ['DRONE_DOMAIN']
|
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)
|
repo_list = get_repos(access_token, drone_domain)
|
||||||
build_statuses = {}
|
build_statuses = {}
|
||||||
|
logger.info(f'{repo_list=}')
|
||||||
for repo in repo_list:
|
for repo in repo_list:
|
||||||
repo.build_status_tracker =\
|
repo.build_status_tracker =\
|
||||||
make_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