Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • tfs/controller
1 result
Show changes
<!doctype html>
<!--
Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (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.
-->
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" href="https://tfs.etsi.org/images/logos/tfs_logo_small.png" type="image/png" />
<!-- Bootstrap CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-uWxY/CJNBR+1zjPWmfnSnVxwRheevXITnMqoEIeG1LJrdI0GlVs/9cVSyPYXdcSF" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css">
<title>ETSI TeraFlowSDN Controller</title>
</head>
<body>
<div id="teraflow-branding">
<a href="{{ url_for('main.home') }}" title="Home" rel="home" id="main-logo" class="site-logo site-logo-pages">
<img src="{{ url_for('static', filename='TeraFlow SDN Logo ScreenColour with Slogan.png') }}" width="400" type="image/png">
<!doctype html>
<!--
Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (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.
-->
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" href="https://tfs.etsi.org/images/logos/tfs_logo_small.png" type="image/png" />
<!-- Bootstrap CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-uWxY/CJNBR+1zjPWmfnSnVxwRheevXITnMqoEIeG1LJrdI0GlVs/9cVSyPYXdcSF" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css">
<title>ETSI TeraFlowSDN Controller</title>
</head>
<body>
<div id="teraflow-branding">
<a href="{{ url_for('main.home') }}" title="Home" rel="home" id="main-logo" class="site-logo site-logo-pages">
<img src="{{ url_for('static', filename='TeraFlow SDN Logo ScreenColour with Slogan.png') }}" width="400" type="image/png">
</a>
</div>
<nav class="navbar navbar-expand-lg navbar-dark bg-primary" style="margin-bottom: 10px;">
<div class="container-fluid">
<a class="navbar-brand" href="{{ url_for('main.home') }}">
<img src="https://teraflow-h2020.eu/sites/teraflow/files/public/favicon.png" alt="" width="30" height="24" class="d-inline-block align-text-top"/>
TeraFlow
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarColor02" aria-controls="navbarColor02" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarColor02">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
{% if request.path == '/' %}
<a class="nav-link active" aria-current="page" href="{{ url_for('main.home') }}">Home</a>
{% else %}
<a class="nav-link" href="{{ url_for('main.home') }}">Home</a>
{% endif %}
</li>
<li class="nav-item">
{% if '/device/' in request.path %}
<a class="nav-link active" aria-current="page" href="{{ url_for('device.home') }}">Device</a>
{% else %}
<a class="nav-link" href="{{ url_for('device.home') }}">Device</a>
{% endif %}
</li>
<li class="nav-item">
{% if '/link/' in request.path %}
<a class="nav-link active" aria-current="page" href="{{ url_for('link.home') }}">Link</a>
{% else %}
<a class="nav-link" href="{{ url_for('link.home') }}">Link</a>
{% endif %}
</li>
<li class="nav-item">
{% if '/service/' in request.path %}
<a class="nav-link active" aria-current="page" href="{{ url_for('service.home') }}">Service</a>
{% else %}
<a class="nav-link" href="{{ url_for('service.home') }}">Service</a>
{% endif %}
</li>
<li class="nav-item">
{% if '/slice/' in request.path %}
<a class="nav-link active" aria-current="page" href="{{ url_for('slice.home') }}">Slice</a>
{% else %}
<a class="nav-link" href="{{ url_for('slice.home') }}">Slice</a>
{% endif %}
</li>
<li class="nav-item">
{% if '/policy_rule/' in request.path %}
<a class="nav-link active" aria-current="page" href="{{ url_for('policy_rule.home') }}">Policy Rules</a>
{% else %}
<a class="nav-link" href="{{ url_for('policy_rule.home') }}">Policy Rules</a>
{% endif %}
</li>
<li class="nav-item">
<a class="nav-link" href="/grafana" id="grafana_link" target="grafana">Grafana</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{ url_for('main.debug') }}">Debug</a>
</li>
<li class="nav-item">
{% if '/load-gen/' in request.path %}
<a class="nav-link active" aria-current="page" href="{{ url_for('load_gen.home') }}">Load Generator</a>
{% else %}
<a class="nav-link" href="{{ url_for('load_gen.home') }}">Load Generator</a>
{% endif %}
</li>
<li class="nav-item">
{% if '/pcep/' in request.path %}
<a class="nav-link active" aria-current="page" href="{{ url_for('pcep.home') }}">Pcep</a>
{% else %}
<a class="nav-link" href="{{ url_for('pcep.home') }}">Pcep</a>
{% endif %}
</li>
<li class="nav-item">
{% if '/bgpls/' in request.path %}
<a class="nav-link active" aria-current="page" href="{{ url_for('bgpls.home') }}">BGPLS</a>
{% else %}
<a class="nav-link" href="{{ url_for('bgpls.home') }}">BGPLS</a>
{% endif %}
</li>
<!-- <li class="nav-item">
<a class="nav-link" href="#">Context</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Monitoring</a>
</li> -->
<li class="nav-item">
<a class="nav-link" href="{{ url_for('main.about') }}">About</a>
</li>
</ul>
<span class="navbar-text" style="color: #fff;">
Selected Context(<b>{{ get_working_context() }}</b>)/Topology(<b>{{ get_working_topology() }}</b>)
</span>
</div>
</div>
<nav class="navbar navbar-expand-lg navbar-dark bg-primary" style="margin-bottom: 10px;">
<div class="container-fluid">
<a class="navbar-brand" href="{{ url_for('main.home') }}">
<img src="https://teraflow-h2020.eu/sites/teraflow/files/public/favicon.png" alt="" width="30" height="24" class="d-inline-block align-text-top"/>
TeraFlow
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarColor02" aria-controls="navbarColor02" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarColor02">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
{% if request.path == '/' %}
<a class="nav-link active" aria-current="page" href="{{ url_for('main.home') }}">Home</a>
{% else %}
<a class="nav-link" href="{{ url_for('main.home') }}">Home</a>
{% endif %}
</li>
<li class="nav-item">
{% if '/device/' in request.path %}
<a class="nav-link active" aria-current="page" href="{{ url_for('device.home') }}">Device</a>
{% else %}
<a class="nav-link" href="{{ url_for('device.home') }}">Device</a>
{% endif %}
</li>
<li class="nav-item">
{% if '/link/' in request.path %}
<a class="nav-link active" aria-current="page" href="{{ url_for('link.home') }}">Link</a>
{% else %}
<a class="nav-link" href="{{ url_for('link.home') }}">Link</a>
{% endif %}
</li>
<li class="nav-item">
{% if '/service/' in request.path %}
<a class="nav-link active" aria-current="page" href="{{ url_for('service.home') }}">Service</a>
{% else %}
<a class="nav-link" href="{{ url_for('service.home') }}">Service</a>
{% endif %}
</li>
<li class="nav-item">
{% if '/slice/' in request.path %}
<a class="nav-link active" aria-current="page" href="{{ url_for('slice.home') }}">Slice</a>
{% else %}
<a class="nav-link" href="{{ url_for('slice.home') }}">Slice</a>
{% endif %}
</li>
<li class="nav-item">
{% if '/policy_rule/' in request.path %}
<a class="nav-link active" aria-current="page" href="{{ url_for('policy_rule.home') }}">Policy Rules</a>
{% else %}
<a class="nav-link" href="{{ url_for('policy_rule.home') }}">Policy Rules</a>
{% endif %}
</li>
<li class="nav-item">
<a class="nav-link" href="/grafana" id="grafana_link" target="grafana">Grafana</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{ url_for('main.debug') }}">Debug</a>
</li>
<li class="nav-item">
{% if '/load-gen/' in request.path %}
<a class="nav-link active" aria-current="page" href="{{ url_for('load_gen.home') }}">Load Generator</a>
{% else %}
<a class="nav-link" href="{{ url_for('load_gen.home') }}">Load Generator</a>
{% endif %}
</li>
<li class="nav-item">
{% if '/bgpls/' in request.path %}
<a class="nav-link active" aria-current="page" href="{{ url_for('bgpls.home') }}">BGPLS</a>
{% else %}
<a class="nav-link" href="{{ url_for('bgpls.home') }}">BGPLS</a>
{% endif %}
</li>
<!-- <li class="nav-item">
<a class="nav-link" href="#">Context</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Monitoring</a>
</li> -->
<li class="nav-item">
<a class="nav-link" href="{{ url_for('main.about') }}">About</a>
</li>
</ul>
<span class="navbar-text" style="color: #fff;">
Selected Context(<b>{{ get_working_context() }}</b>)/Topology(<b>{{ get_working_topology() }}</b>)
</span>
</div>
</nav>
<main class="container">
<div class="row">
<div class="col-md-12">
{% with messages = get_flashed_messages(with_categories=true) %}
{% if messages %}
{% for category, message in messages %}
<div class="alert alert-{{ category }} alert-dismissible fade show" role="alert">
{{ message }}
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
{% endfor %}
{% endif %}
{% endwith %}
</div>
</div>
<div class="row">
<div class="col-xxl-12">
{% block content %}{% endblock %}
</div>
</nav>
<main class="container">
</div>
</main>
<footer class="footer" style="background-color: darkgrey; margin-top: 30px; padding-top: 20px;">
<div class="container">
<div class="row">
<div class="col-md-12">
{% with messages = get_flashed_messages(with_categories=true) %}
{% if messages %}
{% for category, message in messages %}
<div class="alert alert-{{ category }} alert-dismissible fade show" role="alert">
{{ message }}
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
{% endfor %}
{% endif %}
{% endwith %}
<p class="text-center" style="color: white;">&copy; 2022-2024 <a href="https://tfs.etsi.org/">ETSI OSG/SDG TeraFlowSDN (TFS)</a></p>
</div>
</div>
<div class="row">
<div class="col-xxl-12">
{% block content %}{% endblock %}
</div>
</div>
</main>
<footer class="footer" style="background-color: darkgrey; margin-top: 30px; padding-top: 20px;">
<div class="container">
<div class="row">
<div class="col-md-12">
<p class="text-center" style="color: white;">&copy; 2022-2024 <a href="https://tfs.etsi.org/">ETSI OSG/SDG TeraFlowSDN (TFS)</a></p>
</div>
<div class="col-md-6">
<p>This project has received funding from the European Union's Horizon 2020 research and innovation programme under grant agreement No 101015857.</p>
</div>
<div class="row">
<div class="col-md-6">
<p>This project has received funding from the European Union's Horizon 2020 research and innovation programme under grant agreement No 101015857.</p>
</div>
<div class="col-md-6">
<img src="https://teraflow-h2020.eu/sites/teraflow/files/public/content-images/media/2021/logo%205G-ppp%20eu.png" width="310" alt="5g ppp EU logo" loading="lazy" typeof="foaf:Image">
</div>
<div class="col-md-6">
<img src="https://teraflow-h2020.eu/sites/teraflow/files/public/content-images/media/2021/logo%205G-ppp%20eu.png" width="310" alt="5g ppp EU logo" loading="lazy" typeof="foaf:Image">
</div>
</div>
</footer>
<!-- Optional JavaScript; choose one of the two! -->
<!-- Option 1: Bootstrap Bundle with Popper -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-kQtW33rZJAHjgefvhyyzcGF3C5TFyBQBA13V1RKPf4uH+bwyzQxZ6CmMZHmNBEfJ" crossorigin="anonymous"></script>
<!-- <script src="{{ url_for('static', filename='site.js') }}"/> -->
<!-- <script>
document.getElementById("grafana_link").href = window.location.protocol + "//" + window.location.hostname + ":30300"
</script> -->
<!-- Option 2: Separate Popper and Bootstrap JS -->
<!--
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.10.2/dist/umd/popper.min.js" integrity="sha384-7+zCNj/IqJ95wo16oMtfsKbZ9ccEh31eOz1HGyDuCQ6wgnyJNSYdrPa03rtR1zdB" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.2/dist/js/bootstrap.min.js" integrity="sha384-PsUw7Xwds7x08Ew3exXhqzbhuEYmA2xnwc8BuD6SEr+UmEHlX8/MCltYEodzWA4u" crossorigin="anonymous"></script>
-->
</body>
</html>
</div>
</footer>
<!-- Optional JavaScript; choose one of the two! -->
<!-- Option 1: Bootstrap Bundle with Popper -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-kQtW33rZJAHjgefvhyyzcGF3C5TFyBQBA13V1RKPf4uH+bwyzQxZ6CmMZHmNBEfJ" crossorigin="anonymous"></script>
<!-- <script src="{{ url_for('static', filename='site.js') }}"/> -->
<!-- <script>
document.getElementById("grafana_link").href = window.location.protocol + "//" + window.location.hostname + ":30300"
</script> -->
<!-- Option 2: Separate Popper and Bootstrap JS -->
<!--
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.10.2/dist/umd/popper.min.js" integrity="sha384-7+zCNj/IqJ95wo16oMtfsKbZ9ccEh31eOz1HGyDuCQ6wgnyJNSYdrPa03rtR1zdB" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.2/dist/js/bootstrap.min.js" integrity="sha384-PsUw7Xwds7x08Ew3exXhqzbhuEYmA2xnwc8BuD6SEr+UmEHlX8/MCltYEodzWA4u" crossorigin="anonymous"></script>
-->
</body>
</html>
<!--
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 Device</h1>
<h3>Node name: {{form.device_name}}</h3>
<form id="add_device" method="POST">
{{ form.hidden_tag() }}
<fieldset>
<div class="row mb-3">
{{ form.device_id.label(class="col-sm-2 col-form-label") }}
<div class="col-sm-10">
{% if form.device_id.errors %}
{{ form.device_id(class="form-control is-invalid") }}
<div class="invalid-feedback">
{% for error in form.device_id.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.device_id(class="form-control") }}
{% endif %}
</div>
</div>
<br />
<div class="row mb-3">
{{ form.device_type.label(class="col-sm-2 col-form-label") }}
<div class="col-sm-10">
{% if form.device_type.errors %}
{{ form.device_type(class="form-control is-invalid") }}
<div class="invalid-feedback">
{% for error in form.device_type.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.device_type(class="form-select")}}
{% endif %}
</div>
</div>
<br />
<div class="row mb-3">
{{ form.operational_status.label(class="col-sm-2 col-form-label") }}
<div class="col-sm-10">
{% if form.operational_status.errors %}
{{ form.operational_status(class="form-control is-invalid") }}
<div class="invalid-feedback">
{% for error in form.operational_status.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.operational_status(class="form-select") }}
{% endif %}
</div>
</div>
<br />
<div class="row mb-3">
<div class="col-sm-2 col-form-label">Drivers</div>
<div class="col-sm-10">
{% if form.device_drivers_undefined.errors %}
{{ form.device_drivers_undefined(class="form-control is-invalid") }}
<div class="invalid-feedback">
{% for error in form.device_drivers_undefined.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.device_drivers_undefined }} {{ form.device_drivers_undefined.label(class="col-sm-3
col-form-label") }}
{{ form.device_drivers_openconfig }} {{ form.device_drivers_openconfig.label(class="col-sm-3
col-form-label") }}
{{ form.device_drivers_transport_api }} {{ form.device_drivers_transport_api.label(class="col-sm-3
col-form-label") }}
<br />{{ form.device_drivers_p4 }} {{ form.device_drivers_p4.label(class="col-sm-3 col-form-label") }}
{{ form.device_drivers_ietf_network_topology }} {{
form.device_drivers_ietf_network_topology.label(class="col-sm-3
col-form-label") }}
{{ form.device_drivers_onf_tr_352 }} {{ form.device_drivers_onf_tr_352.label(class="col-sm-3
col-form-label") }}<br />
{{ form.device_drivers_xr }} {{ form.device_drivers_xr.label(class="col-sm-3
col-form-label") }}
{% endif %}
</div>
</div>
<br />
Configuration Rules <br />
<div class="row mb-3">
{{ form.device_config_address.label(class="col-sm-2 col-form-label") }}
<div class="col-sm-10">
{% if form.device_config_address.errors %}
{{ form.device_config_address(class="form-control is-invalid", rows=5) }}
<div class="invalid-feedback">
{% for error in form.device_config_address.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.device_config_address(class="form-control", rows=5) }}
{% endif %}
</div>
</div>
<div class="row mb-3">
{{ form.device_config_port.label(class="col-sm-2 col-form-label") }}
<div class="col-sm-10">
{% if form.device_config_port.errors %}
{{ form.device_config_port(class="form-control is-invalid", rows=5) }}
<div class="invalid-feedback">
{% for error in form.device_config_port.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.device_config_port(class="form-control", rows=5) }}
{% endif %}
</div>
</div>
<div class="row mb-3">
{{ form.device_config_settings.label(class="col-sm-2 col-form-label") }}
<div class="col-sm-10">
{% if form.device_config_settings.errors %}
{{ form.device_config_settings(class="form-control is-invalid", rows=5) }}
<div class="invalid-feedback">
{% for error in form.device_config_settings.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.device_config_settings(class="form-control", rows=5) }}
{% endif %}
</div>
</div>
<br />
<div class="d-grid gap-2 d-md-flex justify-content-md-start">
<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
<!--
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>Pcep </h1>
<!-- TEST -->
<h5>Configure PCE IP</h5>
<div>
<form action='{{ url_for("pcep.addPcep")}}' method="post">
{{ form.hidden_tag() }}
<fieldset>
<div class="row mb-3">
{{ form.pce_address.label(class="col-sm-2 col-form-label") }}
<div class="col-sm-10">
{% if form.pce_address.errors %}
{{ form.pce_address(class="form-control is-invalid") }}
<div class="invalid-feedback">
{% for error in form.pce_address.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.pce_address(class="form-control") }}
{% endif %}
</div>
</div>
</fieldset>
<button type="submit" class="btn btn-primary">
<i class="bi bi-plus-circle-fill"></i>
Add PCE IP
</button>
</form>
</div>
{% endblock %}
\ No newline at end of file
<!--
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>Path Computation Element Protocol (PCEP)</h1>
<br>
<div class="row">
<div class="col">
<a href="{{ url_for('pcep.managePCEP') }}" class="btn btn-primary" style="margin-bottom: 10px;">
<i class="bi bi-pencil"></i>
Manage PCE
</a>
</div>
<div class="col">
<a href="{{ url_for('pcep.lspdbPCEP') }}" class="btn btn-primary" style="margin-bottom: 10px;">
<i class="bi bi-table"></i>
Show LSPDB
</a>
</div>
<script src="https://d3js.org/d3.v4.min.js"></script>
<div id="topology"></div>
<script src="{{ url_for('js.topology_js') }}"></script>
</div>
<div class="col">
<a href="{{ url_for('pcep.addPcep') }}" class="btn btn-primary" style="margin-bottom: 10px;">
<i class="bi bi-plus"></i>
configure PCE IP
</a>
</div>
<div class="col">
<a href="{{ url_for('pcep.sendPath') }}" class="btn btn-primary" style="margin-bottom: 10px;">
<i class="bi bi-pencil-square"></i>
Send command to configure a route
</a>
</div>
{% endblock %}
<!--
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>Label Switched Paths Database (LSPDB)</h1>
<br>
<div>
<h2>{{ lspdb }}</h2>
</div>
{% endblock %}
<!--
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>Path Computation Element (PCE)</h1>
<br><body>
<div class="container" style="margin-top: 20px; margin-left: 15px;">
<h3>Active Sessions in the PCE: {{ sessions }}</h3>
</div>
<form id="manage_pcep" method="POST" enctype="multipart/form-data" style="margin-left: 20px;">
{{ pcep_manage_form.hidden_tag() }}
<fieldset class="form-group">
<legend>Input the desired command to manage the PCE</legend>
<div class="form-group row">
<div class="col-sm-8">
{{ pcep_manage_form.command(class="form-control") }}
</div>
<div class="col-sm-2">
{{ pcep_manage_form.submit(class='btn btn-primary') }}
</div>
</div>
</fieldset>
</form>
<div class="container" style="margin-top: 20px; margin-left: 15px;">
<div class="commands" style="margin-top: 20px;">
<p style="font-size: 18px; margin-bottom: 10px;">Available commands:</p>
<ul style="list-style-type: none; padding: 0;">
<li style="margin-bottom: 15px;">
<strong style="font-size: 24px;">Initiate</strong>
<span style="font-size: 16px; display: block;">The "Initiate" command is used to request the PCE (Path Computation Element) to compute a new path for a specific Label Switched Path (LSP). It initiates the process of establishing a new path for network traffic based on specified constraints and requirements.</span>
<span style="font-size: 16px; display: block;">Example of use "initiate lsp nombre_lsp 10.95.90.56 1.1.1.1 1.1.1.2 m1228800 na192.168.3.11-192.168.3.13 m819200 na192.168.2.13-192.168.2.12" </span>
</li>
<li style="margin-bottom: 15px;">
<strong style="font-size: 24px;">Update</strong>
<span style="font-size: 16px; display: block;">The "Update" command is used to inform the PCE about modifications or updates to an existing LSP. It allows the Path Computation Client (PCC) to request changes to the parameters or attributes of an LSP, such as bandwidth requirements or path constraints.</span>
<span style="font-size: 16px; display: block;">Example of use "update lsp 3 m1228800 na192.168.3.11-192.168.3.13" </span>
</li>
<li style="margin-bottom: 15px;">
<strong style="font-size: 24px;">Terminate</strong>
<span style="font-size: 16px; display: block;">The "Terminate" command is used to request the termination or removal of an existing LSP. It signals to the PCE that the specified LSP should be torn down, freeing up network resources and terminating the path for the associated traffic.</span>
<span style="font-size: 16px; display: block;">Example of use "terminate lsp 16 nombreLSP16" </span>
</li>
</ul>
</div>
</div>
</body>
{% endblock %}
\ No newline at end of file
<!--
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>Send Path </h1>
<!-- TEST -->
<h5>Create, delete or modify paths</h5>
<br />
<div>
<form action='{{ url_for("pcep.sendPath")}}' method="post">
{{ form.hidden_tag() }}
<fieldset>
<div class="row mb-3">
{{ form.command.label(class="col-sm-2 col-form-label") }}
<div class="col-sm-10">
{% if form.command.errors %}
{{ form.command(class="form-control is-invalid") }}
<div class="invalid-feedback">
{% for error in form.command.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.command(class="form-control") }}
{% endif %}
</div>
</div>
</fieldset>
<button type="submit" class="btn btn-primary">
<i class="bi bi-plus-circle-fill"></i>
Send Command
</button>
</form>
</div>
{% endblock %}