pespin has submitted this change. ( 
https://gerrit.osmocom.org/c/osmo-hlr/+/28395 )

Change subject: ctrl: Introduce cmd SET subscriber.delete <imsi>
......................................................................

ctrl: Introduce cmd SET subscriber.delete <imsi>

On success SET_REPLY contains the ID of the deleted subscriber.

Related: SYS#5993
Change-Id: I24c6149d7c223a12549d712a7929666220c0210f
---
M src/ctrl.c
M tests/test_subscriber.ctrl
M tests/test_subscriber_errors.ctrl
3 files changed, 44 insertions(+), 0 deletions(-)

Approvals:
  Jenkins Builder: Verified
  fixeria: Looks good to me, but someone else must approve
  laforge: Looks good to me, approved



diff --git a/src/ctrl.c b/src/ctrl.c
index aa02a0e..562ee75 100644
--- a/src/ctrl.c
+++ b/src/ctrl.c
@@ -234,6 +234,40 @@
        return CTRL_CMD_REPLY;
 }

+CTRL_CMD_DEFINE_WO_NOVRF(subscr_delete, "delete");
+static int set_subscr_delete(struct ctrl_cmd *cmd, void *data)
+{
+       struct hlr_subscriber subscr;
+       struct hlr *hlr = data;
+       const char *imsi = cmd->value;
+       int rc;
+
+       if (!osmo_imsi_str_valid(imsi)) {
+               cmd->reply = "Invalid IMSI value.";
+               return CTRL_CMD_ERROR;
+       }
+
+       /* Retrieve data of newly created subscriber: */
+       rc = db_subscr_get_by_imsi(hlr->dbc, imsi, &subscr);
+       if (rc < 0) {
+               cmd->reply = "Subscriber doesn't exist.";
+               return CTRL_CMD_ERROR;
+       }
+
+       /* Create the subscriber in the DB */
+       rc = db_subscr_delete_by_id(g_hlr->dbc, subscr.id);
+       if (rc) {
+               cmd->reply = "Cannot delete subscriber.";
+               return CTRL_CMD_ERROR;
+       }
+
+       LOGP(DCTRL, LOGL_INFO, "Deleted subscriber IMSI='%s'\n",
+            imsi);
+
+       cmd->reply = talloc_asprintf(cmd, "%" PRIu64, subscr.id);
+       return CTRL_CMD_REPLY;
+}
+
 CTRL_CMD_DEFINE_RO(subscr_info, "info");
 static int get_subscr_info(struct ctrl_cmd *cmd, void *data)
 {
@@ -469,6 +503,7 @@
        int rc = 0;

        rc |= ctrl_cmd_install(CTRL_NODE_SUBSCR, &cmd_subscr_create);
+       rc |= ctrl_cmd_install(CTRL_NODE_SUBSCR, &cmd_subscr_delete);

        rc |= ctrl_cmd_install(CTRL_NODE_SUBSCR_BY, &cmd_subscr_info);
        rc |= ctrl_cmd_install(CTRL_NODE_SUBSCR_BY, &cmd_subscr_info_aud);
diff --git a/tests/test_subscriber.ctrl b/tests/test_subscriber.ctrl
index 5b49702..889f0a7 100644
--- a/tests/test_subscriber.ctrl
+++ b/tests/test_subscriber.ctrl
@@ -670,3 +670,6 @@
 periodic_lu_timer      0
 periodic_rau_tau_timer 0
 lmsi   00000000
+
+SET 112 subscriber.delete 901991234567891
+SET_REPLY 112 subscriber.delete 124
diff --git a/tests/test_subscriber_errors.ctrl 
b/tests/test_subscriber_errors.ctrl
index 8309e61..403e0fa 100644
--- a/tests/test_subscriber_errors.ctrl
+++ b/tests/test_subscriber_errors.ctrl
@@ -117,3 +117,9 @@

 SET 51 subscriber.by-imsi-1234567890123456.msisdn hellobadmsisdn
 ERROR 51 Value failed verification.
+
+SET 52 subscriber.delete 100000
+ERROR 52 Subscriber doesn't exist.
+
+SET 53 subscriber.delete zzz
+ERROR 53 Invalid IMSI value.

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-hlr/+/28395
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-hlr
Gerrit-Branch: master
Gerrit-Change-Id: I24c6149d7c223a12549d712a7929666220c0210f
Gerrit-Change-Number: 28395
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <[email protected]>
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-Reviewer: pespin <[email protected]>
Gerrit-MessageType: merged

Reply via email to