Skip to content
Snippets Groups Projects
Commit 7498657e authored by Mikhail Karnevskiy's avatar Mikhail Karnevskiy
Browse files

Get run starting date from the MDC

parent 4dc10dd3
No related branches found
No related tags found
1 merge request!157Feat: Get run starting date from the MDC
class MDC_config:
mdconf = {}
mdconf['user-id'] = ''
mdconf['user-secret'] = ''
mdconf['user-email'] = 'calibration@example.com'
mdconf['token-url'] = 'https://in.xfel.eu/metadata/oauth/token'
mdconf['refresh-url'] = 'https://in.xfel.eu/metadata/oauth/token'
mdconf['auth-url'] = 'https://in.xfel.eu/metadata/oauth/authorize'
mdconf['scope'] = ''
mdconf['base-api-url'] = 'https://in.xfel.eu/metadata/api/'
...@@ -13,14 +13,16 @@ from textwrap import dedent ...@@ -13,14 +13,16 @@ from textwrap import dedent
from time import sleep from time import sleep
from urllib.parse import urljoin from urllib.parse import urljoin
import dateutil.parser
import ipykernel import ipykernel
from metadata_client.metadata_client import MetadataClient
from notebook.notebookapp import list_running_servers from notebook.notebookapp import list_running_servers
import numpy as np import numpy as np
import requests import requests
import tabulate import tabulate
from jinja2 import Template from jinja2 import Template
from .mdc_config import MDC_config
from xfel_calibrate import settings from xfel_calibrate import settings
...@@ -425,15 +427,55 @@ def get_notebook_name(): ...@@ -425,15 +427,55 @@ def get_notebook_name():
return environ.get("CAL_NOTEBOOK_NAME", "Unknown Notebook") return environ.get("CAL_NOTEBOOK_NAME", "Unknown Notebook")
def get_dir_creation_date(directory, run, tsdir=False): def get_run_info(proposal, run):
"""
Return information about run from the MDC
:param proposal: proposal number
:param run: run number
:return: dictionary with run information
"""
mdconf = MDC_config.mdconf
mdc = 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'])
runs = mdc.get_proposal_runs(mdc, proposal_number=proposal,
run_number=run)
run_id = runs['data']['runs'][0]['id']
resp = mdc.get_run_by_id_api(run_id)
return resp.json()
def get_dir_creation_date(directory, run, tsdir=False, verbosity=0):
""" """
Return modification time of oldest file.h5 in [directory]/[run]04 Return run starting time from the MDC.
If not succeeded, return modification time of oldest file.h5
in [directory]/[run]04.
:param directory: path to directory which contains runs :param directory: path to directory which contains runs
:param run: run number :param run: run number
:param tsdir: to get modification time of [directory]/[run]04. :param tsdir: to get modification time of [directory]/[run]04.
:param verbosity: Level of verbosity (0 - silent)
:return: (datetime) modification time :return: (datetime) modification time
""" """
try:
path_list = list(filter(None, directory.strip('/').split('/')))
proposal = int(path_list[-2][1:])
run_info = get_run_info(proposal, run)
return dateutil.parser.parse(run_info['begin_at'])
except Exception as e:
if verbosity > 0:
print(e)
ntries = 100 ntries = 100
while ntries > 0: while ntries > 0:
try: try:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment