Skip to content
Snippets Groups Projects
Commit be5e51c9 authored by Mohammad Ismaeel's avatar Mohammad Ismaeel
Browse files

commented Qkapp

parent 843911d9
No related branches found
No related tags found
2 merge requests!294Release TeraFlowSDN 4.0,!285Resolve: "(CNIT) New SBI Driver based on OpenROADM for ROADMs"
......@@ -26,8 +26,8 @@
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 pathcomp service slice nbi webui load_generator"}
# By default, only basic components are deployed
export TFS_COMPONENTS=${TFS_COMPONENTS:-"context device pathcomp opticalcontroller service slice nbi webui load_generator"}
# Uncomment to activate Monitoring (old)
#export TFS_COMPONENTS="${TFS_COMPONENTS} monitoring"
......
......@@ -47,8 +47,8 @@ def main():
get_env_var_name(ServiceNameEnum.OPTICALCONTROLLER, ENVVAR_SUFIX_SERVICE_PORT_GRPC),
get_env_var_name(ServiceNameEnum.OPTICALCONTROLLER, ENVVAR_SUFIX_SERVICE_HOST ),
get_env_var_name(ServiceNameEnum.QKD_APP, ENVVAR_SUFIX_SERVICE_HOST ),
get_env_var_name(ServiceNameEnum.QKD_APP, ENVVAR_SUFIX_SERVICE_PORT_GRPC),
# get_env_var_name(ServiceNameEnum.QKD_APP, ENVVAR_SUFIX_SERVICE_HOST ),
# get_env_var_name(ServiceNameEnum.QKD_APP, ENVVAR_SUFIX_SERVICE_PORT_GRPC),
])
VAR_NAME_OPTICAL_CONTROLLER_HOST = get_env_var_name(ServiceNameEnum.OPTICALCONTROLLER, ENVVAR_SUFIX_SERVICE_HOST)
VAR_NAME_OPTICAL_CONTROLLER_PORT = get_env_var_name(ServiceNameEnum.OPTICALCONTROLLER, ENVVAR_SUFIX_SERVICE_PORT_GRPC)
......
......@@ -84,8 +84,6 @@ COPY --chown=webui:webui src/service/__init__.py service/__init__.py
COPY --chown=webui:webui src/service/client/. service/client/
COPY --chown=webui:webui src/slice/__init__.py slice/__init__.py
COPY --chown=webui:webui src/slice/client/. slice/client/
COPY --chown=webui:webui src/app/__init__.py app/__init__.py
COPY --chown=webui:webui src/app/client/. app/client/
COPY --chown=webui:webui src/webui/. webui/
COPY --chown=webui:webui src/bgpls_speaker/__init__.py bgpls_speaker/__init__.py
COPY --chown=webui:webui src/bgpls_speaker/client/. bgpls_speaker/client/
......
......@@ -19,7 +19,7 @@ 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
from qkd_app.client.QKDAppClient import QKDAppClient
#from qkd_app.client.QKDAppClient import QKDAppClient
def get_working_context() -> str:
return session['context_uuid'] if 'context_uuid' in session else '---'
......@@ -39,9 +39,9 @@ def readiness():
device_client.connect()
device_client.close()
# DEPENDENCY QKD
qkd_app_client = QKDAppClient()
qkd_app_client.connect()
qkd_app_client.close()
# qkd_app_client = QKDAppClient()
# qkd_app_client.connect()
# qkd_app_client.close()
except Exception as e:
raise HealthError("Can't connect with the service: {:s}".format(str(e))) from e
......@@ -116,8 +116,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.qkd_app.routes import qkd_app as _qkd_app # pylint: disable=import-outside-toplevel
app.register_blueprint(_qkd_app)
# from webui.service.qkd_app.routes import qkd_app as _qkd_app # pylint: disable=import-outside-toplevel
# app.register_blueprint(_qkd_app)
from webui.service.policy_rule.routes import policy_rule # pylint: disable=import-outside-toplevel
app.register_blueprint(policy_rule)
......
......@@ -43,8 +43,8 @@ def main():
get_env_var_name(ServiceNameEnum.SERVICE, ENVVAR_SUFIX_SERVICE_PORT_GRPC),
get_env_var_name(ServiceNameEnum.SLICE, ENVVAR_SUFIX_SERVICE_HOST ),
get_env_var_name(ServiceNameEnum.SLICE, ENVVAR_SUFIX_SERVICE_PORT_GRPC),
get_env_var_name(ServiceNameEnum.APP, ENVVAR_SUFIX_SERVICE_HOST ),
get_env_var_name(ServiceNameEnum.APP, ENVVAR_SUFIX_SERVICE_PORT_GRPC),
# get_env_var_name(ServiceNameEnum.APP, ENVVAR_SUFIX_SERVICE_HOST ),
# get_env_var_name(ServiceNameEnum.APP, ENVVAR_SUFIX_SERVICE_PORT_GRPC),
])
logger.info('Starting...')
......
......@@ -12,102 +12,102 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import grpc, json, logging
# import grpc, json, logging
from flask import current_app, render_template, Blueprint, flash, session, redirect, url_for
from common.proto.context_pb2 import Empty, Link, LinkId, LinkList
from common.proto.qkd_app_pb2 import App, QKDAppStatusEnum, QKDAppTypesEnum
from common.tools.context_queries.Context import get_context
from common.tools.context_queries.Device import get_device
from common.tools.context_queries.Topology import get_topology
from context.client.ContextClient import ContextClient
from qkd_app.client.QKDAppClient import QKDAppClient
# from flask import current_app, render_template, Blueprint, flash, session, redirect, url_for
# from common.proto.context_pb2 import Empty, Link, LinkId, LinkList
# from common.proto.qkd_app_pb2 import App, QKDAppStatusEnum, QKDAppTypesEnum
# from common.tools.context_queries.Context import get_context
# from common.tools.context_queries.Device import get_device
# from common.tools.context_queries.Topology import get_topology
# from context.client.ContextClient import ContextClient
# from qkd_app.client.QKDAppClient import QKDAppClient
LOGGER = logging.getLogger(__name__)
app = Blueprint('qkd_app', __name__, url_prefix='/qkd_app')
# LOGGER = logging.getLogger(__name__)
# app = Blueprint('qkd_app', __name__, url_prefix='/qkd_app')
qkd_app_client = QKDAppClient()
context_client = ContextClient()
# qkd_app_client = QKDAppClient()
# context_client = ContextClient()
@app.get('/')
def home():
if 'context_uuid' not in session or 'topology_uuid' not in session:
flash("Please select a context!", "warning")
return redirect(url_for("main.home"))
context_uuid = session['context_uuid']
topology_uuid = session['topology_uuid']
# @app.get('/')
# def home():
# if 'context_uuid' not in session or 'topology_uuid' not in session:
# flash("Please select a context!", "warning")
# return redirect(url_for("main.home"))
# context_uuid = session['context_uuid']
# topology_uuid = session['topology_uuid']
context_client.connect()
device_names = dict()
# context_client.connect()
# device_names = dict()
context_obj = get_context(context_client, context_uuid, rw_copy=False)
if context_obj is None:
flash('Context({:s}) not found'.format(str(context_uuid)), 'danger')
apps = list()
else:
try:
apps = qkd_app_client.ListApps(context_obj.context_id)
apps = apps.apps
except grpc.RpcError as e:
if e.code() != grpc.StatusCode.NOT_FOUND: raise
if e.details() != 'Context({:s}) not found'.format(context_uuid): raise
apps = list()
else:
# Too many requests to context_client if it has too many apps (update in the future)
for app in apps:
if app.local_device_id.device_uuid.uuid not in device_names:
device = get_device(context_client, app.local_device_id.device_uuid.uuid)
if device is not None:
device_names[app.local_device_id.device_uuid.uuid] = device.name
# context_obj = get_context(context_client, context_uuid, rw_copy=False)
# if context_obj is None:
# flash('Context({:s}) not found'.format(str(context_uuid)), 'danger')
# apps = list()
# else:
# try:
# apps = qkd_app_client.ListApps(context_obj.context_id)
# apps = apps.apps
# except grpc.RpcError as e:
# if e.code() != grpc.StatusCode.NOT_FOUND: raise
# if e.details() != 'Context({:s}) not found'.format(context_uuid): raise
# apps = list()
# else:
# # Too many requests to context_client if it has too many apps (update in the future)
# for app in apps:
# if app.local_device_id.device_uuid.uuid not in device_names:
# device = get_device(context_client, app.local_device_id.device_uuid.uuid)
# if device is not None:
# device_names[app.local_device_id.device_uuid.uuid] = device.name
if app.remote_device_id.device_uuid.uuid and app.remote_device_id.device_uuid.uuid not in device_names:
device = get_device(context_client, app.remote_device_id.device_uuid.uuid)
if device is not None:
device_names[app.remote_device_id.device_uuid.uuid] = device.name
# if app.remote_device_id.device_uuid.uuid and app.remote_device_id.device_uuid.uuid not in device_names:
# device = get_device(context_client, app.remote_device_id.device_uuid.uuid)
# if device is not None:
# device_names[app.remote_device_id.device_uuid.uuid] = device.name
context_client.close()
return render_template(
'app/home.html', apps=apps, device_names=device_names, ate=QKDAppTypesEnum, ase=QKDAppStatusEnum)
# context_client.close()
# return render_template(
# 'app/home.html', apps=apps, device_names=device_names, ate=QKDAppTypesEnum, ase=QKDAppStatusEnum)
@app.route('detail/<path:app_uuid>', methods=('GET', 'POST'))
def detail(app_uuid: str):
'''
context_client.connect()
link_obj = get_link(context_client, link_uuid, rw_copy=False)
if link_obj is None:
flash('Link({:s}) not found'.format(str(link_uuid)), 'danger')
link_obj = Link()
device_names, endpoints_data = dict(), dict()
else:
device_names, endpoints_data = get_endpoint_names(context_client, link_obj.link_endpoint_ids)
context_client.close()
return render_template('link/detail.html',link=link_obj, device_names=device_names, endpoints_data=endpoints_data)
'''
pass
# @app.route('detail/<path:app_uuid>', methods=('GET', 'POST'))
# def detail(app_uuid: str):
# '''
# context_client.connect()
# link_obj = get_link(context_client, link_uuid, rw_copy=False)
# if link_obj is None:
# flash('Link({:s}) not found'.format(str(link_uuid)), 'danger')
# link_obj = Link()
# device_names, endpoints_data = dict(), dict()
# else:
# device_names, endpoints_data = get_endpoint_names(context_client, link_obj.link_endpoint_ids)
# context_client.close()
# return render_template('link/detail.html',link=link_obj, device_names=device_names, endpoints_data=endpoints_data)
# '''
# pass
@app.get('<path:app_uuid>/delete')
def delete(app_uuid):
'''
try:
# @app.get('<path:app_uuid>/delete')
# def delete(app_uuid):
# '''
# try:
# first, check if link exists!
# request: LinkId = LinkId()
# request.link_uuid.uuid = link_uuid
# response: Link = client.GetLink(request)
# TODO: finalize implementation
# # first, check if link exists!
# # request: LinkId = LinkId()
# # request.link_uuid.uuid = link_uuid
# # response: Link = client.GetLink(request)
# # TODO: finalize implementation
request = LinkId()
request.link_uuid.uuid = link_uuid # pylint: disable=no-member
context_client.connect()
context_client.RemoveLink(request)
context_client.close()
# request = LinkId()
# request.link_uuid.uuid = link_uuid # pylint: disable=no-member
# context_client.connect()
# context_client.RemoveLink(request)
# context_client.close()
flash(f'Link "{link_uuid}" deleted successfully!', 'success')
except Exception as e: # pylint: disable=broad-except
flash(f'Problem deleting link "{link_uuid}": {e.details()}', 'danger')
current_app.logger.exception(e)
return redirect(url_for('link.home'))
'''
pass
# flash(f'Link "{link_uuid}" deleted successfully!', 'success')
# except Exception as e: # pylint: disable=broad-except
# flash(f'Problem deleting link "{link_uuid}": {e.details()}', 'danger')
# current_app.logger.exception(e)
# return redirect(url_for('link.home'))
# '''
# pass
......@@ -110,13 +110,7 @@
<a class="nav-link" href="{{ url_for('load_gen.home') }}">Load Generator</a>
{% endif %}
</li>
<li class="nav-item">
{% if '/qkd_app/' in request.path %}
<a class="nav-link active" aria-current="page" href="{{ url_for('app.home') }}">App</a>
{% else %}
<a class="nav-link" href="{{ url_for('app.home') }}">App</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>
......
......@@ -13,7 +13,7 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
<!--
{% extends 'base.html' %}
{% block content %}
......@@ -91,4 +91,4 @@
</tbody>
</table>
{% endblock %}
{% endblock %} -->
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment