WebUi

Control GUI

Actions Status codecov

Description

This is a prototype of Control GUI. It aims to replace current ECS HI and provide intuitive way of controlling the O2 data taking.

It communicates with Control agent over gRPC.

Requirements

Installation

  1. git clone https://github.com/AliceO2Group/WebUi.git
  2. cd WebUi/Control
  3. npm ci
  4. cp config-default.js config.js
  5. Modify config.js file to set endpoint details (More information in section Configuration)
  6. Start web app: npm start
  7. Open browser and navigate to http://localhost:8080

Configuration

O2Control gRPC

Apricot gRPC

Grafana

Bookkeeping

Bookkeeping is going to be used as the source of latest CALIBRATION runs as per the definition. Detectors may need these run before stable beams, with some needing none, some only one run and others multiple ones defined by the RUN TYPE attribute. As this can vary depending on the period, the types corresponding to a detector will be defined and retrieved from the KV store of O2Apricot (key and value TBD).

Consul

Use of a Consul instance is optional

Notification service

Use of a Notification service is optional. It is being used for prompting and receiving notifications from global Notification Service, see more in Notification service framework guide.

InfoLogger GUI

Use of InfoLogger GUI instance is optional. Configuration details about it are being used only for displaying URLs to help the user navigate the logs of its actions.

InfoLogger EPN GUI

Use of InfoLogger EPN GUI instance is optional. Configuration details about it are being used only for displaying URLs to help the user navigate the logs of EPN actions.

QualityControl GUI

Use of QualityControl GUI instance is optional. Configuration details about it are being used only for building URLs to help the user navigate the objects created within an environment.

Bookkeeping GUI

Use of Bookkeeping GUI instance is optional. Configuration details about it are being used only for building URLs to help the user navigate to the run details of their environments.

Utils

Use of utils field is optional. Here, a user can specify configuration fields for various uses of AliECS GUI:

Features

Calibration Page

Global Runs Page

Ignore FLPs by Run Type

GUI

  1. Lock interface - single user is allowed to execute commands, others act as spectators
  2. List, create, control and shutdown environments
  3. External resources access:
    • gRPC
    • Consul - used for KV Store
    • Kafka-Node - used for prompting Native Browser Notifications to the user
    • Grafana - used to display control environment plots
  1. Navigate to the Configuration page by clicking on the Links sub-menu from the left side-bar. Here, CRUs will be grouped by detectors and host
  2. Select the hosts that should be updated by using either the check-box in front of the host name or the checkbox in front of the detector
  3. Update the User Logic or Links[0-12] state of the selected hosts accordingly
  4. Lock the interface via the top-left lock button
  5. By pressing the top-right grey Save button, the updates will be saved directly in Consul for the selected hosts
  6. By pressing the top-right blue Save & Configure button:
    • the updates will be saved directly in Consul for the selected hosts;
    • the CRUs of the selected hosts will be updated with the configuration previously saved in Consul.

It is important to understand that the Save & Configure action will also apply any other CRU changes that are present in Consul and NOT only the state of the links which are updatable via the Interface.

Clean Resources/Tasks

  1. Navigate to the Tasks page by clicking on the Task list sub-menu from the left side-bar

Here, tasks will be grouped by host and each host has an in-line button to provide a download button for the logs of that machine

  1. Lock the interface via the top-left lock button
  2. Use the top-right orange text Clean Resources button to request AliECS Core to run the o2-roc-cleanup workflow
  3. Use the top-right red text Clean Tasks button to request AliECS Core to remove all tasks that do not belong to an environment

Roles

The GUI adapts its view depending on SSO roles configured in Application Portal (see more details in OpenID docs). Currently supported roles are:

Integration with ControlWorkflows

List of fixed variables used by AliECS GUI for user logic

There is a set of variables which are fixed and used by the AliECS GUI. If there is a need for changing the name of these variables in the ControlWorkflows repository, then the AliECS GUI developers should be notified to update accordingly.

dcs_enabled
ddsched_enabled
dd_enabled
epn_enabled
minimal_dpl_enabled
odc_topology
odc_enabled
pdp_config_option
pdp_o2_data_processing_hash
pdp_o2_data_processing_path
pdp_topology_description_library_file
pdp_workflow_name
qc_config_uri
qcdd_enabled
readout_cfg_uri
trg_enabled

Dynamically built Workflow Panels

From version 1.28.0 onwards, the AliECS GUI allows the user to define custom workflow templates. These are defined in YAML in the ControlWorkflows repository.

Each variable belonging to a template will follow the definition present in the protofile and will be dynamically built and displayed by the AliECS GUI based on the conditions provided. e.g

  "roc_ctp_emulator_enabled": {
    "allowedValues": [],
    "defaultValue": "11",
    "type": 1,
    "label": "ROC CTP emulator",
    "description": "", // EDIT_BOX of type number with no priority on index'
    "panel": "mainPanel"
  },
  "dcs_sor_parameters": {
    "allowedValues": [],
    "defaultValue": "Some Default Value",
    "type": 0,
    "label": "DCS SOR parameters",
    "description": "", // EDIT_BOX with condition to be displayed only if component roc_ctp_emulator_enabled has a value higher or equal to 20
    "panel": "dcsPanel",
    "visibleIf": "$$roc_ctp_emulator_enabled >= \"20\""
  },

In the example above, the first variable is defined as an edit box of type 1 (number) while the second variable is defined as an edit box of type 0 (string) which will only be displayed if the value from the first field is greater than "20".

More examples can be seen in the test file

The visibleIf fields accepts the following 3 conditions that can be combined using logical operators:

Continuous Integration Workflows

Control project makes use of two workflows.

control.yml

release.yml

proto-sync.yml