2from os.path
import exists,abspath,dirname,expandvars
9 from urllib.parse
import urlparse, parse_qsl
10 data_file_url = urlparse(data_file)
13 print(f
"Checking asset URI {data_file_url}")
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'
21 files = asset_db.get_files(asset_query)
23 raise RuntimeError(f
"Couldn\'t find a valid asset for the query {data_file_url.query}")
26 print(f
"Found {len(files)} assets in {dirname(asset_db.database_file)}, taking the first one")
29 print(f
"Found asset in {dirname(asset_db.database_file)}")
31 root_dir = dirname(asset_db.database_file)
32 return f
'{root_dir}/{files[0]["path"]}/{files[0]["name"]}'
34 except OperationalError:
35 raise RuntimeError(f
"Couldn\'t find the asset {data_file}")
38 elif data_file_url.scheme ==
'file':
39 filename = abspath(data_file_url.netloc+data_file_url.path)
41 if not exists(filename):
42 raise RuntimeError(f
'Cannot find the frames.bin file {filename}')
45 print(f
"Found asset in {dirname(filename)}")
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}')
54 print(f
"Found asset in {dirname(resolved_data_file)}")
56 return resolved_data_file