By clicking colored circle we can access test settings
Easy to test (needs remote access only on the first step).
Preview commands before executing.
Eeasy to troubleshoot and alter (e.g. resync only one architecture)
In Sync and Invoke steps bash commands are generated, then executed.
Scripts for all 3 steps are generated from XML file, which must describe every asset, flavor and architecture.
No need neither OpenQA nor OBS for Step 2 and Step 3.
Just need .lst files
Store .lst files for each sync to understand if Sync is required
Synchronization logs and scripts are stored in folders on openqa host.
Each folder is working area for sync of corresponding project and has list of current files, scripts for each step, logs, diagnostic info, etc.
Information from sync folders is accessible in OpenQA UI (needs advanced access level)
# grep openSUSE:Factory:ToTest /var/log/apache2/access_log* | grep PUT
[24/Mar/2020:21:29:28] PUT /api/v1/obs_rsync/openSUSE:Factory:ToTest/runs?repository=images
[24/Mar/2020:22:49:11] PUT /api/v1/obs_rsync/openSUSE:Factory:ToTest/runs?repository=appliances
Prefixes of projects to notify are configured as parameter to call rabbit-repoid.py:
https://github.com/openSUSE/openSUSE-release-tools/blob/master/gocd/monitors.gocd.yaml
# script/rsync.sh openSUSE:Factory:Staging:A
This is unsafe, because may meet race conditions when project files are changed on OBS during sync
If generated files are incorrect, it is possible to capture the commands for corresponding step and modify generated output. E.g. to modify output of rest commands - capture output of print_openqa.sh script and modify as needed. Then execute altered commands in shell.
To force resync - remove .run_last link first
# rm openSUSE:Factory:Staging:A/.run_last