direction: down Interface: { shape: class name: str itype: "[str]" adapter: "[str]" slave_interfaces: "[List[str]]" parent_interface: "[str]" ip_address: "[str]" network: "[str]" subnet_mask: "[str]" default_gateway: "[str]" vlan: "[str]" device: Device } Device: { shape: class name: str role: str interfaces: "Dict[str, Interface]" } Host: { shape: class role: str } Router: { shape: class role: str } Switch: { shape: class role: str } Network: { shape: class name: str interfaces: "List[Interface]" network_ip: "[str]" } Topology: { shape: class devices: "Dict[str, Device]" networks: "Dict[str, Network]" } Host -> Device: { target-arrowhead.shape: triangle target-arrowhead.style.filled: false } Router -> Device: { target-arrowhead.shape: triangle target-arrowhead.style.filled: false } Switch -> Device: { target-arrowhead.shape: triangle target-arrowhead.style.filled: false } Device -- Interface: interfaces { source-arrowhead: 1..* target-arrowhead: 1 } Network -- Interface: interfaces { source-arrowhead: 1..* target-arrowhead: 1 } Topology -- Device: devices { source-arrowhead: 1..* target-arrowhead: 1 } Topology -- Network: networks { source-arrowhead: 1..* target-arrowhead: 1 }