<div>
    <div>
            Lab Name : {{ lab.name }}
    </div>

    {% for node in lab.nodes %}
        {%  for p in node.processors %}
            <div>
               Processor model : {{ p.model }}
               Processor frequency : {{ p.frequency }}
            </div>
        {% endfor %}

        {%  for i in node.interfaces %}
            <div>
               name : {{  i.name }}
               MAC frequency : {{ i.mac }}
               max speed : {{ i.max_speed }}
               current speed : {{ i.current_speed }}
               state : {{ i.state }}
            </div>
        {% endfor %}

        {%  for disk in node.disks %}
            <div>
               Disk name : {{ disk.name }}
               Size: {{ disk.size }}
            </div>
        {% endfor %}

        <div>
            Memory total : node.memory.total
            Memory : node.memory.maximum_capacity
        </div>

    {% endfor %}

</div>