diff --git a/src/webui/service/templates/service/detail.html b/src/webui/service/templates/service/detail.html index 3df155853418b98dc6ff313210276f5a68774122..0fd6021ac0c8880a92c704676a77b85a53873aea 100644 --- a/src/webui/service/templates/service/detail.html +++ b/src/webui/service/templates/service/detail.html @@ -26,18 +26,20 @@ Back to service list </button> </div> + <!-- <div class="col-sm-3"> <a id="update" class="btn btn-secondary" href="#"> <i class="bi bi-pencil-square"></i> Update </a> </div> - <div class="col-sm-3"> + <div class="col-sm-3">--> <!-- <button type="button" class="btn btn-danger"><i class="bi bi-x-square"></i>Delete service</button> --> - <button type="button" class="btn btn-danger" data-bs-toggle="modal" data-bs-target="#deleteModal"> + <!--<button type="button" class="btn btn-danger" data-bs-toggle="modal" data-bs-target="#deleteModal"> <i class="bi bi-x-square"></i>Delete service </button> </div> + --> </div> <div class="row mb-3"> @@ -91,66 +93,51 @@ {% for constraint in service.service_constraints %} {% if constraint.WhichOneof('constraint')=='custom' %} <tr> - <td> - Custom - </td> - <td> - {{ constraint.custom.constraint_type }} - </td> - <td> - <ul> - {{ constraint.custom.constraint_value }} - </ul> - </td> + <td>Custom</td> + <td>{{ constraint.custom.constraint_type }}</td> + <td>{{ constraint.custom.constraint_value }}</td> </tr> - {% endif %} - {% if constraint.WhichOneof('constraint')=='endpoint_location' %} + {% elif constraint.WhichOneof('constraint')=='endpoint_location' %} <tr> - <td> - Endpoint Location - </td> + <td>Endpoint Location</td> <td> {{ constraint.endpoint_location.endpoint_id.device_id.device_uuid.uuid }} / {{ constraint.endpoint_location.endpoint_id.endpoint_uuid.uuid }} </td> <td> - <ul> - {{ constraint.endpoint_location.location }} - </ul> + {% if constraint.endpoint_location.location.WhichOneof('location')=='region' %} + Region: {{ constraint.endpoint_location.location.region }} + {% elif constraint.endpoint_location.location.WhichOneof('location')=='gps_position' %} + Position (lat/long): + {{ constraint.endpoint_location.location.gps_position.latitude }} / + {{ constraint.endpoint_location.location.gps_position.longitude }} + {% endif %} </td> </tr> - {% endif %} - {% if constraint.WhichOneof('constraint')=='endpoint_priority' %} + {% elif constraint.WhichOneof('constraint')=='endpoint_priority' %} <tr> - <td> - Endpoint Priority - </td> + <td>Endpoint Priority</td> <td> {{ constraint.endpoint_priority.endpoint_id.device_id.device_uuid.uuid }} / {{ constraint.endpoint_priority.endpoint_id.endpoint_uuid.uuid }} </td> - <td> - <ul> - {{ constraint.endpoint_priority.priority }} - </ul> - </td> + <td>{{ constraint.endpoint_priority.priority }}</td> </tr> - {% endif %} - {% if constraint.WhichOneof('constraint')=='sla_availability' %} + {% elif constraint.WhichOneof('constraint')=='sla_availability' %} <tr> + <td>SLA Availability</td> + <td>-</td> <td> - SLA Availability - </td> - <td> - / - </td> - <td> - <ul> - <li> num_disjoint_paths: {{ constraint.sla_availability.num_disjoint_paths }} </li> - <li> all_active: {{ constraint.sla_availability.all_active }} </li> - </ul> + {{ constraint.sla_availability.num_disjoint_paths }} disjoint paths; + {% if constraint.sla_availability.all_active %}all{% else %}single{% endif %}active </td> </tr> + {% else %} + <tr> + <td>-</td> + <td>-</td> + <td>{{ constraint }}</td> + </tr> {% endif %} {% endfor %} </tbody> diff --git a/src/webui/service/templates/slice/detail.html b/src/webui/service/templates/slice/detail.html index dd59f33523966d5714e7c85876f94e532290d405..97dfdb9d2a28023e650beae22c83ca89fe43ae1a 100644 --- a/src/webui/service/templates/slice/detail.html +++ b/src/webui/service/templates/slice/detail.html @@ -20,49 +20,64 @@ <h1>Slice {{ slice.slice_id.slice_uuid.uuid }} </h1> <div class="row mb-3"> - <div class="col-sm-3"> - <button type="button" class="btn btn-success" onclick="window.location.href='{{ url_for('slice.home') }}'"> - <i class="bi bi-box-arrow-in-left"></i> - Back to slice list - </button> - </div> + <div class="col-sm-3"> + <button type="button" class="btn btn-success" onclick="window.location.href='{{ url_for('slice.home') }}'"> + <i class="bi bi-box-arrow-in-left"></i> + Back to slice list + </button> + </div> + <!-- + <div class="col-sm-3"> + <a id="update" class="btn btn-secondary" href="#"> + <i class="bi bi-pencil-square"></i> + Update + </a> + </div> + <div class="col-sm-3">--> + <!-- <button type="button" class="btn btn-danger"><i class="bi bi-x-square"></i>Delete slice</button> --> + <!--<button type="button" class="btn btn-danger" data-bs-toggle="modal" data-bs-target="#deleteModal"> + <i class="bi bi-x-square"></i>Delete slice + </button> + </div> + --> </div> + <div class="row mb-3"> - <div class="col-sm-4"> - <b>UUID: </b> {{ slice.slice_id.slice_uuid.uuid }}<br><br> - <b>Status: </b> {{ sse.Name(slice.slice_status.slice_status).replace('SLICESTATUS_', '') }}<br><br> - </div> - <div class="col-sm-8"> - <table class="table table-striped table-hover"> - <thead> - <tr> - <th scope="col">Endpoints</th> - <th scope="col">Device</th> - </tr> - </thead> - <tbody> - {% for endpoint in slice.slice_endpoint_ids %} - <tr> - <td> - {{ endpoint.endpoint_uuid.uuid }} - </td> - <td> - <a href="{{ url_for('device.detail', device_uuid=endpoint.device_id.device_uuid.uuid) }}"> - {{ endpoint.device_id.device_uuid.uuid }} - <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" - class="bi bi-eye" viewBox="0 0 16 16"> - <path - d="M16 8s-3-5.5-8-5.5S0 8 0 8s3 5.5 8 5.5S16 8 16 8zM1.173 8a13.133 13.133 0 0 1 1.66-2.043C4.12 4.668 5.88 3.5 8 3.5c2.12 0 3.879 1.168 5.168 2.457A13.133 13.133 0 0 1 14.828 8c-.058.087-.122.183-.195.288-.335.48-.83 1.12-1.465 1.755C11.879 11.332 10.119 12.5 8 12.5c-2.12 0-3.879-1.168-5.168-2.457A13.134 13.134 0 0 1 1.172 8z" /> - <path - d="M8 5.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zM4.5 8a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0z" /> - </svg> - </a> - </td> - </tr> - {% endfor %} - </tbody> - </table> - </div> + <div class="col-sm-4"> + <b>UUID: </b> {{ slice.slice_id.slice_uuid.uuid }}<br><br> + <b>Status: </b> {{ sse.Name(slice.slice_status.slice_status).replace('SLICESTATUS_', '') }}<br><br> + </div> + <div class="col-sm-8"> + <table class="table table-striped table-hover"> + <thead> + <tr> + <th scope="col">Endpoints</th> + <th scope="col">Device</th> + </tr> + </thead> + <tbody> + {% for endpoint in slice.slice_endpoint_ids %} + <tr> + <td> + {{ endpoint.endpoint_uuid.uuid }} + </td> + <td> + <a href="{{ url_for('device.detail', device_uuid=endpoint.device_id.device_uuid.uuid) }}"> + {{ endpoint.device_id.device_uuid.uuid }} + <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" + class="bi bi-eye" viewBox="0 0 16 16"> + <path + d="M16 8s-3-5.5-8-5.5S0 8 0 8s3 5.5 8 5.5S16 8 16 8zM1.173 8a13.133 13.133 0 0 1 1.66-2.043C4.12 4.668 5.88 3.5 8 3.5c2.12 0 3.879 1.168 5.168 2.457A13.133 13.133 0 0 1 14.828 8c-.058.087-.122.183-.195.288-.335.48-.83 1.12-1.465 1.755C11.879 11.332 10.119 12.5 8 12.5c-2.12 0-3.879-1.168-5.168-2.457A13.134 13.134 0 0 1 1.172 8z" /> + <path + d="M8 5.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zM4.5 8a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0z" /> + </svg> + </a> + </td> + </tr> + {% endfor %} + </tbody> + </table> + </div> </div> <b>Constraints:</b> <table class="table table-striped table-hover"> @@ -77,63 +92,75 @@ {% for constraint in slice.slice_constraints %} {% if constraint.WhichOneof('constraint')=='custom' %} <tr> - <td> - Custom - </td> - <td> - {{ constraint.custom.constraint_type }} - </td> - <td> - <ul> - {{ constraint.custom.constraint_value }} - </ul> - </td> + <td>Custom</td> + <td>{{ constraint.custom.constraint_type }}</td> + <td>{{ constraint.custom.constraint_value }}</td> </tr> - {% endif %} - {% if constraint.WhichOneof('constraint')=='endpoint_location' %} + {% elif constraint.WhichOneof('constraint')=='endpoint_location' %} <tr> - <td> - Endpoint Location - </td> + <td>Endpoint Location</td> <td> {{ constraint.endpoint_location.endpoint_id.device_id.device_uuid.uuid }} / {{ constraint.endpoint_location.endpoint_id.endpoint_uuid.uuid }} </td> <td> - <ul> - {{ constraint.endpoint_location.location }} - </ul> + {% if constraint.endpoint_location.location.WhichOneof('location')=='region' %} + Region: {{ constraint.endpoint_location.location.region }} + {% elif constraint.endpoint_location.location.WhichOneof('location')=='gps_position' %} + Position (lat/long): + {{ constraint.endpoint_location.location.gps_position.latitude }} / + {{ constraint.endpoint_location.location.gps_position.longitude }} + {% endif %} </td> </tr> - {% endif %} - {% if constraint.WhichOneof('constraint')=='endpoint_priority' %} + {% elif constraint.WhichOneof('constraint')=='endpoint_priority' %} <tr> - <td> - Endpoint Priority - </td> + <td>Endpoint Priority</td> <td> {{ constraint.endpoint_priority.endpoint_id.device_id.device_uuid.uuid }} / {{ constraint.endpoint_priority.endpoint_id.endpoint_uuid.uuid }} </td> + <td>{{ constraint.endpoint_priority.priority }}</td> + </tr> + {% elif constraint.WhichOneof('constraint')=='sla_availability' %} + <tr> + <td>SLA Availability</td> + <td>-</td> <td> - <ul> - {{ constraint.endpoint_priority.priority }} - </ul> + {{ constraint.sla_availability.num_disjoint_paths }} disjoint paths; + {% if constraint.sla_availability.all_active %}all{% else %}single{% endif %}active </td> </tr> + {% else %} + <tr> + <td>-</td> + <td>-</td> + <td>{{ constraint }}</td> + </tr> {% endif %} - {% if constraint.WhichOneof('constraint')=='sla_availability' %} + {% endfor %} + </tbody> +</table> +<b>Configurations:</b> +<table class="table table-striped table-hover"> + <thead> + <tr> + <th scope="col">Key</th> + <th scope="col">Value</th> + </tr> + </thead> + <tbody> + {% for config in slice.slice_config.config_rules %} + {% if config.WhichOneof('config_rule') == 'custom' %} <tr> <td> - SLA Availability - </td> - <td> - / + {{ config.custom.resource_key }} </td> <td> <ul> - <li> num_disjoint_paths: {{ constraint.sla_availability.num_disjoint_paths }} </li> - <li> all_active: {{ constraint.sla_availability.all_active }} </li> + {% for key, value in (config.custom.resource_value | from_json).items() %} + <li><b>{{ key }}:</b> {{ value }}</li> + {% endfor %} </ul> </td> </tr> @@ -141,75 +168,48 @@ {% endfor %} </tbody> </table> -<b>Configurations:</b> -<table class="table table-striped table-hover"> - <thead> - <tr> - <th scope="col">Key</th> - <th scope="col">Value</th> - </tr> - </thead> - <tbody> - {% for config in slice.slice_config.config_rules %} - {% if config.WhichOneof('config_rule') == 'custom' %} - <tr> - <td> - {{ config.custom.resource_key }} - </td> - <td> - <ul> - {% for key, value in (config.custom.resource_value | from_json).items() %} - <li><b>{{ key }}:</b> {{ value }}</li> - {% endfor %} - </ul> - </td> - </tr> - {% endif %} - {% endfor %} - </tbody> -</table> <div class="row mb-2"> - <div class="col-sm-6"> - <table class="table table-striped table-hover"> - <thead> - <tr> - <th scope="col">Service Id</th> - </tr> - </thead> - <tbody> - {% for services in services.services %} - <tr> - <td> - <a href="{{ url_for('service.detail', service_uuid=services.service_id.service_uuid.uuid) }}"> - {{ services.service_id.service_uuid.uuid }} - <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-eye" viewBox="0 0 16 16"> - <path d="M16 8s-3-5.5-8-5.5S0 8 0 8s3 5.5 8 5.5S16 8 16 8zM1.173 8a13.133 13.133 0 0 1 1.66-2.043C4.12 4.668 5.88 3.5 8 3.5c2.12 0 3.879 1.168 5.168 2.457A13.133 13.133 0 0 1 14.828 8c-.058.087-.122.183-.195.288-.335.48-.83 1.12-1.465 1.755C11.879 11.332 10.119 12.5 8 12.5c-2.12 0-3.879-1.168-5.168-2.457A13.134 13.134 0 0 1 1.172 8z"/> - <path d="M8 5.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zM4.5 8a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0z"/> - </svg> - </a> - </td> - </tr> - {% endfor %} - </tbody> - </table> - </div> - <div class="col-sm-6"> - <table class="table table-striped table-hover"> - <thead> - <tr> - <th scope="col">Sub-slice</th> - </tr> - </thead> - <tbody> - {% for services in services.services %} - <tr> - <td> - {{ services.sub_slice_ids|map(attribute='slice_uuid')|map(attribute='uuid')|join(', ') }} - </td> - </tr> - {% endfor %} - </tbody> - </table> - </div> + <div class="col-sm-6"> + <table class="table table-striped table-hover"> + <thead> + <tr> + <th scope="col">Service Id</th> + </tr> + </thead> + <tbody> + {% for services in services.services %} + <tr> + <td> + <a href="{{ url_for('service.detail', service_uuid=services.service_id.service_uuid.uuid) }}"> + {{ services.service_id.service_uuid.uuid }} + <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-eye" viewBox="0 0 16 16"> + <path d="M16 8s-3-5.5-8-5.5S0 8 0 8s3 5.5 8 5.5S16 8 16 8zM1.173 8a13.133 13.133 0 0 1 1.66-2.043C4.12 4.668 5.88 3.5 8 3.5c2.12 0 3.879 1.168 5.168 2.457A13.133 13.133 0 0 1 14.828 8c-.058.087-.122.183-.195.288-.335.48-.83 1.12-1.465 1.755C11.879 11.332 10.119 12.5 8 12.5c-2.12 0-3.879-1.168-5.168-2.457A13.134 13.134 0 0 1 1.172 8z"/> + <path d="M8 5.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zM4.5 8a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0z"/> + </svg> + </a> + </td> + </tr> + {% endfor %} + </tbody> + </table> + </div> + <div class="col-sm-6"> + <table class="table table-striped table-hover"> + <thead> + <tr> + <th scope="col">Sub-slice</th> + </tr> + </thead> + <tbody> + {% for services in services.services %} + <tr> + <td> + {{ services.sub_slice_ids|map(attribute='slice_uuid')|map(attribute='uuid')|join(', ') }} + </td> + </tr> + {% endfor %} + </tbody> + </table> + </div> </div> {% endblock %} \ No newline at end of file