name: !public readout-dataflow description: !public "Main workflow template for ALICE data taking" defaults: ############################### # General Configuration Panel ############################### dcs_enabled: !public value: "false" type: bool label: "DCS" description: "Enable/disable DCS SOR/EOR commands" widget: checkBox panel: General_Configuration index: 0 dd_enabled: !public value: "true" type: bool label: "Data Distribution (FLP)" description: "Enable/disable Data Distribution components running on FLPs (StfBuilder and StfSender)" widget: checkBox panel: General_Configuration index: 1 epn_enabled: !public # TODO: this should be the single var that enables both ODC and DD Scheduler value: "false" type: bool label: "EPN" description: "Enable/disable EPN" widget: checkBox panel: General_Configuration index: 2 qc_remote_enabled: !public # TODO: if false, all per-detector remote QC workflows vars should be disabled value: "false" type: bool label: "QC node workflows" description: "Enable/disable running workflows on the QC nodes" widget: checkBox panel: "General_Configuration" index: 3 trg_enabled: !public value: "false" type: bool label: "TRG" description: "Enable/disable TRG" widget: checkBox panel: General_Configuration index: 4 trg_global_run_enabled: !public value: "false" type: bool label: "TRG Global Run" description: "If enabled, send commands to CTP. If disabled, send commands to LTU." widget: checkBox panel: General_Configuration visibleif: $$trg_enabled === "true" index: 5 run_type: !public # enum from AliECS common/runtype value: "PHYSICS" type: string label: "Run Type" description: "Run type" widget: comboBox panel: General_Configuration values: - NONE - CALIBRATION_ITHR_TUNING - CALIBRATION_VCASN_TUNING - CALIBRATION_THR_SCAN - CALIBRATION_DIGITAL_SCAN - CALIBRATION_ANALOG_SCAN - CALIBRATION_FHR - CALIBRATION_ALPIDE_SCAN - CALIBRATION_PULSE_LENGTH - CALIBRATION_VRESETD - COSMICS - LASER - NOISE - PEDESTAL - PHYSICS - PULSER - TECHNICAL - SYNTHETIC index: 6 ctp_readout_enabled: !public value: "false" type: bool label: "CTP Readout" description: "Enable/disable CTP readout" widget: checkBox panel: General_Configuration index: 7 stop_at_beam_dump: !public value: "false" type: bool label: "Stop at beam dump" description: "Enable/disable automatic run stop when beams are dumped" widget: checkBox panel: General_Configuration index: 8 ############################### # DCS and FLP Workflows Panel ############################### ctp_dpl_workflow: !public value: "none" type: string label: "CTP FLP workflow" description: "Workflow to execute on the FLPs of this detector" widget: dropDownBox panel: "FLPs_Workflows" values: - none - ctp-reco - ctp-reco-3dec - ctp-reco-6dec - ctp-reco-12dec - ctp-reco-16dec - ctp-reco-HI-ZNC-TCE - ctp-reco-3dec-HI-ZNC-TCE - ctp-reco-6dec-HI-ZNC-TCE - ctp-reco-12dec-HI-ZNC-TCE - ctp-reco-16dec-HI-ZNC-TCE - ctp-reco-qc - ctp-reco-3dec-qc - ctp-reco-6dec-qc - ctp-reco-12dec-qc - ctp-reco-16dec-qc - ctp-reco-HI-ZNC-TCE-qc - ctp-reco-3dec-HI-ZNC-TCE-qc - ctp-reco-6dec-HI-ZNC-TCE-qc - ctp-reco-12dec-HI-ZNC-TCE-qc - ctp-reco-16dec-HI-ZNC-TCE-qc - minimal-dpl - ctp-raw-qc ctp_qc_remote_workflow: !public value: "none" type: string label: "CTP QC node workflow" description: "Workflow to execute on QC servers for this detector" widget: dropDownBox panel: "QC_Nodes_Workflows" values: - none - ctp-qcmn-remote visibleif: $$qc_remote_enabled === "true" emc_dpl_workflow: !public value: "none" type: string label: "EMCAL FLP workflow" description: "Workflow to execute on the FLPs of this detector" widget: dropDownBox panel: "FLPs_Workflows" values: - none - minimal-dpl - qc-daq - qcmn-daq-local - emc-qcmn-flp-local emc_qc_remote_workflow: !public value: "none" type: string label: "EMCAL QC node workflow" description: "Workflow to execute on QC servers for this detector" widget: dropDownBox panel: "QC_Nodes_Workflows" values: - none - emc-pedestal-calib-qc - emc-qcmn-flp-remote - emc-qcmn-epn-remote - emc-qcmn-epnall-remote - emc-qcmn-epnall-withCTP-remote - emc-qcmn-epnall-PbPb-remote - emc-qcmn-epnall-withCTP-PbPb-remote - emc-qcmn-flpepn-remote - qcmn-daq-remote visibleif: $$qc_remote_enabled === "true" emc_dcs_sor_parameters: !public value: "{}" type: string label: "EMCAL SOR parameters" description: "additional parameters for the DCS SOR" widget: editBox panel: DCS visibleif: $$dcs_enabled === "true" emc_dcs_eor_parameters: !public value: "{}" type: string label: "EMCAL EOR parameters" description: "additional parameters for the DCS EOR" widget: editBox panel: DCS visibleif: $$dcs_enabled === "true" fdd_dpl_workflow: !public value: "none" type: string label: "FDD FLP workflow" description: "Workflow to execute on the FLPs of this detector" widget: dropDownBox panel: "FLPs_Workflows" values: - none - fdd-digits-pipe - fdd-digits-pipe-qc-raw - fdd-digits-pipe-ds-qc - fdd-digits-pipe-ds-qc-raw - fdd-digits-qc - fdd-ds-digits-pipe-qc-raw - minimal-dpl - qc-daq - qcmn-daq-local fdd_qc_remote_workflow: !public value: "none" type: string label: "FDD QC node workflow" description: "Workflow to execute on QC servers for this detector" widget: dropDownBox panel: "QC_Nodes_Workflows" values: - none - fdd-digits-qcmn-epn-remote - fdd-qc-post-processing-remote - fdd-qcmn-epn-post-processing-remote - fdd-qcmn-remote - qcmn-daq-remote visibleif: $$qc_remote_enabled === "true" fdd_dcs_sor_parameters: !public value: "{}" type: string label: "FDD SOR parameters" description: "additional parameters for the DCS SOR" widget: editBox panel: DCS visibleif: $$dcs_enabled === "true" fdd_dcs_eor_parameters: !public value: "{}" type: string label: "FDD EOR parameters" description: "additional parameters for the DCS EOR" widget: editBox panel: DCS visibleif: $$dcs_enabled === "true" foc_dpl_workflow: value: "none" type: string label: "FOC FLP workflow" description: "Workflow to execute on the FLPs of this detector" widget: dropDownBox panel: "FLPs_Workflows" values: - none - minimal-dpl - qc-daq - foc-pad-pedestal-calib - foc-reconstructor - foc-reconstructor-qc - foc-qc ft0_dpl_workflow: !public value: "none" type: string label: "FT0 FLP workflow" description: "Workflow to execute on the FLPs of this detector" widget: dropDownBox panel: "FLPs_Workflows" values: - none - ft0-digits-pipe - ft0-digits-pipe-ds-qc - ft0-digits-pipe-qc-raw - ft0-digits-pipe-ds-qc-raw - ft0-decoder-pipe - ft0-decoder-pipe-ds-qc - ft0-decoder-pipe-ds-qc-raw - ft0-digits-qc - ft0-ds-digits-pipe-qc-raw - minimal-dpl - qc-daq - qcmn-daq-local ft0_qc_remote_workflow: !public value: "none" type: string label: "FT0 QC node workflow" description: "Workflow to execute on QC servers for this detector" widget: dropDownBox panel: "QC_Nodes_Workflows" values: - none - ft0-digits-qcmn-epn-remote - ft0-aging-qcmn-epn-remote - ft0-qc-post-processing-remote - ft0-qcmn-epn-post-processing-remote - ft0-qcmn-remote - qcmn-daq-remote visibleif: $$qc_remote_enabled === "true" ft0_dcs_sor_parameters: !public value: "{}" type: string label: "FT0 SOR parameters" description: "additional parameters for the DCS SOR" widget: editBox panel: DCS visibleif: $$dcs_enabled === "true" ft0_dcs_eor_parameters: !public value: "{}" type: string label: "FT0 EOR parameters" description: "additional parameters for the DCS EOR" widget: editBox panel: DCS visibleif: $$dcs_enabled === "true" fv0_dpl_workflow: !public value: "none" type: string label: "FV0 FLP workflow" description: "Workflow to execute on the FLPs of this detector" widget: dropDownBox panel: "FLPs_Workflows" values: - none - fv0-digits-pipe - fv0-digits-pipe-qc-raw - fv0-digits-pipe-ds-qc - fv0-digits-pipe-ds-qc-raw - fv0-digits-qc - fv0-ds-digits-pipe-qc-raw - minimal-dpl - qc-daq - qcmn-daq-local fv0_qc_remote_workflow: !public value: "none" type: string label: "FV0 QC node workflow" description: "Workflow to execute on QC servers for this detector" widget: dropDownBox panel: "QC_Nodes_Workflows" values: - none - fv0-digits-qcmn-epn-remote - fv0-qc-post-processing-remote - fv0-qcmn-epn-post-processing-remote - fv0-qcmn-remote - qcmn-daq-remote visibleif: $$qc_remote_enabled === "true" fv0_dcs_sor_parameters: !public value: "{}" type: string label: "FV0 SOR parameters" description: "additional parameters for the DCS SOR" widget: editBox panel: DCS visibleif: $$dcs_enabled === "true" fv0_dcs_eor_parameters: !public value: "{}" type: string label: "FV0 EOR parameters" description: "additional parameters for the DCS EOR" widget: editBox panel: DCS visibleif: $$dcs_enabled === "true" its_dpl_workflow: !public value: "none" type: string label: "ITS FLP workflow" description: "Workflow to execute on the FLPs of this detector" widget: dropDownBox panel: "FLPs_Workflows" values: - none - its-qc-fhr-fee - its-qc-fhr-fee-no-ds - its-qcmn-fhr-fee-local - its-qcmn-fhr-fee-no-ds-local - its-qcmn-fhr-fee-no-ds-entire-local - its-qcmn-fee-no-ds-local - minimal-dpl - qc-daq - qcmn-daq-local its_qc_remote_workflow: !public value: "none" type: string label: "ITS QC node workflow" description: "Workflow to execute on QC servers for this detector" widget: dropDownBox panel: "QC_Nodes_Workflows" values: - none - its-qcmn-fhr-fee-remote - its-qcmn-fhr-fee-no-ds-remote - its-qcmn-fhr-fee-no-ds-entire-remote - its-qcmn-fee-no-ds-remote - its-qcmn-cluster-track-remote - its-qcmn-flp-epn-remote - its-qcmn-fee-epn-remote - its-qcmn-flp-epn-no-ds-remote - its-qcmn-epn-remote - its-qcmn-flp-epn-no-ds-nocluster-remote - its-qcmn-full-remote - its-qcmn-epn-calibration-remote - qcmn-daq-remote visibleif: $$qc_remote_enabled === "true" its_dcs_sor_parameters: !public value: "{}" type: string label: "ITS SOR parameters" description: "additional parameters for the DCS SOR" widget: editBox panel: DCS visibleif: $$dcs_enabled === "true" its_dcs_eor_parameters: !public value: "{}" type: string label: "ITS EOR parameters" description: "additional parameters for the DCS EOR" widget: editBox panel: DCS visibleif: $$dcs_enabled === "true" hmp_dpl_workflow: !public value: "none" type: string label: "HMPID FLP workflow" description: "Workflow to execute on the FLPs of this detector" widget: dropDownBox panel: "FLPs_Workflows" values: - none - hmpid-raw-qc - hmpid-raw-qcmn-local - minimal-dpl - qc-daq - qcmn-daq-local - hmpid-raw-to-pedestals hmp_qc_remote_workflow: !public value: "none" type: string label: "HMPID QC node workflow" description: "Workflow to execute on QC servers for this detector" widget: dropDownBox panel: "QC_Nodes_Workflows" values: - none - hmpid-raw-qcmn-remote - qcmn-daq-remote visibleif: $$qc_remote_enabled === "true" hmp_dcs_sor_parameters: !public value: "{}" type: string label: "HMPID SOR parameters" description: "additional parameters for the DCS SOR" widget: editBox panel: DCS visibleif: $$dcs_enabled === "true" hmp_dcs_eor_parameters: !public value: "{}" type: string label: "HMPID EOR parameters" description: "additional parameters for the DCS EOR" widget: editBox panel: DCS visibleif: $$dcs_enabled === "true" mch_dpl_workflow: !public value: "none" type: string label: "MCH FLP workflow" description: "Workflow to execute on the FLPs of this detector" widget: dropDownBox panel: "FLPs_Workflows" values: - none - minimal-dpl - qc-daq - qcmn-daq-local mch_qc_remote_workflow: !public value: "none" type: string label: "MCH QC node workflow" description: "Workflow to execute on QC servers for this detector" widget: dropDownBox panel: "QC_Nodes_Workflows" values: - none - mch-qcmn-epn-digits-remote - mch-qcmn-epn-notracking-remote - mch-qcmn-epn-full-remote - qcmn-daq-remote visibleif: $$qc_remote_enabled === "true" mch_dcs_sor_parameters: !public value: "{}" type: string label: "MCH SOR parameters" description: "additional parameters for the DCS SOR" widget: editBox panel: DCS visibleif: $$dcs_enabled === "true" mch_dcs_eor_parameters: !public value: "{}" type: string label: "MCH EOR parameters" description: "additional parameters for the DCS EOR" widget: editBox panel: DCS visibleif: $$dcs_enabled === "true" mft_dpl_workflow: !public value: "none" type: string label: "MFT FLP workflow" description: "Workflow to execute on the FLPs of this detector" widget: dropDownBox panel: "FLPs_Workflows" values: - none - mft-full-qcmn-local - mft-noise-qcmn-local - mft-full-no-tracks-qcmn-local - mft-readout-qcmn-local - mft-digits-qcmn-local - minimal-dpl - qc-daq - qcmn-daq-local mft_qc_remote_workflow: !public value: "none" type: string label: "MFT QC node workflow" description: "Workflow to execute on QC servers for this detector" widget: dropDownBox panel: "QC_Nodes_Workflows" values: - none - mft-full-qcmn-remote - mft-noise-qcmn-remote - mft-full-no-tracks-qcmn-remote - mft-readout-qcmn-remote - mft-digits-qcmn-remote - qcmn-daq-remote visibleif: $$qc_remote_enabled === "true" mft_dcs_sor_parameters: !public value: "{}" type: string label: "MFT SOR parameters" description: "additional parameters for the DCS SOR" widget: editBox panel: DCS visibleif: $$dcs_enabled === "true" mft_dcs_eor_parameters: !public value: "{}" type: string label: "MFT EOR parameters" description: "additional parameters for the DCS EOR" widget: editBox panel: DCS visibleif: $$dcs_enabled === "true" mid_dpl_workflow: !public value: "none" type: string label: "MID FLP workflow" description: "Workflow to execute on the FLPs of this detector" widget: dropDownBox panel: "FLPs_Workflows" values: - none - mid-raw-decoder - minimal-dpl - qc-daq - qcmn-daq-local mid_qc_remote_workflow: !public value: "none" type: string label: "MID QC node workflow" description: "Workflow to execute on QC servers for this detector" widget: dropDownBox panel: "QC_Nodes_Workflows" values: - none - mid-qcmn-epn-digits - mid-digits-qcmn-remote - mid-full-qcmn-remote - qcmn-daq-remote - mid-calib-qcmn-remote visibleif: $$qc_remote_enabled === "true" mid_dcs_sor_parameters: !public value: "{}" type: string label: "MID SOR parameters" description: "additional parameters for the DCS SOR" widget: editBox panel: DCS visibleif: $$dcs_enabled === "true" mid_dcs_eor_parameters: !public value: "{}" type: string label: "MID EOR parameters" description: "additional parameters for the DCS EOR" widget: editBox panel: DCS visibleif: $$dcs_enabled === "true" tof_dpl_workflow: !public value: "none" type: string label: "TOF FLP workflow" description: "Workflow to execute on the FLPs of this detector" widget: dropDownBox panel: "FLPs_Workflows" values: - none - tof-compressor - tof-full-qcmn-local - tof-full-qcmn-paranoid-local - tof-full-qcmn-paran-3cmp-local - tof-full-qcmn-paran-6cmp-local - tof-full-qcmn-paran-10cmp-local - tof-full-qcmn-paran-15cmp-local - tof-full-qcmn-cdump-15cmp-local - tof-full-qcmn-cdump-bckp-local - tof-full-qcmn-15cmp-local - tof-full-qcmn-paran-20cmp-local - tof-full-qcmn-paran-25cmp-local - tof-qcmn-compressor-local - minimal-dpl - qc-daq - qcmn-daq-local tof_qc_remote_workflow: !public value: "none" type: string label: "TOF QC node workflow" description: "Workflow to execute on QC servers for this detector" widget: dropDownBox panel: "QC_Nodes_Workflows" values: - none - qcmn-daq-remote - tof-full-qcmn-remote - tof-full-epn-qcmn-remote - tof-qcmn-compressor-remote visibleif: $$qc_remote_enabled === "true" tof_dcs_sor_parameters: !public value: "{}" type: string label: "TOF SOR parameters" description: "additional parameters for the DCS SOR" widget: editBox panel: DCS visibleif: $$dcs_enabled === "true" tof_dcs_eor_parameters: !public value: "{}" type: string label: "TOF EOR parameters" description: "additional parameters for the DCS EOR" widget: editBox panel: DCS visibleif: $$dcs_enabled === "true" tpc_dpl_workflow: !public value: "none" type: string label: "TPC FLP workflow" description: "Workflow to execute on the FLPs of this detector" widget: dropDownBox panel: "FLPs_Workflows" values: - none - minimal-dpl - qc-daq - qcmn-daq-local - tpc-idc-sac-full-split - tpc-idc-sac-cmv-full-split - tpc-sac-cmv-full-split - tpc-sac-cmv-full-split-trigger - tpc-idc-sac-cmv-full-split-proxy - tpc-idc-sac-cmv-full-split-proxy-trigger - tpc-idc-sac-cmv-full-split-proxy-trigger-only tpc_qc_remote_workflow: !public value: "none" type: string label: "TPC QC node workflow" description: "Workflow to execute on QC servers for this detector" widget: dropDownBox panel: "QC_Nodes_Workflows" values: - none - qcmn-daq-remote - tpc-full-qcmn-remote - tpc-full-cosmics-qcmn-remote - tpc-full-synthetic-qcmn-remote - tpc-full-replay-qcmn-remote - tpc-calib-remote - tpc-laser-calib-remote - tpc-pedestal-calib-remote - tpc-pulser-calib-remote - tpc-krypton-qcmn-remote visibleif: $$qc_remote_enabled === "true" tpc_dcs_sor_parameters: !public value: "{}" type: string label: "TPC SOR parameters" description: "additional parameters for the DCS SOR" widget: editBox panel: DCS visibleif: $$dcs_enabled === "true" tpc_dcs_eor_parameters: !public value: "{}" type: string label: "TPC EOR parameters" description: "additional parameters for the DCS EOR" widget: editBox panel: DCS visibleif: $$dcs_enabled === "true" trd_dpl_workflow: !public value: "none" type: string label: "TRD FLP workflow" description: "Workflow to execute on the FLPs of this detector" widget: dropDownBox panel: "FLPs_Workflows" values: - none - minimal-dpl - qc-daq - qcmn-daq-local trd_qc_remote_workflow: !public value: "none" type: string label: "TRD QC node workflow" description: "Workflow to execute on QC servers for this detector" widget: dropDownBox panel: "QC_Nodes_Workflows" values: - none - qcmn-daq-remote - trd-full-qcmn-epn - trd-full-qcmn-epn-test visibleif: $$qc_remote_enabled === "true" trd_dcs_sor_parameters: !public value: "{}" type: string label: "TRD SOR parameters" description: "additional parameters for the DCS SOR" widget: editBox panel: DCS visibleif: $$dcs_enabled === "true" trd_dcs_eor_parameters: !public value: "{}" type: string label: "TRD EOR parameters" description: "additional parameters for the DCS EOR" widget: editBox panel: DCS visibleif: $$dcs_enabled === "true" tst_dpl_workflow: !public value: "none" type: string label: "TST FLP workflow" description: "Workflow to execute on the FLPs of this detector" widget: dropDownBox panel: "FLPs_Workflows" values: - none - minimal-dpl - qc-daq - qcmn-daq-local tst_qc_remote_workflow: !public value: "none" type: string label: "TST QC node workflow" description: "Workflow to execute on QC servers for this detector" widget: dropDownBox panel: "QC_Nodes_Workflows" values: - none - qcmn-daq-remote visibleif: $$qc_remote_enabled === "true" zdc_dpl_workflow: !public value: "none" type: string label: "ZDC FLP workflow" description: "Workflow to execute on the FLPs of this detector" widget: dropDownBox panel: "FLPs_Workflows" values: - none - minimal-dpl - zdc-raw-qc - zdc-full-qcmn-local - qc-daq - qcmn-daq-local zdc_qc_remote_workflow: !public value: "none" type: string label: "ZDC QC node workflow" description: "Workflow to execute on QC servers for this detector" widget: dropDownBox panel: "QC_Nodes_Workflows" values: - none - zdc-rec-epn - zdc-full-qcmn-remote - qcmn-daq-remote visibleif: $$qc_remote_enabled === "true" zdc_dcs_sor_parameters: !public value: "{}" type: string label: "ZDC SOR parameters" description: "additional parameters for the DCS SOR" widget: editBox panel: DCS visibleif: $$dcs_enabled === "true" zdc_dcs_eor_parameters: !public value: "{}" type: string label: "ZDC EOR parameters" description: "additional parameters for the DCS EOR" widget: editBox panel: DCS visibleif: $$dcs_enabled === "true" glo_vtx_qc_enabled: !public value: "false" type: bool label: "GLO Vertexing QC" description: "Enable/disable QC node workflow for Vertexing QC. Also needs ITS present!" widget: checkBox panel: "QC_Nodes_Workflows" index: 20 visibleif: $$qc_remote_enabled === "true" glo_itstpc_mtch_qc_enabled: !public value: "false" type: bool label: "GLO ITS-TPC Matching QC" description: "Enable/disable QC node workflow for ITS-TPC Matching QC. Deployed only if ITS present!" widget: checkBox panel: "QC_Nodes_Workflows" index: 21 visibleif: $$qc_remote_enabled === "true" glo_fwd_mtch_qc_enabled: !public value: "false" type: bool label: "GLO Forward Matching QC" description: "Enable/disable QC node workflow for forward Matching QC. Deployed only if MCH present!" widget: checkBox panel: "QC_Nodes_Workflows" index: 22 visibleif: $$qc_remote_enabled === "true" glo_mean_vtx_calib_post_proc_qc_enabled: !public value: "false" type: bool label: "GLO Mean Vertex calib post-processing QC" description: "Enable/disable QC node workflow for processing the Mean Vertex calibration objects. Deployed only if ITS present!" widget: checkBox panel: "QC_Nodes_Workflows" index: 23 visibleif: $$qc_remote_enabled === "true" glo_big_screen_qc_enabled: !public value: "false" type: bool label: "QC Big Screen" description: "Enable/disable QC Big Screen" widget: checkBox panel: "QC_Nodes_Workflows" index: 24 visibleif: $$qc_remote_enabled === "true" glo_data_size_qc_enabled: !public value: "false" type: bool label: "QC Data Sizes" description: "Enable/disable QC Data Sizes" widget: checkBox panel: "QC_Nodes_Workflows" index: 25 visibleif: $$qc_remote_enabled === "true" glo_release_validation_qc_enabled: !public value: "false" type: bool label: "Release Validation" description: "Enable/disable release validation" widget: checkBox panel: "QC_Nodes_Workflows" index: 26 visibleif: $$qc_remote_enabled === "true" ############################### # TRG Panel ############################### trg_load_parameters: !public value: "GLOBAL.pd" type: string label: "CTP Configuration" description: "Configuration file for the TRG/CTP Global Run" widget: comboBox values: - "GLOBAL.pd" panel: TRG index: 1 visibleif: $$trg_enabled === "true" && $$trg_global_run_enabled === "true" trg_runtime_config_file: !public value: "" type: string label: "LTU Configuration" description: "configuration file for the LTU Standalone Run" widget: editBox panel: TRG visibleif: $$trg_enabled === "true" && $$trg_global_run_enabled === "false" index: 2 # !! Not used by the ctpd !! # trg_run_mode: !public # value: "none" # type: string # label: "TRG Start Run Trigger Mode" # description: "config for the TRG Run Start" # widget: dropDownBox # panel: TRG # values: # - none # - trig # - cont # trg_run_ph_bc: !public # value: "" # type: string # label: "TRG Start Run Ph Bc" # description: "BC-downscaled rate of physics triggers" # widget: editBox # panel: TRG # trg_run_ph_rnd: !public # value: "" # type: string # label: "TRG Start PH RND" # description: "rate of physics triggers generated randomly" # widget: editBox # panel: TRG ############################### # Logging Panel ############################### infologger_severity: !public value: info type: string label: "DPL log level" description: "Minimum DPL logging severity which is sent to InfoLogger" widget: dropDownBox panel: Logging values: - "nolog" - "fatal" - "error" - "warn" - "state" - "info" - "debug" - "debug1" - "debug2" - "debug3" - "debug4" - "trace" index: 1 log_task_stdout: !public value: none type: string label: "Task stdout" description: "Select to where the standard output of controlled tasks should be forwarded to (select 'all' for InfoLogger)" widget: dropDownBox panel: Logging values: - "none" - "stdout" - "all" index: 2 log_task_stderr: !public value: "all" type: string label: "Task stderr" description: "Select to where the standard error of controlled tasks should be forwarded to (select 'all' for InfoLogger)" widget: dropDownBox panel: Logging values: - "none" - "stdout" - "all" index: 3 fmq_rate_logging: !public value: "0" type: number label: "FairMQ rate logging" description: "sets the interval at which FairMQ logs channel transfer rates (0 to disable)" widget: editBox panel: Logging index: 4 ############################### # EPN Workflows Panel ############################### pdp_generator_script_path: /opt/alisw/el9/GenTopo/bin/gen_topo_logged.sh pdp_panel_mode: !public value: "Shifter" type: string label: "Panel mode" description: "" widget: radioButtonBox panel: "EPNs_Workflows" values: - "Shifter" - "Expert" index: -1000 visibleif: $$epn_enabled === "true" odc_n_epns: !public value: "10" type: number label: "# of EPNs" description: "Number of EPNs to use" widget: editBox panel: "EPNs_Workflows" index: -999 visibleif: $$epn_enabled === "true" odc_n_epns_max_fail: !public value: "0" type: number label: "Max # of EPNs allowed to fail" description: "Maximum number of EPNs that are allowed to fail during startup without triggering an error during start of run" widget: editBox panel: "EPNs_Workflows" index: -998 visibleif: $$epn_enabled === "true" pdp_config_option: !public value: "Repository hash" type: string label: "Workflow configuration mode" description: "" widget: dropDownBox panel: "EPNs_Workflows" values: - "Repository hash" - "Repository path" - "Manual XML" index: -800 visibleif: $$epn_enabled === "true" && $$pdp_panel_mode === "Expert" odc_topology: !public value: "" type: string label: "Topology" description: "DDS topology name to be executed on EPNs" widget: editBox panel: "EPNs_Workflows" index: -799 visibleif: $$epn_enabled === "true" && $$pdp_config_option === "Manual XML" pdp_o2_data_processing_hash: !public value: "default" type: string label: "O2DPG Hash" description: "Commit hash or tag of O2DPG to use" widget: editBox panel: "EPNs_Workflows" index: -799 visibleif: $$epn_enabled === "true" && $$pdp_config_option === "Repository hash" && $$pdp_panel_mode === "Expert" pdp_o2_data_processing_path: !public value: "" type: string label: "O2DPG DATA Path" description: "Path to the DATA folder of the O2DPG repository to use in the EPN shared home folder" widget: editBox panel: "EPNs_Workflows" index: -799 visibleif: $$epn_enabled === "true" && $$pdp_config_option === "Repository path" pdp_o2pdpsuite_version: !public value: "default" type: string label: "O2PDPSuite Version" description: "Version of O2PDPSuite to be used. Set to 'default' to use the default version set by RC. Set to empty '' to use the default version of the workflow. Otherwise specify the O2PDPSuite package(s) to load." widget: editBox panel: "EPNs_Workflows" index: -798 visibleif: $$epn_enabled === "true" && ($$pdp_config_option === "Repository hash" || $$pdp_config_option === "Repository path") && $$pdp_panel_mode === "Expert" odc_resources_spec: !public value: "default" type: string label: "Resources" description: "EPN resources to be used, the value 'default' results in '{\"zone\":\"online\", \"n\":N}' where N is the value set in '# of EPNs'" widget: editBox panel: "EPNs_Workflows" index: -600 visibleif: $$epn_enabled === "true" && $$pdp_panel_mode === "Expert" stfb_dd_mode: !public value: "physics" type: string label: "Data Distribution mode" description: "Data Distribution mode. physics: standard time based data distribution. topology: special topological data distribution for ITS and MFT calibration runs." widget: dropDownBox panel: "EPNs_Workflows" values: - physics - topology index: -599 visibleif: $$epn_enabled === "true" && $$pdp_panel_mode === "Expert" tfb_dd_mode: !public value: "processing" type: string label: "TF Builder mode" description: "Time Frame Builder mode. processing: TfBuilder builds time frames and forwards them to DPL. disk: TfBuilder builds time frames and stores the raw time frame to disk. processing-disk: combination of processing and disk. discard: TfBuilder builds time frames in memory and discards them immediately." widget: dropDownBox panel: "EPNs_Workflows" values: - discard - disk - processing - processing-disk index: -598 visibleif: $$epn_enabled === "true" && ($$pdp_config_option === "Repository hash" || $$pdp_config_option === "Repository path") && $$pdp_panel_mode === "Expert" pdp_topology_description_library_file: !public value: "production/production.desc" type: string label: "Topology description library file" description: "Topology description file in O2DPG repository" widget: comboBox panel: "EPNs_Workflows" values: - "production/production.desc" - "production/no-processing.desc" index: 100 visibleif: $$epn_enabled === "true" && ($$pdp_config_option === "Repository hash" || $$pdp_config_option === "Repository path") && ($$tfb_dd_mode === "processing" || $$tfb_dd_mode === "processing-disk") && $$pdp_panel_mode === "Expert" pdp_workflow_name: !public value: "synchronous-workflow" type: string label: "Workflow name" description: "Workflow name in the topology description library file" widget: comboBox panel: "EPNs_Workflows" values: - "synchronous-workflow" - "synchronous-workflow-1numa" index: 101 visibleif: $$epn_enabled === "true" && ($$pdp_config_option === "Repository hash" || $$pdp_config_option === "Repository path") && ($$tfb_dd_mode === "processing" || $$tfb_dd_mode === "processing-disk") && $$pdp_panel_mode === "Expert" epn_store_raw_data_fraction: !public value: "100" type: number label: "% of raw data to store" description: "In case of a 'disk' TfBuilder mode, selects the fraction of raw data to be stored in percent" widget: editBox panel: "EPNs_Workflows" index: 102 visibleif: $$epn_enabled === "true" && ($$pdp_config_option === "Repository hash" || $$pdp_config_option === "Repository path") && ($$tfb_dd_mode === "disk" || $$tfb_dd_mode === "processing-disk") && $$pdp_panel_mode === "Expert" pdp_detector_list_global: !public value: "default" type: string label: "Detector list (Global)" description: "Comma-separated list of detectors for EPN processing. Empty string means no detectors. 'default' is an abbreviation to include all detectors." widget: editBox panel: "EPNs_Workflows" index: 600 visibleif: $$epn_enabled === "true" && ($$pdp_config_option === "Repository hash" || $$pdp_config_option === "Repository path") && $$pdp_panel_mode === "Expert" pdp_detector_exclude_list_qc: !public value: "" type: string label: "Exclude Detectors for QC" description: "Comma-separated list of detectors to exclude for EPN QC. Empty string means no detectors excluded." widget: editBox panel: "EPNs_Workflows" index: 601 visibleif: $$epn_enabled === "true" && ($$pdp_config_option === "Repository hash" || $$pdp_config_option === "Repository path") && $$pdp_panel_mode === "Expert" pdp_detector_exclude_list_calib: !public value: "" type: string label: "Exclude Detectrors for Calib" description: "Comma-separated list of detectors to exclude for calibration. Empty string means no detectors excluded." widget: editBox panel: "EPNs_Workflows" index: 602 visibleif: $$epn_enabled === "true" && ($$pdp_config_option === "Repository hash" || $$pdp_config_option === "Repository path") && $$pdp_panel_mode === "Expert" pdp_workflow_parameters: !public value: "QC,CALIB,GPU,CTF,EVENT_DISPLAY" type: string label: "Workflow parameters" description: "Comma-separated list of workflow parameters. Valid parameters are: QC,CALIB,GPU,CTF,EVENT_DISPLAY." widget: editBox panel: "EPNs_Workflows" index: 603 visibleif: $$epn_enabled === "true" && ($$pdp_config_option === "Repository hash" || $$pdp_config_option === "Repository path") && $$pdp_panel_mode === "Expert" pdp_raw_decoder_multi_factor: !public value: "1" type: number label: "Raw decoder multiplicity factor" description: "Multiply the number of raw decoder processing instance on EPN by this factor" widget: editBox panel: "EPNs_Workflows" index: 604 visibleif: $$epn_enabled === "true" && ($$pdp_config_option === "Repository hash" || $$pdp_config_option === "Repository path") && $$pdp_panel_mode === "Expert" pdp_ctf_encoder_multi_factor: !public value: "1" type: number label: "CTF encoder multiplicity factor" description: "Multiply the number of CTF encoder processing instance on EPN by this factor" widget: editBox panel: "EPNs_Workflows" index: 605 visibleif: $$epn_enabled === "true" && ($$pdp_config_option === "Repository hash" || $$pdp_config_option === "Repository path") && $$pdp_panel_mode === "Expert" pdp_reco_process_multi_factor: !public value: "1" type: number label: "Reconstruction process multiplicity factor" description: "Multiply the number of instances of other reconstruction processes by this factor" widget: editBox panel: "EPNs_Workflows" index: 606 visibleif: $$epn_enabled === "true" && ($$pdp_config_option === "Repository hash" || $$pdp_config_option === "Repository path") && $$pdp_panel_mode === "Expert" pdp_extra_env_vars: !public value: "" type: string label: "Extra ENV variables" description: "Additional environment variables exported when running the workflow generation script" widget: editBox panel: "EPNs_Workflows" rows: 35 index: 700 visibleif: $$epn_enabled === "true" && ($$pdp_config_option === "Repository hash" || $$pdp_config_option === "Repository path") && $$pdp_panel_mode === "Expert" pdp_epn_shm_sizes: !public value: "RECOSHMSIZE=120259084288 DDSHMSIZE=114688" type: string label: "EPN SHM Sizes" description: "EPN SHM Sizes" widget: editBox panel: "EPNs_Workflows" index: 701 visibleif: $$epn_enabled === "true" && ($$pdp_config_option === "Repository hash" || $$pdp_config_option === "Repository path") && $$pdp_panel_mode === "Expert" pdp_epn_shmid: !public value: "1" type: string label: "EPN SHM Id" description: "If the EPN SHM Manager tool is used, the SHMId configured here must match the SHM Id used by the tool" widget: editBox panel: "EPNs_Workflows" index: 702 visibleif: $$epn_enabled === "true" && ($$pdp_config_option === "Repository hash" || $$pdp_config_option === "Repository path") && $$pdp_panel_mode === "Expert" pdp_wipe_workflow_cache: !public value: "false" type: bool label: "Wipe workflow cache" description: "Delete workflow cache" widget: checkBox panel: "EPNs_Workflows" index: 703 visibleif: $$epn_enabled === "true" && ($$pdp_config_option === "Repository hash" || $$pdp_config_option === "Repository path") && $$pdp_panel_mode === "Expert" pdp_beam_type: !public value: "cosmic" type: string label: "Beam type" description: "Beam type used in this environment" widget: dropDownBox panel: "EPNs_Workflows" values: - PbPb - pp - pPb - pO - OO - NeNe - cosmic - technical index: 800 visibleif: $$epn_enabled === "true" && ($$pdp_config_option === "Repository hash" || $$pdp_config_option === "Repository path") && $$pdp_panel_mode === "Expert" pdp_n_hbf_per_tf: !public value: "128" type: number label: "# of HBFs per TF" description: "Number of HBFs per TF for EPN processing" widget: editBox panel: "EPNs_Workflows" index: 801 visibleif: $$epn_enabled === "true" && ($$pdp_config_option === "Repository hash" || $$pdp_config_option === "Repository path") && $$pdp_panel_mode === "Expert" pdp_override_run_start_time: !public value: "" type: string label: "Override Run Start Time" description: "If set, use this timestamp instead of 'now' when fetching CCDB objects" widget: editBox panel: "EPNs_Workflows" index: 802 visibleif: $$epn_enabled === "true" && $$pdp_panel_mode === "Expert" pdp_force_run_as_raw: !public value: "false" type: bool label: "Force RAW" description: "Force run to be classified as RAW" widget: checkBox panel: "EPNs_Workflows" index: 803 visibleif: $$epn_enabled === "true" && $$pdp_panel_mode === "Expert" odc_partitions_cleanup: !public value: "true" type: bool label: "EPN partitions cleanup" description: "If enabled, orphaned EPN partitions are cleaned up on environment deployment and shutdown" widget: checkBox panel: "EPNs_Workflows" index: 900 visibleif: $$epn_enabled === "true" && $$pdp_panel_mode === "Expert" ############################### # CTP readout Panel ############################### ctp_readout_host: #!public value: "alio2-cr1-flp163" type: string label: "CTP Readout host" description: "Defines the host that runs CTP readout" widget: editBox panel: "CTP_Readout" index: 0 ############################### # Timeouts ############################### auto_stop_timeout: "none" ccdb_start_timeout: "10s" ccdb_stop_timeout: "10s" dcs_pfr_timeout: "310s" dcs_pfr_grace_period: "10s" dcs_sor_timeout: "140s" dcs_sor_grace_period: "10s" dcs_eor_timeout: "30s" dcs_cleanup_timeout: "30s" ddsched_initialize_timeout: "300s" ddsched_terminate_timeout: "300s" ddsched_cleanup_timeout: "60s" drop_caches_timeout: "30s" fmq_initial_shm_cleanup_timeout: "30s" fmq_shmmonitor_timeout: "10s" odc_partition_cleanup_timeout: "60s" odc_partitioninitialize_timeout: "60s" odc_configure_timeout: "60s" odc_start_timeout: "60s" odc_stop_timeout: "60s" odc_goerror_timeout: "60s" odc_reset_timeout: "60s" odc_partitionterminate_timeout: "60s" odc_cleanup_timeout: "60s" roc_cleanup_timeout: "10s" trg_ctp_emulator_timeout: "10s" trg_pfr_timeout: "5s" trg_load_timeout: "15s" trg_start_timeout: "20s" trg_pre_start_timeout: "5s" trg_stop_timeout: "5s" trg_unload_timeout: "5s" trg_cleanup_timeout: "5s" ############################### # Detector selection Panel ############################### detectors: !public value: "{{ inventory.DetectorsForHosts(hosts) }}" type: string widget: detectorSelector panel: Detectors ############################### # Other variables ############################### bookkeeping_enabled: "false" bookkeeping_consuming_kafka: "true" bookkept: "true" ccdb_enabled: "false" dpl_workflow: none dpl_command: none qc_dpl_command: none drop_caches_enabled: "false" fmq_initial_shm_cleanup_enabled: "true" fmq_cleanup_enabled: "true" kafka_enabled: "false" lhc_enabled: "false" minimal_dpl_enabled: "false" # TODO FOR LATER: I think this one is no longer needed, we now enabled/disable the Minimal DPL workflow on FLP via dpl_workflow monitoring_dd_url: "no-op://" monitoring_dpl_url: "no-op://" monitoring_qc_url: "no-op://" monitoring_readout_url: "no-op://" # TODO: is this used somewhere ? I could not find it anywhere in the workflows o2_install_path: "/opt/o2" o2_infologger_path: "/opt/o2-InfoLogger" odc_plugin: "epn" qcdd_enabled: "false" # TODO FOR LATER: I think this one is no longer needed, we now enabled/disable the DAQ QC on FLP via dpl_workflow roc_cleanup_enabled: "false" roc_ctp_emulator_enabled: "false" stfb_standalone: "false" stfs_shm_segment_size: 33554432 ctp_stfs_shm_segment_size: 33554432 flp_workflows_jit_enabled: "true" qc_remote_jit_enabled: "true" user: flp extra_env_vars: "" readout_folder: "any" vars: auto_stop_enabled: "{{ !strings.IsFalsy(auto_stop_timeout) }}" ddsched_enabled: "{{ epn_enabled == 'true' && dd_enabled == 'true' }}" odc_enabled: "{{ epn_enabled }}" odc_topology_fullname: '{{ epn_enabled == "true" ? odc.GenerateEPNTopologyFullname() : "" }}' roles: ########################### # Start of CTP Readout role ########################### - name: "readout-ctp" enabled: "{{ ctp_readout_enabled == 'true' }}" vars: detector: "{{ctp_readout_enabled == 'true' ? inventory.DetectorForHost( ctp_readout_host ) : \"\" }}" readout_cfg_uri_standalone: "consul-ini://{{ consul_endpoint }}/o2/components/{{config.Resolve('readout', run_type, 'standalone', 'readout-standalone-' + ctp_readout_host)}}" readout_cfg_uri_stfb: "consul-ini://{{ consul_endpoint }}/o2/components/{{config.Resolve('readout', run_type, readout_folder, 'readout-stfb-' + ctp_readout_host)}}" dd_discovery_ib_hostname: "{{ ctp_readout_host }}-ib" # MUST be defined for all stfb and stfs # dpl_workflow is set to ctp_dpl_workflow dpl_workflow: "{{ util.PrefixedOverride( 'dpl_workflow', 'ctp' ) }}" dpl_command: "{{ util.PrefixedOverride( 'dpl_command', 'ctp' ) }}" stfs_shm_segment_size: "{{ ctp_stfs_shm_segment_size }}" it: "{{ ctp_readout_host }}" constraints: - attribute: machine_id value: "{{ ctp_readout_host }}" roles: - name: "readout" vars: readout_cfg_uri: '{{dd_enabled == "true" ? readout_cfg_uri_stfb : readout_cfg_uri_standalone}}' task: load: readout-ctp - name: "data-distribution" enabled: "{{dd_enabled == 'true' && (qcdd_enabled == 'false' && minimal_dpl_enabled == 'false' && strings.IsFalsy(dpl_workflow) && strings.IsFalsy(dpl_command))}}" roles: # stfb-standalone not supported on CTP machine # if ctp_readout_enabled, we also assume stfb_standalone is false - name: "stfb" vars: dd_discovery_stfb_id: stfb-{{ ctp_readout_host }}-{{ uid.New() }} # must be defined for all stfb roles connect: - name: readout type: pull target: "{{ Up(2).Path }}.readout:readout" rateLogging: "{{ fmq_rate_logging }}" task: load: stfbuilder-senderoutput - name: "stfs" vars: dd_discovery_stfs_id: stfs-{{ ctp_readout_host }}-{{ uid.New() }} # must be defined for all stfs roles stfs_input_channel_name: buildertosender connect: - name: buildertosender type: pull target: "{{ Parent().Path }}.stfb:buildertosender" rateLogging: "{{ fmq_rate_logging }}" task: load: stfsender - name: "data-distribution-dpl" enabled: "{{(qcdd_enabled == 'true' || minimal_dpl_enabled == 'true' || !strings.IsFalsy(dpl_workflow) || !strings.IsFalsy(dpl_command)) && dd_enabled == 'true'}}" defaults: path_to_readout_proxy: "{{ Parent().Path }}.data-distribution-dpl.stfb:dpl-chan" roles: - name: "stfb" vars: dd_discovery_stfb_id: stfb-{{ ctp_readout_host }}-{{ uid.New() }} connect: - name: readout type: pull target: "{{ Up(2).Path }}.readout:readout" rateLogging: "{{ fmq_rate_logging }}" bind: - name: dpl-chan type: push rateLogging: "{{ fmq_rate_logging }}" transport: shmem addressing: ipc sndBufSize: "4" global: "readout-proxy-{{ ctp_readout_host }}" task: #NOTE: plain stfbuilder TT (not stfbuilder-senderoutput) because we want dpl-chan load: stfbuilder - name: "stfs" # this stfs is for any DPL workflow. We assume that it has a device dpl-output-proxy and a downstream channel enabled: "{{stfb_standalone == 'false' && (qcdd_enabled == 'true' || minimal_dpl_enabled == 'true' || !strings.IsFalsy(dpl_workflow) || !strings.IsFalsy(dpl_command))}}" vars: dd_discovery_stfs_id: stfs-{{ ctp_readout_host }}-{{ uid.New() }} stfs_input_channel_name: downstream connect: - name: downstream type: pull target: "::downstream-{{ ctp_readout_host }}" # The subwf must provide this channel! rateLogging: "{{ fmq_rate_logging }}" task: load: stfsender - name: dpl enabled: "{{ qcdd_enabled == 'true' }}" include: qc-daq - name: dpl enabled: "{{ minimal_dpl_enabled == 'true' }}" include: minimal-dpl - name: dpl enabled: "{{ (flp_workflows_jit_enabled == 'false' || detector == 'TPC') && !strings.IsFalsy(dpl_workflow) }}" include: "{{ dpl_workflow }}" - name: dpl enabled: "{{ flp_workflows_jit_enabled == 'true' && detector != 'TPC' && !strings.IsFalsy(dpl_workflow) && strings.IsFalsy(dpl_command) }}" include: "{{ flp_workflows_jit_enabled == 'true' ? dpl.GenerateFromUri(dpl_workflow) : '' }}" - name: dpl enabled: "{{ flp_workflows_jit_enabled == 'true' && detector != 'TPC' && !strings.IsFalsy(dpl_command) }}" include: "{{ flp_workflows_jit_enabled == 'true' ? dpl.Generate(dpl_command) : '' }}" # roc-ctp-emulator doesn't run on CTP - name: drop-caches enabled: "{{drop_caches_enabled == 'true'}}" vars: shell_command: echo 3 > /proc/sys/vm/drop_caches && echo "system caches dropped" | O2_SYSTEM=ECS O2_PARTITION={{environment_id}} O2_ROLE={{ctp_readout_host}} {{o2_infologger_path}}/bin/o2-infologger-log -x -s Info -o Facility=core/dropcaches user: root task: load: "shell-command" trigger: before_CONFIGURE timeout: "{{ drop_caches_timeout }}" critical: false # TODO: if this is set true, some basic task finished events aren't parsed correctly - name: fairmq-shmcleanup enabled: "{{fmq_initial_shm_cleanup_enabled == 'true'}}" vars: shell_command: "source /etc/profile.d/o2.sh && O2_PARTITION={{environment_id}} O2_ROLE={{ctp_readout_host}} o2-aliecs-shmcleaner" user: root task: load: "shell-command" trigger: before_DEPLOY timeout: "{{ fmq_initial_shm_cleanup_timeout }}" critical: false - name: fairmq-shmmonitor enabled: "{{fmq_cleanup_enabled == 'true'}}" task: load: "fairmq-shmmonitor" trigger: DESTROY timeout: 10s critical: false # o2-roc-cleanup doesn't run on CTP ######################### # End of CTP Readout role ######################### - name: host-{{ it }} for: range: "{{ hosts }}" var: it vars: detector: "{{ inventory.DetectorForHost( it ) }}" readout_cfg_uri_standalone: "consul-ini://{{ consul_endpoint }}/o2/components/{{config.Resolve('readout', run_type, 'standalone', 'readout-standalone-' + it)}}" readout_cfg_uri_stfb: "consul-ini://{{ consul_endpoint }}/o2/components/{{config.Resolve('readout', run_type, readout_folder, 'readout-stfb-' + it)}}" dd_discovery_ib_hostname: "{{ it }}-ib" # MUST be defined for all stfb and stfs # dpl_workflow is set to _dpl_workflow if such an override exists dpl_workflow: "{{ util.PrefixedOverride( 'dpl_workflow', strings.ToLower( inventory.DetectorForHost( it ) ) ) }}" dpl_command: "{{ util.PrefixedOverride( 'dpl_command', strings.ToLower( inventory.DetectorForHost( it ) ) ) }}" constraints: - attribute: machine_id value: "{{ it }}" roles: - name: "readout" vars: readout_cfg_uri: '{{dd_enabled == "true" ? readout_cfg_uri_stfb : readout_cfg_uri_standalone}}' task: load: readout - name: "data-distribution" enabled: "{{dd_enabled == 'true' && (qcdd_enabled == 'false' && minimal_dpl_enabled == 'false' && strings.IsFalsy(dpl_workflow) && strings.IsFalsy(dpl_command))}}" roles: - name: "stfb-standalone" enabled: "{{stfb_standalone}}" connect: - name: readout type: pull target: "{{ Up(2).Path }}.readout:readout" rateLogging: "{{ fmq_rate_logging }}" task: load: stfbuilder-nooutput - name: "stfb" enabled: "{{stfb_standalone == 'false'}}" vars: dd_discovery_stfb_id: stfb-{{ it }}-{{ uid.New() }} # must be defined for all stfb roles connect: - name: readout type: pull target: "{{ Up(2).Path }}.readout:readout" rateLogging: "{{ fmq_rate_logging }}" task: load: stfbuilder-senderoutput - name: "stfs" enabled: "{{stfb_standalone == 'false'}}" vars: dd_discovery_stfs_id: stfs-{{ it }}-{{ uid.New() }} # must be defined for all stfs roles stfs_input_channel_name: buildertosender connect: - name: buildertosender type: pull target: "{{ Parent().Path }}.stfb:buildertosender" rateLogging: "{{ fmq_rate_logging }}" task: load: stfsender - name: "data-distribution-dpl" enabled: "{{(qcdd_enabled == 'true' || minimal_dpl_enabled == 'true' || !strings.IsFalsy(dpl_workflow) || !strings.IsFalsy(dpl_command)) && dd_enabled == 'true'}}" defaults: path_to_readout_proxy: "{{ Parent().Path }}.data-distribution-dpl.stfb:dpl-chan" roles: - name: "stfb" enabled: "{{stfb_standalone == 'false'}}" vars: dd_discovery_stfb_id: stfb-{{ it }}-{{ uid.New() }} connect: - name: readout type: pull target: "{{ Up(2).Path }}.readout:readout" rateLogging: "{{ fmq_rate_logging }}" bind: - name: dpl-chan type: push rateLogging: "{{ fmq_rate_logging }}" transport: shmem addressing: ipc sndBufSize: "4" global: "readout-proxy-{{ it }}" task: #NOTE: plain stfbuilder TT (not stfbuilder-senderoutput) because we want dpl-chan load: stfbuilder - name: "stfs" # this stfs is for any DPL workflow. We assume that it has a device dpl-output-proxy and a downstream channel enabled: "{{stfb_standalone == 'false' && (qcdd_enabled == 'true' || minimal_dpl_enabled == 'true' || !strings.IsFalsy(dpl_workflow) || !strings.IsFalsy(dpl_command))}}" vars: dd_discovery_stfs_id: stfs-{{ it }}-{{ uid.New() }} stfs_input_channel_name: downstream connect: - name: downstream type: pull target: "::downstream-{{ it }}" # The subwf must provide this channel! rateLogging: "{{ fmq_rate_logging }}" task: load: stfsender - name: dpl enabled: "{{ qcdd_enabled == 'true' }}" include: qc-daq - name: dpl enabled: "{{ minimal_dpl_enabled == 'true' }}" include: minimal-dpl - name: dpl enabled: "{{ flp_workflows_jit_enabled == 'false' && !strings.IsFalsy(dpl_workflow) }}" include: "{{ dpl_workflow }}" - name: dpl enabled: "{{ flp_workflows_jit_enabled == 'true' && !strings.IsFalsy(dpl_workflow) && strings.IsFalsy(dpl_command) }}" include: "{{ flp_workflows_jit_enabled == 'true' ? dpl.GenerateFromUriOrFallbackToTemplate(dpl_workflow) : '' }}" - name: dpl enabled: "{{ flp_workflows_jit_enabled == 'true' && !strings.IsFalsy(dpl_command) }}" include: "{{ flp_workflows_jit_enabled == 'true' ? dpl.Generate(dpl_command) : '' }}" - name: o2-roc-ctp-emulators enabled: "{{roc_ctp_emulator_enabled == 'true'}}" defaults: roc_ctp_emulator_endpoints: '["#0"]' roles: - name: "endpoint-{{ endpoint_id }}" for: range: "{{roc_ctp_emulator_endpoints}}" var: endpoint_id roles: - name: o2-roc-ctp-emulator task: load: "o2-roc-ctp-emulator" trigger: enter_RUNNING timeout: "{{ trg_ctp_emulator_timeout }}" critical: false - name: drop-caches enabled: "{{drop_caches_enabled == 'true'}}" vars: shell_command: echo 3 > /proc/sys/vm/drop_caches && echo "system caches dropped" | O2_SYSTEM=ECS O2_PARTITION={{environment_id}} O2_ROLE={{it}} {{o2_infologger_path}}/bin/o2-infologger-log -x -s Info -o Facility=core/dropcaches user: root task: load: "shell-command" trigger: before_CONFIGURE timeout: "{{ drop_caches_timeout }}" critical: false # TODO: if this is set true, some basic task finished events aren't parsed correctly - name: fairmq-shmcleanup enabled: "{{fmq_initial_shm_cleanup_enabled == 'true'}}" vars: shell_command: "source /etc/profile.d/o2.sh && O2_PARTITION={{environment_id}} O2_ROLE={{it}} o2-aliecs-shmcleaner" user: root task: load: "shell-command" trigger: before_DEPLOY timeout: "{{ fmq_initial_shm_cleanup_timeout }}" critical: false - name: fairmq-shmmonitor enabled: "{{fmq_cleanup_enabled == 'true'}}" task: load: "fairmq-shmmonitor" trigger: DESTROY timeout: "{{ fmq_shmmonitor_timeout }}" critical: false - name: o2-roc-cleanup enabled: "{{roc_cleanup_enabled == 'true'}}" task: load: "o2-roc-cleanup" trigger: DESTROY timeout: "{{ roc_cleanup_timeout }}" critical: false - name: its-cru-enable enabled: "{{ detector == 'ITS' }}" vars: shell_command: "source /etc/profile.d/o2.sh && O2_PARTITION={{environment_id}} O2_ROLE={{it}} O2_DETECTOR=ITS /opt/o2-roc-serial-update/workspace/cru_enable_card.sh" user: flp task: load: "shell-command" trigger: DESTROY timeout: 10s critical: true - name: qc-servers enabled: "{{ qc_remote_enabled == 'true' }}" constraints: - attribute: machine_type value: qcserver defaults: qc_remote_workflow: none qc_remote_machine: none qc_shm_segment_size: 10000000000 qc_shm_metadata_msg_size: 100000 vars: user: qc session_id: "{{ environment_id }}" # we can't use "default" because other workflows might already exist on the same QC server roles: - name: qc-remote-workflow-{{ detector }} for: range: "{{ detectors }}" var: detector vars: qc_remote_workflow: "{{ util.PrefixedOverride( 'qc_remote_workflow', strings.ToLower( detector ) ) }}" qc_dpl_command: "{{ util.PrefixedOverride( 'qc_dpl_command', strings.ToLower( detector ) ) }}" qc_remote_machine: "{{ util.PrefixedOverride( 'qc_remote_machine', strings.ToLower( detector ) ) }}" shm_segment_size: "{{ util.PrefixedOverride( 'qc_shm_segment_size', strings.ToLower( detector ) ) }}" constraints: - attribute: machine_id value: "{{ qc_remote_machine }}" roles: - name: dpl enabled: "{{ qc_remote_jit_enabled == 'false' && !strings.IsFalsy(qc_remote_workflow) }}" include: "{{ qc_remote_workflow }}" - name: dpl enabled: "{{ qc_remote_jit_enabled == 'true' && !strings.IsFalsy(qc_remote_workflow) && strings.IsFalsy(qc_dpl_command) }}" include: "{{ qc_remote_jit_enabled == 'true' ? dpl.GenerateFromUri(qc_remote_workflow) : '' }}" - name: dpl enabled: "{{ qc_remote_jit_enabled == 'true' && !strings.IsFalsy(qc_dpl_command) }}" include: "{{ qc_remote_jit_enabled == 'true' ? dpl.Generate(qc_dpl_command) : '' }}" - name: fairmq-shmmonitor enabled: "{{ fmq_cleanup_enabled == 'true' && !strings.IsFalsy(qc_remote_workflow) }}" task: load: "fairmq-shmmonitor" trigger: DESTROY timeout: 10s critical: false # When qc_remote_enabled is true, it will try to deploy a qc_remote_workflow for every detector in the list. # However if the {{detector}}_qc_remote_workflow is none, we deploy a ghost role that does nothing to preserve # control tree state management.// FIXME: this is probably not needed anymore - name: dpl-noop-subwf enabled: "{{ strings.IsFalsy(qc_remote_workflow) }}" call: func: testplugin.Noop() trigger: CONFIGURE timeout: 1s critical: false - name: qc-remote-workflow-glo # GLO is not a detector so we won't iterate on it with 'detectors' and we need special enable logic enabled: "{{ detectors contains 'ITS' }}" vars: qc_remote_workflow: "{{ util.PrefixedOverride( 'qc_remote_workflow', 'glo' ) }}" qc_dpl_command: "{{ util.PrefixedOverride( 'qc_dpl_command', 'glo' ) }}" qc_remote_machine: "{{ util.PrefixedOverride( 'qc_remote_machine', 'glo' ) }}" shm_segment_size: "{{ util.PrefixedOverride( 'qc_shm_segment_size', 'glo' ) }}" detector: GLO constraints: - attribute: machine_id value: "{{ qc_remote_machine }}" roles: - name: glo-vtx enabled: "{{ glo_vtx_qc_enabled == 'true' && qc_remote_jit_enabled == 'true' }}" include: "{{ qc_remote_jit_enabled == 'true' ? dpl.GenerateFromUri('glo-vtx-qcmn-remote') : '' }}" - name: glo-itstpc enabled: "{{ glo_itstpc_mtch_qc_enabled == 'true' && qc_remote_jit_enabled == 'true'}}" include: "{{ qc_remote_jit_enabled == 'true' ? dpl.GenerateFromUri('glo-itstpc-mtch-qcmn-remote') : '' }}" - name: glo-mean-vtx-calib enabled: "{{ glo_mean_vtx_calib_post_proc_qc_enabled == 'true' && qc_remote_jit_enabled == 'true'}}" include: "{{ qc_remote_jit_enabled == 'true' ? dpl.GenerateFromUri('glo-mean-vtx-post-processing-qcmn-remote') : '' }}" - name: glo-qc-big-screen enabled: "{{ glo_big_screen_qc_enabled == 'true' && qc_remote_jit_enabled == 'true'}}" include: "{{ qc_remote_jit_enabled == 'true' ? dpl.GenerateFromUri('glo-qc-big-screen') : '' }}" - name: glo-qc-data-size enabled: "{{ glo_data_size_qc_enabled == 'true' && qc_remote_jit_enabled == 'true'}}" include: "{{ qc_remote_jit_enabled == 'true' ? dpl.GenerateFromUri('glo-qc-data-size') : '' }}" - name: glo-release-validation enabled: "{{ glo_release_validation_qc_enabled == 'true' && qc_remote_jit_enabled == 'true'}}" include: "{{ qc_remote_jit_enabled == 'true' ? dpl.GenerateFromUri('glo-release-validation') : '' }}" # When qc_remote_enabled is true, it will try to deploy a qc_remote_workflow for every detector in the list. # However if the {{detector}}_qc_remote_workflow is none, we deploy a ghost role that does nothing to preserve # control tree state management.// FIXME: this is probably not needed anymore - name: dpl-noop-subwf enabled: "{{ strings.IsFalsy(qc_remote_workflow) }}" call: func: testplugin.Noop() trigger: CONFIGURE timeout: 1s critical: false - name: qc-remote-workflow-fwd # GLO is not a detector so we won't iterate on it with 'detectors' and we need special enable logic enabled: "{{ 'MCH' in json.Unmarshal(detectors) }}" vars: qc_remote_workflow: "{{ util.PrefixedOverride( 'qc_remote_workflow', 'glo' ) }}" qc_dpl_command: "{{ util.PrefixedOverride( 'qc_dpl_command', 'glo' ) }}" qc_remote_machine: "{{ util.PrefixedOverride( 'qc_remote_machine', 'glo' ) }}" shm_segment_size: "{{ util.PrefixedOverride( 'qc_shm_segment_size', 'glo' ) }}" detector: GLO constraints: - attribute: machine_id value: "{{ qc_remote_machine }}" roles: - name: glo-fwd-mchmid enabled: "{{ glo_fwd_mtch_qc_enabled == 'true' && qc_remote_jit_enabled == 'true' && 'MFT' in json.Unmarshal(detectors) && !('MID' in json.Unmarshal(detectors)) }}" include: "{{ qc_remote_jit_enabled == 'true' ? dpl.GenerateFromUri('glo-mftmch-mtch-qcmn-remote') : '' }}" - name: glo-fwd-mftmch enabled: "{{ glo_fwd_mtch_qc_enabled == 'true' && qc_remote_jit_enabled == 'true' && 'MID' in json.Unmarshal(detectors) && !('MFT' in json.Unmarshal(detectors)) }}" include: "{{ qc_remote_jit_enabled == 'true' ? dpl.GenerateFromUri('glo-mchmid-mtch-qcmn-remote') : '' }}" - name: glo-fwd-mftmchmid enabled: "{{ glo_fwd_mtch_qc_enabled == 'true' && qc_remote_jit_enabled == 'true' && 'MFT' in json.Unmarshal(detectors) && 'MID' in json.Unmarshal(detectors) }}" include: "{{ qc_remote_jit_enabled == 'true' ? dpl.GenerateFromUri('glo-mftmchmid-mtch-qcmn-remote') : '' }}" # If the fwd_qc_remote_workflow is none, we deploy a ghost role that does nothing to preserve # control tree state management. // FIXME: this is probably not needed anymore - name: dpl-noop-subwf enabled: "{{ strings.IsFalsy(qc_remote_workflow) }}" call: func: testplugin.Noop() trigger: CONFIGURE timeout: 1s critical: false - name: qc-remote-workflow-ctp # GLO is not a detector so we won't iterate on it with 'detectors' and we need special enable logic enabled: "{{ ctp_readout_enabled == 'true' }}" vars: qc_remote_workflow: "{{ util.PrefixedOverride( 'qc_remote_workflow', 'ctp' ) }}" qc_dpl_command: "{{ util.PrefixedOverride( 'qc_dpl_command', 'ctp' ) }}" qc_remote_machine: "{{ util.PrefixedOverride( 'qc_remote_machine', 'ctp' ) }}" shm_segment_size: "{{ util.PrefixedOverride( 'qc_shm_segment_size', 'ctp' ) }}" detector: CTP constraints: - attribute: machine_id value: "{{ qc_remote_machine }}" roles: - name: dpl enabled: "{{ qc_remote_jit_enabled == 'false' && !strings.IsFalsy(qc_remote_workflow) }}" include: "{{ qc_remote_workflow }}" - name: dpl enabled: "{{ qc_remote_jit_enabled == 'true' && !strings.IsFalsy(qc_remote_workflow) && strings.IsFalsy(qc_dpl_command) }}" include: "{{ qc_remote_jit_enabled == 'true' ? dpl.GenerateFromUri(qc_remote_workflow) : '' }}" - name: dpl enabled: "{{ qc_remote_jit_enabled == 'true' && !strings.IsFalsy(qc_dpl_command) }}" include: "{{ qc_remote_jit_enabled == 'true' ? dpl.Generate(qc_dpl_command) : '' }}" # If the ctp_qc_remote_workflow is none, we deploy a ghost role that does nothing to preserve # control tree state management. FIXME: this is probably not needed anymore - name: dpl-noop-subwf enabled: "{{ strings.IsFalsy(qc_remote_workflow) }}" call: func: testplugin.Noop() trigger: CONFIGURE timeout: 1s critical: false - name: dcs enabled: "{{dcs_enabled == 'true'}}" defaults: ############################### # DCS Panel ############################### dcs_detectors: "{{ json.Marshal(json.Sort(json.Unmarshal(detectors))) }}" dcs_sor_parameters: !public value: "{}" type: string label: "Global SOR parameters" description: "additional parameters for the DCS SOR" widget: editBox panel: DCS index: 2 visibleif: $$dcs_enabled === "true" dcs_eor_parameters: !public value: "{}" type: string label: "Global EOR parameters" description: "additional parameters for the DCS EOR" widget: editBox panel: DCS index: 3 visibleif: $$dcs_enabled === "true" roles: - name: pfr call: func: dcs.PrepareForRun() trigger: before_CONFIGURE # PFR cannot be moved earlier because it would increase unreasonably deployment failures timeouts. To be revisited if/when we have a way to abort DCS PFR executions. await: after_CONFIGURE-1 timeout: "{{ dcs_pfr_timeout }}" critical: false - name: sor call: func: dcs.StartOfRun() trigger: before_START_ACTIVITY+100 timeout: "{{ dcs_sor_timeout }}" critical: true - name: eor call: func: dcs.EndOfRun() trigger: after_STOP_ACTIVITY-50 timeout: "{{ dcs_eor_timeout }}" critical: true - name: error-cleanup call: func: dcs.Cleanup() trigger: after_GO_ERROR-1 timeout: "{{ dcs_cleanup_timeout }}" critical: false - name: destroy-cleanup call: func: dcs.Cleanup() trigger: DESTROY timeout: "{{ dcs_cleanup_timeout }}" critical: false - name: dd-scheduler enabled: "{{ddsched_enabled == 'true'}}" roles: - name: initialize call: func: ddsched.PartitionInitialize() trigger: before_CONFIGURE # this has to run in parallel with STFSenders CONFIGURE await: after_CONFIGURE-1 timeout: "{{ ddsched_initialize_timeout }}" critical: true - name: terminate call: func: ddsched.PartitionTerminate() trigger: after_RESET-1 timeout: "{{ ddsched_terminate_timeout }}" critical: true - name: cleanup call: func: ddsched.EnsureTermination() trigger: DESTROY timeout: "{{ ddsched_cleanup_timeout }}" critical: false - name: odc enabled: "{{odc_enabled == 'true'}}" vars: odc_resources: '{{strings.TrimSpace(odc_resources_spec) == "default" ? "[ {\"zone\":\"online\", \"n\":\"" + odc_n_epns + "\"}, {\"zone\":\"calib\"} ]" : odc_resources_spec }}' odc_script: '{{ odc_enabled == "true" ? odc.GenerateEPNWorkflowScript() : "" }}' roles: - name: deploy enabled: "{{odc_partitions_cleanup == 'true'}}" call: func: odc.PreDeploymentCleanup() trigger: before_DEPLOY-100 await: before_DEPLOY-100 timeout: "{{ odc_partition_cleanup_timeout }}" critical: false - name: part-init call: func: odc.PartitionInitialize() trigger: before_DEPLOY await: after_DEPLOY-1 timeout: "{{ odc_partitioninitialize_timeout }}" critical: true - name: configure call: func: odc.Configure() trigger: after_CONFIGURE-1 # it's started only once stfsenders are in CONFIGURED, so TFBuilder does not produce errors when connecting to STFSenders. However, TFBuilder would eventually connect anyway, so there is no strong justification for delaying this. See OCTRL-607. await: after_CONFIGURE-1 timeout: "{{ odc_configure_timeout }}" critical: true - name: start call: func: odc.Start() trigger: before_START_ACTIVITY+100 await: after_START_ACTIVITY-10 timeout: "{{ odc_start_timeout }}" critical: true - name: stop call: func: odc.Stop() trigger: before_STOP_ACTIVITY await: after_STOP_ACTIVITY-50 timeout: "{{ odc_stop_timeout }}" critical: true - name: go-error call: func: odc.EnsureStop() trigger: before_GO_ERROR await: after_GO_ERROR-1 timeout: "{{ odc_goerror_timeout }}" critical: false - name: reset call: func: odc.Reset() trigger: before_RESET await: after_RESET-1 timeout: "{{ odc_reset_timeout }}" critical: true - name: part-term call: func: odc.PartitionTerminate() trigger: after_RESET+100 await: after_RESET+100 timeout: "{{ odc_partitionterminate_timeout }}" critical: true - name: cleanup enabled: "{{odc_partitions_cleanup == 'true'}}" call: func: odc.EnsureCleanup() trigger: DESTROY timeout: "{{ odc_cleanup_timeout }}" critical: false - name: legacy-cleanup enabled: "{{odc_partitions_cleanup == 'false'}}" call: func: odc.EnsureCleanupLegacy() trigger: DESTROY timeout: "1m" critical: false - name: trg enabled: "{{trg_enabled == 'true'}}" defaults: trg_detectors: "{{ json.Marshal(json.Sort(json.Unmarshal(detectors))) }}" trg_runtime_config: "{{ runtime.Get('trg/ltu', trg_runtime_config_file) }}" trg_global_config: "{{ runtime.Get('trg/ctp', trg_load_parameters) }}" roles: - name: pfr enabled: "{{'TPC' in json.Unmarshal(detectors)}}" call: func: trg.PrepareForRun() trigger: before_START_ACTIVITY-200 timeout: "{{ trg_pfr_timeout }}" critical: true - name: load call: func: trg.RunLoad() trigger: before_START_ACTIVITY+10 timeout: "{{ trg_load_timeout }}" critical: true - name: start call: func: trg.RunStart() trigger: after_START_ACTIVITY-10 timeout: "{{ trg_start_timeout }}" critical: true - name: stop call: func: trg.RunStop() trigger: before_STOP_ACTIVITY-10 timeout: "{{ trg_stop_timeout }}" critical: false - name: unload call: func: trg.RunUnload() trigger: after_STOP_ACTIVITY-100 timeout: "{{ trg_unload_timeout }}" critical: false - name: errorensurerunstop call: func: trg.EnsureRunStop() trigger: before_GO_ERROR-10 timeout: "{{ trg_stop_timeout }}" critical: false - name: errorensurerununload call: func: trg.EnsureRunUnload() trigger: before_GO_ERROR-9 timeout: "{{ trg_unload_timeout }}" critical: false - name: destroyensurerunstop call: func: trg.EnsureRunStop() trigger: DESTROY-100 timeout: "{{ trg_stop_timeout }}" critical: false - name: destroyensurerununload call: func: trg.EnsureRunUnload() trigger: DESTROY-99 timeout: "{{ trg_unload_timeout }}" critical: false - name: ccdb enabled: "{{ccdb_enabled == 'true'}}" roles: - name: start call: func: ccdb.RunStart() trigger: before_START_ACTIVITY+100 timeout: "{{ ccdb_start_timeout }}" critical: false - name: stop call: func: ccdb.RunStop() trigger: after_STOP_ACTIVITY timeout: "{{ ccdb_stop_timeout }}" critical: false - name: destroy call: func: ccdb.RunStop() trigger: DESTROY timeout: "{{ ccdb_stop_timeout }}" critical: false - name: error # the plugin makes sure to publish an object only if we go to error after a run was started and only once call: func: ccdb.RunStop() trigger: after_GO_ERROR timeout: "{{ ccdb_stop_timeout }}" critical: false - name: bookkeeping enabled: "{{bookkeeping_enabled == 'true'}}" roles: - name: startrun enabled: "{{ bookkeeping_consuming_kafka != 'true' }}" call: func: bookkeeping.StartOfRun() trigger: before_START_ACTIVITY+10 timeout: 10s critical: false - name: retrievefillinfoatsor call: func: bookkeeping.RetrieveFillInfo() trigger: before_START_ACTIVITY+11 timeout: 10s critical: false - name: updaterunstart enabled: "{{ bookkeeping_consuming_kafka != 'true' }}" call: func: bookkeeping.UpdateRunStart() trigger: after_START_ACTIVITY+100 timeout: 10s critical: false - name: updaterunstop enabled: "{{ bookkeeping_consuming_kafka != 'true' }}" call: func: bookkeeping.UpdateRunStop() trigger: after_STOP_ACTIVITY+100 timeout: 10s critical: false - name: updaterungoerror enabled: "{{ bookkeeping_consuming_kafka != 'true' }}" call: func: bookkeeping.UpdateRunStop() trigger: after_GO_ERROR+100 timeout: 10s critical: false - name: updaterundestroy enabled: "{{ bookkeeping_consuming_kafka != 'true' }}" call: func: bookkeeping.UpdateRunStop() trigger: DESTROY timeout: 10s critical: false - name: startenv enabled: "{{ bookkeeping_consuming_kafka != 'true' }}" call: func: bookkeeping.CreateEnv() trigger: before_DEPLOY timeout: 10s critical: false - name: deploy enabled: "{{ bookkeeping_consuming_kafka != 'true' }}" call: func: bookkeeping.UpdateEnv() trigger: after_DEPLOY+100 timeout: 10s critical: false - name: configure enabled: "{{ bookkeeping_consuming_kafka != 'true' }}" call: func: bookkeeping.UpdateEnv() trigger: after_CONFIGURE+100 timeout: 10s critical: false - name: reset enabled: "{{ bookkeeping_consuming_kafka != 'true' }}" call: func: bookkeeping.UpdateEnv() trigger: after_RESET+100 timeout: 10s critical: false - name: start enabled: "{{ bookkeeping_consuming_kafka != 'true' }}" call: func: bookkeeping.UpdateEnv() trigger: after_START_ACTIVITY+100 timeout: 10s critical: false - name: stop enabled: "{{ bookkeeping_consuming_kafka != 'true' }}" call: func: bookkeeping.UpdateEnv() trigger: after_STOP_ACTIVITY+100 timeout: 10s critical: false - name: exit enabled: "{{ bookkeeping_consuming_kafka != 'true' }}" call: func: bookkeeping.UpdateEnv() trigger: after_EXIT timeout: 10s critical: false - name: goerror enabled: "{{ bookkeeping_consuming_kafka != 'true' }}" call: func: bookkeeping.UpdateEnv() trigger: after_GO_ERROR+100 timeout: 10s critical: false - name: recover enabled: "{{ bookkeeping_consuming_kafka != 'true' }}" call: func: bookkeeping.UpdateEnv() trigger: after_RECOVER+100 timeout: 10s critical: false - name: destroy enabled: "{{ bookkeeping_consuming_kafka != 'true' }}" call: func: bookkeeping.UpdateEnv() trigger: DESTROY timeout: 10s critical: false - name: lhc enabled: "{{ lhc_enabled == 'true' }}" roles: - name: deploy call: func: lhc.UpdateFillInfo() trigger: before_DEPLOY-50 timeout: 5s critical: true - name: sor call: func: lhc.UpdateFillInfo() trigger: before_START_ACTIVITY-50 timeout: 5s critical: true - name: eor call: func: lhc.UpdateFillInfo() trigger: before_STOP_ACTIVITY-50 timeout: 5s critical: true - name: error call: func: lhc.UpdateFillInfo() trigger: before_GO_ERROR-50 timeout: 5s critical: false - name: kafka enabled: "{{ kafka_enabled == 'true' }}" roles: - name: standby call: func: kafka.PublishEnterStateUpdate() trigger: enter_STANDBY timeout: 5s critical: false - name: deployed call: func: kafka.PublishEnterStateUpdate() trigger: enter_DEPLOYED timeout: 5s critical: false - name: configured call: func: kafka.PublishEnterStateUpdate() trigger: enter_CONFIGURED timeout: 5s critical: false - name: running call: func: kafka.PublishEnterStateUpdate() trigger: enter_RUNNING timeout: 5s critical: false - name: error call: func: kafka.PublishEnterStateUpdate() trigger: enter_ERROR timeout: 5s critical: false - name: destroy call: func: kafka.PublishEnterStateUpdate() trigger: DESTROY timeout: 5s critical: false - name: leave_standby call: func: kafka.PublishLeaveStateUpdate() trigger: leave_STANDBY timeout: 5s critical: false - name: leave_deployed call: func: kafka.PublishLeaveStateUpdate() trigger: leave_DEPLOYED timeout: 5s critical: false - name: leave_configured call: func: kafka.PublishLeaveStateUpdate() trigger: leave_CONFIGURED timeout: 5s critical: false - name: leave_running call: func: kafka.PublishLeaveStateUpdate() trigger: leave_RUNNING timeout: 5s critical: false - name: leave_error call: func: kafka.PublishLeaveStateUpdate() trigger: leave_ERROR timeout: 5s critical: false - name: before_start_activity call: func: kafka.PublishStartActivityUpdate() trigger: before_START_ACTIVITY+50 timeout: 5s critical: false