mirror of
https://github.com/centreon/centreon-plugins.git
synced 2025-07-27 23:54:18 +02:00
fix(centreonvault): fix endpoint extraction (#4292)
This commit is contained in:
parent
031f24a945
commit
a79862fdc9
@ -62,14 +62,14 @@ sub extract_map_options {
|
|||||||
next if ($option eq 'map_option');
|
next if ($option eq 'map_option');
|
||||||
if (ref($options{option_results}{$option}) eq 'ARRAY') {
|
if (ref($options{option_results}{$option}) eq 'ARRAY') {
|
||||||
foreach (@{$options{option_results}{$option}}) {
|
foreach (@{$options{option_results}{$option}}) {
|
||||||
if ($_ =~ /\{.*\:\:secret\:\:(.*)\}/i) {
|
if ($_ =~ /\{.*\:\:secret\:\:(.*)\:\:(.*)\}/i) {
|
||||||
push (@{$self->{request_endpoint}}, "/v1".$1);
|
push (@{$self->{request_endpoint}}, "$1::/v1/".$2);
|
||||||
push (@{$self->{map_option}}, $option."=%".$_);
|
push (@{$self->{map_option}}, $option."=%".$_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ($options{option_results}{$option} =~ /\{.*\:\:secret\:\:(.*)\}/i) {
|
if ($options{option_results}{$option} =~ /\{.*\:\:secret\:\:(.*)\:\:(.*)\}/i) {
|
||||||
push (@{$self->{request_endpoint}}, "/v1".$1);
|
push (@{$self->{request_endpoint}}, "$1::/v1/".$2);
|
||||||
push (@{$self->{map_option}}, $option."=%".$options{option_results}{$option});
|
push (@{$self->{map_option}}, $option."=%".$options{option_results}{$option});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -130,10 +130,19 @@ sub request_api {
|
|||||||
$self->vault_settings(%options);
|
$self->vault_settings(%options);
|
||||||
|
|
||||||
$self->{lookup_values} = {};
|
$self->{lookup_values} = {};
|
||||||
foreach my $endpoint (@{$self->{request_endpoint}}) {
|
foreach my $item (@{$self->{request_endpoint}}) {
|
||||||
# Extract vault name configuration from endpoint
|
# Extract vault name configuration from endpoint
|
||||||
my $vault_path = substr($endpoint, index($endpoint, '/', 1), length($endpoint));
|
# 'vault::/v1/<root_path>/monitoring/hosts/7ad55afc-fa9e-4851-85b7-e26f47e421d7'
|
||||||
my $vault_name = substr($vault_path, 1, index($vault_path, '/', 1) - 1);
|
my ($vault_name, $endpoint);
|
||||||
|
if ($item =~ /(.*)\:\:(.*)/i) {
|
||||||
|
$vault_name = $1;
|
||||||
|
$endpoint = $2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!defined($self->{$vault_name})) {
|
||||||
|
$self->{output}->add_option_msg(short_msg => "Cannot get vault access for: $vault_name");
|
||||||
|
$self->{output}->option_exit();
|
||||||
|
}
|
||||||
|
|
||||||
my $headers = ['Accept: application/json'];
|
my $headers = ['Accept: application/json'];
|
||||||
if (defined($self->{$vault_name}->{vault_token})) {
|
if (defined($self->{$vault_name}->{vault_token})) {
|
||||||
@ -159,7 +168,7 @@ sub request_api {
|
|||||||
};
|
};
|
||||||
|
|
||||||
foreach (keys %{$json->{data}}) {
|
foreach (keys %{$json->{data}}) {
|
||||||
$self->{lookup_values}->{'{' . $_ . '::secret::' . substr($endpoint, index($endpoint, '/', 1)) . '}'} = $json->{data}->{$_};
|
$self->{lookup_values}->{'{' . $_ . '::secret::' . $vault_name . '::' . substr($endpoint, index($endpoint, '/', 1) + 1) . '}'} = $json->{data}->{$_};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user