break(azure/virtual-networks): refactoring (#3265)

This commit is contained in:
Simon Bomm 2021-11-29 17:34:20 +01:00 committed by GitHub
parent c16166a868
commit f759d5877b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 45 additions and 49 deletions

View File

@ -574,9 +574,8 @@ sub azure_list_vpn_gateways {
sub azure_list_virtualnetworks_set_url {
my ($self, %options) = @_;
my $url = $self->{management_endpoint} . "/subscriptions/" . $self->{subscription};
$url .= "/resourceGroups/" . $options{resource_group} if (defined($options{resource_group}) && $options{resource_group} ne '');
$url .= "/providers/Microsoft.Network/virtualNetworks?api-version=" . $self->{api_version};
my $url = $self->{management_endpoint} . "/subscriptions/" . $self->{subscription} . "/resourcegroups/" .
$options{resource_group} . "/providers/Microsoft.Network/virtualNetworks?api-version=" . $self->{api_version};
return $url;
}
@ -593,10 +592,9 @@ sub azure_list_virtualnetworks {
sub azure_list_vnet_peerings_set_url {
my ($self, %options) = @_;
my $url = $self->{management_endpoint} . "/subscriptions/" . $self->{subscription};
$url .= "/resourceGroups/" . $options{resource_group} if (defined($options{resource_group}) && $options{resource_group} ne '');
$url .= "/providers/Microsoft.Network/virtualNetworks/" . $options{vnet_name} if (defined($options{vnet_name}) && $options{vnet_name} ne '');
$url .= "/virtualNetworkPeerings?api-version=" . $self->{api_version};
my $url = $self->{management_endpoint} . "/subscriptions/" . $self->{subscription} . "/resourcegroups/" .
$options{resource_group} . "/providers/Microsoft.Network/virtualNetworks/" .
$options{resource} . "/virtualNetworkPeerings?api-version=" . $self->{api_version};
return $url;
}

View File

@ -448,8 +448,7 @@ sub azure_list_virtualnetworks_set_cmd {
return if (defined($self->{option_results}->{command_options}) && $self->{option_results}->{command_options} ne '');
my $cmd_options = "network vnet list --only-show-errors --output json";
$cmd_options .= " --resource-group '$options{resource_group}'" if (defined($options{resource_group}) && $options{resource_group} ne '');
my $cmd_options = "network vnet list --resource-group '$options{resource_group}' --only-show-errors --output json ";
$cmd_options .= " --subscription '$self->{subscription}'" if (defined($self->{subscription}) && $self->{subscription} ne '');
return $cmd_options;
@ -469,7 +468,7 @@ sub azure_list_vnet_peerings_set_cmd {
return if (defined($self->{option_results}->{command_options}) && $self->{option_results}->{command_options} ne '');
my $cmd_options = "network vnet peering list --resource-group '$options{resource_group}' --vnet-name '$options{vnet_name}' --only-show-errors --output json";
my $cmd_options = "network vnet peering list --resource-group '$options{resource_group}' --vnet-name '$options{resource}' --only-show-errors --output json";
$cmd_options .= " --subscription '$self->{subscription}'" if (defined($self->{subscription}) && $self->{subscription} ne '');
return $cmd_options;

View File

@ -31,11 +31,11 @@ sub new {
bless $self, $class;
$options{options}->add_options(arguments =>
{
"resource-group:s" => { name => 'resource_group' },
"location:s" => { name => 'location' },
"filter-name:s" => { name => 'filter_name' },
});
{
"resource-group:s" => { name => 'resource_group' },
"location:s" => { name => 'location' },
"filter-name:s" => { name => 'filter_name' }
});
return $self;
}
@ -43,6 +43,11 @@ sub new {
sub check_options {
my ($self, %options) = @_;
$self->SUPER::init(%options);
if (!defined($self->{option_results}->{resource_group}) || $self->{option_results}->{resource_group} eq '') {
$self->{output}->add_option_msg(short_msg => "Need to specify --resource-group option");
$self->{output}->option_exit();
}
}
sub manage_selection {

View File

@ -24,7 +24,7 @@ use base qw(centreon::plugins::templates::counter);
use strict;
use warnings;
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold);
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
sub custom_status_output {
my ($self, %options) = @_;
@ -36,16 +36,6 @@ sub custom_status_output {
return $msg;
}
sub custom_status_calc {
my ($self, %options) = @_;
$self->{result_values}->{peering_state} = $options{new_datas}->{$self->{instance} . '_peering_state'};
$self->{result_values}->{provisioning_state} = $options{new_datas}->{$self->{instance} . '_provisioning_state'};
$self->{result_values}->{peer} = $options{new_datas}->{$self->{instance} . '_peer'};
$self->{result_values}->{display} = $options{new_datas}->{$self->{instance} . '_display'};
return 0;
}
sub prefix_peering_output {
my ($self, %options) = @_;
@ -60,15 +50,18 @@ sub set_counters {
];
$self->{maps_counters}->{peerings} = [
{ label => 'status', threshold => 0, set => {
{
label => 'status',
type => 2,
critical_default => '%{peering_state} ne "Connected" || %{provisioning_state} ne "Succeeded"',
set => {
key_values => [ { name => 'peering_state' }, { name => 'provisioning_state' }, { name => 'peer' },
{ name => 'display' } ],
closure_custom_calc => $self->can('custom_status_calc'),
closure_custom_output => $self->can('custom_status_output'),
closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold,
closure_custom_threshold_check => \&catalog_status_threshold_ng
}
},
}
];
}
@ -77,14 +70,11 @@ sub new {
my $self = $class->SUPER::new(package => __PACKAGE__, %options);
bless $self, $class;
$options{options}->add_options(arguments =>
{
"resource-group:s" => { name => 'resource_group' },
"vnet-name:s" => { name => 'vnet_name' },
"filter-name:s" => { name => 'filter_name' },
"warning-status:s" => { name => 'warning_status', default => '' },
"critical-status:s" => { name => 'critical_status', default => '%{peering_state} ne "Connected" || %{provisioning_state} ne "Succeeded"' },
});
$options{options}->add_options(arguments => {
"resource-group:s" => { name => 'resource_group' },
"resource:s" => { name => 'resource' },
"filter-name:s" => { name => 'filter_name' }
});
return $self;
}
@ -93,16 +83,20 @@ sub check_options {
my ($self, %options) = @_;
$self->SUPER::check_options(%options);
if (!defined($self->{option_results}->{resource_group}) || $self->{option_results}->{resource_group} eq '') {
$self->{output}->add_option_msg(short_msg => "Need to specify --resource-group option");
if (!defined($self->{option_results}->{resource}) || $self->{option_results}->{resource} eq '') {
$self->{output}->add_option_msg(short_msg => 'Need to specify either --resource <name> with --resource-group option or --resource <id>.');
$self->{output}->option_exit();
}
if (!defined($self->{option_results}->{vnet_name}) || $self->{option_results}->{vnet_name} eq '') {
$self->{output}->add_option_msg(short_msg => "Need to specify --vnet-name option");
$self->{output}->option_exit();
my $resource = $self->{option_results}->{resource};
my $resource_group = defined($self->{option_results}->{resource_group}) ? $self->{option_results}->{resource_group} : '';
if ($resource =~ /^\/subscriptions\/.*\/resourceGroups\/(.*)\/providers\/Microsoft\.Network\/virtualNetworks\/(.*)$/) {
$resource_group = $1;
$resource = $2;
}
$self->change_macros(macros => ['warning_status', 'critical_status']);
$self->{az_resource} = $resource;
$self->{az_resource_group} = $resource_group;
}
sub manage_selection {
@ -110,8 +104,8 @@ sub manage_selection {
$self->{peerings} = {};
my $peerings = $options{custom}->azure_list_vnet_peerings(
resource_group => $self->{option_results}->{resource_group},
vnet_name => $self->{option_results}->{vnet_name}
resource_group => $self->{az_resource_group},
resource => $self->{az_resource}
);
foreach my $peering (@{$peerings}) {
next if (defined($self->{option_results}->{filter_name}) && $self->{option_results}->{filter_name} ne ''
@ -144,8 +138,8 @@ __END__
Check virtual network peerings status.
Example:
perl centreon_plugins.pl --plugin=cloud::azure::network::virtualnetwork::plugin --custommode=azcli --mode=peerings-status
--resource-group='MYRESOURCEGROUP' --vnet-name='MyVNetName' --verbose
perl centreon_plugins.pl --plugin=cloud::azure::network::virtualnetwork::plugin --custommode=awscli --mode=peerings-status
--resource-group='MYRESOURCEGROUP' --resource='MyVNetName' --verbose
=over 8
@ -153,7 +147,7 @@ perl centreon_plugins.pl --plugin=cloud::azure::network::virtualnetwork::plugin
Set resource group (Required).
=item B<--vnet-name>
=item B<--resource>
Set virtual network name (Required).