feat(tl1): Infinera and Cisco ONS templates, and TL1 stops being a Ciena exception (RCO-1454) - #80
Merged
Merged
Conversation
…ena exception TL1 templates used to be described as a standing exception to the directory rule: Pro-only templates that sit in a vendor directory. Three separate places said so. With three TL1 vendors that framing does not survive, and it was never really an exception. Edition follows the capability a template uses, never the directory it sits in. cisco/ is now a mixed-edition directory, deliberately. Adds: infinera/infinera-dtnx-tl1-ssh.yml community-tested infinera/infinera-dtnx-tl1-telnet.yml community-tested cisco/cisco-ons15454-tl1-ssh.yml untested-starter cisco/cisco-ons15454-tl1-telnet.yml untested-starter The Cisco pair is untested-starter on purpose. It was built from the Cisco ONS SONET TL1 Command Guide R9.1 and Oracle's TL1 reference, not from a session capture. The status vocabulary exists for exactly this, and the templates say so in their own header as well as in cisco/README.md. connect.tl1Vendor is the 48th key: ciena (default), infinera or cisco-ons. It selects the neighbour verb, the record format, the node's prompt, and whether a routed reply's header SID can be verified at all. An unrecognised value fails the collection rather than falling back, because a typo collecting as the wrong vendor parses nothing, reports no elements, and flags every element behind that gateway as missing on the next run. docs/TL1.md is new: the vendor-neutral half of what ciena/README.md used to state as universal. ciena/README.md keeps only what a 6500 actually does differently, which turns out to be the password quirk, the RTRV-NE-LIST record shape, and echoing the TID in a routed response header. Ciena templates gain tl1Vendor: ciena and drop tl1NeighbourCmd. Its old default, RTRV-NBR:ALL, named a command no shipped node answers. cisco/README.md was 15 lines of caveats with three typos and no template table. It now lists all ten templates with their edition, and keeps the FTD prompt and WLC guidance that were the only content worth keeping. The validator now requires a vendor template's filename to start with its directory name. Every file in the library already satisfied it, so this costs nothing and catches a Ciena template dropped into cisco/, which would otherwise parse, validate, and be findable by nobody. Verified it errors on a deliberate misfile. Also corrects counts that disagreed with each other before this change: the key count was stated as 47 in four files while EDITIONS.md called it "13 Pro-only" in a heading above a paragraph saying 14, and the README template badge was one short of the real count. Validator: 83 templates, 0 errors, 2 pre-existing warnings. Every relative markdown link resolves. ASCII only, per CLAUDE.md. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
… registry tl1NeighbourCmd is still fully configurable: set it and rConfig sends exactly what you wrote. The shipped templates simply stop setting it, so the default comes from tl1Vendor. The exception was documented only in docs/TEMPLATES.md and docs/TL1.md, and it deserves to be stated wherever someone configures a TL1 device. A value beginning with RTRV-NBR is replaced with the vendor's own command and a warning is logged, because that verb was the shipped default before 8.4.0 and came from rConfig's own simulator rather than from hardware. Each vendor README now carries the same section, naming that vendor's command, and says plainly that this is the one place a deliberately set key is overridden, with a route to get the special case removed if someone has a node that genuinely answers RTRV-NBR. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…der field CI's apply_headers.py --check failed on both ONS 15454 templates. The standard header is a fixed schema, and "## Note:" is one of its fields, so my second "## Note:" line was dropped on rebuild and its continuation line left behind as an orphan that said nothing. The mechanism for per-template prose is a single-hash comment after the header, which the script preserves as a vendor note. hp/hp-procurve-telnet-noenable.yml is the existing example. The caveat now reads as three "# UNTESTED:" lines in that position, which is more prominent than the header field was anyway. Tested-on also changes from a phrase I invented to the library's standard "not yet tested, please file a template test report", matching every other untested-starter template. Both CI steps now pass locally, run exactly as the workflow runs them: apply_headers.py --check reports 0 changed, validate_templates.py 0 errors. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes RCO-1454. Stage 4 of RCO-1450 (multi-vendor TL1). Pairs with rconfig8 #647, which added the
tl1Vendorkey this uses.The framing change
TL1 templates were described as a standing exception to the directory rule, in three separate places: Pro-only templates living in a vendor directory. With three TL1 vendors that does not survive, and it was never really an exception.
Edition follows the capability a template uses, never the directory it sits in.
cisco/is now a mixed-edition directory, deliberately, anddocs/EDITIONS.mdsays so instead of calling it out as a special case.New templates
infinera/infinera-dtnx-tl1-ssh.ymlcommunity-testedinfinera/infinera-dtnx-tl1-telnet.ymlcommunity-testedcisco/cisco-ons15454-tl1-ssh.ymluntested-startercisco/cisco-ons15454-tl1-telnet.ymluntested-starterThe Cisco pair ships as
untested-starteron purpose. It was built from the Cisco ONS SONET TL1 Command Guide R9.1 and Oracle's ONS 15454 TL1 reference, not from a session capture. Documented is better than invented and weaker than seen on hardware. The status vocabulary exists for exactly this, and the caveat is in the template headers as well ascisco/README.md, so nobody has to read the PR to find it.connect.tl1Vendor, the 48th keyciena(default),infinera,cisco-ons. Selects the neighbour verb, the record format, the node's prompt, and whether a routed reply's header SID can be verified at all.An unrecognised value fails the collection rather than falling back to Ciena. A typo collecting as the wrong vendor would parse nothing, report no elements, and flag every element behind that gateway as missing on the next run.
Ciena's templates gain
tl1Vendor: cienaand droptl1NeighbourCmd. Its old default,RTRV-NBR:ALL, named a command no shipped node answers. Each vendor's real command is the default now, and rConfig substitutes it with a logged warning for templates still naming the old verb.Prose
docs/TL1.mdis new — the vendor-neutral half of whatciena/README.mdused to state as universal (in-band login, gateways, dual-homing, connection limits), plus a table of what actually differs between the three platforms.ciena/README.mdkeeps only what a 6500 does differently, which turns out to be the password quirk, theRTRV-NE-LISTrecord shape, and echoing the TID in a routed response header.cisco/README.mdrewritten. It was 15 lines of caveats with three typos (qupte,shwo,far to long) and no template table. It now lists all ten Cisco templates with their edition, and keeps the FTD prompt and WLC guidance, which were the only content worth keeping.Validator
Now requires a vendor template's filename to start with its directory name. Every file in the library already satisfied it, so it costs nothing, and it catches a Ciena template dropped into
cisco/— which would otherwise parse, validate, and be findable by nobody. Confirmed it errors on a deliberate misfile rather than assuming.Counts that disagreed with each other before this change
EDITIONS.mdhad a heading saying "The 13 Pro-only keys" above a paragraph saying 14. The real figure was 14; withtl1Vendorit is 15 of 48. All four files now agree.Verification
validate_templates.py: 83 templates, 0 errors, 2 pre-existing warnings. Every relative markdown link in the repo resolves. ASCII only, perCLAUDE.md.🤖 Generated with Claude Code