From 5f9a2f51c1c2a1bcb43fbf51be66c2b572d0b214 Mon Sep 17 00:00:00 2001 From: Stefan Spettel <stefan.spettel@eurecom.fr> Date: Mon, 28 Nov 2022 12:13:12 +0100 Subject: [PATCH] feat(pcf): Implemented de-registration towards NRF Signed-off-by: Stefan Spettel <stefan.spettel@eurecom.fr> --- src/oai_pcf/main.cpp | 3 +++ src/pcf_app/pcf_app.cpp | 6 ++++++ src/pcf_app/pcf_app.hpp | 6 ++++++ src/pcf_app/pcf_nrf.cpp | 18 ++++++++++++++++++ 4 files changed, 33 insertions(+) diff --git a/src/oai_pcf/main.cpp b/src/oai_pcf/main.cpp index 369c395..27dc594 100644 --- a/src/oai_pcf/main.cpp +++ b/src/oai_pcf/main.cpp @@ -64,6 +64,9 @@ void my_app_signal_handler(int s) { if (pcf_api_server_2) { pcf_api_server_2->stop(); } + if (pcf_app_inst) { + pcf_app_inst->stop(); + } } //------------------------------------------------------------------------------ // We are doing a check to see if an existing process already runs this program. diff --git a/src/pcf_app/pcf_app.cpp b/src/pcf_app/pcf_app.cpp index 2a11ae4..d785cf3 100644 --- a/src/pcf_app/pcf_app.cpp +++ b/src/pcf_app/pcf_app.cpp @@ -77,4 +77,10 @@ pcf_app::~pcf_app() { std::shared_ptr<pcf_smpc> pcf_app::get_pcf_smpc_service() { return pcf_smpc_service; +} + +void pcf_app::stop() { + if (pcf_nrf_inst) { + pcf_nrf_inst->deregister_to_nrf(); + } } \ No newline at end of file diff --git a/src/pcf_app/pcf_app.hpp b/src/pcf_app/pcf_app.hpp index 15cbac2..2bea9c3 100644 --- a/src/pcf_app/pcf_app.hpp +++ b/src/pcf_app/pcf_app.hpp @@ -57,6 +57,12 @@ class pcf_app { std::shared_ptr<pcf_smpc> get_pcf_smpc_service(); + /** + * Stops all the ongoing processes and procedures of the PCF APP layer, + * deregisters at NRF + */ + void stop(); + private: pcf_profile nf_instance_profile; // PCF profile std::string pcf_instance_id; // PCF instance id diff --git a/src/pcf_app/pcf_nrf.cpp b/src/pcf_app/pcf_nrf.cpp index 95d576f..71d8d87 100644 --- a/src/pcf_app/pcf_nrf.cpp +++ b/src/pcf_app/pcf_nrf.cpp @@ -203,3 +203,21 @@ void pcf_nrf::trigger_nf_heartbeat_procedure(uint64_t ms) { pcf_nrf::~pcf_nrf() { Logger::pcf_sbi().debug("Delete PCF_NRF instance..."); } + +//------------------------------------------------------------------------------ +void pcf_nrf::deregister_to_nrf() { + std::string body_response; + std::string response_header; + + Logger::pcf_sbi().info("Sending NF de-registration request"); + + http_response_codes_e res = + pcf_client_inst->send_delete(nrf_url, body_response, response_header); + + if (res != http_response_codes_e::HTTP_RESPONSE_CODE_NO_CONTENT) { + Logger::pcf_sbi().warn( + "NF Deregistration failed! Wrong response code: %d", res); + } else { + Logger::pcf_sbi().info("NF Deregistration successful"); + } +} -- GitLab