This project provides a lightweight Dockerized NETCONF-over-SSH mock server for testing a NETCONF collector against OpenConfig-style optical-channel operational telemetry.
A lightweight NETCONF-over-SSH mock for the ECOC26 pluggables tests. It
exposes OpenConfig-style optical-channel operational state for the TFS
`DEVICEDRIVER_NETCONF_OC_PLUGGABLE` collector and the ZSM failure notification
flow.
It supports the target path:
The server generates **dynamic** telemetry — it does **not** read from a
static file. Power values follow a biased random walk, and Pre-FEC BER is
derived from the current power using a realistic optical degradation curve.
This is a protocol-level NETCONF mock. It is useful when you want to test whether your NETCONF collector can:
- open a NETCONF-over-SSH session on port 830;
- exchange NETCONF `<hello>` messages;
- send `<get>` RPCs with subtree filters;
- parse OpenConfig-shaped XML responses under `components/component/optical-channel/state`.
## What this mock server is not
## Dynamic Telemetry Model
It is not a full YANG-validating server. It does not use Sysrepo/libyang, does not enforce OpenConfig schema constraints, and does not implement configuration datastores. For schema-accurate testing, use Sysrepo + Netopeer2 and load the relevant OpenConfig YANG modules.
Only two ECOC26 metrics are served on a single optical channel (`channel-1`):
Use `<get>` because the target path is operational state. If your collector currently sends `<get-config>`, this mock intentionally returns an `operation-not-supported` RPC error to expose that mistake early.
## ECOC26 ZSM Flow
This server returns full or filtered data according to the subtree filter. Filtering is intentionally simple and supports:
1. Deploy this mock to Kubernetes with `./scripts/deploy_k8s.sh`.