(plugin) cloud::kubernetes - add --namespace option (#4179)

This commit is contained in:
qgarnier 2023-01-25 10:39:09 +00:00 committed by GitHub
parent f3e876f9d5
commit 8a3790af0e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 248 additions and 141 deletions

View File

@ -49,7 +49,8 @@ sub new {
'token:s' => { name => 'token' },
'timeout:s' => { name => 'timeout' },
'limit:s' => { name => 'limit' },
'config-file:s' => { name => 'config_file' }
'config-file:s' => { name => 'config_file' },
'namespace:s' => { name => 'namespace' }
});
}
$options{options}->add_help(package => __PACKAGE__, sections => 'REST API OPTIONS', once => 1);
@ -71,18 +72,20 @@ sub set_defaults {}
sub check_options {
my ($self, %options) = @_;
$self->{hostname} = (defined($self->{option_results}->{hostname})) ? $self->{option_results}->{hostname} : undef;
$self->{hostname} = (defined($self->{option_results}->{hostname})) ? $self->{option_results}->{hostname} : '';
$self->{port} = (defined($self->{option_results}->{port})) ? $self->{option_results}->{port} : 443;
$self->{proto} = (defined($self->{option_results}->{proto})) ? $self->{option_results}->{proto} : 'https';
$self->{timeout} = (defined($self->{option_results}->{timeout})) && $self->{option_results}->{timeout} =~ /(\d+)/ ? $1 : 10;
$self->{token} = (defined($self->{option_results}->{token})) ? $self->{option_results}->{token} : '';
$self->{limit} = (defined($self->{option_results}->{limit})) && $self->{option_results}->{limit} =~ /(\d+)/ ? $1 : 100;
if (!defined($self->{hostname}) || $self->{hostname} eq '') {
$self->{namespace} = defined($self->{option_results}->{namespace}) && $self->{option_results}->{namespace} ne '' ?
$self->{option_results}->{namespace} : '';
if ($self->{hostname} eq '') {
$self->{output}->add_option_msg(short_msg => "Need to specify --hostname option.");
$self->{output}->option_exit();
}
if (!defined($self->{token}) || $self->{token} eq '') {
if ($self->{token} eq '') {
$self->{output}->add_option_msg(short_msg => "Need to specify --token option.");
$self->{output}->option_exit();
}
@ -116,10 +119,13 @@ sub settings {
sub request_api {
my ($self, %options) = @_;
$self->settings;
$self->settings();
$self->{output}->output_add(long_msg => "URL: '" . $self->{proto} . '://' . $self->{hostname} .
':' . $self->{port} . $options{url_path} . "'", debug => 1);
$self->{output}->output_add(
long_msg => "URL: '" . $self->{proto} . '://' . $self->{hostname} .
':' . $self->{port} . $options{url_path} . "'",
debug => 1
);
my $response = $self->{http}->request(%options);
@ -153,7 +159,7 @@ sub request_api {
$self->{output}->add_option_msg(short_msg => "Cannot decode json response: $response");
$self->{output}->option_exit();
}
return $decoded;
}
@ -163,7 +169,7 @@ sub request_api_paginate {
my @items;
my @get_param = ( 'limit=' . $self->{limit} );
push @get_param, @{$options{get_param}} if (defined($options{get_param}));
while (1) {
my $response = $self->request_api(
method => $options{method},
@ -183,105 +189,141 @@ sub request_api_paginate {
sub kubernetes_list_cronjobs {
my ($self, %options) = @_;
my $response = $self->request_api_paginate(method => 'GET', url_path => '/apis/batch/v1beta1/cronjobs');
my $response = $self->request_api_paginate(
method => 'GET',
url_path => $self->{namespace} ne '' ? '/apis/batch/v1beta1/namespaces/' . $self->{namespace} . '/cronjobs' : '/apis/batch/v1beta1/cronjobs'
);
return $response;
}
sub kubernetes_list_daemonsets {
my ($self, %options) = @_;
my $response = $self->request_api_paginate(method => 'GET', url_path => '/apis/apps/v1/daemonsets');
my $response = $self->request_api_paginate(
method => 'GET',
url_path => $self->{namespace} ne '' ? '/apis/apps/v1/namespaces/' . $self->{namespace} . '/daemonsets' : '/apis/apps/v1/daemonsets'
);
return $response;
}
sub kubernetes_list_deployments {
my ($self, %options) = @_;
my $response = $self->request_api_paginate(method => 'GET', url_path => '/apis/apps/v1/deployments');
my $response = $self->request_api_paginate(
method => 'GET',
url_path => $self->{namespace} ne '' ? '/apis/apps/v1/namespaces/' . $self->{namespace} . '/deployments' : '/apis/apps/v1/deployments'
);
return $response;
}
sub kubernetes_list_events {
my ($self, %options) = @_;
my $response = $self->request_api_paginate(method => 'GET', url_path => '/api/v1/events');
my $response = $self->request_api_paginate(
method => 'GET',
url_path => $self->{namespace} ne '' ? '/api/v1/namespaces/' . $self->{namespace} . '/events' : '/api/v1/events'
);
return $response;
}
sub kubernetes_list_ingresses {
my ($self, %options) = @_;
my $response = $self->request_api_paginate(method => 'GET', url_path => '/apis/extensions/v1beta1/ingresses');
my $response = $self->request_api_paginate(
method => 'GET',
url_path => $self->{namespace} ne '' ? '/apis/extensions/v1beta1/namespaces/' . $self->{namespace} . '/ingresses' : '/apis/extensions/v1beta1/ingresses'
);
return $response;
}
sub kubernetes_list_namespaces {
my ($self, %options) = @_;
my $response = $self->request_api_paginate(method => 'GET', url_path => '/api/v1/namespaces');
return $response;
}
sub kubernetes_list_nodes {
my ($self, %options) = @_;
my $response = $self->request_api_paginate(method => 'GET', url_path => '/api/v1/nodes');
my $response = $self->request_api_paginate(
method => 'GET',
url_path => '/api/v1/nodes'
);
return $response;
}
sub kubernetes_list_rcs {
my ($self, %options) = @_;
my $response = $self->request_api_paginate(method => 'GET', url_path => '/api/v1/replicationcontrollers');
my $response = $self->request_api_paginate(
method => 'GET',
url_path => $self->{namespace} ne '' ? '/api/v1/namespaces/' . $self->{namespace} . '/replicationcontrollers' : '/api/v1/replicationcontrollers'
);
return $response;
}
sub kubernetes_list_replicasets {
my ($self, %options) = @_;
my $response = $self->request_api_paginate(method => 'GET', url_path => '/apis/apps/v1/replicasets');
my $response = $self->request_api_paginate(
method => 'GET',
url_path => $self->{namespace} ne '' ? '/apis/apps/v1/namespaces/' . $self->{namespace} . '/replicasets' : '/apis/apps/v1/replicasets'
);
return $response;
}
sub kubernetes_list_services {
my ($self, %options) = @_;
my $response = $self->request_api_paginate(method => 'GET', url_path => '/apis/v1/services');
my $response = $self->request_api_paginate(
method => 'GET',
url_path => $self->{namespace} ne '' ? '/api/v1/namespaces/' . $self->{namespace} . '/services' : '/api/v1/services'
);
return $response;
}
sub kubernetes_list_statefulsets {
my ($self, %options) = @_;
my $response = $self->request_api_paginate(method => 'GET', url_path => '/apis/apps/v1/statefulsets');
my $response = $self->request_api_paginate(
method => 'GET',
url_path => $self->{namespace} ne '' ? '/apis/apps/v1/namespaces/' . $self->{namespace} . '/statefulsets' : '/apis/apps/v1/statefulsets'
);
return $response;
}
sub kubernetes_list_pods {
my ($self, %options) = @_;
my $response = $self->request_api_paginate(method => 'GET', url_path => '/api/v1/pods');
my $response = $self->request_api_paginate(
method => 'GET',
url_path => $self->{namespace} ne '' ? '/api/v1/namespaces/' . $self->{namespace} . '/pods' : '/api/v1/pods'
);
return $response;
}
sub kubernetes_list_pvs {
my ($self, %options) = @_;
my $response = $self->request_api_paginate(method => 'GET', url_path => '/api/v1/persistentvolumes');
my $response = $self->request_api_paginate(
method => 'GET',
url_path => '/api/v1/persistentvolumes'
);
return $response;
}
@ -325,6 +367,10 @@ Number of responses to return for each list calls.
See https://kubernetes.io/docs/reference/kubernetes-api/common-parameters/common-parameters/#limit
=item B<--namespace>
Set namespace to get informations.
=back
=head1 DESCRIPTION

View File

@ -48,6 +48,7 @@ sub new {
'timeout:s' => { name => 'timeout', default => 10 },
'config-file:s' => { name => 'config_file', default => '~/.kube/config' },
'context:s' => { name => 'context' },
'namespace:s' => { name => 'namespace' },
'sudo' => { name => 'sudo' },
'command:s' => { name => 'command', default => '' },
'command-path:s' => { name => 'command_path' },
@ -76,6 +77,8 @@ sub check_options {
$self->{config_file} = (defined($self->{option_results}->{config_file})) ? $self->{option_results}->{config_file} : '';
$self->{context} = (defined($self->{option_results}->{context})) ? $self->{option_results}->{context} : '';
$self->{timeout} = (defined($self->{option_results}->{timeout})) && $self->{option_results}->{timeout} =~ /(\d+)/ ? $1 : 10;
$self->{namespace_option} = defined($self->{option_results}->{namespace}) && $self->{option_results}->{namespace} ne '' ?
"--namespace='$self->{option_results}->{namespace}'" : '--all-namespaces';
if (!defined($self->{config_file}) || $self->{config_file} eq '') {
$self->{output}->add_option_msg(short_msg => "Need to specify --config-file option.");
@ -155,7 +158,7 @@ sub execute {
sub kubernetes_list_cronjobs {
my ($self, %options) = @_;
my $cmd = "get cronjobs --all-namespaces --output='json' --kubeconfig='" . $self->{config_file} . "'"
my $cmd = "get cronjobs $self->{namespace_option} --output='json' --kubeconfig='" . $self->{config_file} . "'"
. " --request-timeout='" . $self->{timeout} . "'";
$cmd .= " --context='" . $self->{context} . "'" if (defined($self->{context}) && $self->{context} ne '');
@ -167,7 +170,7 @@ sub kubernetes_list_cronjobs {
sub kubernetes_list_daemonsets {
my ($self, %options) = @_;
my $cmd = "get daemonsets --all-namespaces --output='json' --kubeconfig='" . $self->{config_file} . "'"
my $cmd = "get daemonsets $self->{namespace_option} --output='json' --kubeconfig='" . $self->{config_file} . "'"
. " --request-timeout='" . $self->{timeout} . "'";
$cmd .= " --context='" . $self->{context} . "'" if (defined($self->{context}) && $self->{context} ne '');
@ -179,7 +182,7 @@ sub kubernetes_list_daemonsets {
sub kubernetes_list_deployments {
my ($self, %options) = @_;
my $cmd = "get deployments --all-namespaces --output='json' --kubeconfig='" . $self->{config_file} . "'"
my $cmd = "get deployments $self->{namespace_option} --output='json' --kubeconfig='" . $self->{config_file} . "'"
. " --request-timeout='" . $self->{timeout} . "'";
$cmd .= " --context='" . $self->{context} . "'" if (defined($self->{context}) && $self->{context} ne '');
@ -191,7 +194,7 @@ sub kubernetes_list_deployments {
sub kubernetes_list_events {
my ($self, %options) = @_;
my $cmd = "get events --all-namespaces --output='json' --kubeconfig='" . $self->{config_file} . "'"
my $cmd = "get events $self->{namespace_option} --output='json' --kubeconfig='" . $self->{config_file} . "'"
. " --request-timeout='" . $self->{timeout} . "'";
$cmd .= " --context='" . $self->{context} . "'" if (defined($self->{context}) && $self->{context} ne '');
@ -203,7 +206,7 @@ sub kubernetes_list_events {
sub kubernetes_list_ingresses {
my ($self, %options) = @_;
my $cmd = "get ingresses --all-namespaces --output='json' --kubeconfig='" . $self->{config_file} . "'"
my $cmd = "get ingresses $self->{namespace_option} --output='json' --kubeconfig='" . $self->{config_file} . "'"
. " --request-timeout='" . $self->{timeout} . "'";
$cmd .= " --context='" . $self->{context} . "'" if (defined($self->{context}) && $self->{context} ne '');
@ -227,7 +230,7 @@ sub kubernetes_list_namespaces {
sub kubernetes_list_nodes {
my ($self, %options) = @_;
my $cmd = "get nodes --all-namespaces --output='json' --kubeconfig='" . $self->{config_file} . "'"
my $cmd = "get nodes $self->{namespace_option} --output='json' --kubeconfig='" . $self->{config_file} . "'"
. " --request-timeout='" . $self->{timeout} . "'";
$cmd .= " --context='" . $self->{context} . "'" if (defined($self->{context}) && $self->{context} ne '');
@ -239,7 +242,7 @@ sub kubernetes_list_nodes {
sub kubernetes_list_rcs {
my ($self, %options) = @_;
my $cmd = "get replicationcontroller --all-namespaces --output='json' --kubeconfig='" . $self->{config_file} . "'"
my $cmd = "get replicationcontroller $self->{namespace_option} --output='json' --kubeconfig='" . $self->{config_file} . "'"
. " --request-timeout='" . $self->{timeout} . "'";
$cmd .= " --context='" . $self->{context} . "'" if (defined($self->{context}) && $self->{context} ne '');
@ -251,7 +254,7 @@ sub kubernetes_list_rcs {
sub kubernetes_list_replicasets {
my ($self, %options) = @_;
my $cmd = "get replicasets --all-namespaces --output='json' --kubeconfig='" . $self->{config_file} . "'"
my $cmd = "get replicasets $self->{namespace_option} --output='json' --kubeconfig='" . $self->{config_file} . "'"
. " --request-timeout='" . $self->{timeout} . "'";
$cmd .= " --context='" . $self->{context} . "'" if (defined($self->{context}) && $self->{context} ne '');
@ -263,7 +266,7 @@ sub kubernetes_list_replicasets {
sub kubernetes_list_services {
my ($self, %options) = @_;
my $cmd = "get services --all-namespaces --output='json' --kubeconfig='" . $self->{config_file} . "'"
my $cmd = "get services $self->{namespace_option} --output='json' --kubeconfig='" . $self->{config_file} . "'"
. " --request-timeout='" . $self->{timeout} . "'";
$cmd .= " --context='" . $self->{context} . "'" if (defined($self->{context}) && $self->{context} ne '');
@ -275,7 +278,7 @@ sub kubernetes_list_services {
sub kubernetes_list_statefulsets {
my ($self, %options) = @_;
my $cmd = "get statefulsets --all-namespaces --output='json' --kubeconfig='" . $self->{config_file} . "'"
my $cmd = "get statefulsets $self->{namespace_option} --output='json' --kubeconfig='" . $self->{config_file} . "'"
. " --request-timeout='" . $self->{timeout} . "'";
$cmd .= " --context='" . $self->{context} . "'" if (defined($self->{context}) && $self->{context} ne '');
@ -287,7 +290,7 @@ sub kubernetes_list_statefulsets {
sub kubernetes_list_pods {
my ($self, %options) = @_;
my $cmd = "get pods --all-namespaces --output='json' --kubeconfig='" . $self->{config_file} . "'"
my $cmd = "get pods $self->{namespace_option} --output='json' --kubeconfig='" . $self->{config_file} . "'"
. " --request-timeout='" . $self->{timeout} . "'";
$cmd .= " --context='" . $self->{context} . "'" if (defined($self->{context}) && $self->{context} ne '');
@ -299,7 +302,7 @@ sub kubernetes_list_pods {
sub kubernetes_list_pvs {
my ($self, %options) = @_;
my $cmd = "get pv --all-namespaces --output='json' --kubeconfig='" . $self->{config_file} . "'"
my $cmd = "get pv $self->{namespace_option} --output='json' --kubeconfig='" . $self->{config_file} . "'"
. " --request-timeout='" . $self->{timeout} . "'";
$cmd .= " --context='" . $self->{context} . "'" if (defined($self->{context}) && $self->{context} ne '');
@ -335,6 +338,10 @@ Kubernetes configuration file path (Default: '~/.kube/config').
Context to use in configuration file.
=item B<--namespace>
Set namespace to get informations.
=item B<--timeout>
Set timeout in seconds (Default: 10).

View File

@ -100,20 +100,20 @@ sub set_counters {
$self->{maps_counters}->{global} = [
{ label => 'warning', nlabel => 'events.type.warning.count', set => {
key_values => [ { name => 'warning' } ],
output_template => 'Warning : %d',
output_template => 'warning: %d',
perfdatas => [
{ label => 'warning_events', template => '%d', min => 0 }
{ template => '%d', min => 0 }
]
}
},
{ label => 'normal', nlabel => 'events.type.normal.count', set => {
key_values => [ { name => 'normal' } ],
output_template => 'Normal : %d',
output_template => 'normal: %d',
perfdatas => [
{ label => 'normal_events', template => '%d', min => 0 }
{ template => '%d', min => 0 }
]
}
},
}
];
$self->{maps_counters}->{events} = [
@ -140,31 +140,22 @@ sub new {
my ($class, %options) = @_;
my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1);
bless $self, $class;
$options{options}->add_options(arguments => {
"filter-type:s" => { name => 'filter_type' },
"filter-namespace:s" => { name => 'filter_namespace' },
'filter-type:s' => { name => 'filter_type' },
'filter-namespace:s' => { name => 'filter_namespace' }
});
return $self;
}
sub check_options {
my ($self, %options) = @_;
$self->SUPER::check_options(%options);
$self->change_macros(macros => ['warning_status', 'critical_status']);
}
sub manage_selection {
my ($self, %options) = @_;
$self->{events} = {};
my $results = $options{custom}->kubernetes_list_events();
$self->{global} = { normal => 0, warning => 0 };
$self->{events} = {};
foreach my $event (@{$results}) {
if (defined($self->{option_results}->{filter_type}) && $self->{option_results}->{filter_type} ne '' &&
$event->{type} !~ /$self->{option_results}->{filter_type}/) {
@ -178,7 +169,7 @@ sub manage_selection {
}
$self->{global}->{lc($event->{type})}++;
$self->{events}->{$event->{metadata}->{uid}} = {
name => $event->{metadata}->{name},
namespace => $event->{metadata}->{namespace},

View File

@ -90,7 +90,8 @@ sub set_counters {
{ label => 'status', type => 2, set => {
key_values => [
{ name => 'active' }, { name => 'last_schedule_time' }, { name => 'name' },
{ name => 'namespace' } ],
{ name => 'namespace' }
],
closure_custom_calc => $self->can('custom_status_calc'),
closure_custom_output => $self->can('custom_status_output'),
closure_custom_perfdata => $self->can('custom_status_perfdata'),

View File

@ -18,7 +18,7 @@
# limitations under the License.
#
package cloud::kubernetes::mode::discoverynodes;
package cloud::kubernetes::mode::discovery;
use base qw(centreon::plugins::mode);
@ -31,7 +31,8 @@ sub new {
bless $self, $class;
$options{options}->add_options(arguments => {
"prettify" => { name => 'prettify' },
'resource-type:s' => { name => 'resource_type' },
'prettify' => { name => 'prettify' }
});
return $self;
@ -40,6 +41,60 @@ sub new {
sub check_options {
my ($self, %options) = @_;
$self->SUPER::init(%options);
if ($self->{option_results}->{resource_type} !~ /^node|namespace$/) {
$self->{output}->add_option_msg(short_msg => 'unknown resource type');
$self->{output}->option_exit();
}
}
sub discovery_node {
my ($self, %options) = @_;
my $nodes = $options{custom}->kubernetes_list_nodes();
my $disco_data = [];
foreach my $node (@$nodes) {
my %entry;
$entry{name} = $node->{metadata}->{name};
$entry{uid} = $node->{metadata}->{uid};
$entry{os_image} = $node->{status}->{nodeInfo}->{osImage};
$entry{kubelet_version} = $node->{status}->{nodeInfo}->{kubeletVersion};
if (defined($node->{metadata}->{labels}->{'node-role.kubernetes.io/control-plane'})) {
$entry{node_role} = "control-plane";
} elsif (defined($node->{metadata}->{labels}->{'node-role.kubernetes.io/master'})) {
$entry{node_role} = "master";
} else {
$entry{node_role} = "worker";
}
foreach my $address (@{$node->{status}->{addresses}}) {
$entry{internal_ip} = $address->{address} if ($address->{type} eq "InternalIP");
$entry{external_ip} = $address->{address} if ($address->{type} eq "ExternalIP");
$entry{hostname} = $address->{address} if ($address->{type} eq "Hostname");
}
push @$disco_data, \%entry;
}
return $disco_data;
}
sub discovery_namespace {
my ($self, %options) = @_;
my $namespaces = $options{custom}->kubernetes_list_namespaces();
my $disco_data = [];
foreach my $namespace (@$namespaces) {
my %entry;
$entry{name} = $namespace->{metadata}->{name};
$entry{uid} = $namespace->{metadata}->{uid};
push @$disco_data, \%entry;
}
return $disco_data;
}
sub run {
@ -50,35 +105,21 @@ sub run {
$disco_stats->{start_time} = time();
my $nodes = $options{custom}->kubernetes_list_nodes();
foreach my $node (@{$nodes}) {
my %node;
$node{name} = $node->{metadata}->{name};
$node{uid} = $node->{metadata}->{uid};
$node{os_image} = $node->{status}->{nodeInfo}->{osImage};
$node{kubelet_version} = $node->{status}->{nodeInfo}->{kubeletVersion};
if (defined($node->{metadata}->{labels}->{'node-role.kubernetes.io/control-plane'})) {
$node{node_role} = "control-plane";
} elsif (defined($node->{metadata}->{labels}->{'node-role.kubernetes.io/master'})) {
$node{node_role} = "master";
} else {
$node{node_role} = "worker";
}
foreach my $address (@{$node->{status}->{addresses}}) {
$node{internal_ip} = $address->{address} if ($address->{type} eq "InternalIP");
$node{external_ip} = $address->{address} if ($address->{type} eq "ExternalIP");
$node{hostname} = $address->{address} if ($address->{type} eq "Hostname");
}
push @disco_data, \%node;
my $results = [];
if ($self->{option_results}->{resource_type} eq 'node') {
$results = $self->discovery_node(
custom => $options{custom}
);
} elsif ($self->{option_results}->{resource_type} eq 'namespace') {
$results = $self->discovery_namespace(
custom => $options{custom}
);
}
$disco_stats->{end_time} = time();
$disco_stats->{duration} = $disco_stats->{end_time} - $disco_stats->{start_time};
$disco_stats->{discovered_items} = @disco_data;
$disco_stats->{results} = \@disco_data;
$disco_stats->{discovered_items} = scalar(@$results);
$disco_stats->{results} = $results;
my $encoded_data;
eval {
@ -91,7 +132,7 @@ sub run {
if ($@) {
$encoded_data = '{"code":"encode_error","message":"Cannot encode discovered data into JSON format"}';
}
$self->{output}->output_add(short_msg => $encoded_data);
$self->{output}->display(nolabel => 1, force_ignore_perfdata => 1);
$self->{output}->exit();
@ -107,6 +148,10 @@ Nodes discovery.
=over 8
=item B<--resource-type>
Choose the type of resources to discover (Can be: 'node', 'namespace').
=item B<--prettify>
Prettify JSON output.

View File

@ -31,8 +31,8 @@ sub new {
bless $self, $class;
$options{options}->add_options(arguments => {
"filter-name:s" => { name => 'filter_name' },
"filter-namespace:s" => { name => 'filter_namespace' },
'filter-name:s' => { name => 'filter_name' },
'filter-namespace:s' => { name => 'filter_namespace' }
});
return $self;
@ -63,7 +63,7 @@ sub manage_selection {
$self->{deployments}->{$deployment->{metadata}->{uid}} = {
uid => $deployment->{metadata}->{uid},
name => $deployment->{metadata}->{name},
namespace => $deployment->{metadata}->{namespace},
namespace => $deployment->{metadata}->{namespace}
}
}
}
@ -73,14 +73,20 @@ sub run {
$self->manage_selection(%options);
foreach my $deployment (sort keys %{$self->{deployments}}) {
$self->{output}->output_add(long_msg => sprintf("[uid = %s] [name = %s] [namespace = %s]",
$self->{deployments}->{$deployment}->{uid},
$self->{deployments}->{$deployment}->{name},
$self->{deployments}->{$deployment}->{namespace}));
$self->{output}->output_add(
long_msg => sprintf(
'[uid: %s] [name: %s] [namespace: %s]',
$self->{deployments}->{$deployment}->{uid},
$self->{deployments}->{$deployment}->{name},
$self->{deployments}->{$deployment}->{namespace}
)
);
}
$self->{output}->output_add(severity => 'OK',
short_msg => 'List deployments:');
$self->{output}->output_add(
severity => 'OK',
short_msg => 'List deployments:'
);
$self->{output}->display(nolabel => 1, force_ignore_perfdata => 1, force_long_output => 1);
$self->{output}->exit();
}
@ -99,7 +105,7 @@ sub disco_show {
$self->{output}->add_disco_entry(
uid => $self->{deployments}->{$deployment}->{uid},
name => $self->{deployments}->{$deployment}->{name},
namespace => $self->{deployments}->{$deployment}->{namespace},
namespace => $self->{deployments}->{$deployment}->{namespace}
);
}
}

View File

@ -73,14 +73,20 @@ sub run {
$self->manage_selection(%options);
foreach my $ingress (sort keys %{$self->{ingresses}}) {
$self->{output}->output_add(long_msg => sprintf("[uid = %s] [name = %s] [namespace = %s]",
$self->{ingresses}->{$ingress}->{uid},
$self->{ingresses}->{$ingress}->{name},
$self->{ingresses}->{$ingress}->{namespace}));
$self->{output}->output_add(
long_msg => sprintf(
'[uid: %s] [name: %s] [namespace: %s]',
$self->{ingresses}->{$ingress}->{uid},
$self->{ingresses}->{$ingress}->{name},
$self->{ingresses}->{$ingress}->{namespace}
)
);
}
$self->{output}->output_add(severity => 'OK',
short_msg => 'List ingresses:');
$self->{output}->output_add(
severity => 'OK',
short_msg => 'List ingresses:'
);
$self->{output}->display(nolabel => 1, force_ignore_perfdata => 1, force_long_output => 1);
$self->{output}->exit();
}
@ -99,7 +105,7 @@ sub disco_show {
$self->{output}->add_disco_entry(
uid => $self->{ingresses}->{$ingress}->{uid},
name => $self->{ingresses}->{$ingress}->{name},
namespace => $self->{ingresses}->{$ingress}->{namespace},
namespace => $self->{ingresses}->{$ingress}->{namespace}
);
}
}

View File

@ -54,9 +54,9 @@ sub manage_selection {
next;
}
$self->{namespaces}->{$namespace->{metadata}->{uid}} = {
$self->{namespaces}->{ $namespace->{metadata}->{uid} } = {
uid => $namespace->{metadata}->{uid},
name => $namespace->{metadata}->{name},
name => $namespace->{metadata}->{name}
}
}
}
@ -66,13 +66,19 @@ sub run {
$self->manage_selection(%options);
foreach my $namespace (sort keys %{$self->{namespaces}}) {
$self->{output}->output_add(long_msg => sprintf("[uid = %s] [name = %s]",
$self->{namespaces}->{$namespace}->{uid},
$self->{namespaces}->{$namespace}->{name}));
$self->{output}->output_add(
long_msg => sprintf(
'[uid: %s] [name: %s]',
$self->{namespaces}->{$namespace}->{uid},
$self->{namespaces}->{$namespace}->{name}
)
);
}
$self->{output}->output_add(severity => 'OK',
short_msg => 'List namespaces:');
$self->{output}->output_add(
severity => 'OK',
short_msg => 'List namespaces:'
);
$self->{output}->display(nolabel => 1, force_ignore_perfdata => 1, force_long_output => 1);
$self->{output}->exit();
}
@ -90,7 +96,7 @@ sub disco_show {
foreach my $namespace (sort keys %{$self->{namespaces}}) {
$self->{output}->add_disco_entry(
uid => $self->{namespaces}->{$namespace}->{uid},
name => $self->{namespaces}->{$namespace}->{name},
name => $self->{namespaces}->{$namespace}->{name}
);
}
}

View File

@ -29,13 +29,12 @@ sub new {
my $self = $class->SUPER::new(package => __PACKAGE__, %options);
bless $self, $class;
$self->{version} = '1.0';
%{$self->{modes}} = (
$self->{modes} = {
'cluster-events' => 'cloud::kubernetes::mode::clusterevents',
'cronjob-status' => 'cloud::kubernetes::mode::cronjobstatus',
'daemonset-status' => 'cloud::kubernetes::mode::daemonsetstatus',
'deployment-status' => 'cloud::kubernetes::mode::deploymentstatus',
'discovery-nodes' => 'cloud::kubernetes::mode::discoverynodes',
'discovery' => 'cloud::kubernetes::mode::discovery',
'list-cronjobs' => 'cloud::kubernetes::mode::listcronjobs',
'list-daemonsets' => 'cloud::kubernetes::mode::listdaemonsets',
'list-deployments' => 'cloud::kubernetes::mode::listdeployments',
@ -54,11 +53,11 @@ sub new {
'pod-status' => 'cloud::kubernetes::mode::podstatus',
'replicaset-status' => 'cloud::kubernetes::mode::replicasetstatus',
'replicationcontroller-status' => 'cloud::kubernetes::mode::replicationcontrollerstatus',
'statefulset-status' => 'cloud::kubernetes::mode::statefulsetstatus',
);
'statefulset-status' => 'cloud::kubernetes::mode::statefulsetstatus'
};
$self->{custom_modes}{api} = 'cloud::kubernetes::custom::api';
$self->{custom_modes}{kubectl} = 'cloud::kubernetes::custom::kubectl';
$self->{custom_modes}->{api} = 'cloud::kubernetes::custom::api';
$self->{custom_modes}->{kubectl} = 'cloud::kubernetes::custom::kubectl';
return $self;
}