Search code examples
pythongraphvizdiagram

How to use loops (i.e., for loop) with diagrams and graphviz in Python


greetings!

Please, can you guide how to use a for loop with Python Diagram?

Original sample code without any loop is as follow

from diagrams import Cluster, Diagram, Edge
from diagrams import Diagram
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDS
from diagrams aws.network import ELB

with Diagram("Diagram", show= True, direction="TB"):
    ELB("") >> Edge(color="red", label="Traffic") >> \
    [EC2("Instance1"),EC2("Instance2"),EC2("Instance3")]

Following code gives error. However expectation is to use a for loop:

from diagrams import Cluster, Diagram, Edge
from diagrams import Diagram
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDS
from diagrams aws.network import ELB

instances = ["Instance1", "Instance2", "Instance3"]

with Diagram("Diagram", show= True, direction="TB"):
    ELB("") >> Edge(color="red", label="Traffic") >> \
    for instance in instances:
        EC2(instance)

I have tried to use a loop, instead of hardcoded logic. It gives error. This requires to install graphviz and diagrams


Solution

  • According to the examples page, something like this should work:

    from diagrams import Cluster, Diagram, Edge
    from diagrams import Diagram
    from diagrams.aws.compute import EC2
    from diagrams.aws.database import RDS
    from diagrams aws.network import ELB
    
    instances = ["Instance1", "Instance2", "Instance3"]
    
    with Diagram("Diagram", show= True, direction="TB"):
        ELB("") >> Edge(color="red", label="Traffic") >> [EC2(instance) for instance in instances]