MT#64115 add peer multi site support

* add peering server field 'site_id' that
  uses $c->config->{multisite} for a list of available sites,
  if multi site is enabled, otherwise the column is not visible
  via the UI but available regardless via the API

Change-Id: I5e9ec64bcc80531022b6067b0c50b197ee25b952
master
Kirill Solomko 2 months ago
parent bee84bc8af
commit 12e8992a78

@ -84,6 +84,9 @@ sub base :Chained('group_list') :PathPart('') :CaptureArgs(1) {
{ name => 'transport', search => 1, title => $c->loc('Protocol') },
{ name => 'weight', search => 0, title => $c->loc('Weight') },
{ name => 'via_route', search => 1, title => $c->loc('Via Route Set') },
$c->config->{multisite}{site_id}
? ({ name => 'site_id', search => 0, title => $c->loc('Site') })
: (),
{ name => 'probe', search => 0, title => $c->loc('Probe') },
{ name => 'enabled', search => 0, title => $c->loc('Enabled') },
]);
@ -298,6 +301,7 @@ sub servers_create :Chained('servers_list') :PathPart('create') :Args(0) {
via_route => $form->values->{via_route},
enabled => $form->values->{enabled},
probe => $form->values->{probe},
site_id => $form->values->{site_id},
};
my $server = $c->stash->{group_result}->voip_peer_hosts->create($dbvalues);
NGCP::Panel::Utils::Peering::sip_lcr_reload(c => $c);

@ -83,6 +83,31 @@ sub build_via_routes {
return \@options;
}
has_field 'site_id' => (
type => '+NGCP::Panel::Field::Select',
label => 'Site',
options_method => \&build_sites_select,
);
sub build_sites_select {
my ($self) = @_;
return unless $self->form->ctx;
my @options = ();
push @options, { label => 'all (default)', value => undef };
my $sites = $self->form->ctx->config->{multisite}->{sites};
if (defined $sites) {
if (ref $sites eq "HASH") {
foreach my $id (sort keys %{$sites}) {
my ($name, $role) = @{$sites->{$id}}{qw(name role)};
my $label = "$name (id: $id role: $role)";
push @options, { label => $label, value => $id };
}
}
}
return \@options;
}
has_field 'probe' => (
type => 'Boolean',
label => 'Enable Probing',
@ -114,7 +139,7 @@ has_field 'save' => (
has_block 'fields' => (
tag => 'div',
class => [qw/modal-body/],
render_list => [qw/ name ip host port transport weight via_route probe enabled /],
render_list => [qw/ name ip host port transport weight via_route site_id probe enabled /],
);
has_block 'actions' => (

@ -11,10 +11,19 @@ has_field 'group_id' => (
},
);
has_field 'site_id' => (
type => 'PosInteger',
required => 0,
element_attr => {
rel => ['tooltip'],
title => ['If defined, the peering will only be used on the selected site.']
},
);
has_block 'fields' => (
tag => 'div',
class => [qw/modal-body/],
render_list => [qw/group_id name ip host port transport weight via_route probe enabled/],
render_list => [qw/group_id name ip host port transport weight via_route site_id probe enabled/],
);
1;

Loading…
Cancel
Save