Skip to content

Feature/ntp probe addition#19

Open
sempervent wants to merge 4 commits intorelease/1.2.0from
feature/ntp-probe-addition
Open

Feature/ntp probe addition#19
sempervent wants to merge 4 commits intorelease/1.2.0from
feature/ntp-probe-addition

Conversation

@sempervent
Copy link
Copy Markdown
Contributor

Summary

This PR adds first-class NTP support to OpenSAMPL and hardens the local/demo experience around initialization, loading, and visualization.

At a high level, it introduces:

  • an NTP vendor/probe family
  • local and remote NTP collection support
  • NTP-specific metrics and metadata handling
  • database bootstrap seeding during init
  • reference-safe dashboard/query updates for NTP-backed timing views
  • documentation for the NTP extension path

What’s included

NTP vendor / probe support

  • Adds an NTP vendor family using the existing OpenSAMPL extension model
  • Supports remote NTP querying and local NTP inspection paths
  • Adds ntp_metadata handling and NTP-specific probe loading behavior
  • Adds NTP metrics such as jitter, delay, stratum, and sync health

Bootstrap / init fixes

  • opensampl init now seeds required lookup/default tables instead of only creating schema
  • Ensures baseline reference_type, reference, metric_type, and defaults rows exist
  • Adds/uses the default UUID function needed by load paths

Dashboard and query hardening

  • Fixes Grafana variable/query issues around text UUID handling
  • Removes brittle empty-filter and varchar = uuid failure modes
  • Updates timing dashboards to use reference-safe wording for NTP-backed demo paths
  • Adds compact reference/source metadata tables to aid interpretation
  • Keeps GNSS extensibility intact for future true GNSS-backed probe families

NTP jitter handling

  • Fixes the empty jitter path for remote NTP collection
  • When a direct measured jitter value is unavailable from a single remote response, stores a documented estimate/bound instead
  • Clarifies this distinction in dashboard wording and docs

Docs

  • Updates README/docs to reflect current init/bootstrap behavior
  • Adds a detailed guide explaining how the NTP extension was added and integrated into OpenSAMPL
  • Adds an unreleased 1.2.0 changelog entry

Why

Before this change:

  • OpenSAMPL init created tables but did not seed required lookup/default rows
  • NTP support was not available as a first-class probe family
  • Grafana dashboards were brittle around variable typing and empty selections
  • NTP-backed demo dashboards could imply GNSS truth where only configured reference semantics existed

After this change:

  • NTP-backed timing data can be collected, loaded, and visualized cleanly
  • init/bootstrap is deterministic for fresh databases
  • dashboard behavior is safer and more honest
  • the extension path is documented for future maintainers

Notes

  • The dashboard wording uses Reference rather than GNSS where the current backing data is NTP-referenced rather than GNSS-grounded.
  • GNSS-related backend concepts are preserved; this PR does not remove future support for true GNSS-backed probe families.
  • Demo/appliance orchestration (custom DB image, continuous ingest service, mock NTP targets, etc.) remains outside this PR in the syncscope-at-home repo.

Validation

Verified locally with:

  • uv run pytest
  • uv run ruff check .
  • fresh database init/bootstrap
  • NTP collect/load path
  • Grafana dashboard rendering with populated probe metadata and time-series rows

sempervent added 4 commits April 11, 2026 13:05
- add OpenSAMPL NTP vendor, collection, metrics, and metadata support
- bootstrap lookup tables and defaults during init
- add PostGIS/Timescale demo database image and continuous ingest service
- enrich NTP probe metadata with stored geolocation at ingest time
- harden Grafana dashboards for text UUID filters and reference-safe wording
- add NTP-specific and public geospatial timing dashboard improvements
- document 1.2.0 unreleased changes and collapse metadata tables by default
@sempervent sempervent self-assigned this Apr 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant