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

implement reset signal for HRAT

parent c18b3e72
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -58,8 +58,17 @@ class Health(_Resource):
class Reset(_Resource):
    def post(self):
        LOGGER.info("Operation POST /reset")

        # TODO: implement
        try:
            result = self.pathcompextended_client.Reset(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 resetting: %s", e, exc_info=True)
            return {"error": str(e)}, 500

# ---------------------------------------------------------------------------------- #
# -- NetworkContext ---------------------------------------------------------------- #
+6 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ from .Resources import (
    NetworkContext,
    NetworkContextDetails,
    Health,
    Reset,
    TransportOpticalSlice,
    TransportOpticalSliceDetails,
    TransportNetworkSliceL3,
@@ -47,6 +48,11 @@ def register_pathcompextended(nbi_app : NbiApplication):
        URL_PREFIX + '/health',
        endpoint='pathcompextended.health'
    )
    nbi_app.add_rest_api_resource(
        Reset,
        URL_PREFIX + '/reset',
        endpoint='pathcompextended.reset'
    )
    nbi_app.add_rest_api_resource(
        TransportOpticalSlice,
        URL_PREFIX + '/transport-optical-slice',
+14 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ from pathcompextended.schemas.common import (
    HealthCheckGetResponse,
    ExternalKpisPostRequest,
    ExternalKpisPostResponse,
    ResetPostResponse,
)

LOGGER = logging.getLogger(__name__)
@@ -103,3 +104,16 @@ class GeneralAPI:
            LOGGER.warning("Failed to parse KPIs response: %s", exc)
            return ExternalKpisPostResponse(message=res.text)

    def post_reset(self) -> ResetPostResponse:
        """
        Reset H-RAT context (clears all topologies, slices, etc.).
        """
        LOGGER.debug("Resetting H-RAT context")
        endpoint = f"{self._base_api_url}/reset"
        res = self._api.post(endpoint, {})
        if res.status_code != 200:
            LOGGER.error("Failed to reset H-RAT: %s - %s", res.status_code, res.text)
            res.raise_for_status()
        LOGGER.debug("Response from HRAT reset: %s - %s", res.status_code, res.text)
        return ResetPostResponse(**res.json())
+10 −0
Original line number Diff line number Diff line
@@ -192,6 +192,16 @@ class HRAT:
        """
        return self.transport_network_slice_l3_api.delete_all_transport_network_slices_l3()

    # ========================================================================
    # RESET
    # ========================================================================

    def reset(self):
        """
        Wrapper around GeneralAPI.post_reset.
        """
        return self.general_api.post_reset()

    # ========================================================================
    # HEALTH CHECK METHODS
    # ========================================================================
+4 −0
Original line number Diff line number Diff line
{
  "message": "H-RAT context reset successfully",
  "status": "ok"
}
 No newline at end of file
Loading