Skip to content

feat: add Ciena GNE/RNE topology (ciena-6500-tl1-gne, RTRV-NBR) - #3

Merged
stephenstack merged 1 commit into
mainfrom
feat/ciena-gne-rne
Jun 7, 2026
Merged

stephenstack merged 1 commit into
mainfrom
feat/ciena-gne-rne

Conversation

@stephenstack

Copy link
Copy Markdown
Collaborator

Model a TL1 Gateway NE (GNE) that fronts Remote NEs (RNEs) reachable only through it — you SSH into the GNE and address an RNE by putting its TID in the command, and the GNE returns that RNE's response.

Driver (ciena_tl1, TID-aware):

  • parseTL1 now returns (verb, tid, ctag) and accepts both the strict VERB::AID:CTAG form and the short VERB:TID:CTAG form operators use to address an NE directly.
  • At session start the mmap'd config is indexed (zero-copy) into the GNE-own inventory plus a per-RNE-TID map, split on ";;RNE " marker lines. A file with no marker is a legacy single-NE config (back-compat).
  • RTRV-* with an RNE TID streams that RNE's inventory with the RNE's TID as the response SID; unknown/unreachable TID returns DENY/IIAC. New RTRV-NBR verb (CmdTL1RtrvNbr) lists the RNEs. TID is never a metric label.

Generator:

  • New model ciena-6500-tl1-gne renders the GNE shelf plus 2-5 RNE shelves (RNE- TIDs) into delimited sections, deterministic via deviceRand. The shared inventory body is now a single template define reused by both Ciena templates; the standalone ciena-6500-tl1 output is byte-identical (verified).

Tests: TID/ctag parsing (both forms), tidIsLocal, indexSections (back-compat + sub-slice boundaries), GNE routing (local/RNE/IIAC), RTRV-NBR; GNE determinism; over-the-wire example session (ACT-USER -> RTRV-NBR -> RTRV-EQPT:RNE -> RTRV-EQPT::ALL -> RTRV-ALM-ALL:RNE -> unknown-TID DENY).

No breaking change: existing model/output/manifests unchanged; additive model name; one new command-label value within the asserted cardinality bound.

Model a TL1 Gateway NE (GNE) that fronts Remote NEs (RNEs) reachable only
through it — you SSH into the GNE and address an RNE by putting its TID in the
command, and the GNE returns that RNE's response.

Driver (ciena_tl1, TID-aware):
- parseTL1 now returns (verb, tid, ctag) and accepts both the strict
  VERB::AID:CTAG form and the short VERB:TID:CTAG form operators use to address
  an NE directly.
- At session start the mmap'd config is indexed (zero-copy) into the GNE-own
  inventory plus a per-RNE-TID map, split on ";;RNE <TID>" marker lines. A file
  with no marker is a legacy single-NE config (back-compat).
- RTRV-* with an RNE TID streams that RNE's inventory with the RNE's TID as the
  response SID; unknown/unreachable TID returns DENY/IIAC. New RTRV-NBR verb
  (CmdTL1RtrvNbr) lists the RNEs. TID is never a metric label.

Generator:
- New model ciena-6500-tl1-gne renders the GNE shelf plus 2-5 RNE shelves
  (RNE-<CITY> TIDs) into delimited sections, deterministic via deviceRand. The
  shared inventory body is now a single template define reused by both Ciena
  templates; the standalone ciena-6500-tl1 output is byte-identical (verified).

Tests: TID/ctag parsing (both forms), tidIsLocal, indexSections (back-compat +
sub-slice boundaries), GNE routing (local/RNE/IIAC), RTRV-NBR; GNE determinism;
over-the-wire example session (ACT-USER -> RTRV-NBR -> RTRV-EQPT:RNE ->
RTRV-EQPT::ALL -> RTRV-ALM-ALL:RNE -> unknown-TID DENY).

No breaking change: existing model/output/manifests unchanged; additive model
name; one new command-label value within the asserted cardinality bound.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@stephenstack
stephenstack merged commit 30683d5 into main Jun 7, 2026
2 checks passed
@stephenstack
stephenstack deleted the feat/ciena-gne-rne branch June 7, 2026 08:32
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.

2 participants