DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
assets Namespace Reference

Functions

 resolve_asset_file (data_file, verbose=False)
 

Function Documentation

◆ resolve_asset_file()

assets.resolve_asset_file ( data_file,
verbose = False )

Definition at line 8 of file assets.py.

8def resolve_asset_file(data_file, verbose = False):
9 from urllib.parse import urlparse, parse_qsl
10 data_file_url = urlparse(data_file)
11
12 if verbose:
13 print(f"Checking asset URI {data_file_url}")
14
15 if data_file_url.scheme == 'asset':
16 asset_query = dict(parse_qsl(data_file_url.query))
17 asset_db = Database('/cvmfs/dunedaq.opensciencegrid.org/assets/dunedaq-asset-db.sqlite')
18 asset_query['status'] = 'valid'
19
20 try:
21 files = asset_db.get_files(asset_query)
22 if not files:
23 raise RuntimeError(f"Couldn\'t find a valid asset for the query {data_file_url.query}")
24
25 elif len(files)>1:
26 print(f"Found {len(files)} assets in {dirname(asset_db.database_file)}, taking the first one")
27
28 if verbose:
29 print(f"Found asset in {dirname(asset_db.database_file)}")
30
31 root_dir = dirname(asset_db.database_file)
32 return f'{root_dir}/{files[0]["path"]}/{files[0]["name"]}'
33
34 except OperationalError:
35 raise RuntimeError(f"Couldn\'t find the asset {data_file}")
36
37
38 elif data_file_url.scheme == 'file':
39 filename = abspath(data_file_url.netloc+data_file_url.path)
40
41 if not exists(filename):
42 raise RuntimeError(f'Cannot find the frames.bin file {filename}')
43
44 if verbose:
45 print(f"Found asset in {dirname(filename)}")
46
47 return filename
48
49 resolved_data_file = abspath(expandvars(data_file))
50 if resolved_data_file != '' and not exists(resolved_data_file):
51 raise RuntimeError(f'Cannot find the frames.bin file {data_file}')
52
53 if verbose:
54 print(f"Found asset in {dirname(resolved_data_file)}")
55
56 return resolved_data_file