enh(apps::proxmox::ve::restapi): added options include-node-name and exclude-name CTOR-1848

This commit is contained in:
Lucie Dubrunfaut 2025-07-24 16:17:01 +02:00
parent ea71dd261a
commit adc83c4017

View File

@ -234,10 +234,12 @@ sub new {
bless $self, $class; bless $self, $class;
$options{options}->add_options(arguments => { $options{options}->add_options(arguments => {
'vm-id:s' => { name => 'vm_id' }, 'vm-id:s' => { name => 'vm_id' },
'vm-name:s' => { name => 'vm_name' }, 'vm-name:s' => { name => 'vm_name' },
'filter-name:s' => { name => 'filter_name' }, 'filter-name:s' => { name => 'filter_name' },
'use-name' => { name => 'use_name' } 'exclude-name:s' => { name => 'exclude_name' },
'include-node-name:s' => { name => 'include_node_name' },
'use-name' => { name => 'use_name' }
}); });
$self->{statefile_cache_vms} = centreon::plugins::statefile->new(%options); $self->{statefile_cache_vms} = centreon::plugins::statefile->new(%options);
@ -265,16 +267,27 @@ sub manage_selection {
foreach my $vm_id (keys %{$result}) { foreach my $vm_id (keys %{$result}) {
next if (!defined($result->{$vm_id}->{Stats})); next if (!defined($result->{$vm_id}->{Stats}));
my $name = $result->{$vm_id}->{Name}; my $vm_name = $result->{$vm_id}->{Name};
my $node_name = $result->{$vm_id}->{Node};
if (defined($self->{option_results}->{filter_name}) && $self->{option_results}->{filter_name} ne '' && if (defined($self->{option_results}->{filter_name}) && $self->{option_results}->{filter_name} ne '' &&
$name !~ /$self->{option_results}->{filter_name}/) { $vm_name !~ /$self->{option_results}->{filter_name}/) {
$self->{output}->output_add(long_msg => "skipping '" . $name . "': no matching filter.", debug => 1); $self->{output}->output_add(long_msg => "skipping '" . $vm_name . "': no matching with include filter:" . $self->{option_results}->{filter_name}, debug => 1);
next;
}
if (defined($self->{option_results}->{exclude_name}) && $self->{option_results}->{exclude_name} ne '' &&
$vm_name =~ /$self->{option_results}->{exclude_name}/) {
$self->{output}->output_add(long_msg => "skipping '" . $vm_name . "': no matching with exclude filter: " . $self->{option_results}->{exclude_name}, debug => 1);
next;
}
if (defined($self->{option_results}->{include_node_name}) && $self->{option_results}->{include_node_name} ne '' &&
$node_name !~ /$self->{option_results}->{include_node_name}/) {
$self->{output}->output_add(long_msg => "skipping '" . $node_name . "': not running on include node:" . $self->{option_results}->{include_node_name}, debug => 1);
next; next;
} }
$self->{vms}->{$vm_id} = { $self->{vms}->{$vm_id} = {
display => defined($self->{option_results}->{use_name}) ? $name : $vm_id, display => defined($self->{option_results}->{use_name}) ? $vm_name : $vm_id,
name => $name, name => $vm_name,
state => $result->{$vm_id}->{State}, state => $result->{$vm_id}->{State},
read_io => $result->{$vm_id}->{Stats}->{diskread}, read_io => $result->{$vm_id}->{Stats}->{diskread},
write_io => $result->{$vm_id}->{Stats}->{diskwrite}, write_io => $result->{$vm_id}->{Stats}->{diskwrite},
@ -326,6 +339,14 @@ Exact VM name (if multiple names: names separated by ':').
Use VM name for perfdata and display. Use VM name for perfdata and display.
=item B<--include-node-name>
Filter only VM running on specified node name (can be a regexp).
=item B<--exclude-name>
Exclude by vm name (can be a regexp).
=item B<--filter-name> =item B<--filter-name>
Filter by vm name (can be a regexp). Filter by vm name (can be a regexp).