|
2 | 2 | [](https://godoc.org/github.com/AliceO2Group/Control) |
3 | 3 | # AliECS |
4 | 4 |
|
5 | | -The ALICE Experiment Control System |
| 5 | +The ALICE Experiment Control System (**AliECS**) is the piece of software to drive and control data taking activities in the experiment. |
| 6 | +It is a distributed system that combines state of the art cluster resource management and experiment control functionalities into a single comprehensive solution. |
6 | 7 |
|
7 | | -## Install instructions |
| 8 | +Please refer to the [CHEP 2023 paper](https://doi.org/10.1051/epjconf/202429502027) for the latest design overview. |
8 | 9 |
|
9 | | -What is your use case? |
| 10 | +## How to get started |
10 | 11 |
|
11 | | -* I want to **run AliECS** and other O²/FLP software |
| 12 | +Regardless of your particular interests, it is recommended to get acquainted with the main [AliECS concepts](docs/handbook/concepts.md). |
12 | 13 |
|
13 | | - :arrow_right: [O²/FLP Suite deployment instructions](https://alice-flp.docs.cern.ch/system-configuration/utils/o2-flp-setup/) |
| 14 | +After that, please find your concrete use case: |
14 | 15 |
|
15 | | - These instructions apply to both single-node and multi-node deployments. |
| 16 | +### I want to **run AliECS** and other O²/FLP software |
16 | 17 |
|
17 | | - Contact [alice-o2-flp-support](mailto:alice-o2-flp-support@cern.ch) for assistance with provisioning and deployment. |
18 | | - |
19 | | -* I want to ensure AliECS can **run and control my process** |
| 18 | +See [O²/FLP Suite deployment instructions](https://alice-flp.docs.cern.ch/system-configuration/utils/o2-flp-setup/) |
20 | 19 |
|
21 | | - * My software is based on FairMQ and/or O² DPL |
22 | | - |
23 | | - :palm_tree: Nothing to do, AliECS natively supports FairMQ (and DPL) devices. |
24 | | - |
25 | | - * My software does not use FairMQ and/or DPL, but should be controlled through a state machine |
26 | | - |
27 | | - :telescope: See [the OCC documentation](occ/README.md) to learn how to integrate the O² Control and Configuration library with your software. [Readout](https://github.com/AliceO2Group/Readout) is currently the only example of this setup. |
28 | | - |
29 | | - * My software is a command line utility with no state machine |
30 | | - |
31 | | - :palm_tree: Nothing to do, AliECS natively supports generic commands. Make sure the task template for your command sets the control mode to `basic` ([see example](https://github.com/AliceO2Group/ControlWorkflows/blob/basic-tasks/tasks/sleep.yaml)). |
32 | | - |
33 | | -* I want to build and run AliECS for **development** purposes |
| 20 | +These instructions apply to both single-node and multi-node deployments. |
| 21 | +Contact [alice-o2-flp-support](mailto:alice-o2-flp-support@cern.ch) for assistance with provisioning and deployment. |
34 | 22 |
|
35 | | - :hammer_and_wrench: [Building instructions](https://alice-flp.docs.cern.ch/aliecs/building/) |
36 | | - |
37 | | - :arrow_right: [Running instructions](https://alice-flp.docs.cern.ch/aliecs/running/) |
| 23 | +There are two ways of interacting with AliECS: |
38 | 24 |
|
39 | | -* I want to communicate with AliECS via one of the plugins |
40 | | - |
41 | | - * [Receive updates on running environments via Kafka](docs/kafka.md) |
| 25 | +- The AliECS GUI (a.k.a. Control GUI, COG) - not in this repository, but included in most deployments, recommended |
42 | 26 |
|
43 | | -## Using AliECS |
| 27 | + :arrow_right: [AliECS GUI documentation](hacking/COG.md) |
44 | 28 |
|
45 | | -There are two ways of interacting with AliECS: |
46 | | - |
47 | | -* The AliECS GUI - not in this repository, but included in most deployments, recommended |
| 29 | +- `coconut` - the command-line control and configuration utility, included with AliECS core, typically for developers and advanced users |
48 | 30 |
|
49 | | - :arrow_right: [AliECS GUI documentation](hacking/COG.md) |
| 31 | + :arrow_right: [Using `coconut`](https://alice-flp.docs.cern.ch/aliecs/coconut/) |
| 32 | + |
| 33 | + :arrow_right: [`coconut` command reference](https://alice-flp.docs.cern.ch/aliecs/coconut/doc/coconut/) |
50 | 34 |
|
51 | | -* `coconut` - the command-line control and configuration utility, included with AliECS core |
| 35 | +### I want to ensure AliECS can **run and control my process** |
| 36 | + |
| 37 | +* **My software is based on FairMQ and/or O² DPL (Data Processing Later)** |
| 38 | + |
| 39 | + AliECS natively supports FairMQ (and DPL) devices. |
| 40 | + Head to [ControlWorkflows](https://github.com/AliceO2Group/ControlWorkflows) for instructions on how to configure your software to be controlled by AliECS. |
| 41 | + |
| 42 | +* **My software does not use FairMQ and/or DPL, but should be controlled through a state machine** |
| 43 | + |
| 44 | + See [the OCC documentation](occ/README.md) to learn how to integrate the O² Control and Configuration library with your software. [Readout](https://github.com/AliceO2Group/Readout) is an example of this setup. |
| 45 | + |
| 46 | + Once ready, head to [ControlWorkflows](https://github.com/AliceO2Group/ControlWorkflows) for instructions on how to configure it to be controlled by AliECS. |
52 | 47 |
|
53 | | - :arrow_right: [Using `coconut`](https://alice-flp.docs.cern.ch/aliecs/coconut/) |
| 48 | +* **My software is a command line utility with no state machine** |
| 49 | + |
| 50 | + AliECS natively supports generic commands. |
| 51 | + Head to [ControlWorkflows](https://github.com/AliceO2Group/ControlWorkflows) for instructions to have your command ran by AliECS. |
| 52 | + Make sure the task template for your command sets the control mode to `basic` ([see example](https://github.com/AliceO2Group/ControlWorkflows/blob/master/tasks/o2-roc-cleanup.yaml)). |
54 | 53 |
|
55 | | - :arrow_right: [`coconut` command reference](https://alice-flp.docs.cern.ch/aliecs/coconut/doc/coconut/) |
| 54 | +### I want to develop AliECS |
| 55 | + |
| 56 | +:hammer_and_wrench: Welcome to the team, please head to [contributing instructions](/docs/CONTRIBUTING.md) |
| 57 | + |
| 58 | +### I want to receive updates about environments or services controlled by AliECS |
| 59 | + |
| 60 | +:pager: Learn more about the [kafka event service](/docs/kafka.md) |
| 61 | + |
| 62 | +### I want my application to send requests to AliECS |
| 63 | + |
| 64 | +:scroll: See the API docs of AliECS components: |
| 65 | +- [core gRPC server](/docs/apidocs_aliecs.md) |
| 66 | +- [apricot gRPC server](/docs/apidocs_apricot.md) |
| 67 | +- [apricot HTTP server](/apricot/docs/apricot_http_service.md) |
| 68 | + |
| 69 | +### I want my service to be sent requests by AliECS |
| 70 | + |
| 71 | +:electric_plug: Learn more about the [plugin system](/core/integration/README.md) |
| 72 | + |
| 73 | +## Table of Contents |
| 74 | + |
| 75 | +* Introduction |
| 76 | + * [Basic Concepts](/docs/handbook/concepts.md#basic-concepts) |
| 77 | + * [Tasks](/docs/handbook/concepts.md#tasks) |
| 78 | + * [Workflows, roles and environments](/docs/handbook/concepts.md#workflows-roles-and-environments) |
| 79 | + * [Design Overview](/docs/handbook/overview.md#design-overview) |
| 80 | + * [AliECS Structure](/docs/handbook/overview.md#aliecs-structure) |
| 81 | + * [Resource Management](/docs/handbook/overview.md#resource-management) |
| 82 | + * [FairMQ](/docs/handbook/overview.md#fairmq) |
| 83 | + * [State machines](/docs/handbook/overview.md#state-machines) |
| 84 | + |
| 85 | +* Component reference |
| 86 | + * AliECS GUI |
| 87 | + * [AliECS GUI overview](/hacking/COG.md) |
| 88 | + * AliECS core |
| 89 | + * [Workflow Configuration](/docs/handbook/configuration.md#workflow-configuration) |
| 90 | + * [The AliECS workflow template language](/docs/handbook/configuration.md#the-aliecs-workflow-template-language) |
| 91 | + * [Workflow template structure](/docs/handbook/configuration.md#workflow-template-structure) |
| 92 | + * [Task roles](/docs/handbook/configuration.md#task-roles) |
| 93 | + * [Call roles](/docs/handbook/configuration.md#call-roles) |
| 94 | + * [Aggregator roles](/docs/handbook/configuration.md#aggregator-roles) |
| 95 | + * [Iterator roles](/docs/handbook/configuration.md#iterator-roles) |
| 96 | + * [Include roles](/docs/handbook/configuration.md#include-roles) |
| 97 | + * [Template expressions](/docs/handbook/configuration.md#template-expressions) |
| 98 | + * [Task Configuration](/docs/handbook/configuration.md#task-configuration) |
| 99 | + * [Task template structure](/docs/handbook/configuration.md#task-template-structure) |
| 100 | + * [Variables pushed to controlled tasks](/docs/handbook/configuration.md#variables-pushed-to-controlled-tasks) |
| 101 | + * [Resource wants and limits](/docs/handbook/configuration.md#resource-wants-and-limits) |
| 102 | + * [Integration plugins](/core/integration/README.md#integration-plugins) |
| 103 | + * [Plugin system overview](/core/integration/README.md#plugin-system-overview) |
| 104 | + * [Integrated service operations](/core/integration/README.md#integrated-service-operations) |
| 105 | + * [Bookkeeping](/core/integration/README.md#bookkeeping) |
| 106 | + * [CCDB](/core/integration/README.md#ccdb) |
| 107 | + * [DCS](/core/integration/README.md#dcs) |
| 108 | + * [DCS operations](/core/integration/README.md#dcs-operations) |
| 109 | + * [DCS PrepareForRun behaviour](/core/integration/README.md#dcs-prepareforrun-behaviour) |
| 110 | + * [DCS StartOfRun behaviour](/core/integration/README.md#dcs-startofrun-behaviour) |
| 111 | + * [DCS EndOfRun behaviour](/core/integration/README.md#dcs-endofrun-behaviour) |
| 112 | + * [DD Scheduler](/core/integration/README.md#dd-scheduler) |
| 113 | + * [Kafka (legacy)](/core/integration/README.md#kafka-legacy) |
| 114 | + * [ODC](/core/integration/README.md#odc) |
| 115 | + * [Test plugin](/core/integration/README.md#test-plugin) |
| 116 | + * [Trigger](/core/integration/README.md#trigger) |
| 117 | + * [Environment operation order](/docs/handbook/operation_order.md#environment-operation-order) |
| 118 | + * [State machine triggers](/docs/handbook/operation_order.md#state-machine-triggers) |
| 119 | + * [START_ACTIVITY (Start Of Run)](/docs/handbook/operation_order.md#start_activity-start-of-run) |
| 120 | + * [STOP_ACTIVITY (End Of Run)](/docs/handbook/operation_order.md#stop_activity-end-of-run) |
| 121 | + * [Protocol documentation](/docs/apidocs_aliecs.md) |
| 122 | + * coconut |
| 123 | + * [The O² control and configuration utility overview](/coconut/README.md#the-o-control-and-configuration-utility-overview) |
| 124 | + * [Configuration file](/coconut/README.md#configuration-file) |
| 125 | + * [Using coconut](/coconut/README.md#using-coconut) |
| 126 | + * [Creating an environment](/coconut/README.md#creating-an-environment) |
| 127 | + * [Controlling an environment](/coconut/README.md#controlling-an-environment) |
| 128 | + * [Command reference](/coconut/doc/coconut.md) |
| 129 | + * apricot |
| 130 | + * [ALICE configuration service overview](/apricot/README.md#alice-configuration-service-overview) |
| 131 | + * [HTTP service](/apricot/docs/apricot_http_service.md#apricot-http-service) |
| 132 | + * [Configuration](/apricot/docs/apricot_http_service.md#configuration) |
| 133 | + * [Usage and options](/apricot/docs/apricot_http_service.md#usage-and-options) |
| 134 | + * [Examples](/apricot/docs/apricot_http_service.md#examples) |
| 135 | + * [Protocol documentation](/docs/apidocs_apricot.md) |
| 136 | + * [Command reference](/apricot/docs/apricot.md) |
| 137 | + * occ |
| 138 | + * [O² Control and Configuration Components](/occ/README.md#o-control-and-configuration-components) |
| 139 | + * [Developer quick start instructions for OCClib](/occ/README.md#developer-quick-start-instructions-for-occlib) |
| 140 | + * [Manual build instructions](/occ/README.md#manual-build-instructions) |
| 141 | + * [Run example](/occ/README.md#run-example) |
| 142 | + * [The OCC state machine](/occ/README.md#the-occ-state-machine) |
| 143 | + * [Single process control with peanut](/occ/README.md#single-process-control-with-peanut) |
| 144 | + * [OCC API debugging with grpcc](/occ/README.md#occ-api-debugging-with-grpcc) |
| 145 | + * [Dummy process example for OCC library](/occ/occlib/examples/dummy-process/README.md#dummy-process-example-for-occ-library) |
| 146 | + * [Protocol documentation](/docs/apidocs_occ.md) |
| 147 | + * peanut |
| 148 | + * [Process control and execution utility overview](/occ/peanut/README.md) |
| 149 | + * Event service |
| 150 | + * [Kafka producer functionality in AliECS core](/docs/kafka.md#kafka-producer-functionality-in-aliecs-core) |
| 151 | + * [Making sure that AliECS sends messages](/docs/kafka.md#making-sure-that-aliecs-sends-messages) |
| 152 | + * [Currently available topics](/docs/kafka.md#currently-available-topics) |
| 153 | + * [Decoding the messages](/docs/kafka.md#decoding-the-messages) |
| 154 | + * [Legacy events: Kafka plugin](/docs/kafka.md#legacy-events-kafka-plugin) |
| 155 | + * [Making sure that AliECS sends messages](/docs/kafka.md#making-sure-that-aliecs-sends-messages-1) |
| 156 | + * [Currently available topics](/docs/kafka.md#currently-available-topics-1) |
| 157 | + * [Decoding the messages](/docs/kafka.md#decoding-the-messages-1) |
| 158 | + * [Getting Start of Run and End of Run notifications](/docs/kafka.md#getting-start-of-run-and-end-of-run-notifications) |
| 159 | + * [Using Kafka debug tools](/docs/kafka.md#using-kafka-debug-tools) |
| 160 | + |
| 161 | +* Developer documentation |
| 162 | + * [Contributing](/docs/CONTRIBUTING.md) |
| 163 | + * [Package pkg.go.dev documentation](https://pkg.go.dev/github.com/AliceO2Group/Control) |
| 164 | + * [Building AliECS](/docs/building.md#building-aliecs) |
| 165 | + * [Overview](/docs/building.md#overview) |
| 166 | + * [Building with aliBuild](/docs/building.md#building-with-alibuild) |
| 167 | + * [Manual build](/docs/building.md#manual-build) |
| 168 | + * [Go environment](/docs/building.md#go-environment) |
| 169 | + * [Clone and build (Go components only)](/docs/building.md#clone-and-build-go-components-only) |
| 170 | + * [Makefile reference](/docs/makefile_reference.md) |
| 171 | + * [Component Configuration](/docs/handbook/appconfiguration.md#component-configuration) |
| 172 | + * [Apache Mesos](/docs/handbook/appconfiguration.md#apache-mesos) |
| 173 | + * [Connectivity to controlled nodes](/docs/handbook/appconfiguration.md#connectivity-to-controlled-nodes) |
| 174 | + * [Running AliECS as a developer](/docs/running.md#running-aliecs-as-a-developer) |
| 175 | + * [Running the AliECS core](/docs/running.md#running-the-aliecs-core) |
| 176 | + * [Running AliECS in production](/docs/running.md#running-aliecs-in-production) |
| 177 | + * [Health checks](/docs/running.md#health-checks) |
| 178 | + * [Development Information](/docs/development.md#development-information) |
| 179 | + * [Release Procedure](/docs/development.md#release-procedure) |
| 180 | + * [OCC API debugging with grpcc](/docs/using_grpcc_occ.md#occ-api-debugging-with-grpcc) |
| 181 | + |
| 182 | +* Resources |
| 183 | + * T. Mrnjavac et. al, [AliECS: A New Experiment Control System for the ALICE Experiment](https://doi.org/10.1051/epjconf/202429502027), CHEP23 |
| 184 | + |
0 commit comments