Tango Station Control
Station Control software related to Tango devices.
Index
- Installation
- User documentation (ReadTheDocs (Sphinx / ReStructuredText))
- Docker compose documentation
- Developer Documentation
- Source code documentation
- Unit tests
- Integration tests
- Release Notes
Installation
Prerequisites
After checking out this repo, be sure to also check out the submodules:
git submodule init
git submodule update
You will also need:
- docker
- docker-compose
- make
- bash
Bootstrap
The bootstrap procedure is needed only once. First we build all docker containers, and load the initial configuration. This may take a while:
cd docker-compose
make bootstrap
By default bootstrap will configure the station to use simulators. You can lookup alternative configurations in the CDB directory.
Now we can start all containers, and make sure everything is up:
make start
make status
If not, you can inspect why with docker logs <container>
. The containers will
automatically be restarted on reboot or failure. Stop them explicitly to bring
them down (make stop <container>
).
Most notably, you will have web interfaces available at:
- http://localhost:8888 (Jupyter Notebook)
- http://localhost:5601 (ElasticSearch)
- http://localhost:3000 (Grafana).
To create the appropriate indexes for ElasticSearch the following needs to be executed once while ElasticSearch is running:
cd docker-compose/elk
curl -X POST http://localhost:5601/api/saved_objects/_import -H "kbn-xsrf: true" --form file=@kibana/default-objects.ndjson
Development
For development you will need several dependencies including:
git g++ gcc make docker docker-compose shellcheck graphviz python3-dev \
python3-pip python3-tox libboost-python-dev libtango-cpp pkg-config
Of these docker-compose must be at least 2.0 and Python 3.7 or higher.
Alternatively, tox can be installed through pip using pip install tox
.
Finally, running unit tests relies on availability of casacore data see: lofar-device-base Dockerfile for details.
Versioning
When changing behavior a new version for Lofar Station Control should be reserved. To do this please follow semantic versioning.
Next change the version in the following places:
- The VERSION file.
- In test_writer_sst.py
for the
test_header_info
test. - Add a Release note for the given version.
- Once the merge requests is merged to master, add a tag with the version (just x.x.x not Vx.x.x)
Release Notes
- 0.1.2 Fix
StatisticsClient
accessinglast_invalid_packet_exception
parameter - 0.2.0 Extend
Beamlet
device with FPGA source address attributes