Poll loop now deletes DB rows for players no longer returned by the
Yodeck API, and Zabbix sync deletes the corresponding hosts from the
Yodeck Players group. Both actions are reflected in the activity log.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
When template.get returns nothing, make a second call to list up to 5
visible templates so the log shows whether the API token can see any
templates at all. This pinpoints whether the issue is a name mismatch
or a template-group permission gap.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- get_template_id: switch from filter to search so the API token user
can find templates they have read access to (filter requires exact
visibility that search does not)
- When the template is not found, write the warning to the DB log so
it appears in the web dashboard, not only in Docker container logs
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
A single host failure (e.g. macro already exists, permission error)
was aborting the entire sync loop for all 310 hosts. Each host is
now wrapped in try/except — failures are logged as warnings and the
loop continues. Also logs when template is linked to an existing host.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Zabbix 7.x rejects '#' in host names. Changed hostname format from
'yodeck#<id>' to 'yodeck-<id>' (e.g. yodeck-54239).
Updated SNMP col 1 value and docs for consistency.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
When the API token user cannot see the host group (returns empty from
hostgroup.get), the code fell through to hostgroup.create and gave a
confusing permissions error. Now catches this and explains exactly what
to fix in Zabbix (User groups -> Permissions).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Zabbix 6.4+ rejects API tokens in the JSON-RPC "auth" field.
Tokens must now be sent as "Authorization: Bearer <token>" HTTP header.
User/password sessions still use the payload auth field as before.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
ZABBIX_API_TOKEN env var can now be used instead of ZABBIX_USER +
ZABBIX_PASSWORD. When set, the token is passed directly as the auth
value in JSON-RPC calls and no login/logout session is created.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Zabbix host visible name is now "QRS-<yodeck_name>" (e.g. QRS-AMS-COF1).
Existing hosts will be renamed on the next Yodeck poll.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Yodeck API poller (every 10 min, paginated, 310 players)
- SQLite persistence (players + activity logs)
- SNMP v2c agent via net-snmp pass_persist
- Zabbix API auto host creation/update (6.0+)
- Flask web dashboard with live player status and log
- Docker deployment with persistent volume
- dev_server.py for local testing without Docker
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>