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=["NA", "R", "A"], required=True, help='Status flag for MDC request: NA - not available, R - running, A - available.') # noqa parser.add_argument('--rid', type=int, help='Run id from MDC') parser.add_argument('--msg', type=str, help='Message string to MDC', default='Error while job submission') args = vars(parser.parse_args()) conf_file = args['conf_file'] rid = args['rid'] flg = args['flg'] msg = args['msg'] if conf_file is not None: config.configure(includes_for_dynaconf=[Path(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 run {rid} to status {flg} at {mdconf['base-api-url']}") response = client_conn.update_run_api(rid, {'flg_cal_data_status': flg, 'cal_pipeline_reply': msg}) if response.status_code == 200: print('Run is updated') else: print(f'Update failed {response}')