Skip to content
Snippets Groups Projects
Commit c0edbf1e authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

Optical component:

- Pre-merge cleanup
parent 4ec7cd1c
No related branches found
No related tags found
2 merge requests!235Release TeraFlowSDN 3.0,!212Resolve "(CNIT) Integrate leftover common contributions related to Optical Controller component"
...@@ -211,8 +211,8 @@ enum DeviceDriverEnum { ...@@ -211,8 +211,8 @@ enum DeviceDriverEnum {
DEVICEDRIVER_XR = 6; DEVICEDRIVER_XR = 6;
DEVICEDRIVER_IETF_L2VPN = 7; DEVICEDRIVER_IETF_L2VPN = 7;
DEVICEDRIVER_GNMI_OPENCONFIG = 8; DEVICEDRIVER_GNMI_OPENCONFIG = 8;
DEVICEDRIVER_IETF_ACTN = 9; DEVICEDRIVER_FLEXSCALE = 9;
DEVICEDRIVER_FLEXSCALE = 10; DEVICEDRIVER_IETF_ACTN = 10;
DEVICEDRIVER_OC = 11; DEVICEDRIVER_OC = 11;
} }
......
...@@ -16,7 +16,6 @@ syntax = "proto3"; ...@@ -16,7 +16,6 @@ syntax = "proto3";
package openconfig_device; package openconfig_device;
import "context.proto"; import "context.proto";
import "monitoring.proto";
service OpenConfigService { service OpenConfigService {
rpc AddOpenConfigDevice (context.OpticalConfig) returns (context.OpticalConfigId) {} rpc AddOpenConfigDevice (context.OpticalConfig) returns (context.OpticalConfigId) {}
......
...@@ -45,7 +45,7 @@ from .database.Slice import ( ...@@ -45,7 +45,7 @@ from .database.Slice import (
slice_delete, slice_get, slice_list_ids, slice_list_objs, slice_select, slice_set, slice_unset) slice_delete, slice_get, slice_list_ids, slice_list_objs, slice_select, slice_set, slice_unset)
from .database.Topology import ( from .database.Topology import (
topology_delete, topology_get, topology_get_details, topology_list_ids, topology_list_objs, topology_set) topology_delete, topology_get, topology_get_details, topology_list_ids, topology_list_objs, topology_set)
from .database.OpticalConfig import (set_opticalconfig,select_opticalconfig,get_opticalconfig) from .database.OpticalConfig import set_opticalconfig, select_opticalconfig, get_opticalconfig
LOGGER = logging.getLogger(__name__) LOGGER = logging.getLogger(__name__)
......
...@@ -39,7 +39,6 @@ class DeviceService(GenericGrpcService): ...@@ -39,7 +39,6 @@ class DeviceService(GenericGrpcService):
self.monitoring_loops.start() self.monitoring_loops.start()
add_DeviceServiceServicer_to_server(self.device_servicer, self.server) add_DeviceServiceServicer_to_server(self.device_servicer, self.server)
add_OpenConfigServiceServicer_to_server(self.openconfig_device_servicer,self.server) add_OpenConfigServiceServicer_to_server(self.openconfig_device_servicer,self.server)
def stop(self): def stop(self):
super().stop() super().stop()
......
...@@ -20,7 +20,9 @@ from common.Settings import ENVVAR_SUFIX_SERVICE_HOST, get_env_var_name ...@@ -20,7 +20,9 @@ from common.Settings import ENVVAR_SUFIX_SERVICE_HOST, get_env_var_name
from common.method_wrappers.Decorator import MetricTypeEnum, MetricsPool, safe_and_metered_rpc_method from common.method_wrappers.Decorator import MetricTypeEnum, MetricsPool, safe_and_metered_rpc_method
from common.method_wrappers.ServiceExceptions import NotFoundException, OperationFailedException from common.method_wrappers.ServiceExceptions import NotFoundException, OperationFailedException
from common.proto.context_pb2 import ( from common.proto.context_pb2 import (
Device, DeviceConfig, DeviceDriverEnum, DeviceId, DeviceOperationalStatusEnum, Empty, Link,OpticalConfig,OpticalConfigId) Device, DeviceConfig, DeviceDriverEnum, DeviceId, DeviceOperationalStatusEnum, Empty, Link,
OpticalConfig, OpticalConfigId
)
from common.proto.device_pb2 import MonitoringSettings from common.proto.device_pb2 import MonitoringSettings
from common.proto.device_pb2_grpc import DeviceServiceServicer from common.proto.device_pb2_grpc import DeviceServiceServicer
from common.tools.context_queries.Device import get_device from common.tools.context_queries.Device import get_device
...@@ -54,15 +56,14 @@ class DeviceServiceServicerImpl(DeviceServiceServicer): ...@@ -54,15 +56,14 @@ class DeviceServiceServicerImpl(DeviceServiceServicer):
@safe_and_metered_rpc_method(METRICS_POOL, LOGGER) @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
def AddDevice(self, request : Device, context : grpc.ServicerContext) -> DeviceId: def AddDevice(self, request : Device, context : grpc.ServicerContext) -> DeviceId:
t0 = time.time() t0 = time.time()
device_uuid = request.device_id.device_uuid.uuid device_uuid = request.device_id.device_uuid.uuid
connection_config_rules = check_connect_rules(request.device_config) connection_config_rules = check_connect_rules(request.device_config)
if (request.device_drivers[0]!= DeviceDriverEnum.DEVICEDRIVER_OC) : if request.device_drivers[0] != DeviceDriverEnum.DEVICEDRIVER_OC:
check_no_endpoints(request.device_endpoints) check_no_endpoints(request.device_endpoints)
t1 = time.time() t1 = time.time()
context_client = ContextClient() context_client = ContextClient()
...@@ -143,13 +144,12 @@ class DeviceServiceServicerImpl(DeviceServiceServicer): ...@@ -143,13 +144,12 @@ class DeviceServiceServicerImpl(DeviceServiceServicer):
device.device_operational_status = DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_ENABLED device.device_operational_status = DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_ENABLED
# temporary line # temporary line
if (request.device_drivers[0]== DeviceDriverEnum.DEVICEDRIVER_OC and len(request.device_endpoints)>0): if request.device_drivers[0] == DeviceDriverEnum.DEVICEDRIVER_OC and len(request.device_endpoints) > 0:
#for endpoint in request.device_endpoints:
for endpoint in request.device_endpoints: # #endpoint.endpoint_id.device_id.CopyFrom(device.device_id)
#endpoint.endpoint_id.device_id.CopyFrom(device.device_id) # pass
pass
device.device_endpoints.extend(request.device_endpoints) device.device_endpoints.extend(request.device_endpoints)
device_id = context_client.SetDevice(device) device_id = context_client.SetDevice(device)
t10 = time.time() t10 = time.time()
......
...@@ -12,16 +12,12 @@ ...@@ -12,16 +12,12 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
import grpc, logging, os, time,json import grpc, logging, json
from typing import Dict from common.method_wrappers.Decorator import MetricsPool, safe_and_metered_rpc_method
from prometheus_client import Histogram from common.method_wrappers.ServiceExceptions import NotFoundException
from common.Constants import ServiceNameEnum
from common.Settings import ENVVAR_SUFIX_SERVICE_HOST, get_env_var_name
from common.method_wrappers.Decorator import MetricTypeEnum, MetricsPool, safe_and_metered_rpc_method
from common.method_wrappers.ServiceExceptions import NotFoundException, OperationFailedException
from common.proto.context_pb2 import ( from common.proto.context_pb2 import (
Device, DeviceConfig, DeviceDriverEnum, DeviceId, DeviceOperationalStatusEnum, Empty, Link,OpticalConfig,OpticalConfigId ,OpticalConfig,OpticalConfigList) Device, DeviceId, DeviceOperationalStatusEnum, Empty, OpticalConfig, OpticalConfig
from common.proto.device_pb2 import MonitoringSettings )
from common.proto.device_pb2_grpc import DeviceServiceServicer from common.proto.device_pb2_grpc import DeviceServiceServicer
from common.tools.context_queries.Device import get_device from common.tools.context_queries.Device import get_device
from common.tools.mutex_queues.MutexQueues import MutexQueues from common.tools.mutex_queues.MutexQueues import MutexQueues
...@@ -29,13 +25,8 @@ from context.client.ContextClient import ContextClient ...@@ -29,13 +25,8 @@ from context.client.ContextClient import ContextClient
from .driver_api._Driver import _Driver from .driver_api._Driver import _Driver
from .driver_api.DriverInstanceCache import DriverInstanceCache, get_driver from .driver_api.DriverInstanceCache import DriverInstanceCache, get_driver
from .monitoring.MonitoringLoops import MonitoringLoops from .monitoring.MonitoringLoops import MonitoringLoops
from .drivers.oc_driver.OCDriver import OCDriver
from .ErrorMessages import ERROR_MISSING_DRIVER, ERROR_MISSING_KPI
from .Tools import extract_resources from .Tools import extract_resources
from .Tools import ( from .Tools import check_no_endpoints
check_connect_rules, check_no_endpoints, compute_rules_to_add_delete, configure_rules, deconfigure_rules,
get_device_controller_uuid, populate_config_rules, populate_endpoint_monitoring_resources, populate_endpoints,
populate_initial_config_rules, subscribe_kpi, unsubscribe_kpi, update_endpoints)
LOGGER = logging.getLogger(__name__) LOGGER = logging.getLogger(__name__)
...@@ -52,12 +43,10 @@ class OpenConfigServicer(DeviceServiceServicer): ...@@ -52,12 +43,10 @@ class OpenConfigServicer(DeviceServiceServicer):
self.monitoring_loops = monitoring_loops self.monitoring_loops = monitoring_loops
self.mutex_queues = MutexQueues() self.mutex_queues = MutexQueues()
LOGGER.debug('Servicer Created') LOGGER.debug('Servicer Created')
@safe_and_metered_rpc_method(METRICS_POOL, LOGGER) @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
def AddOpenConfigDevice(self, request : OpticalConfig, context : grpc.ServicerContext) -> DeviceId: def AddOpenConfigDevice(self, request : OpticalConfig, context : grpc.ServicerContext) -> DeviceId:
device_uuid = request.device_id.device_uuid.uuid device_uuid = request.device_id.device_uuid.uuid
check_no_endpoints(request.device_endpoints) check_no_endpoints(request.device_endpoints)
context_client = ContextClient() context_client = ContextClient()
...@@ -78,56 +67,29 @@ class OpenConfigServicer(DeviceServiceServicer): ...@@ -78,56 +67,29 @@ class OpenConfigServicer(DeviceServiceServicer):
# update device_uuid to honor UUID provided by Context # update device_uuid to honor UUID provided by Context
device_uuid = device.device_id.device_uuid.uuid device_uuid = device.device_id.device_uuid.uuid
self.mutex_queues.wait_my_turn(device_uuid) self.mutex_queues.wait_my_turn(device_uuid)
try: try:
device_id = context_client.SetDevice(device) device_id = context_client.SetDevice(device)
except Exception as error : except Exception as error :
LOGGER.debug("error %s",error) LOGGER.debug("error %s",error)
#modified Andrea
@safe_and_metered_rpc_method(METRICS_POOL, LOGGER) @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
def ConfigureOpticalDevice (self, request : OpticalConfig, context:grpc.ServicerContext) -> Empty: def ConfigureOpticalDevice (self, request : OpticalConfig, context : grpc.ServicerContext) -> Empty:
device_uuid = request.opticalconfig_id.opticalconfig_uuid device_uuid = request.opticalconfig_id.opticalconfig_uuid
resources=[] resources=[]
result=None
config =json.loads(request.config) config =json.loads(request.config)
try: try:
context_client = ContextClient() context_client = ContextClient()
device = get_device( device = get_device(
context_client, device_uuid, rw_copy=True, include_endpoints=True, include_components=False, context_client, device_uuid, rw_copy=True, include_endpoints=True, include_components=False,
include_config_rules=False) include_config_rules=False)
if device is None: if device is None:
raise NotFoundException('Device', device_uuid, extra_details='loading in ConfigureDevice') raise NotFoundException('Device', device_uuid, extra_details='loading in ConfigureDevice')
resources,conditions=extract_resources(config=config,device=device) resources,conditions=extract_resources(config=config,device=device)
driver : _Driver = get_driver(self.driver_instance_cache, device) driver : _Driver = get_driver(self.driver_instance_cache, device)
result = driver.SetConfig(resources=resources,conditions=conditions) result = driver.SetConfig(resources=resources,conditions=conditions)
#todo #TODO: add a control with the NETCONF get
#add a control with the NETCONF get
#driver.GetConfig(resource_keys=filter_fields) #driver.GetConfig(resource_keys=filter_fields)
except Exception as e: except Exception as e:
LOGGER.info("error in configuring %s",e) LOGGER.info("error in configuring %s",e)
return Empty() return Empty()
\ No newline at end of file
...@@ -167,19 +167,17 @@ if LOAD_ALL_DEVICE_DRIVERS: ...@@ -167,19 +167,17 @@ if LOAD_ALL_DEVICE_DRIVERS:
FilterFieldEnum.DRIVER: DeviceDriverEnum.DEVICEDRIVER_FLEXSCALE, FilterFieldEnum.DRIVER: DeviceDriverEnum.DEVICEDRIVER_FLEXSCALE,
} }
])) ]))
if LOAD_ALL_DEVICE_DRIVERS: if LOAD_ALL_DEVICE_DRIVERS:
from .oc_driver.OCDriver import OCDriver # pylint: disable=wrong-import-position from .oc_driver.OCDriver import OCDriver # pylint: disable=wrong-import-position
DRIVERS.append( DRIVERS.append(
(OCDriver, [ (OCDriver, [
{ {
# Real Packet Router, specifying OpenConfig Driver => use OpenConfigDriver # Real Packet Router, specifying OpenConfig Driver => use OpenConfigDriver
FilterFieldEnum.DEVICE_TYPE:[ FilterFieldEnum.DEVICE_TYPE: [
DeviceTypeEnum.OPTICAL_ROADM, DeviceTypeEnum.OPTICAL_ROADM,
DeviceTypeEnum.OPTICAL_TRANSPONDER DeviceTypeEnum.OPTICAL_TRANSPONDER
],
],
FilterFieldEnum.DRIVER : DeviceDriverEnum.DEVICEDRIVER_OC, FilterFieldEnum.DRIVER : DeviceDriverEnum.DEVICEDRIVER_OC,
} }
])) ]))
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
import re,logging import re,logging
import json import json
import lxml.etree as ET import lxml.etree as ET
......
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