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 { sub create_location {
my ($c, $prov_subscriber, $params) = @_; my ($c, $prov_subscriber, $params) = @_;
my($contact, $q, $expires, $flags, $cflags) = @$params{qw/contact q expires flags cflags/}; 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 $prov_subscriber = $subscriber->provisioning_voip_subscriber;
my @events_to_create = (); my @events_to_create = ();
my @aors = ();
my $aliases_before = NGCP::Panel::Utils::Events::get_aliases_snapshot( my $aliases_before = NGCP::Panel::Utils::Events::get_aliases_snapshot(
c => $c, c => $c,
schema => $schema, schema => $schema,
@ -1704,6 +1705,16 @@ sub terminate {
#} #}
} }
if($prov_subscriber && !$prov_subscriber->is_pbx_pilot) { 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({ my $pilot_rs = $schema->resultset('voip_subscribers')->search({
contract_id => $subscriber->contract_id, contract_id => $subscriber->contract_id,
status => { '!=' => 'terminated' }, status => { '!=' => 'terminated' },
@ -1749,7 +1760,6 @@ sub terminate {
my $auth_prefs = {}; my $auth_prefs = {};
NGCP::Panel::Utils::Preferences::get_peer_auth_params($c, $prov_subscriber, $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::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/) { foreach my $pref(qw/allowed_ips_grp man_allowed_ips_grp/) {
my $aig_rs = NGCP::Panel::Utils::Preferences::get_usr_preference_rs( my $aig_rs = NGCP::Panel::Utils::Preferences::get_usr_preference_rs(
c => $c, prov_subscriber => $prov_subscriber, attribute => $pref, c => $c, prov_subscriber => $prov_subscriber, attribute => $pref,
@ -1766,9 +1776,11 @@ sub terminate {
); );
#ready for number change events here #ready for number change events here
push @aors, $prov_subscriber->username . '@' . $prov_subscriber->domain->domain;
$prov_subscriber->delete; $prov_subscriber->delete;
} }
$subscriber->update({ status => 'terminated' }); $subscriber->update({ status => 'terminated' });
NGCP::Panel::Utils::Kamailio::delete_location_by_aor($c, \@aors);
}); });
} }

Loading…
Cancel
Save