TT#71363 contract_preferences, ccs prov tool "*" allowed cli

Change-Id: Ie5b16da0361408cabccf7ec41c85bbe1884a9d1a
changes/60/35660/3
Rene Krenn 6 years ago
parent ce57fb5876
commit 7ff2336957

@ -0,0 +1,255 @@
package NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_contract_preferences;
use strict;
## no critic
use NGCP::BulkProcessor::Logging qw(
getlogger
rowinserted
rowsdeleted
);
use NGCP::BulkProcessor::ConnectorPool qw(
get_provisioning_db
);
use NGCP::BulkProcessor::SqlProcessor qw(
checktableinfo
insert_record
update_record
delete_record
copy_row
);
use NGCP::BulkProcessor::SqlRecord qw();
require Exporter;
our @ISA = qw(Exporter NGCP::BulkProcessor::SqlRecord);
our @EXPORT_OK = qw(
gettablename
check_table
insert_row
update_row
delete_row
delete_preferences
findby_contractid_attributeid
countby_contractid_attributeid_value
$TRUE
$FALSE
);
my $tablename = 'voip_contract_preferences';
my $get_db = \&get_provisioning_db;
my $expected_fieldnames = [
'id',
'contract_id',
'attribute_id',
'value',
'modify_timestamp',
'location_id',
];
my $indexes = {};
my $insert_unique_fields = [];
our $TRUE = 1;
our $FALSE = undef;
sub new {
my $class = shift;
my $self = NGCP::BulkProcessor::SqlRecord->new($class,$get_db,
$tablename,$expected_fieldnames,$indexes);
copy_row($self,shift,$expected_fieldnames);
return $self;
}
sub findby_contractid_attributeid {
my ($xa_db,$contract_id,$attribute_id,$load_recursive) = @_;
check_table();
my $db = &$get_db();
$xa_db //= $db;
my $table = $db->tableidentifier($tablename);
my $stmt = 'SELECT * FROM ' . $table . ' WHERE ' .
$db->columnidentifier('contract_id') . ' = ?';
my @params = ($contract_id);
if (defined $attribute_id) {
$stmt .= ' AND ' . $db->columnidentifier('contract_id') . ' = ?';
push(@params,$attribute_id);
}
my $rows = $xa_db->db_get_all_arrayref($stmt,@params);
return buildrecords_fromrows($rows,$load_recursive);
}
sub countby_contractid_attributeid_value {
my ($contract_id,$attribute_id,$value) = @_;
check_table();
my $db = &$get_db();
my $table = $db->tableidentifier($tablename);
my $stmt = 'SELECT COUNT(*) FROM ' . $table;
my @params = ();
my @terms = ();
if ($contract_id) {
push(@terms,$db->columnidentifier('contract_id') . ' = ?');
push(@params,$contract_id);
}
if ($attribute_id) {
push(@terms,$db->columnidentifier('attribute_id') . ' = ?');
push(@params,$attribute_id);
}
if ($value) {
push(@terms,$db->columnidentifier('value') . ' = ?');
push(@params,$value);
}
if ((scalar @terms) > 0) {
$stmt .= ' WHERE ' . join(' AND ',@terms);
}
return $db->db_get_value($stmt,@params);
}
sub update_row {
my ($xa_db,$data) = @_;
check_table();
return update_record($get_db,$xa_db,__PACKAGE__,$data);
}
sub delete_row {
my ($xa_db,$data) = @_;
check_table();
return delete_record($get_db,$xa_db,__PACKAGE__,$data);
}
sub delete_preferences {
my ($xa_db,$contract_id,$attribute_id,$vals) = @_;
check_table();
my $db = &$get_db();
$xa_db //= $db;
my $table = $db->tableidentifier($tablename);
my $stmt = 'DELETE FROM ' . $table . ' WHERE ' .
$db->columnidentifier('contract_id') . ' = ?';
my @params = ($contract_id);
if (defined $attribute_id) {
$stmt .= ' AND ' . $db->columnidentifier('attribute_id') . ' = ?';
push(@params,$attribute_id);
}
if (defined $vals and 'HASH' eq ref $vals) {
foreach my $in (keys %$vals) {
my @values = (defined $vals->{$in} and 'ARRAY' eq ref $vals->{$in} ? @{$vals->{$in}} : ($vals->{$in}));
$stmt .= ' AND ' . $db->columnidentifier('value') . ' ' . $in . ' (' . substr(',?' x scalar @values,1) . ')';
push(@params,@values);
}
}
my $count;
if ($count = $xa_db->db_do($stmt,@params)) {
rowsdeleted($db,$tablename,$count,$count,getlogger(__PACKAGE__));
return 1;
} else {
rowsdeleted($db,$tablename,0,0,getlogger(__PACKAGE__));
return 0;
}
}
sub insert_row {
my $db = &$get_db();
my $xa_db = shift // $db;
if ('HASH' eq ref $_[0]) {
my ($data,$insert_ignore) = @_;
check_table();
if (insert_record($db,$xa_db,__PACKAGE__,$data,$insert_ignore,$insert_unique_fields)) {
return $xa_db->db_last_insert_id();
}
} else {
my %params = @_;
my ($attribute_id,
$contract_id,
$value) = @params{qw/
attribute_id
contract_id
value
/};
if ($xa_db->db_do('INSERT INTO ' . $db->tableidentifier($tablename) . ' (' .
$db->columnidentifier('attribute_id') . ', ' .
$db->columnidentifier('contract_id') . ', ' .
$db->columnidentifier('value') . ') VALUES (' .
'?, ' .
'?, ' .
'?)',
$attribute_id,
$contract_id,
$value,
)) {
rowinserted($db,$tablename,getlogger(__PACKAGE__));
return $xa_db->db_last_insert_id();
}
}
return undef;
}
sub buildrecords_fromrows {
my ($rows,$load_recursive) = @_;
my @records = ();
my $record;
if (defined $rows and ref $rows eq 'ARRAY') {
foreach my $row (@$rows) {
$record = __PACKAGE__->new($row);
# transformations go here ...
push @records,$record;
}
}
return \@records;
}
sub gettablename {
return $tablename;
}
sub check_table {
return checktableinfo($get_db,
__PACKAGE__,$tablename,
$expected_fieldnames,
$indexes);
}
1;

@ -34,6 +34,7 @@ use NGCP::BulkProcessor::Dao::Trunk::billing::voip_subscribers qw();
use NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_subscribers qw();
use NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_preferences qw();
use NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_usr_preferences qw();
use NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_contract_preferences qw();
use NGCP::BulkProcessor::ConnectorPool qw(
get_xa_db
@ -54,13 +55,20 @@ our @EXPORT_OK = qw(
set_subscriber_preference
get_subscriber_preference
clear_contract_preferences
delete_contract_preference
set_contract_preference
get_contract_preference
);
my %get_preference_sub_names = (
voip_usr_preferences => 'findby_subscriberid_attributeid',
voip_contract_preferences => 'findby_contractid_attributeid',
);
my %preference_id_cols = (
voip_usr_preferences => 'subscriber_id',
voip_contract_preferences => 'contract_id',
);
sub clear_subscriber_preferences {
@ -80,6 +88,23 @@ sub get_subscriber_preference {
return _get_preference($context,'voip_usr_preferences',$subscriber_id,$attribute);
}
sub clear_contract_preferences {
my ($context,$contract_id,$attribute,$except_value) = @_;
return _clear_preferences($context,'voip_contract_preferences',$contract_id,$attribute,$except_value);
}
sub delete_contract_preference {
my ($context,$contract_id,$attribute,$value) = @_;
return _delete_preference($context,'voip_contract_preferences',$contract_id,$attribute,$value);
}
sub set_contract_preference {
my ($context,$contract_id,$attribute,$value) = @_;
return _set_preference($context,'voip_contract_preferences',$contract_id,$attribute,$value);
}
sub get_contract_preference {
my ($context,$contract_id,$attribute) = @_;
return _get_preference($context,'voip_contract_preferences',$contract_id,$attribute);
}
sub _clear_preferences {
my ($context,$pref_type,$id,$attribute,$except_value) = @_;

@ -92,6 +92,11 @@ use NGCP::BulkProcessor::Projects::Migration::UPCAT::Preferences qw(
get_subscriber_preference
clear_subscriber_preferences
delete_subscriber_preference
set_contract_preference
get_contract_preference
clear_contract_preferences
delete_contract_preference
);
#set_allowed_ips_preferences
#cleanup_aig_sequence_ids
@ -608,7 +613,7 @@ sub _update_subscriber {
);
}
$context->{preferences}->{cli} = { id => set_subscriber_preference($context,
$context->{usr_preferences}->{cli} = { id => set_subscriber_preference($context,
$context->{prov_subscriber}->{id},
$context->{attributes}->{cli},
$number->{number}), value => $number->{number} };
@ -632,7 +637,7 @@ sub _update_subscriber {
$context->{prov_subscriber}->{id},
$context->{attributes}->{allowed_clis},
$number->{number}), value => $number->{number}});
$context->{preferences}->{allowed_clis} = \@allowed_clis;
$context->{usr_preferences}->{allowed_clis} = \@allowed_clis;
NGCP::BulkProcessor::Dao::Trunk::billing::voip_numbers::release_subscriber_numbers($context->{db},
$context->{bill_subscriber}->{id},{ 'NOT IN' => $context->{voip_numbers}->{primary}->{id} });
@ -651,19 +656,19 @@ sub _update_subscriber {
$context->{voicemail_user},
);
$context->{preferences}->{account_id} = { id => set_subscriber_preference($context,
$context->{usr_preferences}->{account_id} = { id => set_subscriber_preference($context,
$context->{prov_subscriber}->{id},
$context->{attributes}->{account_id},
$context->{contract}->{id}), value => $context->{contract}->{id} };
if (length($number->{ac}) > 0) {
$context->{preferences}->{ac} = { id => set_subscriber_preference($context,
$context->{usr_preferences}->{ac} = { id => set_subscriber_preference($context,
$context->{prov_subscriber}->{id},
$context->{attributes}->{ac},
$number->{ac}), value => $number->{ac} };
}
if (length($number->{cc}) > 0) {
$context->{preferences}->{cc} = { id => set_subscriber_preference($context,
$context->{usr_preferences}->{cc} = { id => set_subscriber_preference($context,
$context->{prov_subscriber}->{id},
$context->{attributes}->{cc},
$number->{cc}), value => $number->{cc} };
@ -682,18 +687,18 @@ sub _update_mta_preferences {
my $result = 1;
if (defined $context->{ncos_level}) {
$context->{preferences}->{ncos_id} = { id => set_subscriber_preference($context,
$context->{usr_preferences}->{ncos_id} = { id => set_subscriber_preference($context,
$context->{prov_subscriber}->{id},
$context->{attributes}->{ncos_id},
$context->{ncos_level}->{id}), value => $context->{ncos_level}->{id} };
_info($context,"ncos_id preference set to $context->{ncos_level}->{id} - $context->{ncos_level}->{level}",1);
}
if (defined $context->{preferences}->{gpp}) {
if (defined $context->{usr_preferences}->{gpp}) {
my $gpp_idx = 0;
foreach my $gpp_val (@{$context->{preferences}->{gpp}}) {
foreach my $gpp_val (@{$context->{usr_preferences}->{gpp}}) {
my $gpp_attr = 'gpp' . $gpp_idx;
$context->{preferences}->{$gpp_attr} = { id => set_subscriber_preference($context,
$context->{usr_preferences}->{$gpp_attr} = { id => set_subscriber_preference($context,
$context->{prov_subscriber}->{id},
$context->{attributes}->{$gpp_attr},
$gpp_attr), value => $gpp_attr };
@ -770,7 +775,7 @@ sub _create_aliases {
$context->{prov_subscriber}->{id},
$context->{attributes}->{allowed_clis},
$number->{number});
push(@{$context->{preferences}->{allowed_clis}},{ id => set_subscriber_preference($context,
push(@{$context->{usr_preferences}->{allowed_clis}},{ id => set_subscriber_preference($context,
$context->{prov_subscriber}->{id},
$context->{attributes}->{allowed_clis},
$number->{number}), value => $number->{number}});
@ -1009,9 +1014,9 @@ sub _provision_mta_susbcriber_init_context {
$context->{voicemail_user}->{mailbox} = $context->{numbers}->{primary}->{number};
$context->{voicemail_user}->{password} = sprintf("%04d", int(rand 10000));
$context->{preferences} = {};
$context->{usr_preferences} = {};
$context->{preferences}->{gpp} = [
$context->{usr_preferences}->{gpp} = [
$first->{"_len"},
$first->{"_cpe_mta_mac_address"},
$first->{"_cpe_model"},
@ -1603,15 +1608,17 @@ sub _provision_ccs_susbcriber_init_context {
}
$context->{callforwards} = \%cfsimple;
#$context->{preferences} = {};
#$context->{usr_preferences} = {};
#$context->{preferences}->{gpp} = [
#$context->{usr_preferences}->{gpp} = [
# $first->{"_len"},
# $first->{"_cpe_mta_mac_address"},
# $first->{"_cpe_model"},
# $first->{"_cpe_vendor"},
#];
$context->{contract_preferences} = {};
return $result;
}
@ -1667,26 +1674,26 @@ sub _update_ccs_preferences {
my $result = 1;
$context->{preferences}->{extended_dialing_mode} = { id => set_subscriber_preference($context,
$context->{usr_preferences}->{extended_dialing_mode} = { id => set_subscriber_preference($context,
$context->{prov_subscriber}->{id},
$context->{attributes}->{extended_dialing_mode},
'extended_send_dialed'), value => 'extended_send_dialed' };
$context->{preferences}->{e164_to_ruri} = { id => set_subscriber_preference($context,
$context->{usr_preferences}->{e164_to_ruri} = { id => set_subscriber_preference($context,
$context->{prov_subscriber}->{id},
$context->{attributes}->{e164_to_ruri},
'1'), value => '1' };
$context->{preferences}->{serial_forking_by_q_value} = { id => set_subscriber_preference($context,
$context->{usr_preferences}->{serial_forking_by_q_value} = { id => set_subscriber_preference($context,
$context->{prov_subscriber}->{id},
$context->{attributes}->{serial_forking_by_q_value},
'1'), value => '1' };
#if (defined $context->{preferences}->{gpp}) {
#if (defined $context->{usr_preferences}->{gpp}) {
# my $gpp_idx = 0;
# foreach my $gpp_val (@{$context->{preferences}->{gpp}}) {
# foreach my $gpp_val (@{$context->{usr_preferences}->{gpp}}) {
# my $gpp_attr = 'gpp' . $gpp_idx;
# $context->{preferences}->{$gpp_attr} = { id => set_subscriber_preference($context,
# $context->{usr_preferences}->{$gpp_attr} = { id => set_subscriber_preference($context,
# $context->{prov_subscriber}->{id},
# $context->{attributes}->{$gpp_attr},
# $gpp_attr), value => $gpp_attr };
@ -1695,33 +1702,46 @@ sub _update_ccs_preferences {
# }
#}
$context->{preferences}->{cloud_pbx} = { id => set_subscriber_preference($context,
$context->{usr_preferences}->{cloud_pbx} = { id => set_subscriber_preference($context,
$context->{prov_subscriber}->{id},
$context->{attributes}->{cloud_pbx},
'1'), value => '1' };
$context->{preferences}->{cloud_pbx_base_cli} = { id => set_subscriber_preference($context,
$context->{usr_preferences}->{cloud_pbx_base_cli} = { id => set_subscriber_preference($context,
$context->{prov_subscriber}->{id},
$context->{attributes}->{cloud_pbx_base_cli},
$context->{numbers}->{primary}->{number}), value => $context->{numbers}->{primary}->{number} };
$context->{preferences}->{cloud_pbx_hunt_policy} = { id => set_subscriber_preference($context,
$context->{usr_preferences}->{cloud_pbx_hunt_policy} = { id => set_subscriber_preference($context,
$context->{prov_subscriber}->{id},
$context->{attributes}->{cloud_pbx_hunt_policy},
'serial'), value => 'serial' };
#contract_sound_set = 25
$context->{preferences}->{music_on_hold} = { id => set_subscriber_preference($context,
$context->{usr_preferences}->{music_on_hold} = { id => set_subscriber_preference($context,
$context->{prov_subscriber}->{id},
$context->{attributes}->{music_on_hold},
'1'), value => '1' };
$context->{preferences}->{shared_buddylist_visibility} = { id => set_subscriber_preference($context,
$context->{usr_preferences}->{shared_buddylist_visibility} = { id => set_subscriber_preference($context,
$context->{prov_subscriber}->{id},
$context->{attributes}->{shared_buddylist_visibility},
'1'), value => '1' };
clear_contract_preferences($context,
$context->{prov_subscriber}->{account_id},
$context->{attributes}->{allowed_clis},
undef,
);
my @allowed_clis = ();
push(@allowed_clis,{ id => set_contract_preference($context,
$context->{prov_subscriber}->{account_id},
$context->{attributes}->{allowed_clis},
"*"), value => "*"});
$context->{contract_preferences}->{allowed_clis} = \@allowed_clis;
return $result;
}
@ -1781,13 +1801,13 @@ sub _set_callforwards {
#time_set_id
});
$context->{preferences}->{$type} = { id => set_subscriber_preference($context,
$context->{usr_preferences}->{$type} = { id => set_subscriber_preference($context,
$context->{prov_subscriber}->{id},
$context->{attributes}->{$type},
$cf_mapping_id), value => $cf_mapping_id };
if (defined $context->{ringtimeout}) {
$context->{preferences}->{ringtimeout} = { id => set_subscriber_preference($context,
$context->{usr_preferences}->{ringtimeout} = { id => set_subscriber_preference($context,
$context->{prov_subscriber}->{id},
$context->{attributes}->{ringtimeout},
$context->{ringtimeout}), value => $context->{ringtimeout} };
@ -1807,35 +1827,6 @@ sub _set_callforwards {
}
#sub _terminate_contract {
# my ($context,$contract_id) = @_;
#
# my $result = 0;
# my $contract_path = NGCP::BulkProcessor::RestRequests::Trunk::Customers::get_item_path($contract_id);
# eval {
# my $customer;
# if ($dry) {
# $customer = NGCP::BulkProcessor::RestRequests::Trunk::Customers::get_item($contract_id);
# } else {
# $customer = NGCP::BulkProcessor::RestRequests::Trunk::Customers::update_item($contract_id,{
# status => $NGCP::BulkProcessor::RestRequests::Trunk::Customers::TERMINATED_STATE,
# });
# }
# $result = (defined $customer ? 1 : 0);
# };
# if ($@ or not $result) {
# if ($skip_errors) {
# _warn($context,"($context->{rownum}) " . 'subscriber ' . $context->{cli} . ': could not ' . ($dry ? 'fetch' : 'terminate') . ' old contract ' . $contract_path);
# } else {
# _error($context,"($context->{rownum}) " . 'subscriber ' . $context->{cli} . ': could not ' . ($dry ? 'fetch' : 'terminate') . ' old contract ' . $contract_path);
# }
# } else {
# _info($context,"($context->{rownum}) " . 'subscriber ' . $context->{cli} . ': old contract ' . $contract_path . ($dry ? ' fetched' : ' terminated'));
# }
# return $result;
#
#}
sub _error {
my ($context,$message) = @_;

Loading…
Cancel
Save