From 0af4b9b471c84dd2976b8dbe5202a4201143b047 Mon Sep 17 00:00:00 2001 From: Robert Rosca <robert.rosca@xfel.eu> Date: Fri, 14 May 2021 14:12:26 +0200 Subject: [PATCH] main function takes in `argv` as an optional argument and uses `sys.argv` if it is missing. This allows for easier testing. --- webservice/webservice.py | 51 +++++++++++++++++++++++++--------------- 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/webservice/webservice.py b/webservice/webservice.py index 494608fd7..aab1466de 100644 --- a/webservice/webservice.py +++ b/webservice/webservice.py @@ -8,7 +8,9 @@ import inspect import json import logging import os +import shutil import sqlite3 +import sys import time import urllib.parse from asyncio import get_event_loop, shield @@ -22,9 +24,9 @@ import yaml import zmq import zmq.asyncio import zmq.auth.thread +from git import InvalidGitRepositoryError, Repo from kafka import KafkaProducer from kafka.errors import KafkaError -from git import InvalidGitRepositoryError, Repo from metadata_client.metadata_client import MetadataClient try: @@ -1199,25 +1201,36 @@ class ActionsServer: # return string without a tailing comma. return ", ".join(ret), report -parser = argparse.ArgumentParser( - description='Start the calibration webservice') -parser.add_argument('--config-file', type=str, default='./webservice.yaml') -parser.add_argument('--log-file', type=str, default='./web.log') -parser.add_argument('--mode', type=str, default="sim", choices=['sim', 'prod']) -parser.add_argument('--logging', type=str, default="INFO", - choices=['INFO', 'DEBUG', 'ERROR']) - -def main(): - args = vars(parser.parse_args()) - conf_file = args["config_file"] - with open(conf_file, "r") as f: - config = yaml.load(f.read(), Loader=yaml.FullLoader) - mode = args["mode"] - logfile = args["log_file"] + +def main(argv: Optional[List[str]] = None): + if argv is None: + argv = sys.argv[1:] + + parser = argparse.ArgumentParser( + description='Start the calibration webservice' + ) + parser.add_argument('--config-file', type=str, default='./webservice.yaml') + parser.add_argument('--mode', type=str, default="sim", choices=['sim', 'prod']) + parser.add_argument('--log-file', type=str, default='./web.log') + parser.add_argument( + '--log-level', type=str, default="INFO", choices=['INFO', 'DEBUG', 'ERROR'] + ) + + args = parser.parse_args(argv) + config_file = args.config_file + log_file = args.log_file + log_level = args.log_level + mode = args.mode + + with open(config_file, "r") as f: + config = yaml.safe_load(f.read()) + fmt = '%(asctime)s - %(name)s - %(levelname)s - %(message)s' - logging.basicConfig(filename=logfile, - level=getattr(logging, args['logging']), - format=fmt) + logging.basicConfig( + filename=log_file, + level=getattr(logging, log_level), + format=fmt + ) # Update job statuses from Slurm in a separate thread slurm_monitor_thread = Thread( -- GitLab