TT#63528 CCS importer: clear CFU for subs with "1:1" routing type

Change-Id: I27d19da4629041127ff2fa5317f5b62de06e89fa
changes/75/31875/2
Rene Krenn 7 years ago
parent 81fb90a0f8
commit e7ed4d79c6

@ -7,35 +7,35 @@ enablemultithreading = 1
jobservers = 127.0.0.1:4730 jobservers = 127.0.0.1:4730
##NGCP MySQL connectivity - "accounting" db: ##NGCP MySQL connectivity - "accounting" db:
accounting_host = 192.168.0.29 accounting_host = 192.168.0.212
accounting_port = 3306 accounting_port = 3306
accounting_databasename = accounting accounting_databasename = accounting
accounting_username = root accounting_username = root
accounting_password = accounting_password =
##NGCP MySQL connectivity - "billing" db: ##NGCP MySQL connectivity - "billing" db:
billing_host = 192.168.0.29 billing_host = 192.168.0.212
billing_port = 3306 billing_port = 3306
billing_databasename = billing billing_databasename = billing
billing_username = root billing_username = root
billing_password = billing_password =
##NGCP MySQL connectivity - "provisioning" db: ##NGCP MySQL connectivity - "provisioning" db:
provisioning_host = 192.168.0.29 provisioning_host = 192.168.0.212
provisioning_port = 3306 provisioning_port = 3306
provisioning_databasename = provisioning provisioning_databasename = provisioning
provisioning_username = root provisioning_username = root
provisioning_password = provisioning_password =
##NGCP MySQL connectivity - "kamailio" db: ##NGCP MySQL connectivity - "kamailio" db:
kamailio_host = 192.168.0.29 kamailio_host = 192.168.0.212
kamailio_port = 3306 kamailio_port = 3306
kamailio_databasename = kamailio kamailio_databasename = kamailio
kamailio_username = root kamailio_username = root
kamailio_password = kamailio_password =
##NGCP MySQL connectivity - default db for distributed transactions (XA) to connect to: ##NGCP MySQL connectivity - default db for distributed transactions (XA) to connect to:
xa_host = 192.168.0.29 xa_host = 192.168.0.212
xa_port = 3306 xa_port = 3306
xa_databasename = ngcp xa_databasename = ngcp
xa_username = root xa_username = root

@ -8,10 +8,12 @@ webpassword_length = 8
webusername_length = 8 webusername_length = 8
sippassword_length = 16 sippassword_length = 16
sipusername_length = 8 sipusername_length = 8
provision_subscriber_count = 1000 provision_subscriber_count = 5
#1000
providers_yml = providers.yml providers_yml = providers.yml
generate_cdr_multithreading = 1 generate_cdr_multithreading = 1
#generate_cdr_numofthreads = 2 #generate_cdr_numofthreads = 2
generate_cdr_count = 10 generate_cdr_count = 50000
#10

@ -116,6 +116,7 @@ our @EXPORT_OK = qw(
provision_ccs_subscribers provision_ccs_subscribers
$UPDATE_CCS_PREFERENCES_MODE $UPDATE_CCS_PREFERENCES_MODE
$SET_CCS_CF_MODE $SET_CCS_CF_MODE
$CLEAR_CCS_CF_MODE
); );
my $split_ipnets_pattern = join('|',( my $split_ipnets_pattern = join('|',(
@ -133,6 +134,7 @@ my $ccs_contact_identifier_field = 'gpp9';
our $UPDATE_CCS_PREFERENCES_MODE = 'update_ccs_preferences'; our $UPDATE_CCS_PREFERENCES_MODE = 'update_ccs_preferences';
our $SET_CCS_CF_MODE = 'set_ccs_cf'; our $SET_CCS_CF_MODE = 'set_ccs_cf';
our $CLEAR_CCS_CF_MODE = 'clear_ccs_cf';
my $cf_types_pattern = '^' . $NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_cf_mappings::CFB_TYPE . '|' my $cf_types_pattern = '^' . $NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_cf_mappings::CFB_TYPE . '|'
. $NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_cf_mappings::CFT_TYPE . '|' . $NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_cf_mappings::CFT_TYPE . '|'
@ -1153,6 +1155,8 @@ sub _provision_ccs_susbcriber {
_update_ccs_preferences($context); _update_ccs_preferences($context);
} elsif ($update_mode eq $SET_CCS_CF_MODE) { } elsif ($update_mode eq $SET_CCS_CF_MODE) {
_set_callforwards($context); _set_callforwards($context);
} elsif ($update_mode eq $CLEAR_CCS_CF_MODE) {
_set_callforwards($context,1);
} else { } else {
_warn($context,$context->{prov_subscriber}->{username} . ': ' . (scalar @$existing_billing_voip_subscribers) . ' existing billing subscribers found, skipping'); _warn($context,$context->{prov_subscriber}->{username} . ': ' . (scalar @$existing_billing_voip_subscribers) . ' existing billing subscribers found, skipping');
} }
@ -1752,49 +1756,51 @@ sub _set_registrations {
sub _set_callforwards { sub _set_callforwards {
my ($context) = @_; my ($context,$clear) = @_;
my $result = 1; my $result = 1;
foreach my $type (keys %{$context->{callforwards}}) { foreach my $type (keys %{$context->{callforwards}}) {
NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_cf_mappings::delete_cfmappings($context->{db}, _info($context,"$type deleted",1)
$context->{prov_subscriber}->{id},{ '=' => $type }); if NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_cf_mappings::delete_cfmappings($context->{db},
$context->{prov_subscriber}->{id},{ '=' => $type });
my $destination_set_id = NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_cf_destination_sets::insert_row($context->{db},{ unless ($clear) {
subscriber_id => $context->{prov_subscriber}->{id}, my $destination_set_id = NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_cf_destination_sets::insert_row($context->{db},{
name => "quickset_$type", subscriber_id => $context->{prov_subscriber}->{id},
}); name => "quickset_$type",
foreach my $callforward (@{$context->{callforwards}->{$type}}) { });
$callforward->{id} = NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_cf_destinations::insert_row($context->{db},{ foreach my $callforward (@{$context->{callforwards}->{$type}}) {
%$callforward, $callforward->{id} = NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_cf_destinations::insert_row($context->{db},{
%$callforward,
destination_set_id => $destination_set_id,
});
}
my $cf_mapping_id = NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_cf_mappings::insert_row($context->{db},{
subscriber_id => $context->{prov_subscriber}->{id},
type => $type,
destination_set_id => $destination_set_id, destination_set_id => $destination_set_id,
#time_set_id
}); });
}
my $cf_mapping_id = NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_cf_mappings::insert_row($context->{db},{
subscriber_id => $context->{prov_subscriber}->{id},
type => $type,
destination_set_id => $destination_set_id,
#time_set_id
});
$context->{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}->{$type} = { id => set_subscriber_preference($context,
$context->{preferences}->{ringtimeout} = { id => set_subscriber_preference($context,
$context->{prov_subscriber}->{id}, $context->{prov_subscriber}->{id},
$context->{attributes}->{ringtimeout}, $context->{attributes}->{$type},
$context->{ringtimeout}), value => $context->{ringtimeout} }; $cf_mapping_id), value => $cf_mapping_id };
if (defined $context->{ringtimeout}) {
$context->{preferences}->{ringtimeout} = { id => set_subscriber_preference($context,
$context->{prov_subscriber}->{id},
$context->{attributes}->{ringtimeout},
$context->{ringtimeout}), value => $context->{ringtimeout} };
}
_info($context,"$type created (destination(s) " . join(', ',(map { $_->{destination}; } @{$context->{callforwards}->{$type}})) . ")",1);
$context->{callforwards}->{$type} = {
destination_set => {
destinations => $context->{callforwards}->{$type},
id => $destination_set_id,
},
id => $cf_mapping_id,
};
} }
_info($context,"$type created (destination(s) " . join(', ',(map { $_->{destination}; } @{$context->{callforwards}->{$type}})) . ")",1);
$context->{callforwards}->{$type} = {
destination_set => {
destinations => $context->{callforwards}->{$type},
id => $destination_set_id,
},
id => $cf_mapping_id,
};
} }
return $result; return $result;

@ -7,35 +7,35 @@ enablemultithreading = 0
jobservers = 127.0.0.1:4730 jobservers = 127.0.0.1:4730
##NGCP MySQL connectivity - "accounting" db: ##NGCP MySQL connectivity - "accounting" db:
accounting_host = 192.168.0.29 accounting_host = 192.168.174.130
accounting_port = 3306 accounting_port = 3306
accounting_databasename = accounting accounting_databasename = accounting
accounting_username = root accounting_username = root
accounting_password = accounting_password =
##NGCP MySQL connectivity - "billing" db: ##NGCP MySQL connectivity - "billing" db:
billing_host = 192.168.0.29 billing_host = 192.168.174.130
billing_port = 3306 billing_port = 3306
billing_databasename = billing billing_databasename = billing
billing_username = root billing_username = root
billing_password = billing_password =
##NGCP MySQL connectivity - "provisioning" db: ##NGCP MySQL connectivity - "provisioning" db:
provisioning_host = 192.168.0.29 provisioning_host = 192.168.174.130
provisioning_port = 3306 provisioning_port = 3306
provisioning_databasename = provisioning provisioning_databasename = provisioning
provisioning_username = root provisioning_username = root
provisioning_password = provisioning_password =
##NGCP MySQL connectivity - "kamailio" db: ##NGCP MySQL connectivity - "kamailio" db:
kamailio_host = 192.168.0.29 kamailio_host = 192.168.174.130
kamailio_port = 3306 kamailio_port = 3306
kamailio_databasename = kamailio kamailio_databasename = kamailio
kamailio_username = root kamailio_username = root
kamailio_password = kamailio_password =
##NGCP MySQL connectivity - default db for distributed transactions (XA) to connect to: ##NGCP MySQL connectivity - default db for distributed transactions (XA) to connect to:
xa_host = 192.168.0.29 xa_host = 192.168.174.130
xa_port = 3306 xa_port = 3306
xa_databasename = ngcp xa_databasename = ngcp
xa_username = root xa_username = root

@ -95,6 +95,7 @@ use NGCP::BulkProcessor::Projects::Migration::UPCAT::Provisioning qw(
provision_ccs_subscribers provision_ccs_subscribers
$UPDATE_CCS_PREFERENCES_MODE $UPDATE_CCS_PREFERENCES_MODE
$SET_CCS_CF_MODE $SET_CCS_CF_MODE
$CLEAR_CCS_CF_MODE
); );
scripterror(getscriptpath() . ' already running',getlogger(getscriptpath())) unless flock DATA, LOCK_EX | LOCK_NB; # not tested on windows yet scripterror(getscriptpath() . ' already running',getlogger(getscriptpath())) unless flock DATA, LOCK_EX | LOCK_NB; # not tested on windows yet
@ -134,6 +135,8 @@ push(@TASK_OPTS,$update_ccs_subscriber_preferences_task_opt);
my $set_ccs_subscriber_cf_task_opt = 'set_ccs_subscriber_cf'; my $set_ccs_subscriber_cf_task_opt = 'set_ccs_subscriber_cf';
push(@TASK_OPTS,$set_ccs_subscriber_cf_task_opt); push(@TASK_OPTS,$set_ccs_subscriber_cf_task_opt);
my $clear_ccs_subscriber_cf_task_opt = 'clear_ccs_subscriber_cf';
push(@TASK_OPTS,$clear_ccs_subscriber_cf_task_opt);
if (init()) { if (init()) {
main(); main();
@ -226,6 +229,13 @@ sub main() {
$completion |= 1; $completion |= 1;
} }
} elsif (lc($clear_ccs_subscriber_cf_task_opt) eq lc($task)) {
if (taskinfo($clear_ccs_subscriber_cf_task_opt,$result,1)) {
next unless check_dry();
$result &= clear_ccs_subscriber_cf_task(\@messages);
$completion |= 1;
}
} else { } else {
$result = 0; $result = 0;
scripterror("unknow task option '" . $task . "', must be one of " . join(', ',@TASK_OPTS),getlogger(getscriptpath())); scripterror("unknow task option '" . $task . "', must be one of " . join(', ',@TASK_OPTS),getlogger(getscriptpath()));
@ -567,6 +577,29 @@ sub set_ccs_subscriber_cf_task {
return $result; return $result;
} }
sub clear_ccs_subscriber_cf_task {
my ($messages) = @_;
my ($result,$warning_count) = (0,0);
eval {
($result,$warning_count) = provision_ccs_subscribers($CLEAR_CCS_CF_MODE);
};
my $err = $@;
my $stats = ": $warning_count warnings";
eval {
$stats .= "\n total contracts: " .
NGCP::BulkProcessor::Dao::Trunk::billing::contracts::countby_status_resellerid(undef,undef) . ' rows';
$stats .= "\n total subscribers: " .
NGCP::BulkProcessor::Dao::Trunk::billing::voip_subscribers::countby_status_resellerid(undef,undef) . ' rows';
};
if ($err or !$result) {
push(@$messages,"clear ccs subscriber callforwards INCOMPLETE$stats");
} else {
push(@$messages,"clear ccs subscribers callforwards completed$stats");
}
destroy_all_dbs();
return $result;
}
#END { #END {
# # this should not be required explicitly, but prevents Log4Perl's # # this should not be required explicitly, but prevents Log4Perl's
# # "rootlogger not initialized error upon exit.. # # "rootlogger not initialized error upon exit..

@ -37,7 +37,7 @@ provision_ccs_subscriber_multithreading = 1
provision_ccs_subscriber_numofthreads = 2 provision_ccs_subscriber_numofthreads = 2
ccs_reseller_name = default ccs_reseller_name = default
ccs_billing_profile_name = Default Billing Profile ccs_billing_profile_name = Default Billing Profile
ccs_domain = 192.168.0.29 ccs_domain = 192.168.174.130
#10.15.19.193 #10.15.19.193
#d20.upc.at #d20.upc.at
#in-ivr.upc.at #in-ivr.upc.at

Loading…
Cancel
Save