[CTOR-96] Rubrik - Enhance jobs and cache modes (#4797)
This commit is contained in:
parent
6f5505e103
commit
0cd1b1e788
|
@ -404,7 +404,7 @@ sub get_cache_file_response {
|
||||||
sub cache_jobs_monitoring {
|
sub cache_jobs_monitoring {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
my $datas = $self->get_jobs_monitoring(disable_cache => 1, limit => $options{limit});
|
my $datas = $self->get_jobs_monitoring(disable_cache => 1, get_param => $options{get_param});
|
||||||
$self->write_cache_file(
|
$self->write_cache_file(
|
||||||
statefile => 'jobs_monitoring',
|
statefile => 'jobs_monitoring',
|
||||||
response => $datas
|
response => $datas
|
||||||
|
@ -422,7 +422,7 @@ sub get_jobs_monitoring {
|
||||||
return $self->request_api(
|
return $self->request_api(
|
||||||
endpoint => '/api/v1/job_monitoring',
|
endpoint => '/api/v1/job_monitoring',
|
||||||
label => 'jobMonitoringInfoList',
|
label => 'jobMonitoringInfoList',
|
||||||
get_param => ['limit=' . $options{limit}]
|
get_param => $options{get_param}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,6 +31,7 @@ sub new {
|
||||||
bless $self, $class;
|
bless $self, $class;
|
||||||
|
|
||||||
$options{options}->add_options(arguments => {
|
$options{options}->add_options(arguments => {
|
||||||
|
'filter-job-type:s' => { name => 'filter_job_type' },
|
||||||
'limit:s' => { name => 'limit' }
|
'limit:s' => { name => 'limit' }
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -49,7 +50,12 @@ sub check_options {
|
||||||
sub manage_selection {
|
sub manage_selection {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
$options{custom}->cache_jobs_monitoring(limit => $self->{option_results}->{limit});
|
my $get_param = [ 'limit=' . $self->{option_results}->{limit} ];
|
||||||
|
if (defined($self->{option_results}->{filter_job_type}) && $self->{option_results}->{filter_job_type} ne '') {
|
||||||
|
push @{$get_param}, 'job_type=' . $self->{option_results}->{filter_job_type};
|
||||||
|
}
|
||||||
|
|
||||||
|
$options{custom}->cache_jobs_monitoring(get_param => $get_param);
|
||||||
|
|
||||||
$self->{output}->output_add(
|
$self->{output}->output_add(
|
||||||
severity => 'OK',
|
severity => 'OK',
|
||||||
|
@ -67,6 +73,10 @@ Create cache files (job mode could use it with --cache-use option).
|
||||||
|
|
||||||
=over 8
|
=over 8
|
||||||
|
|
||||||
|
=item B<--filter-job-type>
|
||||||
|
|
||||||
|
Filter jobs by job type.
|
||||||
|
|
||||||
=item B<--limit>
|
=item B<--limit>
|
||||||
|
|
||||||
Define the number of entries to retrieve for the pagination (default: 500).
|
Define the number of entries to retrieve for the pagination (default: 500).
|
||||||
|
|
|
@ -92,9 +92,11 @@ sub job_long_output {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
return sprintf(
|
return sprintf(
|
||||||
"checking job '%s' [type: %s]",
|
"checking job '%s' [type: %s] [object type: %s] [location name: %s]",
|
||||||
$options{instance_value}->{name},
|
$options{instance_value}->{name},
|
||||||
$options{instance_value}->{jobType}
|
$options{instance_value}->{jobType},
|
||||||
|
$options{instance_value}->{objectType},
|
||||||
|
$options{instance_value}->{locationName}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -217,6 +219,7 @@ sub new {
|
||||||
'filter-job-name:s' => { name => 'filter_job_name' },
|
'filter-job-name:s' => { name => 'filter_job_name' },
|
||||||
'filter-job-type:s' => { name => 'filter_job_type' },
|
'filter-job-type:s' => { name => 'filter_job_type' },
|
||||||
'filter-location-name:s' => { name => 'filter_location_name' },
|
'filter-location-name:s' => { name => 'filter_location_name' },
|
||||||
|
'filter-object-type:s' => { name => 'filter_object_type' },
|
||||||
'unit:s' => { name => 'unit', default => 's' },
|
'unit:s' => { name => 'unit', default => 's' },
|
||||||
'limit:s' => { name => 'limit' }
|
'limit:s' => { name => 'limit' }
|
||||||
});
|
});
|
||||||
|
@ -244,14 +247,15 @@ sub check_options {
|
||||||
sub manage_selection {
|
sub manage_selection {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
my $jobs_exec = $options{custom}->get_jobs_monitoring(limit => $self->{option_results}->{limit});
|
my $jobs_exec = $options{custom}->get_jobs_monitoring(get_param => [ 'limit=' . $self->{option_results}->{limit} ]);
|
||||||
|
|
||||||
$self->{cache_exec}->read(statefile => 'rubrik_' . $self->{mode} . '_' .
|
$self->{cache_exec}->read(statefile => 'rubrik_' . $self->{mode} . '_' .
|
||||||
Digest::MD5::md5_hex(
|
Digest::MD5::md5_hex(
|
||||||
$options{custom}->get_connection_info() . '_' .
|
$options{custom}->get_connection_info() . '_' .
|
||||||
(defined($self->{option_results}->{filter_job_id}) ? $self->{option_results}->{filter_job_id} : '') . '_' .
|
(defined($self->{option_results}->{filter_job_id}) ? $self->{option_results}->{filter_job_id} : '') . '_' .
|
||||||
(defined($self->{option_results}->{filter_job_name}) ? $self->{option_results}->{filter_job_name} : '') . '_' .
|
(defined($self->{option_results}->{filter_job_name}) ? $self->{option_results}->{filter_job_name} : '') . '_' .
|
||||||
(defined($self->{option_results}->{filter_job_type}) ? $self->{option_results}->{filter_job_type} : '')
|
(defined($self->{option_results}->{filter_job_type}) ? $self->{option_results}->{filter_job_type} : '') . '_' .
|
||||||
|
(defined($self->{option_results}->{filter_object_type}) ? $self->{option_results}->{filter_object_type} : '')
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
my $ctime = time();
|
my $ctime = time();
|
||||||
|
@ -267,6 +271,8 @@ sub manage_selection {
|
||||||
$job_exec->{objectName} !~ /$self->{option_results}->{filter_job_name}/);
|
$job_exec->{objectName} !~ /$self->{option_results}->{filter_job_name}/);
|
||||||
next if (defined($self->{option_results}->{filter_job_type}) && $self->{option_results}->{filter_job_type} ne '' &&
|
next if (defined($self->{option_results}->{filter_job_type}) && $self->{option_results}->{filter_job_type} ne '' &&
|
||||||
$job_exec->{jobType} !~ /$self->{option_results}->{filter_job_type}/i);
|
$job_exec->{jobType} !~ /$self->{option_results}->{filter_job_type}/i);
|
||||||
|
next if (defined($self->{option_results}->{filter_object_type}) && $self->{option_results}->{filter_object_type} ne '' &&
|
||||||
|
$job_exec->{objectType} !~ /$self->{option_results}->{filter_object_type}/i);
|
||||||
next if (defined($self->{option_results}->{filter_location_name}) && $self->{option_results}->{filter_location_name} ne '' &&
|
next if (defined($self->{option_results}->{filter_location_name}) && $self->{option_results}->{filter_location_name} ne '' &&
|
||||||
$job_exec->{locationName} !~ /$self->{option_results}->{filter_location_name}/);
|
$job_exec->{locationName} !~ /$self->{option_results}->{filter_location_name}/);
|
||||||
|
|
||||||
|
@ -276,6 +282,8 @@ sub manage_selection {
|
||||||
$self->{jobs}->{ $job_exec->{objectId} } = {
|
$self->{jobs}->{ $job_exec->{objectId} } = {
|
||||||
name => $job_exec->{objectName},
|
name => $job_exec->{objectName},
|
||||||
jobType => $job_exec->{jobType},
|
jobType => $job_exec->{jobType},
|
||||||
|
objectType => $job_exec->{objectType},
|
||||||
|
locationName => $job_exec->{locationName},
|
||||||
timers => {},
|
timers => {},
|
||||||
executions => {}
|
executions => {}
|
||||||
};
|
};
|
||||||
|
@ -289,7 +297,8 @@ sub manage_selection {
|
||||||
if (!defined($_->{endTime}) && $_->{jobStatus} =~ /Active/i) {
|
if (!defined($_->{endTime}) && $_->{jobStatus} =~ /Active/i) {
|
||||||
$older_running_exec = $_;
|
$older_running_exec = $_;
|
||||||
}
|
}
|
||||||
if (!defined($last_exec) && $_->{jobStatus} !~ /Scheduled/i) {
|
|
||||||
|
if ($_->{jobStatus} !~ /Scheduled|Canceled|Canceling|CancelingScheduled/i) {
|
||||||
$last_exec = $_;
|
$last_exec = $_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -382,6 +391,10 @@ Filter jobs by job name.
|
||||||
|
|
||||||
Filter jobs by job type.
|
Filter jobs by job type.
|
||||||
|
|
||||||
|
=item B<--filter-object-type>
|
||||||
|
|
||||||
|
Filter jobs by object type.
|
||||||
|
|
||||||
=item B<--filter-location-name>
|
=item B<--filter-location-name>
|
||||||
|
|
||||||
Filter jobs by location name.
|
Filter jobs by location name.
|
||||||
|
|
Loading…
Reference in New Issue