diff --git a/deploy/webui.sh b/deploy/webui.sh deleted file mode 100755 index 94cc12122df50c572cfdc014b6db9cf83a35ebe8..0000000000000000000000000000000000000000 --- a/deploy/webui.sh +++ /dev/null @@ -1,181 +0,0 @@ -#!/bin/bash -# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -######################################################################################################################## -# Read deployment settings -######################################################################################################################## - - -# ----- TeraFlowSDN ------------------------------------------------------------ - -# If not already set, set the URL of the Docker registry where the images will be uploaded to. -# By default, assume internal MicroK8s registry is used. -export TFS_REGISTRY_IMAGES=${TFS_REGISTRY_IMAGES:-"http://localhost:32000/tfs/"} - -# If not already set, set the list of components, separated by spaces, you want to build images for, and deploy. -# By default, only basic components are deployed -export TFS_COMPONENTS=${TFS_COMPONENTS:-"context device service compute webui"} - -# If not already set, set the tag you want to use for your images. -export TFS_IMAGE_TAG=${TFS_IMAGE_TAG:-"dev"} - -# If not already set, set the name of the Kubernetes namespace to deploy TFS to. -export TFS_K8S_NAMESPACE=${TFS_K8S_NAMESPACE:-"tfs"} - -# If not already set, set additional manifest files to be applied after the deployment -export TFS_EXTRA_MANIFESTS=${TFS_EXTRA_MANIFESTS:-""} - -# If not already set, set the new Grafana admin password -export TFS_GRAFANA_PASSWORD=${TFS_GRAFANA_PASSWORD:-"admin123+"} - -# If not already set, disable skip-build flag to rebuild the Docker images. -# If TFS_SKIP_BUILD is "YES", the containers are not rebuilt-retagged-repushed and existing ones are used. -export TFS_SKIP_BUILD=${TFS_SKIP_BUILD:-""} - - -# ----- CockroachDB ------------------------------------------------------------ - -# If not already set, set the namespace where CockroackDB will be deployed. -export CRDB_NAMESPACE=${CRDB_NAMESPACE:-"crdb"} - -# If not already set, set the external port CockroackDB Postgre SQL interface will be exposed to. -export CRDB_EXT_PORT_SQL=${CRDB_EXT_PORT_SQL:-"26257"} - -# If not already set, set the external port CockroackDB HTTP Mgmt GUI interface will be exposed to. -export CRDB_EXT_PORT_HTTP=${CRDB_EXT_PORT_HTTP:-"8081"} - -# If not already set, set the database username to be used by Context. -export CRDB_USERNAME=${CRDB_USERNAME:-"tfs"} - -# If not already set, set the database user's password to be used by Context. -export CRDB_PASSWORD=${CRDB_PASSWORD:-"tfs123"} - -# If not already set, set the database name to be used by Context. -export CRDB_DATABASE=${CRDB_DATABASE:-"tfs"} - -# If not already set, set CockroachDB installation mode. Accepted values are: 'single' and 'cluster'. -# "YES", the database pointed by variable CRDB_NAMESPACE will be dropped while -# checking/deploying CockroachDB. -# - If CRDB_DEPLOY_MODE is "single", CockroachDB is deployed in single node mode. It is convenient for -# development and testing purposes and should fit in a VM. IT SHOULD NOT BE USED IN PRODUCTION ENVIRONMENTS. -# - If CRDB_DEPLOY_MODE is "cluster", CockroachDB is deployed in cluster mode, and an entire CockroachDB cluster -# with 3 replicas and version v22.2 (set by default) will be deployed. It is convenient for production and -# provides scalability features. If you are deploying for production, also read the following link providing -# details on deploying CockroachDB for production environments: -# Ref: https://www.cockroachlabs.com/docs/stable/recommended-production-settings.html -export CRDB_DEPLOY_MODE=${CRDB_DEPLOY_MODE:-"single"} - -# If not already set, disable flag for dropping database, if it exists. -# WARNING: ACTIVATING THIS FLAG IMPLIES LOOSING THE DATABASE INFORMATION! -# If CRDB_DROP_DATABASE_IF_EXISTS is "YES", the database pointed by variable CRDB_NAMESPACE will be dropped while -# checking/deploying CockroachDB. -export CRDB_DROP_DATABASE_IF_EXISTS=${CRDB_DROP_DATABASE_IF_EXISTS:-""} - -# If not already set, disable flag for re-deploying CockroachDB from scratch. -# WARNING: ACTIVATING THIS FLAG IMPLIES LOOSING THE DATABASE INFORMATION! -# WARNING: THE REDEPLOY MIGHT TAKE FEW MINUTES TO COMPLETE GRACEFULLY IN CLUSTER MODE -# If CRDB_REDEPLOY is "YES", the database will be dropped while checking/deploying CockroachDB. -export CRDB_REDEPLOY=${CRDB_REDEPLOY:-""} - - -# ----- NATS ------------------------------------------------------------------- - -# If not already set, set the namespace where NATS will be deployed. -export NATS_NAMESPACE=${NATS_NAMESPACE:-"nats"} - -# If not already set, set the external port NATS Client interface will be exposed to. -export NATS_EXT_PORT_CLIENT=${NATS_EXT_PORT_CLIENT:-"4222"} - -# If not already set, set the external port NATS HTTP Mgmt GUI interface will be exposed to. -export NATS_EXT_PORT_HTTP=${NATS_EXT_PORT_HTTP:-"8222"} - -# If not already set, disable flag for re-deploying NATS from scratch. -# WARNING: ACTIVATING THIS FLAG IMPLIES LOOSING THE MESSAGE BROKER INFORMATION! -# If NATS_REDEPLOY is "YES", the message broker will be dropped while checking/deploying NATS. -export NATS_REDEPLOY=${NATS_REDEPLOY:-""} - - -# ----- QuestDB ---------------------------------------------------------------- - -# If not already set, set the namespace where QuestDB will be deployed. -export QDB_NAMESPACE=${QDB_NAMESPACE:-"qdb"} - -# If not already set, set the external port QuestDB Postgre SQL interface will be exposed to. -export QDB_EXT_PORT_SQL=${QDB_EXT_PORT_SQL:-"8812"} - -# If not already set, set the external port QuestDB Influx Line Protocol interface will be exposed to. -export QDB_EXT_PORT_ILP=${QDB_EXT_PORT_ILP:-"9009"} - -# If not already set, set the external port QuestDB HTTP Mgmt GUI interface will be exposed to. -export QDB_EXT_PORT_HTTP=${QDB_EXT_PORT_HTTP:-"9000"} - -# If not already set, set the database username to be used for QuestDB. -export QDB_USERNAME=${QDB_USERNAME:-"admin"} - -# If not already set, set the database user's password to be used for QuestDB. -export QDB_PASSWORD=${QDB_PASSWORD:-"quest"} - -# If not already set, set the table name to be used by Monitoring for KPIs. -export QDB_TABLE_MONITORING_KPIS=${QDB_TABLE_MONITORING_KPIS:-"tfs_monitoring_kpis"} - -# If not already set, set the table name to be used by Slice for plotting groups. -export QDB_TABLE_SLICE_GROUPS=${QDB_TABLE_SLICE_GROUPS:-"tfs_slice_groups"} - -# If not already set, disable flag for dropping tables if they exist. -# WARNING: ACTIVATING THIS FLAG IMPLIES LOOSING THE TABLE INFORMATION! -# If QDB_DROP_TABLES_IF_EXIST is "YES", the tables pointed by variables -# QDB_TABLE_MONITORING_KPIS and QDB_TABLE_SLICE_GROUPS will be dropped while -# checking/deploying QuestDB. -export QDB_DROP_TABLES_IF_EXIST=${QDB_DROP_TABLES_IF_EXIST:-""} - -# If not already set, disable flag for re-deploying QuestDB from scratch. -# WARNING: ACTIVATING THIS FLAG IMPLIES LOOSING THE DATABASE INFORMATION! -# If QDB_REDEPLOY is "YES", the database will be dropped while checking/deploying QuestDB. -export QDB_REDEPLOY=${QDB_REDEPLOY:-""} - - -# ----- K8s Observability ------------------------------------------------------ - -# If not already set, set the external port Prometheus Mgmt HTTP GUI interface will be exposed to. -export PROM_EXT_PORT_HTTP=${PROM_EXT_PORT_HTTP:-"9090"} - -# If not already set, set the external port Grafana HTTP Dashboards will be exposed to. -export GRAF_EXT_PORT_HTTP=${GRAF_EXT_PORT_HTTP:-"3000"} - - -######################################################################################################################## -# Automated steps start here -######################################################################################################################## - -# Deploy CockroachDB -./deploy/crdb.sh - -# Deploy NATS -./deploy/nats.sh - -# Deploy QuestDB -./deploy/qdb.sh - -# Expose Dashboard -./deploy/expose_dashboard.sh - -# Deploy TeraFlowSDN -./deploy/tfs.sh - -# Show deploy summary -./deploy/show.sh - -echo "Done!" diff --git a/manifests/deviceservice.yaml b/manifests/deviceservice.yaml index 3892129e926a5154c3db59928a1cf5b806b4f115..22c0f5f9d124b76d0e477dce35d14811204c1496 100644 --- a/manifests/deviceservice.yaml +++ b/manifests/deviceservice.yaml @@ -39,7 +39,7 @@ spec: - containerPort: 9192 env: - name: LOG_LEVEL - value: "DEBUG" + value: "INFO" readinessProbe: exec: command: ["/bin/grpc_health_probe", "-addr=:2020"] diff --git a/manifests/pathcompservice.yaml b/manifests/pathcompservice.yaml index f1017870098b578770fd0d4f8e9201c7fb9bf0a4..3ba12750b20a7093a570748e67a93922316a66f6 100644 --- a/manifests/pathcompservice.yaml +++ b/manifests/pathcompservice.yaml @@ -36,7 +36,7 @@ spec: - containerPort: 9192 env: - name: LOG_LEVEL - value: "DEBUG" + value: "INFO" readinessProbe: exec: command: ["/bin/grpc_health_probe", "-addr=:10020"] diff --git a/manifests/serviceservice.yaml b/manifests/serviceservice.yaml index 3865fd6c0bee8d5222d57c50df58435a5669b9e1..7d7bdaa4ef9ad4972da6236071810c63a9faa4f8 100644 --- a/manifests/serviceservice.yaml +++ b/manifests/serviceservice.yaml @@ -36,7 +36,7 @@ spec: - containerPort: 9192 env: - name: LOG_LEVEL - value: "DEBUG" + value: "INFO" readinessProbe: exec: command: ["/bin/grpc_health_probe", "-addr=:3030"] diff --git a/src/common/method_wrappers/tests/deploy_specs.sh b/src/common/method_wrappers/tests/deploy_specs.sh index 41537a26ceea5b17a79077892545dfae3edeb792..1f41d2348e5a2d60c816071ef3414df281caeaaa 100755 --- a/src/common/method_wrappers/tests/deploy_specs.sh +++ b/src/common/method_wrappers/tests/deploy_specs.sh @@ -57,7 +57,7 @@ export CRDB_DATABASE="tfs" export CRDB_DEPLOY_MODE="single" # Disable flag for dropping database, if it exists. -export CRDB_DROP_DATABASE_IF_EXISTS="YES" +export CRDB_DROP_DATABASE_IF_EXISTS="" # Disable flag for re-deploying CockroachDB from scratch. export CRDB_REDEPLOY="" @@ -90,7 +90,7 @@ export QDB_TABLE_MONITORING_KPIS="tfs_monitoring_kpis" export QDB_TABLE_SLICE_GROUPS="tfs_slice_groups" # Disable flag for dropping tables if they exist. -export QDB_DROP_TABLES_IF_EXIST="YES" +export QDB_DROP_TABLES_IF_EXIST="" # Disable flag for re-deploying QuestDB from scratch. export QDB_REDEPLOY="" diff --git a/src/webui/requirements.in b/src/webui/requirements.in index d9de647f1225f0f2a58bf4322ae5ca4b19f5329c..b4a158d394bc2de67af1e0e99e922df08104f736 100644 --- a/src/webui/requirements.in +++ b/src/webui/requirements.in @@ -17,4 +17,3 @@ Flask-WTF==1.0.0 flask-healthz==0.0.3 flask-unittest==0.1.2 lorem-text==2.1 -APScheduler==3.8.1 diff --git a/src/webui/service/__init__.py b/src/webui/service/__init__.py index 05b2eeaf0b7277b960259950ec099b9517124c17..3c64f45c90457e1b6a9553e60634879a28910a31 100644 --- a/src/webui/service/__init__.py +++ b/src/webui/service/__init__.py @@ -16,7 +16,6 @@ import json from typing import List, Tuple, Union from flask import Flask, request, session from flask_healthz import healthz, HealthError -from common.tools.grpc.Tools import grpc_message_to_json from context.client.ContextClient import ContextClient from device.client.DeviceClient import DeviceClient @@ -101,7 +100,6 @@ def create_app(use_config=None, web_app_root=None): app.jinja_env.globals.update({ # pylint: disable=no-member 'enumerate' : enumerate, - 'grpc_message_to_json': grpc_message_to_json, 'json_to_list' : json_to_list, 'round' : round, 'get_working_context' : get_working_context, diff --git a/src/webui/service/templates/service/add.html b/src/webui/service/templates/service/add.html deleted file mode 100644 index 2b03ebcbf05a759606861a675b1a9e76e12df47b..0000000000000000000000000000000000000000 --- a/src/webui/service/templates/service/add.html +++ /dev/null @@ -1,53 +0,0 @@ -<!-- - Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> -{% extends 'base.html' %} - -{% block content %} -<h1>Add New Service</h1> -<form method="POST" action="{{ url_for('service.add_configure') }}"> - <fieldset> - - <div class="row mb-3"> - {{ form_1.hidden_tag() }} - </div> - <div class="row mb-3"> - {{ form_1.service_type.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_1.service_type.errors %} - {{ form_1.service_type(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_1.service_type.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_1.service_type(class="form-control") }} - {% endif %} - </div> - </div> - <button type="submit" class="btn btn-primary"> - <i class="bi bi-plus-circle-fill"></i> - {{ submit_text }} - </button> - <button type="button" class="btn btn-block btn-secondary" onclick="javascript: history.back()"> - <i class="bi bi-box-arrow-in-left"></i> - Cancel - </button> - </div> - </fieldset> -</form> -{% endblock %} - diff --git a/src/webui/service/templates/service/configure_ACL_IPV4.html b/src/webui/service/templates/service/configure_ACL_IPV4.html deleted file mode 100644 index 43262ebee8798c1fa7bb658acd68d5a5a4386293..0000000000000000000000000000000000000000 --- a/src/webui/service/templates/service/configure_ACL_IPV4.html +++ /dev/null @@ -1,433 +0,0 @@ -<!-- - Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - -{% extends 'base.html' %} - -{% block content %} -<h1>Add New Service [ACL-IPV4]</h1> -<form method="POST" action="{{ url_for('service.add_configure_ACL_IPV4') }}"> - <fieldset> - <div class="row mb-3"> - {{ form_acl.hidden_tag() }} - </div> - <h3>Generic Service Parameters</h3> - {% if form_acl.acl_params is not none %} - <div class="row mb-3"> - {{ form_acl.service_name.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.service_name.errors %} - {{ form_acl.service_name(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_acl.service_name.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.service_name(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.service_type.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.service_type.errors %} - {{ form_acl.service_type(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_acl.service_type.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.service_type(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.service_device_1.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_acl.service_device_1.errors %} - {{ form_acl.service_device_1(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_acl.service_device_1.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.service_device_1(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - {{ form_acl.service_device_2.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_acl.service_device_2.errors %} - {{ form_acl.service_device_2(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_acl.service_device_2.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.service_device_2(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.service_endpoint_1.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_acl.service_endpoint_1.errors %} - {{ form_acl.service_endpoint_1(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_acl.service_endpoint_1.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.service_endpoint_1(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - {{ form_acl.service_endpoint_2.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_acl.service_endpoint_2.errors %} - {{ form_acl.service_endpoint_2(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_acl.service_endpoint_2.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.service_endpoint_2(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - </br> - <h3>Generic Service Constraints</h3> - <div class="row mb-3"> - {{ form_acl.service_capacity.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.service_capacity.errors %} - {{ form_acl.service_capacity(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.service_capacity.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.service_capacity(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.service_latency.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.service_latency.errors %} - {{ form_acl.service_latency(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.service_latency.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.service_latency(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.service_availability.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.service_availability.errors %} - {{ form_acl.service_availability(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.service_availability.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.service_availability(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.service_isolation.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.service_isolation.errors %} - {{ form_acl.service_isolation(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.service_isolation.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.service_isolation(class="form-control") }} - {% endif %} - </div> - </div> - </br> - <h3>Specific Service Parameters</h3> - </br> - <h4>Generic ACL Parameters</h4> - <div class="row mb-3"> - {{ form_acl.name.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.name.errors %} - {{ form_acl.name(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_acl.name.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.name(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.type.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.type.errors %} - {{ form_acl.type(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.type.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.type(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.sequence_id.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.sequence_id.errors %} - {{ form_acl.sequence_id(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_acl.sequence_id.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.sequence_id(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.forwarding_action.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.forwarding_action.errors %} - {{ form_acl.forwarding_action(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_acl.forwarding_action.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.forwarding_action(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.log_action.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.log_action.errors %} - {{ form_acl.log_action(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.log_action.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.log_action(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.traffic_flow.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.traffic_flow.errors %} - {{ form_acl.traffic_flow(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.traffic_flow.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.traffic_flow(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.interface.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.interface.errors %} - {{ form_acl.interface(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_acl.interface.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.interface(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.subinterface.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.subinterface.errors %} - {{ form_acl.subinterface(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.subinterface.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.subinterface(class="form-control") }} - {% endif %} - </div> - </div> - </br> - <h4>Specific ACL_IPV4 Parameters</h4> - <div class="row mb-3"> - {{ form_acl.source_address.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.source_address.errors %} - {{ form_acl.source_address(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.source_address.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.source_address(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.destination_address.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.destination_address.errors %} - {{ form_acl.destination_address(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.destination_address.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.destination_address(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.protocol.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.protocol.errors %} - {{ form_acl.protocol(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.protocol.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.protocol(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.hop_limit.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.hop_limit.errors %} - {{ form_acl.hop_limit(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.hop_limit.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.hop_limit(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.dscp.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.dscp.errors %} - {{ form_acl.dscp(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.dscp.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.dscp(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.source_port.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.source_port.errors %} - {{ form_acl.source_port(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.source_port.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.source_port(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.destination_port.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.destination_port.errors %} - {{ form_acl.destination_port(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.destination_port.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.destination_port(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.tcp_flags.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.tcp_flags.errors %} - {{ form_acl.tcp_flags(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.tcp_flags.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.tcp_flags(class="form-control") }} - {% endif %} - </div> - </div> - {% endif %} - <button type="submit" class="btn btn-primary"> - <i class="bi bi-plus-circle-fill"></i> - {{ submit_text }} - </button> - <button type="button" class="btn btn-block btn-secondary" onclick="javascript: history.back()"> - <i class="bi bi-box-arrow-in-left"></i> - Cancel - </button> - </fieldset> - </form> - {% endblock %} diff --git a/src/webui/service/templates/service/configure_ACL_IPV6.html b/src/webui/service/templates/service/configure_ACL_IPV6.html deleted file mode 100644 index 2fb2efbc6b4e6e57cde27315e779e2321a510eac..0000000000000000000000000000000000000000 --- a/src/webui/service/templates/service/configure_ACL_IPV6.html +++ /dev/null @@ -1,388 +0,0 @@ -<!-- - Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - -{% extends 'base.html' %} - -{% block content %} -<h1>Add New Service [ACL-IPV6]</h1> -<form method="POST" action="{{ url_for('service.add_configure_ACL_IPV6') }}"> - <fieldset> - <div class="row mb-3"> - {{ form_acl.hidden_tag() }} - </div> - <h3>Generic Service Parameters</h3> - {% if form_acl.acl_params is not none %} - <div class="row mb-3"> - {{ form_acl.service_name.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.service_name.errors %} - {{ form_acl.service_name(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_acl.service_name.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.service_name(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.service_type.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.service_type.errors %} - {{ form_acl.service_type(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_acl.service_type.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.service_type(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.service_device_1.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_acl.service_device_1.errors %} - {{ form_acl.service_device_1(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_acl.service_device_1.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.service_device_1(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - {{ form_acl.service_device_2.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_acl.service_device_2.errors %} - {{ form_acl.service_device_2(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_acl.service_device_2.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.service_device_2(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.service_endpoint_1.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_acl.service_endpoint_1.errors %} - {{ form_acl.service_endpoint_1(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_acl.service_endpoint_1.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.service_endpoint_1(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - {{ form_acl.service_endpoint_2.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_acl.service_endpoint_2.errors %} - {{ form_acl.service_endpoint_2(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_acl.service_endpoint_2.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.service_endpoint_2(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - </br> - <h3>Generic Service Constraints</h3> - <div class="row mb-3"> - {{ form_acl.service_capacity.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.service_capacity.errors %} - {{ form_acl.service_capacity(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.service_capacity.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.service_capacity(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.service_latency.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.service_latency.errors %} - {{ form_acl.service_latency(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.service_latency.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.service_latency(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.service_availability.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.service_availability.errors %} - {{ form_acl.service_availability(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.service_availability.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.service_availability(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.service_isolation.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.service_isolation.errors %} - {{ form_acl.service_isolation(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.service_isolation.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.service_isolation(class="form-control") }} - {% endif %} - </div> - </div> - </br> - <h3>Specific Service Parameters</h3> - </br> - <h4>Generic ACL Parameters</h4> - <div class="row mb-3"> - {{ form_acl.name.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.name.errors %} - {{ form_acl.name(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_acl.name.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.name(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.type.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.type.errors %} - {{ form_acl.type(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.type.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.type(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.sequence_id.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.sequence_id.errors %} - {{ form_acl.sequence_id(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_acl.sequence_id.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.sequence_id(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.forwarding_action.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.forwarding_action.errors %} - {{ form_acl.forwarding_action(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_acl.forwarding_action.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.forwarding_action(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.log_action.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.log_action.errors %} - {{ form_acl.log_action(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.log_action.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.log_action(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.traffic_flow.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.traffic_flow.errors %} - {{ form_acl.traffic_flow(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.traffic_flow.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.traffic_flow(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.interface.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.interface.errors %} - {{ form_acl.interface(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_acl.interface.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.interface(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.subinterface.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.subinterface.errors %} - {{ form_acl.subinterface(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.subinterface.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.subinterface(class="form-control") }} - {% endif %} - </div> - </div> - </br> - <h4>Specific ACL_IPV6 Parameters</h4> - <div class="row mb-3"> - {{ form_acl.source_address.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.source_address.errors %} - {{ form_acl.source_address(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.source_address.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.source_address(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.destination_address.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.destination_address.errors %} - {{ form_acl.destination_address(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.destination_address.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.destination_address(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.protocol.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.protocol.errors %} - {{ form_acl.protocol(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.protocol.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.protocol(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.hop_limit.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.hop_limit.errors %} - {{ form_acl.hop_limit(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.hop_limit.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.hop_limit(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.dscp.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.dscp.errors %} - {{ form_acl.dscp(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.dscp.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.dscp(class="form-control") }} - {% endif %} - </div> - </div> - {% endif %} - <button type="submit" class="btn btn-primary"> - <i class="bi bi-plus-circle-fill"></i> - {{ submit_text }} - </button> - <button type="button" class="btn btn-block btn-secondary" onclick="javascript: history.back()"> - <i class="bi bi-box-arrow-in-left"></i> - Cancel - </button> - </fieldset> - </form> - {% endblock %} diff --git a/src/webui/service/templates/service/configure_ACL_L2.html b/src/webui/service/templates/service/configure_ACL_L2.html deleted file mode 100644 index 41cd705478c9fba0c8b1445f2c8b1ce97696876c..0000000000000000000000000000000000000000 --- a/src/webui/service/templates/service/configure_ACL_L2.html +++ /dev/null @@ -1,343 +0,0 @@ -<!-- - Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - -{% extends 'base.html' %} - -{% block content %} -<h1>Add New Service [ACL-L2]</h1> -<form method="POST" action="{{ url_for('service.add_configure_ACL_L2') }}"> - <fieldset> - <div class="row mb-3"> - {{ form_acl.hidden_tag() }} - </div> - <h3>Generic Service Parameters</h3> - {% if form_acl.acl_params is not none %} - <div class="row mb-3"> - {{ form_acl.service_name.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.service_name.errors %} - {{ form_acl.service_name(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_acl.service_name.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.service_name(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.service_type.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.service_type.errors %} - {{ form_acl.service_type(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_acl.service_type.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.service_type(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.service_device_1.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_acl.service_device_1.errors %} - {{ form_acl.service_device_1(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_acl.service_device_1.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.service_device_1(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - {{ form_acl.service_device_2.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_acl.service_device_2.errors %} - {{ form_acl.service_device_2(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_acl.service_device_2.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.service_device_2(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.service_endpoint_1.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_acl.service_endpoint_1.errors %} - {{ form_acl.service_endpoint_1(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_acl.service_endpoint_1.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.service_endpoint_1(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - {{ form_acl.service_endpoint_2.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_acl.service_endpoint_2.errors %} - {{ form_acl.service_endpoint_2(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_acl.service_endpoint_2.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.service_endpoint_2(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - </br> - <h3>Generic Service Constraints</h3> - <div class="row mb-3"> - {{ form_acl.service_capacity.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.service_capacity.errors %} - {{ form_acl.service_capacity(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.service_capacity.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.service_capacity(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.service_latency.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.service_latency.errors %} - {{ form_acl.service_latency(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.service_latency.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.service_latency(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.service_availability.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.service_availability.errors %} - {{ form_acl.service_availability(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.service_availability.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.service_availability(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.service_isolation.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.service_isolation.errors %} - {{ form_acl.service_isolation(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.service_isolation.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.service_isolation(class="form-control") }} - {% endif %} - </div> - </div> - </br> - <h3>Specific Service Parameters</h3> - </br> - <h4>Generic ACL Parameters</h4> - <div class="row mb-3"> - {{ form_acl.name.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.name.errors %} - {{ form_acl.name(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_acl.name.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.name(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.type.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.type.errors %} - {{ form_acl.type(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.type.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.type(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.sequence_id.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.sequence_id.errors %} - {{ form_acl.sequence_id(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_acl.sequence_id.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.sequence_id(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.forwarding_action.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.forwarding_action.errors %} - {{ form_acl.forwarding_action(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_acl.forwarding_action.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.forwarding_action(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.log_action.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.log_action.errors %} - {{ form_acl.log_action(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.log_action.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.log_action(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.traffic_flow.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.traffic_flow.errors %} - {{ form_acl.traffic_flow(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.traffic_flow.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.traffic_flow(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.interface.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.interface.errors %} - {{ form_acl.interface(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_acl.interface.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.interface(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.subinterface.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.subinterface.errors %} - {{ form_acl.subinterface(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.subinterface.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.subinterface(class="form-control") }} - {% endif %} - </div> - </div> - </br> - <h4>Specific ACL_L2 Parameters</h4> - <div class="row mb-3"> - {{ form_acl.source_mac.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.source_mac.errors %} - {{ form_acl.source_mac(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.source_mac.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.source_mac(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_acl.destination_mac.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_acl.destination_mac.errors %} - {{ form_acl.destination_mac(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_acl.destination_mac.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_acl.destination_mac(class="form-control") }} - {% endif %} - </div> - </div> - {% endif %} - <button type="submit" class="btn btn-primary"> - <i class="bi bi-plus-circle-fill"></i> - {{ submit_text }} - </button> - <button type="button" class="btn btn-block btn-secondary" onclick="javascript: history.back()"> - <i class="bi bi-box-arrow-in-left"></i> - Cancel - </button> - </fieldset> - </form> - {% endblock %} diff --git a/src/webui/service/templates/service/configure_L2VPN.html b/src/webui/service/templates/service/configure_L2VPN.html deleted file mode 100644 index c443a024d3f00d70c29b70e394a67c595b27cc69..0000000000000000000000000000000000000000 --- a/src/webui/service/templates/service/configure_L2VPN.html +++ /dev/null @@ -1,434 +0,0 @@ -<!-- - Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - -{% extends 'base.html' %} - -{% block content %} -<h1>Add New Service [L2VPN]</h1> -<form method="POST" action="{{ url_for('service.add_configure_L2VPN') }}"> - <fieldset> - <div class="row mb-3"> - {{ form_l2vpn.hidden_tag() }} - </div> - {% if form_l2vpn.l2vpn_params is not none %} - <h3>Generic Service Parameters</h3> - <div class="row mb-3"> - {{ form_l2vpn.service_name.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_l2vpn.service_name.errors %} - {{ form_l2vpn.service_name(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l2vpn.service_name.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l2vpn.service_name(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l2vpn.service_type.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_l2vpn.service_type.errors %} - {{ form_l2vpn.service_type(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l2vpn.service_type.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l2vpn.service_type(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l2vpn.service_device_1.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l2vpn.service_device_1.errors %} - {{ form_l2vpn.service_device_1(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l2vpn.service_device_1.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l2vpn.service_device_1(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - {{ form_l2vpn.service_device_2.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l2vpn.service_device_2.errors %} - {{ form_l2vpn.service_device_2(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l2vpn.service_device_2.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l2vpn.service_device_2(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l2vpn.service_endpoint_1.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l2vpn.service_endpoint_1.errors %} - {{ form_l2vpn.service_endpoint_1(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l2vpn.service_endpoint_1.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l2vpn.service_endpoint_1(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - {{ form_l2vpn.service_endpoint_2.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l2vpn.service_endpoint_2.errors %} - {{ form_l2vpn.service_endpoint_2(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l2vpn.service_endpoint_2.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l2vpn.service_endpoint_2(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <h3>Generic Service Constraints</h3> - <div class="row mb-3"> - {{ form_l2vpn.service_capacity.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_l2vpn.service_capacity.errors %} - {{ form_l2vpn.service_capacity(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_l2vpn.service_capacity.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l2vpn.service_capacity(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l2vpn.service_latency.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_l2vpn.service_latency.errors %} - {{ form_l2vpn.service_latency(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_l2vpn.service_latency.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l2vpn.service_latency(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l2vpn.service_availability.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_l2vpn.service_availability.errors %} - {{ form_l2vpn.service_availability(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_l2vpn.service_availability.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l2vpn.service_availability(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l2vpn.service_isolation.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_l2vpn.service_isolation.errors %} - {{ form_l2vpn.service_isolation(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_l2vpn.service_isolation.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l2vpn.service_isolation(class="form-control") }} - {% endif %} - </div> - </div> - </br> - <h3>Specific Service Parameters</h3> - </br> - <h4>Network Instance (NI) Parameters</h4> - <div class="row mb-3"> - {{ form_l2vpn.NI_name.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_l2vpn.NI_name.errors %} - {{ form_l2vpn.NI_name(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l2vpn.NI_name.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l2vpn.NI_name(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l2vpn.NI_mtu.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_l2vpn.NI_mtu.errors %} - {{ form_l2vpn.NI_mtu(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_l2vpn.NI_mtu.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l2vpn.NI_mtu(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l2vpn.NI_description.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_l2vpn.NI_description.errors %} - {{ form_l2vpn.NI_description(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_l2vpn.NI_description.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l2vpn.NI_description(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l2vpn.Device_1_NI_remote_system.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l2vpn.Device_1_NI_remote_system.errors %} - {{ form_l2vpn.Device_1_NI_remote_system(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l2vpn.Device_1_NI_remote_system.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l2vpn.Device_1_NI_remote_system(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - {{ form_l2vpn.Device_2_NI_remote_system.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l2vpn.Device_2_NI_remote_system.errors %} - {{ form_l2vpn.Device_2_NI_remote_system(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l2vpn.Device_2_NI_remote_system.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l2vpn.Device_2_NI_remote_system(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l2vpn.Device_1_NI_VC_ID.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l2vpn.Device_1_NI_VC_ID.errors %} - {{ form_l2vpn.Device_1_NI_VC_ID(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l2vpn.Device_1_NI_VC_ID.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l2vpn.Device_1_NI_VC_ID(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - {{ form_l2vpn.Device_2_NI_VC_ID.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l2vpn.Device_2_NI_VC_ID.errors %} - {{ form_l2vpn.Device_2_NI_VC_ID(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l2vpn.Device_2_NI_VC_ID.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l2vpn.Device_2_NI_VC_ID(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l2vpn.Device_1_NI_connection_point.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l2vpn.Device_1_NI_connection_point.errors %} - {{ form_l2vpn.Device_1_NI_connection_point(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l2vpn.Device_1_NI_connection_point.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l2vpn.Device_1_NI_connection_point(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - {{ form_l2vpn.Device_2_NI_connection_point.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l2vpn.Device_2_NI_connection_point.errors %} - {{ form_l2vpn.Device_2_NI_connection_point(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l2vpn.Device_2_NI_connection_point.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l2vpn.Device_2_NI_connection_point(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - - <h4>Interface Parameters</h4> - <div class="row mb-3"> - {{ form_l2vpn.Device_1_IF_index.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l2vpn.Device_1_IF_index.errors %} - {{ form_l2vpn.Device_1_IF_index(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l2vpn.Device_1_IF_index.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l2vpn.Device_1_IF_index(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - {{ form_l2vpn.Device_2_IF_index.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l2vpn.Device_2_IF_index.errors %} - {{ form_l2vpn.Device_2_IF_index(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l2vpn.Device_2_IF_index.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l2vpn.Device_2_IF_index(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l2vpn.Device_1_IF_vlan_id.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l2vpn.Device_1_IF_vlan_id.errors %} - {{ form_l2vpn.Device_1_IF_vlan_id(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l2vpn.Device_1_IF_vlan_id.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l2vpn.Device_1_IF_vlan_id(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - {{ form_l2vpn.Device_2_IF_vlan_id.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l2vpn.Device_2_IF_vlan_id.errors %} - {{ form_l2vpn.Device_2_IF_vlan_id(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l2vpn.Device_2_IF_vlan_id.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l2vpn.Device_2_IF_vlan_id(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l2vpn.Device_1_IF_mtu.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l2vpn.Device_1_IF_mtu.errors %} - {{ form_l2vpn.Device_1_IF_mtu(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_l2vpn.Device_1_IF_mtu.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l2vpn.Device_1_IF_mtu(class="form-control") }} - {% endif %} - </div> - {{ form_l2vpn.Device_2_IF_mtu.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l2vpn.Device_2_IF_mtu.errors %} - {{ form_l2vpn.Device_2_IF_mtu(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_l2vpn.Device_2_IF_mtu.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l2vpn.Device_2_IF_mtu(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l2vpn.Device_1_IF_description.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l2vpn.Device_1_IF_description.errors %} - {{ form_l2vpn.Device_1_IF_description(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_l2vpn.Device_1_IF_description.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l2vpn.Device_1_IF_description(class="form-control") }} - {% endif %} - </div> - {{ form_l2vpn.Device_2_IF_description.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l2vpn.Device_2_IF_description.errors %} - {{ form_l2vpn.Device_2_IF_description(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_l2vpn.Device_2_IF_description.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l2vpn.Device_2_IF_description(class="form-control") }} - {% endif %} - </div> - </div> - {% endif %} - <button type="submit" class="btn btn-primary"> - <i class="bi bi-plus-circle-fill"></i> - {{ submit_text }} - </button> - <button type="button" class="btn btn-block btn-secondary" onclick="javascript: history.back()"> - <i class="bi bi-box-arrow-in-left"></i> - Cancel - </button> - </div> - </fieldset> -</form> -{% endblock %} \ No newline at end of file diff --git a/src/webui/service/templates/service/configure_L3VPN.html b/src/webui/service/templates/service/configure_L3VPN.html deleted file mode 100644 index 575eec10ad3042ea1ed154a5f21fb6811f4d4ed0..0000000000000000000000000000000000000000 --- a/src/webui/service/templates/service/configure_L3VPN.html +++ /dev/null @@ -1,510 +0,0 @@ -<!-- - Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - -{% extends 'base.html' %} - -{% block content %} -<h1>Add New Service [L3VPN]</h1> -<form method="POST" action="{{ url_for('service.add_configure_L3VPN') }}"> - <fieldset> - <div class="row mb-3"> - {{ form_l3vpn.hidden_tag() }} - </div> - {% if form_l3vpn.l3vpn_params is not none %} - <h3>Generic Service Parameters</h3> - <div class="row mb-3"> - {{ form_l3vpn.service_name.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_l3vpn.service_name.errors %} - {{ form_l3vpn.service_name(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.service_name.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.service_name(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l3vpn.service_type.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_l3vpn.service_type.errors %} - {{ form_l3vpn.service_type(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.service_type.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.service_type(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l3vpn.service_device_1.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l3vpn.service_device_1.errors %} - {{ form_l3vpn.service_device_1(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.service_device_1.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.service_device_1(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - {{ form_l3vpn.service_device_2.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l3vpn.service_device_2.errors %} - {{ form_l3vpn.service_device_2(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.service_device_2.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.service_device_2(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l3vpn.service_endpoint_1.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l3vpn.service_endpoint_1.errors %} - {{ form_l3vpn.service_endpoint_1(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.service_endpoint_1.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.service_endpoint_1(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - {{ form_l3vpn.service_endpoint_2.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l3vpn.service_endpoint_2.errors %} - {{ form_l3vpn.service_endpoint_2(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.service_endpoint_2.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.service_endpoint_2(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <h3>Generic Service Constraints</h3> - <div class="row mb-3"> - {{ form_l3vpn.service_capacity.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_l3vpn.service_capacity.errors %} - {{ form_l3vpn.service_capacity(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.service_capacity.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.service_capacity(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l3vpn.service_latency.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_l3vpn.service_latency.errors %} - {{ form_l3vpn.service_latency(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.service_latency.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.service_latency(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l3vpn.service_availability.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_l3vpn.service_availability.errors %} - {{ form_l3vpn.service_availability(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.service_availability.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.service_availability(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l3vpn.service_isolation.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_l3vpn.service_isolation.errors %} - {{ form_l3vpn.service_isolation(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.service_isolation.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.service_isolation(class="form-control") }} - {% endif %} - </div> - </div> - </br> - <h3>Specific Service Parameters</h3> - </br> - <h4>Network Instance Parameters</h4> - <div class="row mb-3"> - {{ form_l3vpn.NI_name.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_l3vpn.NI_name.errors %} - {{ form_l3vpn.NI_name(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.NI_name.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.NI_name(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l3vpn.NI_route_distinguisher.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_l3vpn.NI_route_distinguisher.errors %} - {{ form_l3vpn.NI_route_distinguisher(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.NI_route_distinguisher.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.NI_route_distinguisher(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l3vpn.NI_protocol.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_l3vpn.NI_protocol.errors %} - {{ form_l3vpn.NI_protocol(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.NI_protocol.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.NI_protocol(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l3vpn.NI_as.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_l3vpn.NI_as.errors %} - {{ form_l3vpn.NI_as(class="form-control is-invalid", placeholder="Mandatory if BGP protocol is selected") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.NI_as.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.NI_as(class="form-control", placeholder="Mandatory if BGP protocol is selected") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l3vpn.NI_address_family.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_l3vpn.NI_address_family.errors %} - {{ form_l3vpn.NI_address_family(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.NI_address_family.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.NI_address_family(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l3vpn.NI_default_import_policy.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_l3vpn.NI_default_import_policy.errors %} - {{ form_l3vpn.NI_default_import_policy(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.NI_default_import_policy.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.NI_default_import_policy(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l3vpn.NI_import_policy.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_l3vpn.NI_import_policy.errors %} - {{ form_l3vpn.NI_import_policy(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.NI_import_policy.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.NI_import_policy(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l3vpn.NI_export_policy.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_l3vpn.NI_export_policy.errors %} - {{ form_l3vpn.NI_export_policy(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.NI_export_policy.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.NI_export_policy(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l3vpn.NI_router_id.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_l3vpn.NI_router_id.errors %} - {{ form_l3vpn.NI_router_id(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.NI_router_id.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.NI_router_id(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l3vpn.NI_description.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form_l3vpn.NI_description.errors %} - {{ form_l3vpn.NI_description(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.NI_description.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.NI_description(class="form-control") }} - {% endif %} - </div> - </div> - <h4>Interface Parameters</h4> - <div class="row mb-3"> - {{ form_l3vpn.Device_1_IF_index.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l3vpn.Device_1_IF_index.errors %} - {{ form_l3vpn.Device_1_IF_index(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.Device_1_IF_index.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.Device_1_IF_index(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - {{ form_l3vpn.Device_2_IF_index.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l3vpn.Device_2_IF_index.errors %} - {{ form_l3vpn.Device_2_IF_index(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.Device_2_IF_index.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.Device_2_IF_index(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l3vpn.Device_1_IF_vlan_id.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l3vpn.Device_1_IF_vlan_id.errors %} - {{ form_l3vpn.Device_1_IF_vlan_id(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.Device_1_IF_vlan_id.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.Device_1_IF_vlan_id(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - {{ form_l3vpn.Device_2_IF_vlan_id.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l3vpn.Device_2_IF_vlan_id.errors %} - {{ form_l3vpn.Device_2_IF_vlan_id(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.Device_2_IF_vlan_id.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.Device_2_IF_vlan_id(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l3vpn.Device_1_IF_address_ip.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l3vpn.Device_1_IF_address_ip.errors %} - {{ form_l3vpn.Device_1_IF_address_ip(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.Device_1_IF_address_ip.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.Device_1_IF_address_ip(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - {{ form_l3vpn.Device_2_IF_address_ip.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l3vpn.Device_2_IF_address_ip.errors %} - {{ form_l3vpn.Device_2_IF_address_ip(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.Device_2_IF_address_ip.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.Device_2_IF_address_ip(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l3vpn.Device_1_IF_address_prefix.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l3vpn.Device_1_IF_address_prefix.errors %} - {{ form_l3vpn.Device_1_IF_address_prefix(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.Device_1_IF_address_prefix.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.Device_1_IF_address_prefix(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - {{ form_l3vpn.Device_2_IF_address_prefix.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l3vpn.Device_2_IF_address_prefix.errors %} - {{ form_l3vpn.Device_2_IF_address_prefix(class="form-control is-invalid", placeholder="Mandatory") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.Device_2_IF_address_prefix.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.Device_2_IF_address_prefix(class="form-control", placeholder="Mandatory") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l3vpn.Device_1_IF_mtu.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l3vpn.Device_1_IF_mtu.errors %} - {{ form_l3vpn.Device_1_IF_mtu(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.Device_1_IF_mtu.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.Device_1_IF_mtu(class="form-control") }} - {% endif %} - </div> - {{ form_l3vpn.Device_2_IF_mtu.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l3vpn.Device_2_IF_mtu.errors %} - {{ form_l3vpn.Device_2_IF_mtu(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.Device_2_IF_mtu.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.Device_2_IF_mtu(class="form-control") }} - {% endif %} - </div> - </div> - <div class="row mb-3"> - {{ form_l3vpn.Device_1_IF_description.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l3vpn.Device_1_IF_description.errors %} - {{ form_l3vpn.Device_1_IF_description(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.Device_1_IF_description.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.Device_1_IF_description(class="form-control") }} - {% endif %} - </div> - {{ form_l3vpn.Device_2_IF_description.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-4"> - {% if form_l3vpn.Device_2_IF_description.errors %} - {{ form_l3vpn.Device_2_IF_description(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form_l3vpn.Device_2_IF_description.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form_l3vpn.Device_2_IF_description(class="form-control") }} - {% endif %} - </div> - </div> - {% endif %} - <button type="submit" class="btn btn-primary"> - <i class="bi bi-plus-circle-fill"></i> - {{ submit_text }} - </button> - <button type="button" class="btn btn-block btn-secondary" onclick="javascript: history.back()"> - <i class="bi bi-box-arrow-in-left"></i> - Cancel - </button> - </div> - </fieldset> -</form> -{% endblock %} \ No newline at end of file diff --git a/src/webui/service/templates/service/detail.html b/src/webui/service/templates/service/detail.html index 9e83f05c4a710b99646e026d7c5794c96aae3d3d..414aa19d0165ed7138f277005d5573c9242daefb 100644 --- a/src/webui/service/templates/service/detail.html +++ b/src/webui/service/templates/service/detail.html @@ -215,69 +215,6 @@ </td> </tr> {% endif %} - {% if config.WhichOneof('config_rule') == 'acl' %} - <tr> - <td> - {% if config.acl %} - {% set endpoint_id = config.acl.endpoint_id %} - {% set rule_set_name = config.acl.rule_set.name %} - /device[{{ endpoint_id.device_id.device_uuid.uuid }}]/endpoint[{{ endpoint_id.endpoint_uuid.uuid }}]/acl_ruleset[{{ rule_set_name }}] - {% endif %} - </td> - <td> - <ul> - {% if config.acl.rule_set.name %} - <li><b>name: </b>{{ config.acl.rule_set.name }}</li> - {% endif %} - {% if config.acl.rule_set.type %} - <li><b>type: </b>{{ type[config.acl.rule_set.type] }}</li> - {% endif %} - {% if config.acl.rule_set.description %} - <li><b>description: </b>{{ config.acl.rule_set.description }}</li> - {% endif %} - {% if config.acl.rule_set.user_id %} - <li><b>user_id: </b>{{ config.acl.rule_set.user_id }}</li> - {% endif %} - {% for entry in config.acl.rule_set.entries %} - {% if entry.description %} - <li><b>entry {{ entry.sequence_id }} description: </b>{{ entry.description }}</li> - {% endif %} - {% if entry.match.protocol %} - <li><b>entry {{ entry.sequence_id }} protocol: </b>{{ entry.match.protocol }}</li> - {% endif %} - {% if entry.match.dscp %} - <li><b>entry {{ entry.sequence_id }} dscp:</b>{{ entry.match.dscp }}</li> - {% endif %} - {% if entry.match.src_address %} - <li><b>entry {{ entry.sequence_id }} src_address: </b>{{ entry.match.src_address }}</li> - {% endif %} - {% if entry.match.dst_address %} - <li><b>entry {{ entry.sequence_id }} dst_address: </b>{{ entry.match.dst_address }}</li> - {% endif %} - {% if entry.match.src_port %} - <li><b>entry {{ entry.sequence_id }} src_port: </b>{{ entry.match.src_port }}</li> - {% endif %} - {% if entry.match.dst_port %} - <li><b>entry {{ entry.sequence_id }} dst_port: </b>{{ entry.match.dst_port }}</li> - {% endif %} - {% if entry.match.start_mpls_label %} - <li><b>entry {{ entry.sequence_id }} start mpls label: </b>{{ entry.match.start_mpls_label }}</li> - {% endif %} - {% if entry.match.end_mpls_label %} - <li><b>entry {{ entry.sequence_id }} end mpls label: </b> {{ entry.match.end_mpls_label }}</li> - {% endif %} - {% if entry.action.forward_action %} - <li><b>entry {{ entry.sequence_id }} forward_action: </b>{{ f_action[entry.action.forward_action] }}</li> - {% endif %} - {% if entry.action.log_action %} - <li><b>entry {{ entry.sequence_id }} log_action: </b>{{l_action[entry.action.log_action] }}</li> - {% endif %} - {% endfor %} - - </ul> - </td> - </tr> - {% endif %} {% endfor %} </tbody> </table> diff --git a/src/webui/service/templates/service/home.html b/src/webui/service/templates/service/home.html index a079dbd28b91a89210072f0c0df56b20d948ddb2..4e492c7a32717d5cd72029ef7ebd52c17fc77340 100644 --- a/src/webui/service/templates/service/home.html +++ b/src/webui/service/templates/service/home.html @@ -19,13 +19,13 @@ {% block content %} <h1>Services</h1> - <div class="row"> <!-- Button for adding a New Service --> - <div class="col"> - <a href="{{ url_for('service.add_configure') }}" class="btn btn-primary" style="margin-bottom: 10px;"> + <div class="row"> + <!-- <div class="col"> + <a href="{{ url_for('service.add') }}" class="btn btn-primary" style="margin-bottom: 10px;"> <i class="bi bi-plus"></i> Add New Service </a> - </div> + </div> --> <!-- Only display XR service addition button if there are XR constellations. Otherwise it might confuse user, as other service types do not have GUI to add service yet. --> @@ -41,7 +41,7 @@ <div class="col"> {{ services | length }} services found in context <i>{{ session['context_uuid'] }}</i> </div> - <!-- <div class="col"> Search engine for a service in the table of services + <!-- <div class="col"> <form> <div class="input-group"> <input type="text" aria-label="Search" placeholder="Search..." class="form-control"/>