Skip to content
Snippets Groups Projects

Resolve "Implement Service Handler for FLEX-SCALE Optical Connections"

5 files
+ 92
251
Compare changes
  • Side-by-side
  • Inline
Files
5
@@ -15,20 +15,19 @@
import json, logging
from typing import Any, List, Optional, Tuple, Union
from common.method_wrappers.Decorator import MetricsPool, metered_subclass_method
from common.proto.context_pb2 import ConfigRule, DeviceId, Service
from common.proto.context_pb2 import ConfigRule, DeviceId, EndPointId, Service
from common.tools.object_factory.Device import json_device_id
from common.type_checkers.Checkers import chk_type
from service.service.service_handler_api.Tools import get_device_endpoint_uuids, get_endpoint_matching
from service.service.service_handler_api._ServiceHandler import _ServiceHandler
from service.service.service_handler_api.SettingsHandler import SettingsHandler
from service.service.task_scheduler.TaskExecutor import TaskExecutor
from .ConfigRules import setup_config_rules, teardown_config_rules
from common.proto.context_pb2 import EndPointId
#from .ConfigRules import setup_config_rules, teardown_config_rules
from .OCTools import convert_endpoints_to_flows, handle_flows_names
LOGGER = logging.getLogger(__name__)
METRICS_POOL = MetricsPool('Service', 'Handler', labels={'handler': 'l3nm_emulated'})
METRICS_POOL = MetricsPool('Service', 'Handler', labels={'handler': 'oc'})
class OCServiceHandler(_ServiceHandler):
def __init__( # pylint: disable=super-init-not-called
@@ -38,73 +37,6 @@ class OCServiceHandler(_ServiceHandler):
self.__task_executor = task_executor
self.__settings_handler = SettingsHandler(service.service_config, **settings)
'''
@metered_subclass_method(METRICS_POOL)
def SetEndpoint(
self, endpoints : List[Tuple[str, str, Optional[str]]], connection_uuid : Optional[str] = None
) -> List[Union[bool, Exception]]:
chk_type('endpoints', endpoints, list)
if len(endpoints) == 0: return []
service_uuid = self.__service.service_id.service_uuid.uuid
if self.__settings_handler.get('/settings-ob_{}'.format(connection_uuid)):
settings = self.__settings_handler.get('/settings-ob_{}'.format(connection_uuid))
else:
settings = self.__settings_handler.get('/settings')
LOGGER.info("AAAAAAAAAAAAAAAAAAAA settings={}".format(settings))
settings = self.__settings_handler.get('/settings')
#new structure
#in, dev, out, topo(opt)
entries = List[Tuple[str, str, str Optional[str]]]
entry_tuple = device_uuid, endpoint_uuid, topology_uuid
entries.append(endpoint_id_tuple)
for i in range (1, len(endpoints)):
endpoint_x = endpoints[i]
dev_x = endpoint_x[0]
if_x = endpoint_x[1]
results = []
for endpoint in endpoints:
try:
device_uuid, endpoint_uuid = get_device_endpoint_uuids(endpoint)
device_obj = self.__task_executor.get_device(DeviceId(**json_device_id(device_uuid)))
endpoint_obj = get_endpoint_matching(device_obj, endpoint_uuid)
endpoint_settings = self.__settings_handler.get_endpoint_settings(device_obj, endpoint_obj)
endpoint_name = endpoint_obj.name
json_config_rules = setup_config_rules(
service_uuid, connection_uuid, device_uuid, endpoint_uuid, endpoint_name,
settings, endpoint_settings)
LOGGER.info("Start configuring device %s",settings)
if (settings):
self.__task_executor.configure_optical_device(device_obj,settings)
if len(json_config_rules) > 0:
LOGGER.info("Start configuring device")
del device_obj.device_config.config_rules[:]
for json_config_rule in json_config_rules:
device_obj.device_config.config_rules.append(ConfigRule(**json_config_rule))
self.__task_executor.configure_optical_device(device_obj)
#self.__task_executor.configure_device(device_obj)
results.append(True)
except Exception as e: # pylint: disable=broad-except
LOGGER.exception('Unable to SetEndpoint({:s})'.format(str(endpoint)))
results.append(e)
return results
'''
@metered_subclass_method(METRICS_POOL)
def SetEndpoint(
self, endpoints : List[Tuple[str, str, Optional[str]]], connection_uuid : Optional[str] = None
@@ -121,68 +53,29 @@ class OCServiceHandler(_ServiceHandler):
else:
settings = self.__settings_handler.get('/settings')
LOGGER.debug("Andrea111 settings={}".format(settings))
LOGGER.debug("settings={}".format(settings))
# settings = self.__settings_handler.get('/settings')
#flow is the new variable that stores input-output relationship
flows = convert_endpoints_to_flows(endpoints)
#handled_flows=handle_flows_names(flows=flows,task_executor=self.__task_executor)
LOGGER.debug("AndreaXXX dict of flows= {}".format(flows))
LOGGER.debug("dict of flows= {}".format(flows))
#LOGGER.info("Handled Flows %s",handled_flows)
results = []
#new cycle for setting optical devices
for device_uuid in flows.keys():
for device_uuid, dev_flows in flows.items():
try:
dev_flows = flows[device_uuid]
device_obj = self.__task_executor.get_device(DeviceId(**json_device_id(device_uuid)))
LOGGER.debug("Andrea567 device_obj={}".format(device_obj))
'''
#to be imported in the device handler
endpoint_obj = get_endpoint_matching(device_obj, endpoint_uuid)
endpoint_settings = self.__settings_handler.get_endpoint_settings(device_obj, endpoint_obj)
endpoint_name = endpoint_obj.name
'''
LOGGER.debug("device_obj={}".format(device_obj))
if (settings):
LOGGER.debug("Andrea234 settings={}".format(settings))
LOGGER.debug("settings={}".format(settings))
self.__task_executor.configure_optical_device(device_obj, settings, dev_flows, is_opticalband)
results.append(True)
except Exception as e: # pylint: disable=broad-except
LOGGER.exception('Unable to configure Device({:s})'.format(str(device_uuid)))
results.append(e)
'''
for endpoint in endpoints:
try:
device_uuid, endpoint_uuid = get_device_endpoint_uuids(endpoint)
device_obj = self.__task_executor.get_device(DeviceId(**json_device_id(device_uuid)))
endpoint_obj = get_endpoint_matching(device_obj, endpoint_uuid)
endpoint_settings = self.__settings_handler.get_endpoint_settings(device_obj, endpoint_obj)
endpoint_name = endpoint_obj.name
# json_config_rules = setup_config_rules(
# service_uuid, connection_uuid, device_uuid, endpoint_uuid, endpoint_name,
# settings, endpoint_settings)
if (settings):
LOGGER.debug("Andrea234 settings={}".format(settings))
self.__task_executor.configure_optical_device(device_obj,settings,handled_flows,is_opticalband)
#we don't use config_rules
# if len(json_config_rules) > 0:
# LOGGER.debug("VBNMHGStart configuring device")
# del device_obj.device_config.config_rules[:]
# for json_config_rule in json_config_rules:
# device_obj.device_config.config_rules.append(ConfigRule(**json_config_rule))
# self.__task_executor.configure_optical_device(device_obj)
#self.__task_executor.configure_device(device_obj)
results.append(True)
except Exception as e: # pylint: disable=broad-except
LOGGER.exception('Unable to SetEndpoint({:s})'.format(str(endpoint)))
results.append(e)
'''
return results
@@ -193,29 +86,14 @@ class OCServiceHandler(_ServiceHandler):
chk_type('endpoints', endpoints, list)
if len(endpoints) == 0: return []
service_uuid = self.__service.service_id.service_uuid.uuid
settings = self.__settings_handler.get('/settings')
# TODO: to be checked and elaborated
results = []
for endpoint in endpoints:
try:
device_uuid, endpoint_uuid = get_device_endpoint_uuids(endpoint)
device_obj = self.__task_executor.get_device(DeviceId(**json_device_id(device_uuid)))
endpoint_obj = get_endpoint_matching(device_obj, endpoint_uuid)
endpoint_settings = self.__settings_handler.get_endpoint_settings(device_obj, endpoint_obj)
endpoint_name = endpoint_obj.name
json_config_rules = teardown_config_rules(
service_uuid, connection_uuid, device_uuid, endpoint_uuid, endpoint_name,
settings, endpoint_settings)
if len(json_config_rules) > 0:
del device_obj.device_config.config_rules[:]
for json_config_rule in json_config_rules:
device_obj.device_config.config_rules.append(ConfigRule(**json_config_rule))
self.__task_executor.configure_device(device_obj)
self.__task_executor.configure_device(device_obj)
results.append(True)
except Exception as e: # pylint: disable=broad-except
LOGGER.exception('Unable to DeleteEndpoint({:s})'.format(str(endpoint)))
Loading