{% load ch_extras %} {% block content %} {% load flowspace %} {# Loads Jinja filters for FlowSpaces #} {# PLANETLAB #} {% if planetlab_aggs %}
Hostname | Connections | ||
---|---|---|---|
{{ node.name }} |
|
• OpenFlow Aggregate: {{ agg.name }} ▲ |
Name: | {{ agg.name }} | ||||||||||||
Status: |
{% if not agg.available %}
![]() ![]() | ||||||||||||
Automatic approval: |
{% if agg.available %}
{# Automatic approval only possible when (1) agg reachable, (2) auto VLANs assignment, (3) auto fs granting #}
{% if agg.openflowaggregate.vlan_auto_assignment and agg.openflowaggregate.flowspace_auto_approval %}
![]() ![]() ![]() | ||||||||||||
Physical location: | {{ agg.location }} | ||||||||||||
Resources: | |||||||||||||
{% if checked_ids %}
{% if flowspace_per_aggregate|key:agg.id %} {# If FlowSpace corresponds to AM, show #}
{#% if flowspace_per_aggregate|exists_flowspace_for_aggregate:agg %} {# If FlowSpace corresponds to AM, show #}
Notice that a "None" value means that that field is getting the maximum possible value.
In addition if different Flowspaces are defined over the same OpenFlow interface (Switch-Port), the resultant FlowSpace over this interface will be the combination of all the FlowSpaces. This can be seen better in the Granted FlowSpace
{% for fs in flowspace_per_aggregate|key:agg.id %}
{% for gfs in gfs_list %}
{% if gfs.0 == agg.id and gfs.1 %}
This is the FlowSpace that has been granted to the slice and will be used in the experiment. It may be different from the requested one.
{% for fs_list in gfs.1 %}
{% with fs_list as FG %}
{% for f in FG reversed %}
{%else%}
{%if forloop.first and gfs.0 == agg.id%}
No Flowspace requested through this OpenFlow AM. {% endif %} {% else %} {#Should never reach this#} {%endif%} {#Checked IDs#} |
|||||||||||||
Openflow controller: | {{controller_url}} | ||||||||||||
Actions: |
{% if not slice.started %}
![]() |
||||||||||||
Remove from slice: | |||||||||||||
|