Commit c18b3e72 authored by Antonio Gines Buendia Lopez's avatar Antonio Gines Buendia Lopez
Browse files

Adds mass delete for optical/network slices

parent 127883bd
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -34,12 +34,14 @@ service PathCompExtendedService {
  // Transport Optical Slice
  rpc CreateTransportOpticalSlice (IetfNetworkSlice) returns (TransportOpticalSlice);
  rpc DeleteTransportOpticalSlice (UUID) returns (GenericMessage);
  rpc DeleteAllTransportOpticalSlices (google.protobuf.Empty) returns (GenericMessage);
  rpc GetTransportOpticalSlices (google.protobuf.Empty) returns (TransportOpticalSlicesResponse);
  rpc GetTransportOpticalSlice (UUID) returns (TransportOpticalSlice);

  // Transport Network Slice L3
  rpc CreateTransportNetworkSliceL3 (IetfNetworkSlice) returns (TransportNetworkSliceL3);
  rpc DeleteTransportNetworkSliceL3 (UUID) returns (GenericMessage);
  rpc DeleteAllTransportNetworkSlicesL3 (google.protobuf.Empty) returns (GenericMessage);
  rpc GetTransportNetworkSlicesL3 (google.protobuf.Empty) returns (TransportNetworkSlicesL3Response);
  rpc GetTransportNetworkSliceL3 (UUID) returns (TransportNetworkSliceL3);

+28 −0
Original line number Diff line number Diff line
@@ -206,6 +206,20 @@ class TransportOpticalSlice(_Resource):
            LOGGER.error("Error getting transport optical slices: %s", e, exc_info=True)
            return {"error": str(e)}, 500

    def delete(self):
        LOGGER.info("Operation DELETE /transport-optical-slice")
        try:
            result = self.pathcompextended_client.DeleteAllTransportOpticalSlices(None)
            LOGGER.debug(grpc_message_to_json_string(result))
            if result.ifTrueIsJsonStringified:
                output = json.loads(result.message)
            else:
                output = {"message": result.message}
            return output, 200
        except Exception as e:
            LOGGER.error("Error deleting all transport optical slices: %s", e, exc_info=True)
            return {"error": str(e)}, 500

    def post(self):
        LOGGER.info("Operation POST /transport-optical-slice")
        try:
@@ -280,6 +294,20 @@ class TransportNetworkSliceL3(_Resource):
            LOGGER.error("Error getting transport network slices L3: %s", e, exc_info=True)
            return {"error": str(e)}, 500

    def delete(self):
        LOGGER.info("Operation DELETE /transport-network-slice-l3")
        try:
            result = self.pathcompextended_client.DeleteAllTransportNetworkSlicesL3(None)
            LOGGER.debug(grpc_message_to_json_string(result))
            if result.ifTrueIsJsonStringified:
                output = json.loads(result.message)
            else:
                output = {"message": result.message}
            return output, 200
        except Exception as e:
            LOGGER.error("Error deleting all transport network slices L3: %s", e, exc_info=True)
            return {"error": str(e)}, 500

    def post(self):
        LOGGER.info("Operation POST /transport-network-slice-l3")
        try:
+18 −0
Original line number Diff line number Diff line
@@ -125,6 +125,15 @@ class PathCompExtendedClient:
        LOGGER.debug('DeleteTransportOpticalSlice result: {:s}'.format(grpc_message_to_json_string(response)))
        return response

    @RETRY_DECORATOR
    def DeleteAllTransportOpticalSlices(self, request: Empty = None) -> GenericMessage:
        if request is None:
            request = Empty()
        LOGGER.debug('DeleteAllTransportOpticalSlices request')
        response = self.stub.DeleteAllTransportOpticalSlices(request)
        LOGGER.debug('DeleteAllTransportOpticalSlices result: {:s}'.format(grpc_message_to_json_string(response)))
        return response

    @RETRY_DECORATOR
    def GetTransportOpticalSlices(self, request: Empty = None) -> TransportOpticalSlicesResponse:
        if request is None:
@@ -159,6 +168,15 @@ class PathCompExtendedClient:
        LOGGER.debug('DeleteTransportNetworkSliceL3 result: {:s}'.format(grpc_message_to_json_string(response)))
        return response

    @RETRY_DECORATOR
    def DeleteAllTransportNetworkSlicesL3(self, request: Empty = None) -> GenericMessage:
        if request is None:
            request = Empty()
        LOGGER.debug('DeleteAllTransportNetworkSlicesL3 request')
        response = self.stub.DeleteAllTransportNetworkSlicesL3(request)
        LOGGER.debug('DeleteAllTransportNetworkSlicesL3 result: {:s}'.format(grpc_message_to_json_string(response)))
        return response

    @RETRY_DECORATOR
    def GetTransportNetworkSlicesL3(self, request: Empty = None) -> TransportNetworkSlicesL3Response:
        if request is None:
+46 −0
Original line number Diff line number Diff line
@@ -304,6 +304,29 @@ class PathCompExtendedServiceServicerImpl(PathCompExtendedServiceServicer):
        LOGGER.debug('[DeleteTransportOpticalSlice] end ; reply = {:s}'.format(grpc_message_to_json_string(reply)))
        return reply

    @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
    def DeleteAllTransportOpticalSlices(self, request: ProtoEmpty, context: grpc.ServicerContext) -> GenericMessage:
        LOGGER.debug('[DeleteAllTransportOpticalSlices] begin')

        reply = GenericMessage()
        reply.message = "DeleteAllTransportOpticalSlices not implemented"
        reply.ifTrueIsJsonStringified = False

        if is_hrat_enabled() and self._hrat_client:
            try:
                LOGGER.debug("Deleting all transport optical slices on H-RAT")
                with self._lock:
                    hrat_response = self._hrat_client.delete_all_transport_optical_slices()
                payload = hrat_response.model_dump(by_alias=True)
                reply.message = json.dumps(payload)
                reply.ifTrueIsJsonStringified = True
            except Exception as e:
                LOGGER.error('[DeleteAllTransportOpticalSlices] Error deleting on H-RAT: {:s}'.format(str(e)))
                raise

        LOGGER.debug('[DeleteAllTransportOpticalSlices] end')
        return reply

    @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
    def GetTransportOpticalSlices(self, request: ProtoEmpty, context: grpc.ServicerContext) -> TransportOpticalSlicesResponse:
        LOGGER.debug('[GetTransportOpticalSlices] begin')
@@ -442,6 +465,29 @@ class PathCompExtendedServiceServicerImpl(PathCompExtendedServiceServicer):
        LOGGER.debug('[DeleteTransportNetworkSliceL3] end ; reply = {:s}'.format(grpc_message_to_json_string(reply)))
        return reply

    @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
    def DeleteAllTransportNetworkSlicesL3(self, request: ProtoEmpty, context: grpc.ServicerContext) -> GenericMessage:
        LOGGER.debug('[DeleteAllTransportNetworkSlicesL3] begin')

        reply = GenericMessage()
        reply.message = "DeleteAllTransportNetworkSlicesL3 not implemented"
        reply.ifTrueIsJsonStringified = False

        if is_hrat_enabled() and self._hrat_client:
            try:
                LOGGER.debug("Deleting all transport network slices L3 on H-RAT")
                with self._lock:
                    hrat_response = self._hrat_client.delete_all_transport_network_slices_l3()
                payload = hrat_response.model_dump(by_alias=True)
                reply.message = json.dumps(payload)
                reply.ifTrueIsJsonStringified = True
            except Exception as e:
                LOGGER.error('[DeleteAllTransportNetworkSlicesL3] Error deleting on H-RAT: {:s}'.format(str(e)))
                raise

        LOGGER.debug('[DeleteAllTransportNetworkSlicesL3] end')
        return reply

    @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
    def GetTransportNetworkSlicesL3(self, request: ProtoEmpty, context: grpc.ServicerContext) -> TransportNetworkSlicesL3Response:
        LOGGER.debug('[GetTransportNetworkSlicesL3] begin')