aci2dot converts JSON formatted Cisco ACI policy files or snippets to a DOT graph format.
- Python 3 only
- pip install -r requirements.txt
--write
creates a config file .aci2dot
in the current directory, which allows for modification of the graph, node and edge properties.
The default config is as following:
{
"node": {
"shape": "box",
"fontname": "Helvetica",
"style": "rounded,filled",
"fillcolor": "AZURE"
},
"graph": {
"rankdir": "LR",
"splines": "true",
"bgcolor": "white",
"ranksep": "0.2",
"dpi": "300",
"nodesep": "0.2"
},
"edge": {
"arrowsize": "1"
}
}
./aci2dot.py --help
usage: aci2dot.py [-h] [--nr] [--na] [--write]
[--stdout | --dot {svg,png,pdf}]
policy_file
Create DOT formatted Graph from JSON formatted ACI policy export.
positional arguments:
policy_file JSON ACI Policy Filename
optional arguments:
-h, --help show this help message and exit
--nr Suppress redundant children
--na Don't show attributes
--write Write config template to .aci2dot and exit
--stdout Write to STDOUT instead of to file
--dot {svg,png,pdf} Also write SVG/PNG/PDF. 'dot' needs to be installed.
The example graph above was rendered from:
{
"polUni": {
"attributes": {
"status": "created,modified"
},
"children": [{
"fabricInst": {
"attributes": {
"status": "created,modified"
},
"children": [{
"bgpInstPol": {
"attributes": {
"status": "created,modified",
"ownerKey": "",
"name": "default",
"descr": "Default BGP Policy",
"nameAlias": "",
"ownerTag": "",
"annotation": ""
},
"children": [{
"bgpAsP": {
"attributes": {
"status": "created,modified",
"name": "",
"descr": "",
"asn": "100",
"nameAlias": "",
"annotation": ""
}
}
}, {
"bgpExtRRP": {
"attributes": {
"status": "created,modified",
"annotation": "",
"name": "",
"descr": "",
"nameAlias": ""
}
}
}, {
"bgpRRP": {
"attributes": {
"status": "created,modified",
"annotation": "",
"name": "",
"descr": "",
"nameAlias": ""
},
"children": [{
"bgpRRNodePEp": {
"attributes": {
"status": "created,modified",
"descr": "",
"podId": "1",
"annotation": "",
"nameAlias": "",
"id": "1101"
}
}
}, {
"bgpRRNodePEp": {
"attributes": {
"status": "created,modified",
"descr": "",
"podId": "1",
"annotation": "",
"nameAlias": "",
"id": "1102"
}
}
}]
}
}]
}
}]
}
}, {
"infraInfra": {
"attributes": {
"status": "created,modified"
}
}
}]
}
}