TT#100751 Remove all registrations when terminating subscriber

* Include alias numbers in registrations removal when
	    subscriber is terminated, alongside registrations
	    by username

Change-Id: I5c913c56718e4b9f98f4677c7cd72722ee9f30d3
mr9.2
Flaviu Mates 5 years ago committed by Víctor Seva
parent ed6986d300
commit 8450bf33ec

@ -40,6 +40,23 @@ EOF
}
sub delete_location_by_aor {
my ($c, $aors) = @_;
foreach my $aor (@$aors) {
my $ret = NGCP::Panel::Utils::XMLDispatcher::dispatch($c, "proxy-ng", 1, 1, <<EOF );
<?xml version="1.0" ?>
<methodCall>
<methodName>ul.rm</methodName>
<params>
<param><value><string>location</string></value></param>
<param><value><string>$aor</string></value></param>
</params>
</methodCall>
EOF
}
}
sub create_location {
my ($c, $prov_subscriber, $params) = @_;
my($contact, $q, $expires, $flags, $cflags) = @$params{qw/contact q expires flags cflags/};

@ -1664,6 +1664,7 @@ sub terminate {
my $prov_subscriber = $subscriber->provisioning_voip_subscriber;
my @events_to_create = ();
my @aors = ();
my $aliases_before = NGCP::Panel::Utils::Events::get_aliases_snapshot(
c => $c,
schema => $schema,
@ -1704,6 +1705,16 @@ sub terminate {
#}
}
if($prov_subscriber && !$prov_subscriber->is_pbx_pilot) {
my $devid_aliases = $prov_subscriber->voip_dbaliases->search(
{
is_devid => 1,
subscriber_id => $prov_subscriber->id
}
);
foreach my $devid ($devid_aliases->all) {
push @aors, $devid->username . '@' . $devid->domain->domain;
}
my $pilot_rs = $schema->resultset('voip_subscribers')->search({
contract_id => $subscriber->contract_id,
status => { '!=' => 'terminated' },
@ -1749,7 +1760,6 @@ sub terminate {
my $auth_prefs = {};
NGCP::Panel::Utils::Preferences::get_peer_auth_params($c, $prov_subscriber, $auth_prefs);
NGCP::Panel::Utils::Preferences::update_sems_peer_auth($c, $prov_subscriber, $auth_prefs, {});
NGCP::Panel::Utils::Kamailio::delete_location($c, $prov_subscriber);
foreach my $pref(qw/allowed_ips_grp man_allowed_ips_grp/) {
my $aig_rs = NGCP::Panel::Utils::Preferences::get_usr_preference_rs(
c => $c, prov_subscriber => $prov_subscriber, attribute => $pref,
@ -1766,9 +1776,11 @@ sub terminate {
);
#ready for number change events here
push @aors, $prov_subscriber->username . '@' . $prov_subscriber->domain->domain;
$prov_subscriber->delete;
}
$subscriber->update({ status => 'terminated' });
NGCP::Panel::Utils::Kamailio::delete_location_by_aor($c, \@aors);
});
}

Loading…
Cancel
Save