TT#4110 bin/create_subscribers.pl: add pbx_group support

* use sort for deterministic output for loops with keys

Example

> subscribers:
>   spce.test:
>     group00:
>       customer: 'customerpbx.test'
>       password: testuser
>       cc: 43
>       ac: 1
>       sn: 1000
>       is_pbx_pilot: 1
>       is_pbx_group: 1
>       pbx_extension: 1000
>     group01:
>       customer: 'customerpbx.test'
>       password: testuser
>       cc: 43
>       ac: 1
>       sn: 1001
>       is_pbx_pilot: 0
>       is_pbx_group: 1
>       pbx_extension: 1001
>     testuser1003:
>       customer: 'customerpbx.test'
>       password: testuser
>       cc: 43
>       ac: 1
>       sn: 1003
>       is_pbx_pilot: 0
>       pbx_groups:
>         - 'group00'
>       pbx_extension: 1003
>     testuser1002:
>       customer: 'customerpbx.test'
>       password: testuser
>       cc: 43
>       ac: 1
>       sn: 1002
>       is_pbx_pilot: 0
>       pbx_groups:
>         - 'group00'
>         - 'group01'
>       pbx_extension: 1002
>       alias_numbers:
>         - cc: 43
>           ac: 96
>           sn: 5751941

Change-Id: I3eabb55b30bff3dec4b03f53d1d00a7398e23881
changes/32/8632/3
Victor Seva 10 years ago
parent 407517a48a
commit 86e0e44faf

@ -61,8 +61,10 @@ sub get_data {
customer_id => $val->{customer_id},
username => $val->{username},
password => $val->{password},
is_pbx_group => $val->{is_pbx_group},
is_pbx_pilot => $val->{is_pbx_pilot},
pbx_extension => $val->{pbx_extension},
pbx_group_ids => $val->{pbx_group_ids},
primary_number => {
cc => $val->{cc},
ac => $val->{ac},
@ -124,7 +126,7 @@ sub manage_contracts
sub manage_domains
{
my $data = shift;
foreach my $domain (keys %{$data->{domains}})
foreach my $domain (sort keys %{$data->{domains}})
{
my $domain_data = $data->{domains}->{$domain};
my $d_data = {
@ -146,7 +148,7 @@ sub manage_domains
sub manage_customers
{
my $data = shift;
foreach my $customer (keys %{$data->{customers}})
foreach my $customer (sort keys %{$data->{customers}})
{
my $customer_data = $data->{customers}->{$customer};
manage_contacts($customer_data, 'customer');
@ -162,23 +164,63 @@ sub manage_customers
return;
}
sub create_subscriber
{
my ($username, $domain , $data , $s) = @_;
my $pbx_groups = $data->{pbx_groups};
$s->{pbx_group_ids} = [];
$s->{username} = $username;
$s->{domain_id} = $data->{domains}->{$domain}->{domain_id};
$s->{customer_id} = $data->{customers}->{$s->{customer}}->{customer_id};
foreach my $group (@{$s->{pbx_groups}}) {
if (defined $pbx_groups->{$group}) {
push @{$s->{pbx_group_ids}}, $pbx_groups->{$group};
}
else {
print "pbx_group[$group] not defined!\n";
}
}
delete $s->{pbx_groups};
$s->{id} = $api->create_subscriber(get_data($s));
return;
}
sub manage_pbx_groups
{
my $data = shift;
$data->{pbx_groups} = {};
foreach my $domain (sort keys %{$data->{subscribers}})
{
my $d_data = $data->{subscribers}->{$domain};
foreach my $username (sort keys %{$d_data})
{
my $s = $d_data->{$username};
next unless $s->{is_pbx_group};
create_subscriber($username, $domain, $data, $s);
$data->{pbx_groups}->{$username} = $s->{id};
print("$username\@$domain is a pbx_group[$s->{id}]\n");
}
}
return;
}
sub main
{
my $data = shift;
manage_customers($data);
manage_domains($data);
manage_pbx_groups($data);
foreach my $domain (keys %{$data->{subscribers}})
foreach my $domain (sort keys %{$data->{subscribers}})
{
my $d_data = $data->{subscribers}->{$domain};
foreach my $username (keys %{$d_data})
foreach my $username (sort keys %{$d_data})
{
my $s = $d_data->{$username};
$s->{username} = $username;
$s->{domain_id} = $data->{domains}->{$domain}->{domain_id};
$s->{customer_id} = $data->{customers}->{$s->{customer}}->{customer_id};
my $id = $api->create_subscriber(get_data($s));
print("$username\@$domain created [$id]\n");
next if $s->{is_pbx_group};
create_subscriber($username, $domain, $data, $s);
print("$username\@$domain created [$s->{id}]\n");
}
}
return;

Loading…
Cancel
Save