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 <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged