Commit b481f48c authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

PathComputation component:

- added logic to propagate config rules of services to subservices by default
parent 6df7c1c1
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -134,7 +134,8 @@ class _Algorithm:

    def add_service_to_reply(
        self, reply : PathCompReply, context_uuid : str, service_uuid : str,
        device_layer : Optional[DeviceLayerEnum] = None, path_hops : List[Dict] = []
        device_layer : Optional[DeviceLayerEnum] = None, path_hops : List[Dict] = [],
        config_rules : List = []
    ) -> Service:
        # TODO: implement support for multi-point services
        # Control deactivated to enable disjoint paths with multiple redundant endpoints on each side
@@ -168,6 +169,8 @@ class _Algorithm:
                    }
                    config_rule = ConfigRule(**json_config_rule_set('/settings', json_tapi_settings))
                    service.service_config.config_rules.append(config_rule)
                else:
                    service.service_config.config_rules.extend(config_rules)

            service.service_status.service_status = ServiceStatusEnum.SERVICESTATUS_PLANNED

@@ -192,7 +195,8 @@ class _Algorithm:
            context_uuid = service_id['contextId']
            service_uuid = service_id['service_uuid']
            service_key = (context_uuid, service_uuid)
            grpc_services[service_key] = self.add_service_to_reply(reply, context_uuid, service_uuid)
            upper_service = self.add_service_to_reply(reply, context_uuid, service_uuid)
            grpc_services[service_key] = upper_service

            no_path_issue = response.get('noPath', {}).get('issue')
            if no_path_issue is not None:
@@ -209,8 +213,10 @@ class _Algorithm:
                    service_key = (context_uuid, connection_uuid)
                    grpc_service = grpc_services.get(service_key)
                    if grpc_service is None:
                        config_rules = upper_service.service_config.config_rules
                        grpc_service = self.add_service_to_reply(
                            reply, context_uuid, connection_uuid, device_layer=device_layer, path_hops=path_hops)
                            reply, context_uuid, connection_uuid, device_layer=device_layer, path_hops=path_hops,
                            config_rules=config_rules)
                        grpc_services[service_key] = grpc_service

                for connection in connections: