diff --git a/src/webui/service/__init__.py b/src/webui/service/__init__.py index e7f50ed42d19921b3423617f6860b5630e93adba..3c64f45c90457e1b6a9553e60634879a28910a31 100644 --- a/src/webui/service/__init__.py +++ b/src/webui/service/__init__.py @@ -95,8 +95,8 @@ def create_app(use_config=None, web_app_root=None): from webui.service.link.routes import link # pylint: disable=import-outside-toplevel app.register_blueprint(link) - from webui.service.policy.routes import policy # pylint: disable=import-outside-toplevel - app.register_blueprint(policy) + from webui.service.policy_rule.routes import policy_rule # pylint: disable=import-outside-toplevel + app.register_blueprint(policy_rule) app.jinja_env.globals.update({ # pylint: disable=no-member 'enumerate' : enumerate, diff --git a/src/webui/service/policy/__init__.py b/src/webui/service/policy_rule/__init__.py similarity index 100% rename from src/webui/service/policy/__init__.py rename to src/webui/service/policy_rule/__init__.py diff --git a/src/webui/service/policy/routes.py b/src/webui/service/policy_rule/routes.py similarity index 62% rename from src/webui/service/policy/routes.py rename to src/webui/service/policy_rule/routes.py index 6d14f86b4f1428695b474b3f2e2dd4dc72657452..5a99cf8b2f6ce71c571c9d31a2118a5390ee7d15 100644 --- a/src/webui/service/policy/routes.py +++ b/src/webui/service/policy_rule/routes.py @@ -18,33 +18,33 @@ from common.proto.context_pb2 import Empty from common.proto.policy_pb2 import PolicyRuleStateEnum from context.client.ContextClient import ContextClient -policy = Blueprint('policy', __name__, url_prefix='/policy') +policy_rule = Blueprint('policy_rule', __name__, url_prefix='/policy_rule') context_client = ContextClient() -@policy.get('/') +@policy_rule.get('/') def home(): context_client.connect() policy_rules = context_client.ListPolicyRules(Empty()) policy_rules = policy_rules.policyRules context_client.close() - return render_template('policy/home.html', policy_rules=policy_rules, prse=PolicyRuleStateEnum) + return render_template('policy_rule/home.html', policy_rules=policy_rules, prse=PolicyRuleStateEnum) -#@policy.get('<path:policy_uuid>/detail') -#def detail(policy_uuid: str): +#@policy_rule.get('<path:policy_rule_uuid>/detail') +#def detail(policy_rule_uuid: str): # try: # context_client.connect() # -# slice_obj = get_slice_by_uuid(context_client, slice_uuid, rw_copy=False) -# if slice_obj is None: -# flash('Context({:s})/Slice({:s}) not found'.format(str(context_uuid), str(slice_uuid)), 'danger') -# slice_obj = Slice() +# policy_rule_obj = get_policy_rule_by_uuid(context_client, policy_rule_uuid, rw_copy=False) +# if policy_rule_obj is None: +# flash('Context({:s})/PolicyRule({:s}) not found'.format(str(context_uuid), str(policy_rule_uuid)), 'danger') +# policy_rule_obj = PolicyRule() # # context_client.close() # # return render_template( -# 'slice/detail.html', slice=slice_obj, prse=PolicyRuleStateEnum) +# 'policy_rule/detail.html', policy_rule=policy_rule_obj, prse=PolicyRuleStateEnum) # except Exception as e: -# flash('The system encountered an error and cannot show the details of this slice.', 'warning') +# flash('The system encountered an error and cannot show the details of this policy_rule.', 'warning') # current_app.logger.exception(e) -# return redirect(url_for('slice.home')) +# return redirect(url_for('policy_rule.home')) diff --git a/src/webui/service/templates/base.html b/src/webui/service/templates/base.html index 61c283b0d957b4d13b7cc57e47d3ea2675ab76f0..4c31b61935aca2bd7d2a5e7642168afdea6fd02d 100644 --- a/src/webui/service/templates/base.html +++ b/src/webui/service/templates/base.html @@ -84,10 +84,10 @@ {% endif %} </li> <li class="nav-item"> - {% if '/policy/' in request.path %} - <a class="nav-link active" aria-current="page" href="{{ url_for('policy.home') }}">Policy</a> + {% 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.home') }}">Policy</a> + <a class="nav-link" href="{{ url_for('policy_rule.home') }}">Policy Rules</a> {% endif %} </li> <li class="nav-item"> @@ -177,4 +177,4 @@ <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> \ No newline at end of file + </html> diff --git a/src/webui/service/templates/policy/home.html b/src/webui/service/templates/policy/home.html deleted file mode 100644 index 081a7f0b5291346633a2f682ba4552b5c1e362fb..0000000000000000000000000000000000000000 --- a/src/webui/service/templates/policy/home.html +++ /dev/null @@ -1,84 +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>Policy</h1> - - <div class="row"> - <div class="col"> - {{ policies | length }} policies found in context <i>{{ session['context_uuid'] }}</i> - </div> - </div> - - <table class="table table-striped table-hover"> - <thead> - <tr> - <th scope="col">UUID</th> - <th scope="col">Kind</th> - <th scope="col">Priority</th> - <th scope="col">Condition</th> - <th scope="col">Operator</th> - <th scope="col">Action</th> - <th scope="col">Service</th> - <th scope="col">Devices</th> - <th scope="col">State</th> - <th scope="col">Message</th> - <th scope="col">Extra</th> - <th scope="col"></th> - </tr> - </thead> - <tbody> - {% if policies %} - {% for policy in policies %} - {% if policy.WhichOneof('policy_rule') == 'device' %} - <tr> - <td>{{ policy.device.policyRuleBasic.policyRuleId.uuid }}</td> - <td>{{ policy.WhichOneof('policy_rule') }}</td> - <td>{{ policy.device.policyRuleBasic.priority }}</td> - <td>{{ policy.device.policyRuleBasic.conditionList }}</td> - <td>{{ policy.device.policyRuleBasic.booleanOperator }}</td> - <td>{{ policy.device.policyRuleBasic.actionList }}</td> - <td>-</td> - <td>{{ policy.device.deviceList }}</td> - <td>{{ prse.Name(policy.device.policyRuleBasic.policyRuleState.policyRuleState).replace('POLICY_', '') }}</td> - <td>{{ policy.device.policyRuleBasic.policyRuleState.policyRuleStateMessage }}</td> - </tr> - {% elif policy.WhichOneof('policy_rule') == 'service' %} - <tr> - <td>{{ policy.service.policyRuleBasic.policyRuleId.uuid }}</td> - <td>{{ policy.WhichOneof('policy_rule') }}</td> - <td>{{ policy.service.policyRuleBasic.priority }}</td> - <td>{{ policy.service.policyRuleBasic.conditionList }}</td> - <td>{{ policy.service.policyRuleBasic.booleanOperator }}</td> - <td>{{ policy.service.policyRuleBasic.actionList }}</td> - <td>{{ policy.service.serviceId }}</td> - <td>{{ policy.service.deviceList }}</td> - <td>{{ prse.Name(policy.service.policyRuleBasic.policyRuleState.policyRuleState).replace('POLICY_', '') }}</td> - <td>{{ policy.service.policyRuleBasic.policyRuleState.policyRuleStateMessage }}</td> - </tr> - {% else %} - <tr><td colspan="11">Unsupported policy type {{ policy.WhichOneof('policy_rule') }}</td></tr> - {% endif %} - {% endfor %} - {% else %} - <tr><td colspan="11">No policies found</td></tr> - {% endif %} - </tbody> - </table> - -{% endblock %} diff --git a/src/webui/service/templates/policy_rule/home.html b/src/webui/service/templates/policy_rule/home.html new file mode 100644 index 0000000000000000000000000000000000000000..c63807a6aad046d8312a07bbb412c541c5e06bc8 --- /dev/null +++ b/src/webui/service/templates/policy_rule/home.html @@ -0,0 +1,84 @@ +<!-- + 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>Policy Rules</h1> + + <div class="row"> + <div class="col"> + {{ policy_rules | length }} policy rules found in context <i>{{ session['context_uuid'] }}</i> + </div> + </div> + + <table class="table table-striped table-hover"> + <thead> + <tr> + <th scope="col">UUID</th> + <th scope="col">Kind</th> + <th scope="col">Priority</th> + <th scope="col">Condition</th> + <th scope="col">Operator</th> + <th scope="col">Action</th> + <th scope="col">Service</th> + <th scope="col">Devices</th> + <th scope="col">State</th> + <th scope="col">Message</th> + <th scope="col">Extra</th> + <th scope="col"></th> + </tr> + </thead> + <tbody> + {% if policy_rules %} + {% for policy_rule in policy_rules %} + {% if policy_rule.WhichOneof('policy_rule') == 'device' %} + <tr> + <td>{{ policy_rule.device.policyRuleBasic.policyRuleId.uuid }}</td> + <td>{{ policy_rule.WhichOneof('policy_rule') }}</td> + <td>{{ policy_rule.device.policyRuleBasic.priority }}</td> + <td>{{ policy_rule.device.policyRuleBasic.conditionList }}</td> + <td>{{ policy_rule.device.policyRuleBasic.booleanOperator }}</td> + <td>{{ policy_rule.device.policyRuleBasic.actionList }}</td> + <td>-</td> + <td>{{ policy_rule.device.deviceList }}</td> + <td>{{ prse.Name(policy_rule.device.policyRuleBasic.policyRuleState.policyRuleState).replace('POLICY_', '') }}</td> + <td>{{ policy_rule.device.policyRuleBasic.policyRuleState.policyRuleStateMessage }}</td> + </tr> + {% elif policy_rule.WhichOneof('policy_rule') == 'service' %} + <tr> + <td>{{ policy_rule.service.policyRuleBasic.policyRuleId.uuid }}</td> + <td>{{ policy_rule.WhichOneof('policy_rule') }}</td> + <td>{{ policy_rule.service.policyRuleBasic.priority }}</td> + <td>{{ policy_rule.service.policyRuleBasic.conditionList }}</td> + <td>{{ policy_rule.service.policyRuleBasic.booleanOperator }}</td> + <td>{{ policy_rule.service.policyRuleBasic.actionList }}</td> + <td>{{ policy_rule.service.serviceId }}</td> + <td>{{ policy_rule.service.deviceList }}</td> + <td>{{ prse.Name(policy_rule.service.policyRuleBasic.policyRuleState.policyRuleState).replace('POLICY_', '') }}</td> + <td>{{ policy_rule.service.policyRuleBasic.policyRuleState.policyRuleStateMessage }}</td> + </tr> + {% else %} + <tr><td colspan="11">Unsupported policy rule type {{ policy_rule.WhichOneof('policy_rule') }}</td></tr> + {% endif %} + {% endfor %} + {% else %} + <tr><td colspan="11">No policy rule found</td></tr> + {% endif %} + </tbody> + </table> + +{% endblock %}