diff --git a/manifests/deviceservice.yaml b/manifests/deviceservice.yaml index 3c9a941e0ac67e752d5461c4859a7b03d3692a62..e49ba23995b07f4e7e956a69f8d5383c8e976e89 100644 --- a/manifests/deviceservice.yaml +++ b/manifests/deviceservice.yaml @@ -39,7 +39,7 @@ spec: - containerPort: 9192 env: - name: LOG_LEVEL - value: "DEBUG" + value: "INFO" startupProbe: exec: command: ["/bin/grpc_health_probe", "-addr=:2020"] diff --git a/manifests/serviceservice.yaml b/manifests/serviceservice.yaml index bcfb47ee392d86b8a46d22e58f8efdd6e10da329..1dd383d615bb167ae6de15ae03c404a50bdee942 100644 --- a/manifests/serviceservice.yaml +++ b/manifests/serviceservice.yaml @@ -36,7 +36,7 @@ spec: - containerPort: 9192 env: - name: LOG_LEVEL - value: "DEBUG" + value: "INFO" readinessProbe: exec: command: ["/bin/grpc_health_probe", "-addr=:3030"] diff --git a/manifests/webuiservice.yaml b/manifests/webuiservice.yaml index d25f5f8873d4cd3df8206fe88ec0e5805032c3fb..a519aa4a2f8a1e81f1b7f2a1be1965ec0b8bb386 100644 --- a/manifests/webuiservice.yaml +++ b/manifests/webuiservice.yaml @@ -39,7 +39,7 @@ spec: - containerPort: 8004 env: - name: LOG_LEVEL - value: "DEBUG" + value: "INFO" - name: WEBUISERVICE_SERVICE_BASEURL_HTTP value: "/webui/" readinessProbe: diff --git a/src/context/service/database/Service.py b/src/context/service/database/Service.py index ba042fe8fd079172df66526732edbea660d2d9fa..2da31d58d2870f36a11c97378a29a875efca8725 100644 --- a/src/context/service/database/Service.py +++ b/src/context/service/database/Service.py @@ -88,6 +88,8 @@ def service_set(db_engine : Engine, messagebroker : MessageBroker, request : Ser service_type = grpc_to_enum__service_type(request.service_type) if service_type is None and request.service_type == ServiceTypeEnum.SERVICETYPE_OPTICAL_CONNECTIVITY: service_type = "OPTICAL_CONNECTIVITY" + if service_type is None and request.service_type == ServiceTypeEnum.SERVICETYPE_IPLINK : + service_type = "IP_LINK" service_status = grpc_to_enum__service_status(request.service_status.service_status) diff --git a/src/pathcomp/frontend/service/algorithms/tools/ServiceTypes.py b/src/pathcomp/frontend/service/algorithms/tools/ServiceTypes.py index afe695ab39be25816161d90184489d2da0a6d4ab..c47e1995e714bf35745ffecf2c908aae6b2bdb27 100644 --- a/src/pathcomp/frontend/service/algorithms/tools/ServiceTypes.py +++ b/src/pathcomp/frontend/service/algorithms/tools/ServiceTypes.py @@ -49,7 +49,7 @@ SERVICE_TYPE_IPLINK = {ServiceTypeEnum.SERVICETYPE_IPLINK} def get_service_type(device_type : DeviceTypeEnum, prv_service_type : ServiceTypeEnum) -> ServiceTypeEnum: - if device_type in PACKET_DEVICE_TYPES and prv_service_type in SERVICE_TYPE_LXNM: return prv_service_type + if device_type in PACKET_DEVICE_TYPES and (prv_service_type in SERVICE_TYPE_LXNM or prv_service_type in SERVICE_TYPE_IPLINK ): return prv_service_type if device_type in L2_DEVICE_TYPES: return ServiceTypeEnum.SERVICETYPE_L2NM if device_type in OPTICAL_DEVICE_TYPES: return ServiceTypeEnum.SERVICETYPE_TAPI_CONNECTIVITY_SERVICE if device_type in NETWORK_DEVICE_TYPES: return prv_service_type diff --git a/src/service/service/service_handlers/ip_link/ConfigRules_test_ocnos.py b/src/service/service/service_handlers/ip_link/ConfigRules_test_ocnos.py deleted file mode 100644 index 5fa1d0b5b6931902b4ac50847c90bf67738032ba..0000000000000000000000000000000000000000 --- a/src/service/service/service_handlers/ip_link/ConfigRules_test_ocnos.py +++ /dev/null @@ -1,337 +0,0 @@ -# Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (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. - -from typing import Dict, List, Tuple -from common.tools.object_factory.ConfigRule import json_config_rule_delete, json_config_rule_set -from service.service.service_handler_api.AnyTreeTools import TreeNode - -def setup_config_rules( - service_uuid : str, connection_uuid : str, device_uuid : str, endpoint_uuid : str, endpoint_name : str, - service_settings : TreeNode, device_settings : TreeNode, endpoint_settings : TreeNode, endpoint_acls : List [Tuple] -) -> List[Dict]: - - if service_settings is None: return [] - if device_settings is None: return [] - if endpoint_settings is None: return [] - - json_settings : Dict = service_settings.value - json_device_settings : Dict = device_settings.value - json_endpoint_settings : Dict = endpoint_settings.value - - mtu = json_settings.get('mtu', 1450 ) # 1512 - #address_families = json_settings.get('address_families', [] ) # ['IPV4'] - bgp_as = json_device_settings.get('bgp_as', 65000 ) # 65000 - - router_id = json_device_settings.get('router_id', '0.0.0.0') # '10.95.0.10' - route_distinguisher = json_device_settings.get('route_distinguisher', '65000:101' ) # '60001:801' - sub_interface_index = json_endpoint_settings.get('sub_interface_index', 0 ) # 1 - vlan_id = json_endpoint_settings.get('vlan_id', 1 ) # 400 - address_ip = json_endpoint_settings.get('address_ip', '0.0.0.0') # '2.2.2.1' - address_prefix = json_endpoint_settings.get('address_prefix', 24 ) # 30 - - policy_import = json_device_settings.get('policy_AZ', '2' ) # 2 - policy_export = json_device_settings.get('policy_ZA', '7' ) # 30 - #network_interface_desc = '{:s}-NetIf'.format(service_uuid) - network_interface_desc = json_endpoint_settings.get('ni_description','') - #network_subinterface_desc = '{:s}-NetSubIf'.format(service_uuid) - network_subinterface_desc = json_endpoint_settings.get('subif_description','') - #service_short_uuid = service_uuid.split('-')[-1] - #network_instance_name = '{:s}-NetInst'.format(service_short_uuid) - network_instance_name = json_endpoint_settings.get('ni_name', service_uuid.split('-')[-1]) #ELAN-AC:1 - - self_bgp_if_name = json_device_settings.get('self_bgp_interface_name', '') - self_bgp_address_ip = json_device_settings.get('self_bgp_interface_address_ip', '') - bgp_address_prefix = json_device_settings.get('bgp_interface_address_prefix', '') - bgp_sub_interface_index = json_device_settings.get('self_bgp_sub_interface_index', 0) - neighbor_bgp_if_address_ip= json_device_settings.get('neighbor_bgp_interface_address_ip', '0.0.0.0') # '2.2.2.1' - - # if_subif_name = '{:s}.{:d}'.format(endpoint_name, 0) - if_subif_name = '{:s}'.format(endpoint_name[5:]) - - json_config_rules = [ - # Configure Interface (not used) - #json_config_rule_set( - # '/interface[{:s}]'.format(endpoint_name), { - # 'name': endpoint_name, - # 'description': network_interface_desc, - # 'mtu': mtu, - #}), - - #Create network instance - json_config_rule_set( - '/network_instance[{:s}]'.format(network_instance_name), { - 'name': network_instance_name, - 'description': network_interface_desc, - 'type': 'L3VRF', - 'route_distinguisher': route_distinguisher, - 'router_id': router_id, - #'address_families': address_families, - }), - - #Add BGP protocol to network instance - json_config_rule_set( - '/network_instance[{:s}]/protocols[BGP]'.format(network_instance_name), { - 'name': network_instance_name, - 'protocol_name': bgp_as, - 'identifier': 'BGP', - 'type': 'L3VRF', - 'as': bgp_as, - 'router_id': router_id, - 'neighbors': [{'ip_address': neighbor_bgp_if_address_ip, 'remote_as': bgp_as}] - }), - - #Add DIRECTLY CONNECTED protocol to network instance - json_config_rule_set( - '/network_instance[{:s}]/protocols[DIRECTLY_CONNECTED]'.format(network_instance_name), { - 'name': network_instance_name, - 'identifier': 'DIRECTLY_CONNECTED', - 'protocol_name': 'DIRECTLY_CONNECTED', - }), - - #Add STATIC protocol to network instance - json_config_rule_set( - '/network_instance[{:s}]/protocols[STATIC]'.format(network_instance_name), { - 'name': network_instance_name, - 'identifier': 'STATIC', - 'protocol_name': 'STATIC', - }), - - #Create interface with subinterface (without IP address) - json_config_rule_set( - '/interface[{:s}]/subinterface[{:d}]'.format(if_subif_name, sub_interface_index), { - 'name' : if_subif_name, - 'type' :'ethernetCsmacd', - 'mtu' : mtu, - 'index' : sub_interface_index, - 'description': network_subinterface_desc, - 'vlan_id' : vlan_id, - }), - - #Associate interface to network instance - json_config_rule_set( - '/network_instance[{:s}]/interface[{:s}]'.format(network_instance_name, if_subif_name), { - 'name' : network_instance_name, - 'type' : 'L3VRF', - 'id' : if_subif_name, - 'interface' : if_subif_name, - 'subinterface' : sub_interface_index, - 'address_ip' : address_ip, - 'address_prefix': address_prefix, - }), - - #Create interface with subinterface (with IP address) - json_config_rule_set( - '/interface[{:s}]/subinterface[{:d}]'.format(if_subif_name, sub_interface_index), { - 'name' : if_subif_name, - 'type' :'ethernetCsmacd', - 'mtu' : mtu, - 'index' : sub_interface_index, - 'description' : network_subinterface_desc, - 'vlan_id' : vlan_id, - 'address_ip' : address_ip, - 'address_prefix': address_prefix, - }), - - json_config_rule_set( - '/network_instance[{:s}]/interface[{:s}]'.format(network_instance_name, self_bgp_if_name), { - 'name' : network_instance_name, - 'type' : 'L3VRF', - 'id' : self_bgp_if_name, - 'interface' : self_bgp_if_name, - 'subinterface': bgp_sub_interface_index, - 'address_ip' : self_bgp_address_ip, - 'address_prefix': bgp_address_prefix, - }), - - #Create routing policy - json_config_rule_set( - '/routing_policy/bgp_defined_set[{:s}_rt_import][{:s}]'.format(policy_import,route_distinguisher), { - 'ext_community_set_name': 'set_{:s}'.format(policy_import), - 'ext_community_member' : route_distinguisher, - }), - json_config_rule_set( - # pylint: disable=duplicate-string-formatting-argument - '/routing_policy/policy_definition[{:s}_import]/statement[{:s}]'.format(policy_import, policy_import), { - 'policy_name' : policy_import, - 'statement_name' : 'stm_{:s}'.format(policy_import), # OCNOS: '10', - 'ext_community_set_name': 'set_{:s}'.format(policy_import), - 'policy_result' : 'ACCEPT_ROUTE', - }), - - #Associate routing policy to network instance - json_config_rule_set( - '/network_instance[{:s}]/inter_instance_policies[{:s}]'.format(network_instance_name, policy_import), { - 'name' : network_instance_name, - 'import_policy': policy_import, - }), - - #Create routing policy - json_config_rule_set( - '/routing_policy/bgp_defined_set[{:s}_rt_export][{:s}]'.format(policy_export, route_distinguisher), { - 'ext_community_set_name': 'set_{:s}'.format(policy_export), - 'ext_community_member' : route_distinguisher, - }), - json_config_rule_set( - # pylint: disable=duplicate-string-formatting-argument - '/routing_policy/policy_definition[{:s}_export]/statement[{:s}]'.format(policy_export, policy_export), { - 'policy_name' : policy_export, - 'statement_name' : 'stm_{:s}'.format(policy_export), # OCNOS: '10', - 'ext_community_set_name': 'set_{:s}'.format(policy_export), - 'policy_result' : 'ACCEPT_ROUTE', - }), - - #Associate routing policy to network instance - json_config_rule_set( - '/network_instance[{:s}]/inter_instance_policies[{:s}]'.format(network_instance_name, policy_export),{ - 'name' : network_instance_name, - 'export_policy': policy_export, - }), - - #Create table connections - json_config_rule_set( - '/network_instance[{:s}]/table_connections[DIRECTLY_CONNECTED][BGP][IPV4]'.format(network_instance_name), { - 'name' : network_instance_name, - 'src_protocol' : 'DIRECTLY_CONNECTED', - 'dst_protocol' : 'BGP', - 'address_family' : 'IPV4', - 'default_import_policy': 'ACCEPT_ROUTE', - 'as' : bgp_as, - }), - - json_config_rule_set( - '/network_instance[{:s}]/table_connections[STATIC][BGP][IPV4]'.format(network_instance_name), { - 'name' : network_instance_name, - 'src_protocol' : 'STATIC', - 'dst_protocol' : 'BGP', - 'address_family' : 'IPV4', - 'default_import_policy': 'ACCEPT_ROUTE', - 'as' : bgp_as, - }), - - ] - - for res_key, res_value in endpoint_acls: - json_config_rules.append( - {'action': 1, 'acl': res_value} - ) - return json_config_rules - -def teardown_config_rules( - service_uuid : str, connection_uuid : str, device_uuid : str, endpoint_uuid : str, endpoint_name : str, - service_settings : TreeNode, device_settings : TreeNode, endpoint_settings : TreeNode -) -> List[Dict]: - - if service_settings is None: return [] - if device_settings is None: return [] - if endpoint_settings is None: return [] - - json_settings : Dict = service_settings.value - json_device_settings : Dict = device_settings.value - json_endpoint_settings : Dict = endpoint_settings.value - - service_short_uuid = service_uuid.split('-')[-1] - # network_instance_name = '{:s}-NetInst'.format(service_short_uuid) - network_instance_name = json_endpoint_settings.get('ni_name', service_short_uuid) #ELAN-AC:1 - #network_interface_desc = '{:s}-NetIf'.format(service_uuid) - # network_subinterface_desc = '{:s}-NetSubIf'.format(service_uuid) - network_subinterface_desc = '' - - mtu = json_settings.get('mtu', 1450 ) # 1512 - #address_families = json_settings.get('address_families', [] ) # ['IPV4'] - #bgp_as = json_device_settings.get('bgp_as', 65000 ) # 65000 - route_distinguisher = json_device_settings.get('route_distinguisher', '0:0' ) # '60001:801' - sub_interface_index = json_endpoint_settings.get('sub_interface_index', 0 ) # 1 - #router_id = json_device_settings.get('router_id', '0.0.0.0') # '10.95.0.10' - vlan_id = json_endpoint_settings.get('vlan_id', 1 ) # 400 - address_ip = json_endpoint_settings.get('address_ip', '0.0.0.0') # '2.2.2.1' - address_prefix = json_endpoint_settings.get('address_prefix', 24 ) # 30 - policy_import = json_device_settings.get('policy_AZ', '2' ) # 2 - policy_export = json_device_settings.get('policy_ZA', '7' ) # 30 - - self_bgp_if_name = json_device_settings.get('self_bgp_interface_name', '') - self_bgp_address_ip = json_device_settings.get('self_bgp_interface_address_ip', '') - bgp_address_prefix = json_device_settings.get('bgp_interface_address_prefix', '') - bgp_sub_interface_index = json_device_settings.get('self_bgp_sub_interface_index', 0) - - # if_subif_name = '{:s}.{:d}'.format(endpoint_name, vlan_id) - if_subif_name = '{:s}'.format(endpoint_name[5:]) - - json_config_rules = [ - #Delete export routing policy - json_config_rule_delete( - # pylint: disable=duplicate-string-formatting-argument - '/routing_policy/policy_definition[{:s}_export]/statement[{:s}]'.format(policy_export, policy_export), { - 'policy_name' : policy_export, - 'statement_name' : 'stm_{:s}'.format(policy_export), # OCNOS: '10', - 'ext_community_set_name': 'set_{:s}'.format(policy_export), - 'policy_result' : 'ACCEPT_ROUTE', - }), - json_config_rule_delete( - '/routing_policy/bgp_defined_set[{:s}_rt_export][{:s}]'.format(policy_export, route_distinguisher), { - 'ext_community_set_name': 'set_{:s}'.format(policy_export), - 'ext_community_member' : route_distinguisher, - }), - - #Delete import routing policy - json_config_rule_delete( - # pylint: disable=duplicate-string-formatting-argument - '/routing_policy/policy_definition[{:s}_import]/statement[{:s}]'.format(policy_import, policy_import), { - 'policy_name' : policy_import, - 'statement_name' : 'stm_{:s}'.format(policy_import), # OCNOS: '10', - 'ext_community_set_name': 'set_{:s}'.format(policy_import), - 'policy_result' : 'ACCEPT_ROUTE', - }), - json_config_rule_delete( - '/routing_policy/bgp_defined_set[{:s}_rt_import][{:s}]'.format(policy_import, route_distinguisher), { - 'ext_community_set_name': 'set_{:s}'.format(policy_import), - 'ext_community_member' : route_distinguisher, - }), - - #Delete interface; automatically deletes: - # - /interface[]/subinterface[] - # json_config_rule_delete('/interface[{:s}]/subinterface[0]'.format(if_subif_name), - # { - # 'name': if_subif_name, - # }), - - #Delete network instance; automatically deletes: - # - /network_instance[]/interface[] - # - /network_instance[]/protocols[] - # - /network_instance[]/inter_instance_policies[] - - #Associate interface to network instance - json_config_rule_set( - '/network_instance[{:s}]/interface[{:s}]'.format('default', if_subif_name), { - 'name' : 'default', - 'id' : if_subif_name, - 'interface' : if_subif_name, - 'subinterface': sub_interface_index, - 'address_ip' : address_ip, - 'address_prefix': address_prefix, - }), - json_config_rule_set( - '/network_instance[{:s}]/interface[{:s}]'.format('default', self_bgp_if_name), { - 'name' : 'default', - 'id' : self_bgp_if_name, - 'interface' : self_bgp_if_name, - 'subinterface': bgp_sub_interface_index, - 'address_ip' : self_bgp_address_ip, - 'address_prefix': bgp_address_prefix, - }), - json_config_rule_delete('/network_instance[{:s}]'.format(network_instance_name), - { - 'name': network_instance_name - }), - ] - return json_config_rules diff --git a/src/service/service/service_handlers/ip_link/IP_LinkServiceHandler.py b/src/service/service/service_handlers/ip_link/IP_LinkServiceHandler.py index 51b454051c97a54571ea3f271b9cd40bb3995f36..832b386c54694d652400238b58333f0721a2bfd1 100644 --- a/src/service/service/service_handlers/ip_link/IP_LinkServiceHandler.py +++ b/src/service/service/service_handlers/ip_link/IP_LinkServiceHandler.py @@ -58,9 +58,6 @@ class IP_LinkServiceHandler(_ServiceHandler): endpoint_acls = self.__settings_handler.get_endpoint_acls(device_obj, endpoint_obj) endpoint_ip_link = self.__settings_handler.get_endpoint_ip_link(device_obj, endpoint_obj) endpoint_name = endpoint_obj.name - - LOGGER.warning('DATOS({:s})'.format(str(endpoint_ip_link))) - json_config_rules = setup_config_rules( service_uuid, connection_uuid, device_uuid, endpoint_uuid, endpoint_name, settings, device_settings, endpoint_settings, endpoint_acls, endpoint_ip_link)