YAML and JSON Output Modules

yaml and json output modules display transformed lab topology in YAML or JSON format. You can invoke them by specifying -o yaml or -o json parameter in netlab create command.

Both output modules can take an optional destination file name (default: stdout).

Multiple formatting modifiers (separated with colons) can be used to reduce the amount of information displayed from the transformed lab topology:

  • nodefault – Remove default settings (defaults key).

  • noaddr – Remove address pools (addressing key).

  • Any other formatting modifier is evaluated as a Python expression within the transformed lab topology context.

Examples:

To display this information…

…use this command

whole transformed topology

netlab create -o yaml

whole topology without the defaults

netlab create -o yaml:nodefault

whole topology without the defaults or addressing pools

netlab create -o yaml:nodefault:noaddr

node data

netlab create -o yaml:nodes

address pools

netlab create -o yaml:addressing

Formatting modifier can select any subset of the lab topology, for example:

To display this information…

…use this command

data for node r1

netlab create -o yaml:nodes.r1

interface data for node r1

netlab create -o yaml:nodes.r1.interfaces

device data for device eos

netlab create -o yaml:defaults.devices.eos

settings for D2 output module

netlab create -o yaml:defaults.outputs.d2

valid attributes for the BGP module

netlab create -o yaml:defaults.bgp.attributes

Finally, the formatting modifier is evaluated as a Python expression, so you can display anything that can be expressed as a one-line expression (you will probably have to quote the whole yaml:expression string):

To display this information…

…use this command

second interface on node r1

netlab create -o 'yaml:nodes.r1.interfaces[1]'

node names

netlab create -o 'yaml:list(nodes.keys())'

netlab create command stores the results into an output file when you specify format=output or format:expr=output value for the --output parameter. For example:

To write this information into a file …

… use this command

whole topology into transformed.yaml

netlab create -o yaml=transformed.yaml

node data into nodes.yaml

netlab create -o yaml:nodes=nodes.yaml

link data into links.json

netlab create -o json:links=links.json