Loading src/service/service/ServiceServiceServicerImpl.py +37 −43 Original line number Original line Diff line number Diff line Loading @@ -117,6 +117,28 @@ class ServiceServiceServicerImpl(ServiceServiceServicer): service.service_type = request.service_type # pylint: disable=no-member service.service_type = request.service_type # pylint: disable=no-member service.service_status.service_status = ServiceStatusEnum.SERVICESTATUS_PLANNED # pylint: disable=no-member service.service_status.service_status = ServiceStatusEnum.SERVICESTATUS_PLANNED # pylint: disable=no-member if service.service_type == ServiceTypeEnum.SERVICETYPE_TE: # TE service: context_client.SetService(request) te_service_client = TEServiceClient() service_status = te_service_client.RequestLSP(service) if service_status.service_status == ServiceStatusEnum.SERVICESTATUS_ACTIVE: _service : Optional[Service] = get_service_by_id( context_client, request.service_id, rw_copy=True, include_config_rules=False, include_constraints=False, include_endpoint_ids=False) _service.service_status.service_status = ServiceStatusEnum.SERVICESTATUS_ACTIVE service_id = context_client.SetService(_service) return service_id else: MSG = 'RequestLSP for Service({:s}) returned ServiceStatus({:s})' context_uuid = request.service_id.context_id.context_uuid.uuid service_uuid = request.service_id.service_uuid.uuid service_key = '{:s}/{:s}'.format(context_uuid, service_uuid) str_service_status = ServiceStatusEnum.Name(service_status.service_status) raise Exception(MSG.format(service_key, str_service_status)) del service.service_endpoint_ids[:] # pylint: disable=no-member del service.service_endpoint_ids[:] # pylint: disable=no-member for endpoint_id in request.service_endpoint_ids: for endpoint_id in request.service_endpoint_ids: service.service_endpoint_ids.add().CopyFrom(endpoint_id) # pylint: disable=no-member service.service_endpoint_ids.add().CopyFrom(endpoint_id) # pylint: disable=no-member Loading Loading @@ -169,34 +191,6 @@ class ServiceServiceServicerImpl(ServiceServiceServicer): context_client, service_id_with_uuids, rw_copy=False, context_client, service_id_with_uuids, rw_copy=False, include_config_rules=True, include_constraints=True, include_endpoint_ids=True) include_config_rules=True, include_constraints=True, include_endpoint_ids=True) if service.service_type == ServiceTypeEnum.SERVICETYPE_TE: # TE service: te_service_client = TEServiceClient() # Note: TE should update the service in Context. # By now we update it manually for debugging purposes service = Service() service.CopyFrom(request) service.service_status.service_status = ServiceStatusEnum.SERVICESTATUS_PLANNED context_client.SetService(request) service_status = te_service_client.RequestLSP(service) if service_status.service_status == ServiceStatusEnum.SERVICESTATUS_ACTIVE: _service : Optional[Service] = get_service(context_client, request.service_id) service = Service() service.CopyFrom(_service) service.service_status.service_status = ServiceStatusEnum.SERVICESTATUS_ACTIVE context_client.SetService(service) else: MSG = 'RequestLSP for Service({:s}) returned ServiceStatus({:s})' context_uuid = request.service_id.context_id.context_uuid.uuid service_uuid = request.service_id.service_uuid.uuid service_key = '{:s}/{:s}'.format(context_uuid, service_uuid) str_service_status = ServiceStatusEnum.Name(service_status.service_status) raise Exception(MSG.format(service_key, str_service_status)) else: # Normal service: num_disjoint_paths = None num_disjoint_paths = None for constraint in request.service_constraints: for constraint in request.service_constraints: if constraint.WhichOneof('constraint') == 'sla_availability': if constraint.WhichOneof('constraint') == 'sla_availability': Loading Loading @@ -253,7 +247,8 @@ class ServiceServiceServicerImpl(ServiceServiceServicer): te_service_client = TEServiceClient() te_service_client = TEServiceClient() te_service_client.DeleteLSP(request) te_service_client.DeleteLSP(request) context_client.RemoveService(request) context_client.RemoveService(request) else: return Empty() # Normal service # Normal service # Feed TaskScheduler with this service and the sub-services and sub-connections related to this service. # Feed TaskScheduler with this service and the sub-services and sub-connections related to this service. # TaskScheduler identifies inter-dependencies among them and produces a schedule of tasks (an ordered list of # TaskScheduler identifies inter-dependencies among them and produces a schedule of tasks (an ordered list of Loading @@ -261,7 +256,6 @@ class ServiceServiceServicerImpl(ServiceServiceServicer): tasks_scheduler = TasksScheduler(self.service_handler_factory) tasks_scheduler = TasksScheduler(self.service_handler_factory) tasks_scheduler.compose_from_service(service, is_delete=True) tasks_scheduler.compose_from_service(service, is_delete=True) tasks_scheduler.execute_all() tasks_scheduler.execute_all() return Empty() return Empty() @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) Loading Loading
src/service/service/ServiceServiceServicerImpl.py +37 −43 Original line number Original line Diff line number Diff line Loading @@ -117,6 +117,28 @@ class ServiceServiceServicerImpl(ServiceServiceServicer): service.service_type = request.service_type # pylint: disable=no-member service.service_type = request.service_type # pylint: disable=no-member service.service_status.service_status = ServiceStatusEnum.SERVICESTATUS_PLANNED # pylint: disable=no-member service.service_status.service_status = ServiceStatusEnum.SERVICESTATUS_PLANNED # pylint: disable=no-member if service.service_type == ServiceTypeEnum.SERVICETYPE_TE: # TE service: context_client.SetService(request) te_service_client = TEServiceClient() service_status = te_service_client.RequestLSP(service) if service_status.service_status == ServiceStatusEnum.SERVICESTATUS_ACTIVE: _service : Optional[Service] = get_service_by_id( context_client, request.service_id, rw_copy=True, include_config_rules=False, include_constraints=False, include_endpoint_ids=False) _service.service_status.service_status = ServiceStatusEnum.SERVICESTATUS_ACTIVE service_id = context_client.SetService(_service) return service_id else: MSG = 'RequestLSP for Service({:s}) returned ServiceStatus({:s})' context_uuid = request.service_id.context_id.context_uuid.uuid service_uuid = request.service_id.service_uuid.uuid service_key = '{:s}/{:s}'.format(context_uuid, service_uuid) str_service_status = ServiceStatusEnum.Name(service_status.service_status) raise Exception(MSG.format(service_key, str_service_status)) del service.service_endpoint_ids[:] # pylint: disable=no-member del service.service_endpoint_ids[:] # pylint: disable=no-member for endpoint_id in request.service_endpoint_ids: for endpoint_id in request.service_endpoint_ids: service.service_endpoint_ids.add().CopyFrom(endpoint_id) # pylint: disable=no-member service.service_endpoint_ids.add().CopyFrom(endpoint_id) # pylint: disable=no-member Loading Loading @@ -169,34 +191,6 @@ class ServiceServiceServicerImpl(ServiceServiceServicer): context_client, service_id_with_uuids, rw_copy=False, context_client, service_id_with_uuids, rw_copy=False, include_config_rules=True, include_constraints=True, include_endpoint_ids=True) include_config_rules=True, include_constraints=True, include_endpoint_ids=True) if service.service_type == ServiceTypeEnum.SERVICETYPE_TE: # TE service: te_service_client = TEServiceClient() # Note: TE should update the service in Context. # By now we update it manually for debugging purposes service = Service() service.CopyFrom(request) service.service_status.service_status = ServiceStatusEnum.SERVICESTATUS_PLANNED context_client.SetService(request) service_status = te_service_client.RequestLSP(service) if service_status.service_status == ServiceStatusEnum.SERVICESTATUS_ACTIVE: _service : Optional[Service] = get_service(context_client, request.service_id) service = Service() service.CopyFrom(_service) service.service_status.service_status = ServiceStatusEnum.SERVICESTATUS_ACTIVE context_client.SetService(service) else: MSG = 'RequestLSP for Service({:s}) returned ServiceStatus({:s})' context_uuid = request.service_id.context_id.context_uuid.uuid service_uuid = request.service_id.service_uuid.uuid service_key = '{:s}/{:s}'.format(context_uuid, service_uuid) str_service_status = ServiceStatusEnum.Name(service_status.service_status) raise Exception(MSG.format(service_key, str_service_status)) else: # Normal service: num_disjoint_paths = None num_disjoint_paths = None for constraint in request.service_constraints: for constraint in request.service_constraints: if constraint.WhichOneof('constraint') == 'sla_availability': if constraint.WhichOneof('constraint') == 'sla_availability': Loading Loading @@ -253,7 +247,8 @@ class ServiceServiceServicerImpl(ServiceServiceServicer): te_service_client = TEServiceClient() te_service_client = TEServiceClient() te_service_client.DeleteLSP(request) te_service_client.DeleteLSP(request) context_client.RemoveService(request) context_client.RemoveService(request) else: return Empty() # Normal service # Normal service # Feed TaskScheduler with this service and the sub-services and sub-connections related to this service. # Feed TaskScheduler with this service and the sub-services and sub-connections related to this service. # TaskScheduler identifies inter-dependencies among them and produces a schedule of tasks (an ordered list of # TaskScheduler identifies inter-dependencies among them and produces a schedule of tasks (an ordered list of Loading @@ -261,7 +256,6 @@ class ServiceServiceServicerImpl(ServiceServiceServicer): tasks_scheduler = TasksScheduler(self.service_handler_factory) tasks_scheduler = TasksScheduler(self.service_handler_factory) tasks_scheduler.compose_from_service(service, is_delete=True) tasks_scheduler.compose_from_service(service, is_delete=True) tasks_scheduler.execute_all() tasks_scheduler.execute_all() return Empty() return Empty() @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) Loading