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 {
DEVICEDRIVER_XR = 6;
DEVICEDRIVER_IETF_L2VPN = 7;
DEVICEDRIVER_GNMI_OPENCONFIG = 8;
DEVICEDRIVER_IETF_ACTN = 9;
DEVICEDRIVER_FLEXSCALE = 10;
DEVICEDRIVER_FLEXSCALE = 9;
DEVICEDRIVER_IETF_ACTN = 10;
DEVICEDRIVER_OC = 11;
}
......
......@@ -16,7 +16,6 @@ syntax = "proto3";
package openconfig_device;
import "context.proto";
import "monitoring.proto";
service OpenConfigService {
rpc AddOpenConfigDevice (context.OpticalConfig) returns (context.OpticalConfigId) {}
......
......@@ -45,7 +45,7 @@ from .database.Slice import (
slice_delete, slice_get, slice_list_ids, slice_list_objs, slice_select, slice_set, slice_unset)
from .database.Topology import (
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__)
......
......@@ -39,7 +39,6 @@ class DeviceService(GenericGrpcService):
self.monitoring_loops.start()
add_DeviceServiceServicer_to_server(self.device_servicer, self.server)
add_OpenConfigServiceServicer_to_server(self.openconfig_device_servicer,self.server)
def stop(self):
super().stop()
......
......@@ -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.ServiceExceptions import NotFoundException, OperationFailedException
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_grpc import DeviceServiceServicer
from common.tools.context_queries.Device import get_device
......@@ -54,15 +56,14 @@ class DeviceServiceServicerImpl(DeviceServiceServicer):
@safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
def AddDevice(self, request : Device, context : grpc.ServicerContext) -> DeviceId:
t0 = time.time()
device_uuid = request.device_id.device_uuid.uuid
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)
t1 = time.time()
context_client = ContextClient()
......@@ -143,13 +144,12 @@ class DeviceServiceServicerImpl(DeviceServiceServicer):
device.device_operational_status = DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_ENABLED
# temporary line
if (request.device_drivers[0]== DeviceDriverEnum.DEVICEDRIVER_OC and len(request.device_endpoints)>0):
for endpoint in request.device_endpoints:
#endpoint.endpoint_id.device_id.CopyFrom(device.device_id)
pass
if request.device_drivers[0] == DeviceDriverEnum.DEVICEDRIVER_OC and len(request.device_endpoints) > 0:
#for endpoint in request.device_endpoints:
# #endpoint.endpoint_id.device_id.CopyFrom(device.device_id)
# pass
device.device_endpoints.extend(request.device_endpoints)
device_id = context_client.SetDevice(device)
t10 = time.time()
......
......@@ -12,16 +12,12 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import grpc, logging, os, time,json
from typing import Dict
from prometheus_client import Histogram
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
import grpc, logging, json
from common.method_wrappers.Decorator import MetricsPool, safe_and_metered_rpc_method
from common.method_wrappers.ServiceExceptions import NotFoundException
from common.proto.context_pb2 import (
Device, DeviceConfig, DeviceDriverEnum, DeviceId, DeviceOperationalStatusEnum, Empty, Link,OpticalConfig,OpticalConfigId ,OpticalConfig,OpticalConfigList)
from common.proto.device_pb2 import MonitoringSettings
Device, DeviceId, DeviceOperationalStatusEnum, Empty, OpticalConfig, OpticalConfig
)
from common.proto.device_pb2_grpc import DeviceServiceServicer
from common.tools.context_queries.Device import get_device
from common.tools.mutex_queues.MutexQueues import MutexQueues
......@@ -29,13 +25,8 @@ from context.client.ContextClient import ContextClient
from .driver_api._Driver import _Driver
from .driver_api.DriverInstanceCache import DriverInstanceCache, get_driver
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 (
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)
from .Tools import check_no_endpoints
LOGGER = logging.getLogger(__name__)
......@@ -52,12 +43,10 @@ class OpenConfigServicer(DeviceServiceServicer):
self.monitoring_loops = monitoring_loops
self.mutex_queues = MutexQueues()
LOGGER.debug('Servicer Created')
@safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
def AddOpenConfigDevice(self, request : OpticalConfig, context : grpc.ServicerContext) -> DeviceId:
device_uuid = request.device_id.device_uuid.uuid
check_no_endpoints(request.device_endpoints)
context_client = ContextClient()
......@@ -78,56 +67,29 @@ class OpenConfigServicer(DeviceServiceServicer):
# update device_uuid to honor UUID provided by Context
device_uuid = device.device_id.device_uuid.uuid
self.mutex_queues.wait_my_turn(device_uuid)
try:
device_id = context_client.SetDevice(device)
except Exception as error :
LOGGER.debug("error %s",error)
#modified Andrea
@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
resources=[]
result=None
config =json.loads(request.config)
try:
context_client = ContextClient()
device = get_device(
context_client, device_uuid, rw_copy=True, include_endpoints=True, include_components=False,
include_config_rules=False)
if device is None:
raise NotFoundException('Device', device_uuid, extra_details='loading in ConfigureDevice')
resources,conditions=extract_resources(config=config,device=device)
driver : _Driver = get_driver(self.driver_instance_cache, device)
result = driver.SetConfig(resources=resources,conditions=conditions)
#todo
#add a control with the NETCONF get
#TODO: add a control with the NETCONF get
#driver.GetConfig(resource_keys=filter_fields)
except Exception as e:
LOGGER.info("error in configuring %s",e)
return Empty()
\ No newline at end of file
......@@ -167,19 +167,17 @@ if LOAD_ALL_DEVICE_DRIVERS:
FilterFieldEnum.DRIVER: DeviceDriverEnum.DEVICEDRIVER_FLEXSCALE,
}
]))
if LOAD_ALL_DEVICE_DRIVERS:
from .oc_driver.OCDriver import OCDriver # pylint: disable=wrong-import-position
DRIVERS.append(
(OCDriver, [
{
# Real Packet Router, specifying OpenConfig Driver => use OpenConfigDriver
FilterFieldEnum.DEVICE_TYPE:[
FilterFieldEnum.DEVICE_TYPE: [
DeviceTypeEnum.OPTICAL_ROADM,
DeviceTypeEnum.OPTICAL_TRANSPONDER
],
],
FilterFieldEnum.DRIVER : DeviceDriverEnum.DEVICEDRIVER_OC,
}
]))
......@@ -11,6 +11,7 @@
# 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.
import re,logging
import json
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