Skip to content

feat(agent): add NMOS IS-04/IS-05 sender proxy#130

Open
dclasen-qd wants to merge 18 commits into
mainfrom
feat/nmos-sender-proxy
Open

feat(agent): add NMOS IS-04/IS-05 sender proxy#130
dclasen-qd wants to merge 18 commits into
mainfrom
feat/nmos-sender-proxy

Conversation

@dclasen-qd

Copy link
Copy Markdown
Collaborator

Adds an NMOS sender proxy to the agent so NMOS controllers can discover and inspect MXL flows via IS-04 and IS-05.

feat(agent): advertise IS-04 Node API v1.3 and IS-05 Connection Management v1.1
feat(agent): implement sender active/staged endpoints with sender_id and transport_file
fix(agent): use TAI timestamps (UTC + 37s leap offset) for NMOS resource versions
fix(agent): advertise the Connection API as urn:x-nmos:control:sr-ctrl/v1.1
fix(agent): return 404 on sender /transportfile per BCP-007-03
docs(agent): add docs/NMOS.md with architecture and API reference
docs(agent): add NMOS sections to README.md, docs/USAGE.md, docs/KIND.md and charts/mxl-k8s/README.md
test(nmos): add integration test suite and helper scripts

- Go integration tests for IS-04 v1.3 and IS-05 v1.2 endpoints
- HTTP conformance tests: CORS, OPTIONS, 405, 404, error format
- BCP-007-03 sender proxy specific test cases
- Optional AMWA nmos-testing integration (skipped if not installed)
- Shell script test/nmos/run-nmos-tests.sh automating setup and teardown
- README.md documenting expected results and known limitations

Part-of: #nmos-integration-tests
Remove nmos-testing wrapper test and shell script section per reviewer
feedback. The tool is mainly for semi-automated testing and its
non-interactive suites can be incorporated later as a separate effort.

- Remove TestAMWANMOSTesting and unused helpers (extractHost/extractPort)
- Remove --skip-amwa flag and AMWA section from run-nmos-tests.sh
- Clean up unused imports (net, strings, os/exec)
- Fix spec link: use github.com/AMWA-TV/nmos-testing, not specs.amwa.org
- Update README to document nmos-testing as future work

Server API refactor tracked in mxl-k8s board task t_2376d092.
…ntrols

IS-05 active/staged sender responses were missing the sender_id and
transport_file fields required by the AMWA IS-05 v1.2 schema. Add both
to SenderState and populate them in the senderState handler. The
transport_file carries MXL transport parameters as JSON data with
type "application/json" per BCP-007-03.

IS-04 resource version timestamps used UTC instead of TAI. Switch
nmosVersion to add the current leap-second offset (37s) so version
strings pass AMWA nmos-testing validation.

Populate the IS-04 device.controls array with the IS-05 Connection
API endpoint (urn:x-nmos:control:cm-v1.2) so NMOS controllers can
discover the connection-management endpoint.
Document the agent IS-04 Node API v1.3 and IS-05 Connection
Management v1.2 sender proxy for BCP-007-03 compliance. New
docs/NMOS.md covers the architecture, data flow, ID generation,
resource model, and API reference. Update README, USAGE, KIND
demo, and chart README with enablement instructions and curl
verification steps.
…7-03

device.controls advertised the IS-05 Connection API endpoint with the
Channel Mapping API control type (urn:x-nmos:control:cm-v1.2), which
NMOS controllers cannot recognise. The AMWA NMOS parameter register
defines sr-ctrl as the Connection API control type, registered for
v1.0 and v1.1 only. Align the implemented IS-05 version to v1.1 and
advertise urn:x-nmos:control:sr-ctrl/v1.1 so the endpoint is
discoverable.

HandleSenderTransportFile returned the first transport_params leg as
JSON with HTTP 200. BCP-007-03 (MXL IS-05 Senders and Receivers)
requires the /transportfile endpoint of an MXL IS-05 Sender to always
return 404; MXL transport parameters are carried by the active/staged
resources and their transport_file field, not a transport file. Return
404 with the existing JSON error body.

Update server_test.go expectations for the corrected URN, the v1.1
paths, and the 404 transportfile response. Update DESIGN.md path
constants.
Update docs/NMOS.md and docs/KIND.md to match the corrected IS-05
implementation: version listing is v1.1, the active/staged example
includes sender_id and transport_file, and the /transportfile
endpoint is documented as always returning 404 per BCP-007-03.
The NMOS sender proxy serves IS-05 Connection Management v1.1, but
several user-facing docs still referenced v1.2. README.md, docs/USAGE.md
curl examples, and test/nmos/README.md now match the v1.1 paths the agent
actually registers. The USAGE transportfile example now shows the 404
response per BCP-007-03 instead of implying a file body.
Update connection endpoint references from v1.2 to v1.1 to match
the NMOS sender proxy implementation. Also run gofmt to remove
trailing blank lines.
@github-actions

This comment has been minimized.

The NMOS docs instructed users to set agent.flags.nmosBindAddress in
values.yaml, but the key was not declared there and the README section
was only edited in the generated README.md. helmd-docs therefore
removed the section on regeneration.

Add nmosBindAddress to values.yaml (empty default disables NMOS) with a
schema pattern and helmdocs comment, move the NMOS section into
README.md.gotmpl so helm-docs preserves it, and regenerate README.md
and values.schema.json.
@github-actions

Copy link
Copy Markdown
Contributor

Code Metrics Report

Coverage Code to Test Ratio Test Execution Time
58.2% 1:1.3 1s

Code coverage of files in pull request scope (64.2%)

Files Coverage
agent/cmd/mxl-domain-agent/main.go 0.0%
agent/internal/config/config.go 94.7%
agent/internal/nmos/server/handlers.go 79.6%
agent/internal/nmos/server/middleware.go 100.0%
agent/internal/nmos/server/router.go 100.0%
agent/internal/nmos/server/server.go 51.2%
agent/internal/nmos/types/types.go 86.4%
agent/internal/nmos/watcher/watcher.go 75.1%

Reported by octocov

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