Skip to content

History / YAML Configuration

Revisions

  • the example the page told you to write was refused by the version it documents

    @cpflat cpflat committed Aug 25, 2026
  • one page for the 0.8 line: nobody upgrades from 0.8.0 to 0.8.1

    @cpflat cpflat committed Aug 25, 2026
  • a hook is a group now, and the pages say so

    @cpflat cpflat committed Aug 25, 2026
  • include_self defaults to false, and always has

    @cpflat cpflat committed Aug 19, 2026
  • naming: say when to name an interface, and that Kathara cannot take one

    @cpflat cpflat committed Aug 18, 2026
  • stop offering {{ if }} as an option: it fails the build where it would matter

    @cpflat cpflat committed Aug 16, 2026
  • drop the flag and the field that did nothing

    @cpflat cpflat committed Aug 16, 2026
  • say that deploy: none withholds the configuration too, and what that puts out of reach

    @cpflat cpflat committed Aug 16, 2026
  • split writing a block from assembling the blocks

    @cpflat cpflat committed Aug 15, 2026
  • keep the term in the heading; the purpose belongs in the first line

    @cpflat cpflat committed Aug 15, 2026
  • Template System: say what each mechanism is for before saying what it is

    @cpflat cpflat committed Aug 15, 2026
  • Kathara does span machines now; lead the deploy section with what you want to do

    @cpflat cpflat committed Aug 15, 2026
  • deploy says what an object is; virtual says whether we configure it

    @cpflat cpflat committed Aug 15, 2026
  • wiki: say what each notation is for, and point at a topology that uses it

    @cpflat cpflat committed Aug 15, 2026
  • wiki: say what each feature is for, before saying what it does Twenty-two sections opened by restating their own name - "NodeClass defines device types and their basic properties", "Define automatic parameter assignment" - or by going straight into a table. A reader who does not already know why the feature exists learns nothing from the syntax that follows. Each now opens with what it is useful for. The existing text is untouched; this is one paragraph added in front of it. The six class definitions carried the most weight, since the class system is where a topology's shape is decided and "NodeClass defines device types" says nothing about why there is one class per kind of object. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

    @cpflat cpflat committed Aug 14, 2026
  • wiki: point at topologies/ where a topology moved The thirteen deployable ones moved out of example/, which now holds only the notation demonstrations. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

    @cpflat cpflat committed Aug 13, 2026
  • wiki: finish the terminology change, and give every page a way out The substitution left the word in a few places and left Basic-Concepts arguing with its own definition: the callout said a topology is both files, and the page below kept saying "change topology" for editing the DOT file. A reader ends a page believing whatever it said last. - the graph is called the graph where the graph is meant - "topology file" only where a platform is named; the cross-platform places name topo.yaml and spec.yaml instead - Upgrading names netroub, which the CHANGELOG already warns about, as the downstream tool that reads generated files by path - Basic-Concepts and Command-Reference had no outgoing links at all; both now end somewhere, and the class table and param_rule reach the pages that explain them - two links pointed at nothing (a Graphviz-style path, an anchor with a slash in it) Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

    @cpflat cpflat committed Aug 13, 2026
  • wiki: say topology where a topology is meant, and stop saying scenario scenario is netroub's word - a configuration together with the events that happen in it, defined in its papers and in its own schema, where a scenario is a topology plus events. This documentation had taken it for what a reader writes, which would have left two projects by the same author using one word for two things. What you write - the DOT file and the YAML that configures it - is a topology, which is how this field already speaks: containerlab calls its own file a topology definition and puts the nodes' images and configuration in it. Basic-Concepts and Home say so before the word is used. Where only the graph is meant the pages now say the DOT file, and topology file is left to mean what a platform reads.

    @cpflat cpflat committed Aug 13, 2026
  • wiki: make the FRR examples run, and stop claiming what TiNET does not do Module-FRR's two examples were the last that did not work. The first reached for ip_net from a node template, where interface parameters do not exist. The second put FRRVtyshCLI on the startup block that gathers the others, so each gathered block came back quoted inside the outer vtysh command - and its policy: [ip] named a layer where a policy name belongs. Both are replaced by what was built and run: startup gathers, each gathered block carries the format, and the topo.yaml shown is the output of the input above it. TiNET writes a node_configs entry for every node, with an empty cmds: when there is nothing to run - the page had said the entry is left out, since v0.7.0. containerlab does leave its exec: out, and that page was right; the two now say so where they differ. Also: Module-System's result tree still had r1/frr.conf, and put a vtysh command format on a file where it does nothing.

    @cpflat cpflat committed Aug 12, 2026
  • wiki: make the examples run, and say what virtual means now The two Complete Examples printed a loopback address from a scenario that never asked for one, and had no interface policy either - copied out and run, they stopped at 'no segment for layer ip'. Both build now; containerlab's generated topo.yaml is the real output of the example above it. The FRR page told readers to write 'conf t' in a template whose FormatStyle already writes it, which would have produced it twice. Its topology output had no network-mode: none, the platform-node paragraph said kind was unnecessary when only image is, and interface_class: is not a key any more than node_class: was. virtual now has a section: it means something different on a node, an interface and a connection, and since 0.8.0 a virtual interface no longer takes its link with it - which nobody was told. Also: TiNET's shell failure mode is not containerlab's (its output is piped to a shell on the host), FormatStyle-Design carried a backward compatibility section for fields that no longer exist, and four cross-page anchors pointed at headings that were renamed.

    @cpflat cpflat committed Aug 12, 2026
  • wiki: the parts a reader needs that were only in the code What a module may implement and when each hook runs, so that reading a module is possible without reading the framework. What the three platforms differ in, as one table - including the one that catches people, that containerlab and TiNET run a startup command without a shell while Kathara's is a shell script, so a command with && in it works on one and silently does the wrong thing on the others. DOT syntax: xlabel is read on edges and subgraphs, not only on nodes, and why (Graphviz draws label across the picture); a node's label is deliberately not a class. And how a lab spanning machines is drawn. Dropped mountsourcepath, which is documented but never read by anything, and a note promising that legacy FormatStyle field names still work - they were removed, and an unknown key is now an error.

    @cpflat cpflat committed Aug 12, 2026
  • explain what the fields decide, not just that they exist A table row saying provide is 'mount or copy' tells a reader nothing about which to pick. The file definition fields now say what each one decides and links to the section that explains the choice, and the same was done for the param_rule sources and the class combination rules - where the config row was also wrong: two classes defining a config entry of the same name is an error whatever their strength, not a conflict resolved by tier. Module-FRR says where the log actually ends up: inside the container while the lab runs, under collected/<node>/ once it is destroyed, owned by whoever ran the script. That is the question a reader of the FRR page has, and answering it there is worth the repetition. Best-Practices had two sections about building incrementally and no table of contents; it now has one of each, in an order that follows how a scenario is written, plus what multi-host asks of a design. Also: the upgrade page belongs in Getting Started, not under Modules; node_class: is not a key and 0.8.0 rejects it; TiNET's complete example still had sysctls, switches: [] and ./ mounts; a digraph cannot hold --; and virtual on an interface no longer taking its link with it is a breaking change nobody was told about.

    @cpflat cpflat committed Aug 12, 2026
  • fix what the sweep left behind: names, examples, and the rules they depend on The pages written from scratch were checked against the code; the older ones were not, and the site contradicted itself. The default interface prefix said net in the reference and eth in the upgrade page. The frr FormatStyle was called frrVtysh, which never existed. TiNET's mounts had no $PWD and grew a sysctls section it does not generate; containerlab's examples had no network-mode: none, in a page that explains it is there. The tutorial's first YAML example used keys that do not exist, which 0.8.0 rejects outright, and Best-Practices told readers to run subcommands that were never implemented. Added what everything else leans on: how several classes on one object combine and which one wins, scope: group and what a group-scoped file is for, and the per-machine topology and spec files on the two platform pages. Kathara and assert are in the module tables now, so the new page can be reached.

    @cpflat cpflat committed Aug 12, 2026
  • 0.8.0: multi-host, the ConfigTemplate field reference, and the assert module YAML-Configuration: the worker group class and what follows from naming it - a topology file per machine, the check against a node in two of them, the bridge replacement for a segment that reaches across - and boundary_crossing_connection_class. Template-System: a reference for the fields of a config entry, which the wiki never had. raw, delimiters, required_link and required_params are in it. Module-System: the assert module. Home: the Kathara page.

    @cpflat cpflat committed Aug 12, 2026
  • 0.8.0: global settings, module_config, class_policy, and what a node class can say module_config with the settings each platform module offers; the global settings added this cycle; class_policy in place of the magic all and default names; use:, deploy: and collect: on a node class.

    @cpflat cpflat committed Aug 12, 2026
  • document ignore_undefined_class setting Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

    @cpflat cpflat committed Jul 7, 2026
  • document global max_address_count setting Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

    @cpflat cpflat committed Jul 7, 2026
  • fix TiNet -> TiNET, update broken links to File-Output and Module-System

    @cpflat cpflat committed Jan 3, 2026
  • update wiki for v0.7.0: add module docs, required_params, Value class

    @cpflat cpflat committed Jan 3, 2026
  • update Wiki for v0.6.0 FormatStyle changes

    @cpflat cpflat committed Dec 3, 2025