diff --git a/webservice/update_mdc_darks.py b/webservice/update_mdc_darks.py new file mode 100644 index 0000000000000000000000000000000000000000..df03f8727510b81ff195e0e52210d58b8e0f1019 --- /dev/null +++ b/webservice/update_mdc_darks.py @@ -0,0 +1,46 @@ +import argparse +from pathlib import Path + +from metadata_client.metadata_client import MetadataClient + +from .config import webservice as config + +parser = argparse.ArgumentParser( + description='Update run status at MDC for a given run id.') +# TODO: unify configuration argument names across the project +parser.add_argument('--conf-file', type=str, help='Path to webservice config', + default=None) +parser.add_argument('--flg', type=str, choices=["IP", "F", "E"], required=True, + help='Status flag for MDC: In Progress/Finished/Error.') # noqa +parser.add_argument('id', type=int, help='Dark run id from MDC') +parser.add_argument('--msg', type=str, help='Message string to MDC', + default='Error while job submission') +parser.add_argument('--really', action='store_true', + help="Actually make changes (otherwise dry-run)") +args = parser.parse_args() + +if args.conf_file is not None: + config.configure(includes_for_dynaconf=[Path(args.conf_file).absolute()]) + +mdconf = config['metadata-client'] +client_conn = MetadataClient(client_id=mdconf['user-id'], + client_secret=mdconf['user-secret'], + user_email=mdconf['user-email'], + token_url=mdconf['token-url'], + refresh_url=mdconf['refresh-url'], + auth_url=mdconf['auth-url'], + scope=mdconf['scope'], + base_api_url=mdconf['base-api-url']) + +print(f"Updating dark run {args.id} to status {args.flg} at {mdconf['base-api-url']}") +if args.really: + response = client_conn.update_dark_run_api(args.id, { + 'dark_run': {'flg_status': args.flg, 'calcat_feedback': args.msg} + }) + + if response.status_code == 200: + print('Run is updated') + else: + print(f'Update failed {response}') +else: + print("Add --really to actually make these changes")