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.
nodejs
>= 16.x
git clone https://github.com/AliceO2Group/WebUi.git
cd WebUi/Control
npm ci
cp config-default.js config.js
config.js
file to set endpoint details (More information in section Configuration)npm start
hostname
- gRPC hostnameport
- gRPC porttimeout
- ms, gRPC deadline for service calls; Default value 30000 msmaxMessageLength
- MB, gRPC message size limit; Default value 50 MBlabel
- name of the gRPC service,package
- name of the gRPC packagehostname
- gRPC hostnameport
- gRPC porttimeout
- ms, gRPC deadline for service calls; Default value 30000 msmaxMessageLength
- MB, gRPC message size limit; Default value 50 MBlabel
- name of the gRPC servicepackage
- name of the gRPC packageurl
- built URL which points to grafana instance: <protocol>://<instance>:<port>
url
- URL which points to Bookkeeping API: <protocol>://<instance>:<port>
, <protocol>://<domain_name>
token
- token needed for permissions to retrieve data from Bookkeeping[refreshRate = 10000]
- number representing how often should the data from Bookkeeping be refreshed in ms;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).
Use of a Consul instance is optional
hostname
- Consul head node hostnameport
- Consul head node portui
- Consul UI URL (will default to hostname:port
)flpHardwarePath
- Prefix for KV Store for the content about the FLPs machinesreadoutPath
- Prefix for KV Store for readout’s configurationreadoutCardPath
- Prefix for KV Store for readout-card’s configurationqcPath
- Prefix for KV Store for quality-control’s configurationkVPrefix
- Name of the Consul cluster used by AliceO2Use 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.
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.
url
- Prebuilt URL which is in format host:port
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.
url
- Prebuilt URL which is in format host:port
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.
url
- Prebuilt URL which is in format host:port
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.
url
- Prebuilt URL which is in format host:port
Use of utils field is optional. Here, a user can specify configuration fields for various uses of AliECS GUI:
refreshTask
- specifies how often (ms) the page taskList
should refresh its content if the user has it opened; Default value is 10000
Configuration
page by clicking on the Links
sub-menu from the left side-bar. Here, CRUs will be grouped by detectors and hostSave
button, the updates will be saved directly in Consul for the selected hostsSave & Configure
button:
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.
Tasks
page by clicking on the Task list
sub-menu from the left side-barHere, 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
Clean Resources
button to request AliECS Core to run the o2-roc-cleanup
workflowClean Tasks
button to request AliECS Core to remove all tasks that do not belong to an environmentThe GUI adapts its view depending on SSO roles configured in Application Portal (see more details in OpenID docs). Currently supported roles are:
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
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:
===
, !==
, >
, <
, >=
, <=
(string comparison)includes(value)
key.match(value)
(TODO)Control project makes use of two workflows.
ubuntu
macOS
tgz
file which contains an archive of the project. This can than be used for local repositories installations