Skip to content

Commit ff52894

Browse files
committed
[doc] Table of Contents in README.md and filling missing bits
1 parent 960b757 commit ff52894

File tree

24 files changed

+476
-216
lines changed

24 files changed

+476
-216
lines changed

README.md

Lines changed: 174 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2,54 +2,192 @@
22
[![godoc](https://img.shields.io/badge/godoc-Reference-5272B4.svg)](https://godoc.org/github.com/AliceO2Group/Control)
33
# AliECS
44

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.
67

7-
## Install instructions
8+
Please refer to the [CHEP 2023 paper](https://doi.org/10.1051/epjconf/202429502027) for the latest design overview.
89

9-
What is your use case?
10+
## How to get started
1011

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).
1213

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:
1415

15-
These instructions apply to both single-node and multi-node deployments.
16+
### I want to **run AliECS** and other O²/FLP software
1617

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/)
2019

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.
3422

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:
3824

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
4226

43-
## Using AliECS
27+
:arrow_right: [AliECS GUI documentation](hacking/COG.md)
4428

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
4830

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/)
5034

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.
5247

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)).
5453

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+
* [Metrics in ECS](/docs/metrics.md#metrics-in-ecs)
181+
* [Overview and simple usage](/docs/metrics.md#overview-and-simple-usage)
182+
* [Types and aggregation of metrics](/docs/metrics.md#types-and-aggregation-of-metrics)
183+
* [Metric types](/docs/metrics.md#metric-types)
184+
* [Aggregation](/docs/metrics.md#aggregation)
185+
* [Implementation details](/docs/metrics.md#implementation-details)
186+
* [Event loop](/docs/metrics.md#event-loop)
187+
* [Hashing to aggregate](/docs/metrics.md#hashing-to-aggregate)
188+
* [Sampling reservoir](/docs/metrics.md#sampling-reservoir)
189+
* [OCC API debugging with grpcc](/docs/using_grpcc_occ.md#occ-api-debugging-with-grpcc)
190+
191+
* Resources
192+
* T. Mrnjavac et. al, [AliECS: A New Experiment Control System for the ALICE Experiment](https://doi.org/10.1051/epjconf/202429502027), CHEP23
193+

apricot/README.md

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,9 @@
1-
# `APRICOT`
1+
# ALICE configuration service overview
22

3-
**A** **p**rocessor and **r**epos**i**tory for **co**nfiguration **t**emplates
3+
**A** **p**rocessor and **r**epos**i**tory for **co**nfiguration **t**emplates, or apricot, implements the configuration service for the ALICE data taking activities.
4+
It adds templating, load balancing and caching on top of the configuration store.
45

5-
The `o2-apricot` binary implements a centralized configuration (micro)service for ALICE O².
6-
7-
```
8-
Usage of bin/o2-apricot:
9-
--backendUri string URI of the Consul server or YAML configuration file (default "consul://127.0.0.1:8500")
10-
--listenPort int Port of apricot server (default 32101)
11-
--verbose Verbose logging
12-
```
13-
14-
Protofile: [apricot.proto](protos/apricot.proto)
6+
See also:
7+
* [apricot HTTP service](docs/apricot_http_service.md) - make essential cluster information available via a web server
8+
* Protofile: [apricot.proto](protos/apricot.proto)
9+
* [Command reference](docs/apricot.md)

apricot/docs/apricot.md

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,4 @@ Usage of bin/o2-apricot:
1313
--backendUri string URI of the Consul server or YAML configuration file (default "consul://127.0.0.1:8500")
1414
--listenPort int Port of apricot server (default 32101)
1515
--verbose Verbose logging
16-
```
17-
18-
### SEE ALSO
19-
20-
* [apricot HTTP service](apricot_http_service.md) - make essential cluster information available via a web server
16+
```

apricot/docs/apricot_http_service.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,4 @@ Besides configuration retrieval, the API also includes calls for browsing the co
4646
Getting a template-processed configuration payload for a component (entry `tpc-full-qcmn` for component `qc`, with `list_of_detectors` and `run_type` passed as template variables):
4747

4848
* In a browser: `http://localhost:32188/components/qc/ANY/any/tpc-full-qcmn?process=true&list_of_detectors=tpc,its&run_type=PHYSICS`
49-
* With `curl`: `curl http://127.0.0.1:32188/components/qc/ANY/any/tpc-full-qcmn\?process\=true\&list_of_detectors\=tpc,its\&run_type\=PHYSICS`
49+
* With `curl`: `curl http://127.0.0.1:32188/components/qc/ANY/any/tpc-full-qcmn\?process\=true\&list_of_detectors\=tpc,its\&run_type\=PHYSICS`

coconut/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# `coconut` - the O² control and configuration utility
1+
# The O² control and configuration utility overview
22

33
The O² **co**ntrol and **con**figuration **ut**ility is a command line program for interacting with the AliECS core.
44

0 commit comments

Comments
 (0)