engine issueshttps://gitlab.servus.at/aura/engine/-/issues2024-02-28T22:07:54+01:00https://gitlab.servus.at/aura/engine/-/issues/125[EPIC] Basic test suite for Engine2024-02-28T22:07:54+01:00David Trattnig[EPIC] Basic test suite for EngineParent: aura#175+
---
Test suite to cover the most important cases.
**Please note:** The `clock.py` test cases can be skipped for now, since we will [remove this code altogether](https://gitlab.servus.at/aura/aura/-/issues/312).
### S...Parent: aura#175+
---
Test suite to cover the most important cases.
**Please note:** The `clock.py` test cases can be skipped for now, since we will [remove this code altogether](https://gitlab.servus.at/aura/aura/-/issues/312).
### Sub Tasks
- https://gitlab.servus.at/aura/engine/-/issues/144+
- https://gitlab.servus.at/aura/engine/-/issues/143+
- https://gitlab.servus.at/aura/engine/-/issues/142+
- https://gitlab.servus.at/aura/engine/-/issues/137+
- Other test cases which look meaningful and improve the overall test coverage1.0-alpha5Chris PastlChris Pastlhttps://gitlab.servus.at/aura/engine/-/issues/124Extend API data fetchers to transparently cache results as JSON files2023-05-18T21:26:30+02:00David TrattnigExtend API data fetchers to transparently cache results as JSON filesThis is a pre-condition for the design and implementation of #100.
Additionally it builds an important basis for the testability of Engine.This is a pre-condition for the design and implementation of #100.
Additionally it builds an important basis for the testability of Engine.1.0-alpha2 — ⚖️🐦 Precise PheasantDavid TrattnigDavid Trattnighttps://gitlab.servus.at/aura/engine/-/issues/123Less verbose logging when result from Steering playout endpoint cannot be parsed2023-06-06T21:11:39+02:00David TrattnigLess verbose logging when result from Steering playout endpoint cannot be parsedCurrently the Steering playout endpoint returns Error `500`. Deal with that more nicely.Currently the Steering playout endpoint returns Error `500`. Deal with that more nicely.1.0-alpha2 — ⚖️🐦 Precise PheasantDavid TrattnigDavid Trattnighttps://gitlab.servus.at/aura/engine/-/issues/122CI: Sometimes "TestSynchronized" test cases fail in the CI Job2024-02-16T16:33:37+01:00David TrattnigCI: Sometimes "TestSynchronized" test cases fail in the CI JobWhen repeating the job they usually succeed.
Example where it failed on 1st try: https://gitlab.servus.at/aura/engine/-/jobs/6945
Un-comment test case `test_synchronized`.When repeating the job they usually succeed.
Example where it failed on 1st try: https://gitlab.servus.at/aura/engine/-/jobs/6945
Un-comment test case `test_synchronized`.1.0-alpha3 — Playful Platypus ▶️🦦Chris PastlChris Pastlhttps://gitlab.servus.at/aura/engine/-/issues/121Sample configuration with meaningful defaults for use in Docker and Docker Co...2023-01-23T17:49:28+01:00David TrattnigSample configuration with meaningful defaults for use in Docker and Docker ComposeThis is a Sub-Task of aura#112
<hr/>
Such configuration should allow some essential config options be set by environment variables. Essential options are common Docker Compose system values (e.g. audio devices or file paths used in othe...This is a Sub-Task of aura#112
<hr/>
Such configuration should allow some essential config options be set by environment variables. Essential options are common Docker Compose system values (e.g. audio devices or file paths used in other services too) or values which are most likely changed by end-users.
All config options which are not changed in default setups, should have some good default values. They [can be overridden](https://gitlab.servus.at/aura/aura/-/issues/112#note_6817), when required in special setups.
A good example for such file is the [Tank - Docker Config](https://gitlab.servus.at/aura/tank/-/blob/main/contrib/for-docker.yaml)1.0-alpha1 — 🚢🦆 Dockland DucklingDavid TrattnigDavid Trattnighttps://gitlab.servus.at/aura/engine/-/issues/120Config consolidation: Use YAML instead of INI file2023-09-19T18:58:27+02:00David TrattnigConfig consolidation: Use YAML instead of INI file1.0-alpha3 — Playful Platypus ▶️🦦Chris PastlChris Pastlhttps://gitlab.servus.at/aura/engine/-/issues/119Simplified component diagram on architecture2023-02-07T11:41:10+01:00David TrattnigSimplified component diagram on architecture1.0-alpha2 — ⚖️🐦 Precise PheasantDavid TrattnigDavid Trattnighttps://gitlab.servus.at/aura/engine/-/issues/118Read playlist information from Steering API, instead of Tank API2023-07-17T12:09:02+02:00David TrattnigRead playlist information from Steering API, instead of Tank APIAs part of [AEP05](https://gitlab.servus.at/aura/aura/-/wikis/AEP05-Erweiterung-Datenmodell) Tank Playlist information is pushed to Steering upon assignment to a Timeslot. Additional Playlist Metainformation might be added to Steering ti...As part of [AEP05](https://gitlab.servus.at/aura/aura/-/wikis/AEP05-Erweiterung-Datenmodell) Tank Playlist information is pushed to Steering upon assignment to a Timeslot. Additional Playlist Metainformation might be added to Steering timeslots also.
This means all playlist data can be read together with other calendar information using a single `GET` request to `/steering/api/v1/playout`.
As a consequence this also has some positive non-functional effects:
- Reduced API requests per scheduling cycle (currently 1 to Steering and (n) to Tank for every single playlist, every 30 seconds)
- De-coupling of Engine and Tank. The only API interaction left between these two, is on a file-system basis when accessing audio files.1.1https://gitlab.servus.at/aura/engine/-/issues/117[EPIC] Fill timeslot with default playlist when specific playlist doesn't con...2024-03-29T10:20:44+01:00David Trattnig[EPIC] Fill timeslot with default playlist when specific playlist doesn't consume the whole timeslot lengthWhen a specific playlist (e.g. 40min duration) is assigned to a timeslot (e.g. 60min duration), then the missing 20mins are filled with one of the specified, default playlists.
At the end of the specific playlist the default playlist is...When a specific playlist (e.g. 40min duration) is assigned to a timeslot (e.g. 60min duration), then the missing 20mins are filled with one of the specified, default playlists.
At the end of the specific playlist the default playlist is scheduled from the beginning.1.1https://gitlab.servus.at/aura/engine/-/issues/116Use Poetry for dependency management2022-09-08T18:17:14+02:00David TrattnigUse Poetry for dependency managementWe decided to use https://python-poetry.org/ for management of dependencies and version in `pyproject.toml`.We decided to use https://python-poetry.org/ for management of dependencies and version in `pyproject.toml`.1.0-alpha1 — 🚢🦆 Dockland DucklingDavid TrattnigDavid Trattnighttps://gitlab.servus.at/aura/engine/-/issues/115Some playlist entries get re-scheduled, although they have been scheduled alr...2022-12-01T10:27:10+01:00David TrattnigSome playlist entries get re-scheduled, although they have been scheduled alreadyThis issue appears to be related to repeatedly run scheduling cycles:
```
2022-08-04 11:13:38,700:AuraEngine:INFO -
[ ENGINE COMMAND QUEUE ]
...
=> [TIMESLOT#75:do_start_timeslot:1659603900.0] exec at 2022-08-0...This issue appears to be related to repeatedly run scheduling cycles:
```
2022-08-04 11:13:38,700:AuraEngine:INFO -
[ ENGINE COMMAND QUEUE ]
...
=> [TIMESLOT#75:do_start_timeslot:1659603900.0] exec at 2022-08-04 11:05:00.218309 (alive: False)
=> [TIMESLOT#75:do_end_timeslot:1659604198.5] exec at 2022-08-04 11:09:58.718599 (alive: True)
=> [PRELOAD#75:do_preload:1659604430.0] exec at 2022-08-04 11:13:50.093425 (alive: True)
=> [PLAY#75:do_play:1659604460.0] exec at 2022-08-04 11:14:20.093578 (alive: True)
=> [PRELOAD#75:do_preload:1659603870.0] exec at 2022-08-04 11:04:30.221056 (alive: False)
=> [PLAY#75:do_play:1659603900.0] exec at 2022-08-04 11:05:00.221412 (alive: False)
```1.0-alpha2 — ⚖️🐦 Precise PheasantDavid TrattnigDavid Trattnighttps://gitlab.servus.at/aura/engine/-/issues/114Coding Conventions: Setup pre-commit and add configuration for Engine2023-07-20T11:49:52+02:00David TrattnigCoding Conventions: Setup pre-commit and add configuration for EngineSetup [pre-commit](https://pre-commit.com/) to run `black`, `flake8`, `isort` and `codespell` before commit.
Compare existing setup in Steering (steering#87)Setup [pre-commit](https://pre-commit.com/) to run `black`, `flake8`, `isort` and `codespell` before commit.
Compare existing setup in Steering (steering#87)1.0-alpha2 — ⚖️🐦 Precise PheasantDavid TrattnigDavid Trattnighttps://gitlab.servus.at/aura/engine/-/issues/113Docker: Engine is not able to run standalone anymore, due to changes for Dock...2022-11-25T09:56:32+01:00David TrattnigDocker: Engine is not able to run standalone anymore, due to changes for Docker ComposePreviously Engine could be started with the run.sh script with Docker standalone. The default configuration supplied to Docker `RUN` commands is retrieved from [sample.engine.docker.ini](https://gitlab.servus.at/aura/engine/-/blob/master...Previously Engine could be started with the run.sh script with Docker standalone. The default configuration supplied to Docker `RUN` commands is retrieved from [sample.engine.docker.ini](https://gitlab.servus.at/aura/engine/-/blob/master/config/sample-docker.engine.ini). Since _all_ settings in the configuration file got transformed into environment variables, it's almost impossible to run it individually.
For some reason the `db_host` is the only setting which is not exposed as an env var. It has a static setting `engine-postgres` pointing to the PostreSQL service. This way it's not possible to use non-dockerized databases.
## TODO
- [x] Change the config file to only use environment variables for properties relevant to Docker / Docker Compose.
- [x] Create environment variable for `db_host`
- [x] Configure Docker Compose "Aura Playout" with environment variable for `db_host`1.0-alpha2 — ⚖️🐦 Precise PheasantDavid TrattnigDavid Trattnighttps://gitlab.servus.at/aura/engine/-/issues/112Extend Makefile to replace run.sh2023-01-17T19:48:07+01:00David TrattnigExtend Makefile to replace run.shCompare [new Makefile in Engine Core](https://gitlab.servus.at/aura/engine-core/-/commit/688db3175245221f43cc334005f1eef65bb3b0e8#836efb6e25a091dcb4ff8e1dbb2f0be6a5cbf14c)Compare [new Makefile in Engine Core](https://gitlab.servus.at/aura/engine-core/-/commit/688db3175245221f43cc334005f1eef65bb3b0e8#836efb6e25a091dcb4ff8e1dbb2f0be6a5cbf14c)1.0-alpha1 — 🚢🦆 Dockland DucklingDavid TrattnigDavid Trattnighttps://gitlab.servus.at/aura/engine/-/issues/111Flake8: Add linting for Docstrings2022-08-18T17:39:31+02:00David TrattnigFlake8: Add linting for Docstrings`docstring-convention=google``docstring-convention=google`1.0-alpha2 — ⚖️🐦 Precise PheasantDavid TrattnigDavid Trattnighttps://gitlab.servus.at/aura/engine/-/issues/110Implement VERSION file handling for Engine2024-01-23T18:48:52+01:00David TrattnigImplement VERSION file handling for EngineBasic approach as described in meta#81Basic approach as described in meta#811.0-alpha2 — ⚖️🐦 Precise PheasantDavid TrattnigDavid Trattnighttps://gitlab.servus.at/aura/engine/-/issues/109Remove Email Monitoring2023-06-07T13:43:23+02:00David TrattnigRemove Email MonitoringThe email notification option should be removed in favor of a real monitoring solution (e.g. meta#98+).The email notification option should be removed in favor of a real monitoring solution (e.g. meta#98+).1.0-alpha2 — ⚖️🐦 Precise PheasantDavid TrattnigDavid Trattnighttps://gitlab.servus.at/aura/engine/-/issues/108Add active scheduling of "Station Fallback" in form of a default show2023-11-23T13:22:36+01:00David TrattnigAdd active scheduling of "Station Fallback" in form of a default show- Actively schedule Station Fallback when no planned timeslots are expected, to avoid wait time for silence detector
- Handle like a *Default Station Playlist*, similar to *Default Playlists* on schedule and show
### Dependencies
- htt...- Actively schedule Station Fallback when no planned timeslots are expected, to avoid wait time for silence detector
- Handle like a *Default Station Playlist*, similar to *Default Playlists* on schedule and show
### Dependencies
- https://gitlab.servus.at/aura/aura/-/issues/221+
- https://gitlab.servus.at/aura/aura/-/issues/176+1.0-alpha7https://gitlab.servus.at/aura/engine/-/issues/107[EPIC] Delegate posting of playlogs to Engine Core, rework relevant clock update2022-08-18T17:39:31+02:00David Trattnig[EPIC] Delegate posting of playlogs to Engine Core, rework relevant clock updateSee meta#42.
- [x] Update logic based on new metadata update endpoints in Core
- [x] Remove playlog POST from Engine
- [x] Add alternative for fallback state store
- [x] Logic for handling fallback show vs actually scheduled show (inlin...See meta#42.
- [x] Update logic based on new metadata update endpoints in Core
- [x] Remove playlog POST from Engine
- [x] Add alternative for fallback state store
- [x] Logic for handling fallback show vs actually scheduled show (inline vs separation)
- [x] Deprecate back-channel implementation
- [x] Update POST clock implementation
- [x] Update config
- [x] Update docs
- [x] Testing1.0-alpha2 — ⚖️🐦 Precise PheasantDavid TrattnigDavid Trattnighttps://gitlab.servus.at/aura/engine/-/issues/106ImportError: cannot import name 'escape' from 'jinja2'2022-06-09T19:43:19+02:00EorlBruderImportError: cannot import name 'escape' from 'jinja2'Some dependency seems to have introduced a conflict. When rebuilding the docker-image (thus freshly installing all dependencies) starting it now fails with the following error:
```
engine | 2022-03-24T15:19:48.493041740Z...Some dependency seems to have introduced a conflict. When rebuilding the docker-image (thus freshly installing all dependencies) starting it now fails with the following error:
```
engine | 2022-03-24T15:19:48.493041740Z [ Run mode=prod ]
engine | 2022-03-24T15:19:48.493085014Z [ Docker=false ]
engine | 2022-03-24T15:19:48.525252859Z [ Using Python 3.9.10 ]
engine | 2022-03-24T15:19:48.694699623Z Traceback (most recent call last):
engine | 2022-03-24T15:19:48.694861675Z File "/srv/run.py", line 27, in <module>
engine | 2022-03-24T15:19:48.695151046Z from flask import Flask
engine | 2022-03-24T15:19:48.695246708Z File "/usr/local/lib/python3.9/site-packages/flask/__init__.py", line 14, in <module>
engine | 2022-03-24T15:19:48.695447849Z from jinja2 import escape
engine | 2022-03-24T15:19:48.695619918Z ImportError: cannot import name 'escape' from 'jinja2' (/usr/local/lib/python3.9/site-packages/jinja2/__init__.py)
```EorlBruderEorlBruder