Generated from device MIBs. Never hand-edited. The raw truth layer.
Wire YAMLs are machine-generated from MIB XML + MOPS webUI proxy captures. They are NOT committed to git — they're regenerated per firmware version.
| Artifact | Path | Notes |
|---|---|---|
| Generated wire YAMLs | local/reference/webUI/*.yaml |
134 files, 4,058 attributes. Not in git |
| Active wire YAMLs | crude_engine/wire/*.yaml |
Copied from reference after validation |
| Generator | local/generator/batch_generate_webui.py |
Reads MIB XML + proxy captures |
| Overrides | local/generator/overrides.yaml |
Manual corrections (create_method, type) |
| MIB source | local/reference/MIBs/ |
66 firmware MIB files |
| MIB schema | local/reference/MOPS/mops_hios.xml |
MOPS MIB tree for OID/table resolution |
| Master schema doc | docs/napalm-hios-2-6-schema.md |
4,058 attribute reference (1.3M) |
| Layer | Responsibility | Generation | Path |
|---|---|---|---|
| Wire | Raw OIDs, MIB fields, and Syntax | Automated (generator) | crude_engine/wire/*.yaml |
| Schema | Functional grouping, mapping to Wire | Authored (human intent) | crude_engine/schemas/*.yaml |
| Adapter | Consumer-specific shaping | Authored (API contract) | Per-consumer package (e.g. napalm-hios, gNMI) |
Wire files are the "Pure Truth" layer. They describe what the switch speaks on the wire.
version: 2.6.0
feature: systemInformationDefines the raw output structure of a Wire read.
schemas:
read_systemInformation:
type: dict
defaults:
sysname: ""
syscontact: ""Each attribute maps a Wire field to its physical sources.
read:: Replaces legacyget:. Defines the path for data retrieval.write:: Replaces legacyset:. Defines the path for data mutation.
The access: tag dictates the requirement for a write: block:
access: r: Read-only. Onlyread:block allowed.access: ru: Read-Write. The engine implicitly uses theread:path for writes. Minimalist Rule: Do not define awrite:block if the path is identical toread:.access: crud: Create-Read-Update-Delete. Implicitly mapsread:to all mutation operations.
syscontact:
syntax: DisplayString
type: string
access: ru
sources:
snmp:
read:
oid: 1.3.6.1.2.1.1.4
mops:
read:
mib: SNMPv2-MIB
table: system
field: sysContactSchema files are the "Switchboard". They map stable human names to unstable Wire names.
A Schema attribute points to a Wire attribute. If the Wire attribute changes (e.g., a firmware update changes an OID), only the Wire YAML needs regeneration; the Schema YAML remains stable.
# schemas/system.yaml
attributes:
contact_person:
wire: syscontact
source: systemInformation- UI Proxy Capture: User clicks through the Web UI. All XML traffic is saved to
/captured. - MIB Resolution:
batch_generate_webui.pyreads the XML, identifies attributes, and walks the MIB tree inmops_schema.xmlto find OIDs and Tables. - Schema Enrichment:
enrich_schema_v26.pyextracts high-fidelity syntax (e.g.,Integer32 (0..7)) and access rules directly from the MIB XML. - Wire Generation: The final v2.6 Wire YAML is produced, 100% compliant and ready for the
interpreter.pyengine.
- Compliance:
cross_validate_v26.pyensures all 134 Wire YAMLs match the Master Schema and follow the Minimalism/Terminology rules. - Round-trip: The
access: ruflag enables automated testing of write operations by using theread:path as the validation baseline.