TT#13754 record primary aliases for edr

Change-Id: I465d5b1d8915ba617d7bee4dc51dc7f96b57ade5
changes/66/12366/4
Rene Krenn 9 years ago
parent a8662f4183
commit 2ffedda7cd

@ -165,4 +165,25 @@ has_field 'non_primary_alias_username' => (
required => 0,
);
has_field 'primary_alias_username_before' => (
type => 'Text',
label => 'The subscriber\'s primary alias, before number updates during the operation.',
required => 0,
);
has_field 'primary_alias_username_after' => (
type => 'Text',
label => 'The subscriber\'s primary alias, after number updates during the operation.',
required => 0,
);
has_field 'pilot_primary_alias_username_before' => (
type => 'Text',
label => 'The primary alias of the subscriber\'s pilot subscriber, before number updates during the operation.',
required => 0,
);
has_field 'pilot_primary_alias_username_after' => (
type => 'Text',
label => 'The primary alias of the subscriber\'s pilot subscriber, after number updates during the operation.',
required => 0,
);
1;

@ -73,6 +73,12 @@ sub hal_from_item {
$resource{non_primary_alias_username} = NGCP::Panel::Utils::Events::get_tag_value(c => $c, event => $item, type => 'non_primary_alias_username');
$resource{primary_alias_username_before} = NGCP::Panel::Utils::Events::get_tag_value(c => $c, event => $item, type => 'primary_alias_username_before');
$resource{primary_alias_username_after} = NGCP::Panel::Utils::Events::get_tag_value(c => $c, event => $item, type => 'primary_alias_username_after');
$resource{pilot_primary_alias_username_before} = NGCP::Panel::Utils::Events::get_tag_value(c => $c, event => $item, type => 'pilot_primary_alias_username_before');
$resource{pilot_primary_alias_username_after} = NGCP::Panel::Utils::Events::get_tag_value(c => $c, event => $item, type => 'pilot_primary_alias_username_after');
my $hal = NGCP::Panel::Utils::DataHal->new(
links => [
NGCP::Panel::Utils::DataHalLink->new(

@ -536,7 +536,7 @@ sub update_item {
NGCP::Panel::Utils::Subscriber::terminate(c => $c, subscriber => $subscriber);
return $subscriber;
} catch($e) {
$c->log->error("failed to terminate subscriber id ".$subscriber->id);
$c->log->error("failed to terminate subscriber id ".$subscriber->id . ": $e");
$self->error($c, HTTP_INTERNAL_SERVER_ERROR, "Failed to terminate subscriber");
return;
}

@ -68,6 +68,10 @@ sub insert_profile_events {
new_aliases => $params{new_aliases},
old_pilot_aliases => $params{old_pilot_aliases},
new_pilot_aliases => $params{new_pilot_aliases},
old_primary_alias => $params{old_primary_alias},
new_primary_alias => $params{new_primary_alias},
old_pilot_primary_alias => $params{old_pilot_primary_alias},
new_pilot_primary_alias => $params{new_pilot_primary_alias},
create_event_per_alias => 0,
now_hires => $now_hires};
@ -156,8 +160,12 @@ sub insert {
my $new = $params{new};
my $old_aliases = $params{old_aliases};
my $old_pilot_aliases = $params{old_pilot_aliases};
my $new_aliases = $params{new_aliases}; #to pass cleared aliases upon termination, as aliases are removed via trigger
my $new_aliases = $params{new_aliases};
my $new_pilot_aliases = $params{new_pilot_aliases};
my $old_primary_alias = $params{old_primary_alias};
my $new_primary_alias = $params{new_primary_alias};
my $old_pilot_primary_alias = $params{old_pilot_primary_alias};
my $new_pilot_primary_alias = $params{new_pilot_primary_alias};
my $create_event_per_alias = $params{create_event_per_alias} // CREATE_EVENT_PER_ALIAS;
my $event_alias = $params{alias};
my $now_hires = $params{now_hires} // NGCP::Panel::Utils::DateTime::current_local_hires;
@ -257,6 +265,25 @@ sub insert {
tags_rs => $tags_rs,
);
_save_primary_alias(
schema => $schema,
event => $event,
(defined $old_primary_alias ? (alias => $old_primary_alias) : (prov_subscriber => $prov_subscriber)),
types_prefix => '',
types_suffix => '_before',
now_hires => $now_hires,
tags_rs => $tags_rs,
);
_save_primary_alias(
schema => $schema,
event => $event,
(defined $new_primary_alias ? (alias => $new_primary_alias) : (prov_subscriber => $prov_subscriber)),
types_prefix => '',
types_suffix => '_after',
now_hires => $now_hires,
tags_rs => $tags_rs,
);
_save_alias(
schema => $schema,
event => $event,
@ -319,6 +346,25 @@ sub insert {
now_hires => $now_hires,
tags_rs => $tags_rs,
);
_save_primary_alias(
schema => $schema,
event => $event,
(defined $old_pilot_primary_alias ? (alias => $old_pilot_primary_alias) : (prov_subscriber => $pilot_prov_subscriber)),
types_prefix => 'pilot_',
types_suffix => '_before',
now_hires => $now_hires,
tags_rs => $tags_rs,
);
_save_primary_alias(
schema => $schema,
event => $event,
(defined $new_pilot_primary_alias ? (alias => $new_pilot_primary_alias) : (prov_subscriber => $pilot_prov_subscriber)),
types_prefix => 'pilot_',
types_suffix => '_after',
now_hires => $now_hires,
tags_rs => $tags_rs,
);
}
$inserted++;
$c->log->debug('edr event "'. $type .'" inserted: subscriber id ' . $subscriber->id . ($alias_username ? ", alias $alias_username" : ''));
@ -519,6 +565,43 @@ sub _save_first_non_primary_alias {
}
sub _save_primary_alias {
my %params = @_;
my ($schema,
$event,
$alias,
$prov_subscriber,
$types_prefix,
$types_suffix,
$now_hires,
$tags_rs) = @params{qw/
schema
event
alias
prov_subscriber
types_prefix
types_suffix
now_hires
tags_rs
/};
my $alias_username = undef;
if ($alias) {
$alias_username = $alias->{username} if $alias;
} elsif ($prov_subscriber) {
my $alias = _get_primary_alias($prov_subscriber);
$alias_username = $alias->username if $alias;
}
if ($alias_username) {
$tags_rs //= $schema->resultset('events_tag');
$event->create_related("tag_data", {
tag_id => $tags_rs->find({ type => $types_prefix.'primary_alias_username'.$types_suffix })->id,
val => $alias_username,
event_timestamp => $now_hires,
});
}
}
sub _save_alias {
my %params = @_;
my ($schema,
@ -552,6 +635,13 @@ sub _get_aliases_sorted_rs {
});
}
sub _get_primary_alias {
my ($prov_subscriber) = @_;
return $prov_subscriber->voip_dbaliases->search_rs({
is_primary => 1,
},undef)->first;
}
sub _get_aliases_map {
my ($aliases, $prov_subscriber) = @_;
my @alias_usernames = ();
@ -577,7 +667,9 @@ sub get_aliases_snapshot {
my $c = $params{c};
my $schema = $params{schema} // $c->model('DB');
my @aliases = ();
my $primary_alias = undef;
my @pilot_aliases = ();
my $pilot_primary_alias = undef;
if (ENABLE_EVENTS) {
my $subscriber = $params{subscriber} // $schema->resultset('voip_subscribers')->find({
id => $params{subscriber_id},
@ -586,6 +678,8 @@ sub get_aliases_snapshot {
foreach my $alias (_get_aliases_sorted_rs($prov_subscriber)->all) {
push(@aliases,{ $alias->get_inflated_columns });
}
$primary_alias = _get_primary_alias($prov_subscriber);
$primary_alias = { $primary_alias->get_inflated_columns } if $primary_alias;
my $pilot_subscriber = _get_pilot_subscriber(
c => $c,
schema => $schema,
@ -597,22 +691,14 @@ sub get_aliases_snapshot {
foreach my $alias (_get_aliases_sorted_rs($pilot_prov_subscriber)->all) {
push(@pilot_aliases,{ $alias->get_inflated_columns });
}
$pilot_primary_alias = _get_primary_alias($pilot_prov_subscriber);
$pilot_primary_alias = { $pilot_primary_alias->get_inflated_columns } if $pilot_primary_alias;
}
}
return { old_aliases => \@aliases, old_pilot_aliases => \@pilot_aliases };
return { old_aliases => \@aliases, old_pilot_aliases => \@pilot_aliases,
old_primary_alias => $primary_alias, old_pilot_primary_alias => $pilot_primary_alias };
}
#sub _get_actual_billing_mapping {
# my %params = @_;
# my ($c,$schema,$contract,$now) = @params{qw/c schema contract now/};
# $schema //= $c->model('DB');
# $now //= NGCP::Panel::Utils::DateTime::current_local;
# my $contract_create = NGCP::Panel::Utils::DateTime::set_local_tz($contract->create_timestamp // $contract->modify_timestamp);
# my $dtf = $schema->storage->datetime_parser;
# $now = $contract_create if $now < $contract_create; #if there is no mapping starting with or before $now, it would returns the mapping with max(id):
# return $schema->resultset('billing_mappings_actual')->search({ contract_id => $contract->id },{bind => [ ( $dtf->format_datetime($now) ) x 2, ($contract->id) x 2 ],})->first;
#}
sub get_relation_value {
my %params = @_;
my ($c,$schema,$event,$type) = @params{qw/c schema event type/};

@ -1,4 +1,4 @@
#use Sipwise::Base;
use Sipwise::Base;
use Net::Domain qw(hostfqdn);
use JSON qw();
use Test::More;
@ -458,6 +458,11 @@ my %customer_map = ();
first_non_primary_alias_username_after => $pilot_aliases->[0]->{cc}.$pilot_aliases->[0]->{ac}.$pilot_aliases->[0]->{sn},
pilot_first_non_primary_alias_username_before => undef,
pilot_first_non_primary_alias_username_after => $pilot_aliases->[0]->{cc}.$pilot_aliases->[0]->{ac}.$pilot_aliases->[0]->{sn},
primary_alias_username_before => $cc.$ac.$sn,
primary_alias_username_after => $cc.$ac.$sn,
pilot_primary_alias_username_before => $cc.$ac.$sn,
pilot_primary_alias_username_after => $cc.$ac.$sn,
);
_check_event_history("start_profile when creating a pbx pilot subscriber w alias: ",$pilot_subscriber->{id},"%profile",[
{ %pilot_event,
@ -497,6 +502,12 @@ my %customer_map = ();
first_non_primary_alias_username_after => $aliases->[0]->{cc}.$aliases->[0]->{ac}.$aliases->[0]->{sn},
pilot_first_non_primary_alias_username_before => $pilot_aliases->[0]->{cc}.$pilot_aliases->[0]->{ac}.$pilot_aliases->[0]->{sn},
pilot_first_non_primary_alias_username_after => $pilot_aliases->[0]->{cc}.$pilot_aliases->[0]->{ac}.$pilot_aliases->[0]->{sn},
primary_alias_username_before => $cc.$ac.$sn.$ext,
primary_alias_username_after => $cc.$ac.$sn.$ext,
pilot_primary_alias_username_before => $cc.$ac.$sn,
pilot_primary_alias_username_after => $cc.$ac.$sn,
);
_check_event_history("start_profile when creating a pbx extension subscriber w alias: ",$subscriber->{id},"%profile",[
{ %subscriber_event,
@ -541,6 +552,11 @@ my %customer_map = ();
first_non_primary_alias_username_after => $new_aliases->[0]->{cc}.$new_aliases->[0]->{ac}.$new_aliases->[0]->{sn},
pilot_first_non_primary_alias_username_before => $pilot_aliases->[0]->{cc}.$pilot_aliases->[0]->{ac}.$pilot_aliases->[0]->{sn},
pilot_first_non_primary_alias_username_after => $pilot_aliases->[0]->{cc}.$pilot_aliases->[0]->{ac}.$pilot_aliases->[0]->{sn},
primary_alias_username_before => $cc.$ac.$sn.$ext,
primary_alias_username_after => $cc.$ac.$sn.$ext,
pilot_primary_alias_username_before => $cc.$ac.$sn,
pilot_primary_alias_username_after => $cc.$ac.$sn,
);
_check_event_history("start/update/end_profile when updating a pbx extension subscriber w alias: ",$subscriber->{id},"%profile",[
{},{},
@ -593,6 +609,12 @@ my %customer_map = ();
first_non_primary_alias_username_after => $new_pilot_aliases->[0]->{cc}.$new_pilot_aliases->[0]->{ac}.$new_pilot_aliases->[0]->{sn},
pilot_first_non_primary_alias_username_before => $pilot_aliases->[0]->{cc}.$pilot_aliases->[0]->{ac}.$pilot_aliases->[0]->{sn},
pilot_first_non_primary_alias_username_after => $new_pilot_aliases->[0]->{cc}.$new_pilot_aliases->[0]->{ac}.$new_pilot_aliases->[0]->{sn},
primary_alias_username_before => $cc.$ac.$sn,
primary_alias_username_after => $cc.$ac.$sn,
pilot_primary_alias_username_before => $cc.$ac.$sn,
pilot_primary_alias_username_after => $cc.$ac.$sn,
);
_check_event_history("start/update/end_profile when updating a pbx pilot subscriber w alias: ",$pilot_subscriber->{id},"%profile",[
{},{},
@ -641,6 +663,12 @@ my %customer_map = ();
#but since api termination always returns aliases to the pilot:
#pilot_first_non_primary_alias_username_after => $new_aliases->[0]->{cc}.$new_aliases->[0]->{ac}.$new_aliases->[0]->{sn},
#pilot_first_non_primary_alias_username_after => $new_aliases->[0]->{cc}.$new_aliases->[0]->{ac}.$new_aliases->[0]->{sn},
primary_alias_username_before => $cc.$ac.$sn.$ext,
primary_alias_username_after => $cc.$ac.$sn.$ext,
pilot_primary_alias_username_before => $cc.$ac.$sn,
pilot_primary_alias_username_after => $cc.$ac.$sn,
),
_check_event_history("end_profile when terminating a pbx extension subscriber w alias: ",$subscriber->{id},"%profile",[
{},{},{},{},{},
@ -682,6 +710,12 @@ my %customer_map = ();
#pilot_first_non_primary_alias_username_before => $new_aliases->[0]->{cc}.$new_aliases->[0]->{ac}.$new_aliases->[0]->{sn},
pilot_first_non_primary_alias_username_after => $new_pilot_aliases->[0]->{cc}.$new_pilot_aliases->[0]->{ac}.$new_pilot_aliases->[0]->{sn},
pilot_first_non_primary_alias_username_after => undef,
primary_alias_username_before => $cc.$ac.$sn,
primary_alias_username_after => $cc.$ac.$sn,
pilot_primary_alias_username_before => $cc.$ac.$sn,
pilot_primary_alias_username_after => $cc.$ac.$sn,
);
_check_event_history("end_profile when terminating a pbx pilot subscriber w alias: ",$pilot_subscriber->{id},"%profile",[
{},{},{},{},{},

Loading…
Cancel
Save