DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
ctbcontrollerconf_gen.py
Go to the documentation of this file.
1#!/usr/bin/env python3
2
3import json
4import os
5import math
6import sys
7import glob
8import rich.traceback
9from rich.console import Console
10from os.path import exists, join
11from daqconf.core.system import System
12from daqconf.core.conf_utils import make_app_command_data
13from daqconf.core.metadata import write_metadata_file
14from daqconf.core.config_file import generate_cli_from_schema
15
16# Add -h as default help option
17CONTEXT_SETTINGS = dict(help_option_names=['-h', '--help'])
18
19console = Console()
20
21# Set moo schema search path
22from dunedaq.env import get_moo_model_path
23import moo.io
24moo.io.default_load_path = get_moo_model_path()
25
26import click
27
28@click.command(context_settings=CONTEXT_SETTINGS)
29@generate_cli_from_schema('ctbmodules/confgen.jsonnet', 'ctbmodules_gen')
30@click.argument('json_dir', type=click.Path())
31
32def cli(config, json_dir):
33
34 if exists(json_dir):
35 raise RuntimeError(f"Directory {json_dir} already exists")
36
37 config_data = config[0]
38 config_file = config[1]
39
40 console.log('Loading cardcontrollerapp config generator')
41 from ctbmodules.boardcontrollerapp import boardcontrollerapp_gen
42
43 the_system = System()
44
45 moo.otypes.load_types('ctbmodules/confgen.jsonnet')
46 import dunedaq.ctbmodules.confgen as confgen
47 moo.otypes.load_types('daqconf/confgen.jsonnet')
48 import dunedaq.daqconf.confgen as daqconf
49
50 nickname = 'ctb'
51 console.log('generating cardcontrollerapp')
52
53 boot = daqconf.boot(**config_data.boot)
54
55 app = boardcontrollerapp_gen.get_boardcontroller_app(
56 nickname = nickname,
57 )
58 console.log('generated cardcontrollerapp')
59 the_system.apps[nickname] = app
60 if boot.use_k8s:
61 the_system.apps[nickname].resources = {
62 #"felix.cern/flx0-ctrl": "1", # requesting FLX0 - modify for CTB
63 }
64
65
68
69 from daqconf.core.conf_utils import make_app_command_data
70 # Arrange per-app command data into the format used by util.write_json_files()
71 app_command_datas = {
72 name : make_app_command_data(the_system, app, name)
73 for name,app in the_system.apps.items()
74 }
75
76 # Make boot.json config
77 from daqconf.core.conf_utils import make_system_command_datas, write_json_files
78 system_command_datas = make_system_command_datas(
79 boot,
80 the_system,
81 )
82
83 write_json_files(app_command_datas, system_command_datas, json_dir)
84
85 console.log(f"CTB controller apps config generated in {json_dir}")
86
87 write_metadata_file(json_dir, "ctbcontrollers_gen",config_file)
88
89if __name__ == '__main__':
90 try:
91 cli(show_default=True, standalone_mode=True)
92 except Exception as e:
93 console.print_exception()