Status: Done (View Workflow)
HS June 23 - July 7, 2022, HS July 07 - July 21, 2022
NOTE: We should not need to modify any Minion code for this story. Use the existing minion from Horizon Classic. Many of the bullet points here might already be completed - please check before starting your work.
- Use classic Minion as-is
- Minions need to connect to the core Horizon Stream service, and send heartbeats on regular intervals.
- Core needs to create a node for any newly connected Minions, based on the heartbeat. Classic populates a requisition with minion nodes, based on heartbeats, and syncs it.
- Minion is a custom karaf distribution from the classic codebase. It's an OSGi feature that pulls different bundles in from classic.
- Code in Core is going to change a lot, don't overengineer right now
- Heartbeats should be scheduled every 30 seconds, with a very simple cron job.
- Core should react to heartbeats by updating the the Minion node with the last received heartbeat. Do I already have a node? If so, update with "last checked at". If not, create one.
- There needs to be a way to query for Minion nodes (as opposed to other types of nodes).
Out of Scope:
- Heartbeats should create time series data, and be stored in a time series database (such as Prometheus) for consumption by Grafana. (tracked in https://issues.opennms.org/browse/HS-192)