Class: JobInvocationsController
- Inherits:
-
ApplicationController
- Object
- ApplicationController
- JobInvocationsController
show all
- Includes:
- Foreman::Controller::AutoCompleteSearch, ForemanTasks::Concerns::Parameters::Triggering, JobInvocationsChartHelper
- Defined in:
- app/controllers/job_invocations_controller.rb
Instance Method Summary
collapse
#job_invocation_cancelled_status, #job_invocation_chart, #job_invocation_data, #job_invocation_failed_status, #job_invocation_pending_status, #job_invocation_status, #job_invocation_success_status, #task_cancelled?, #task_failed?
Instance Method Details
#cancel ⇒ Object
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
# File 'app/controllers/job_invocations_controller.rb', line 113
def cancel
@job_invocation = resource_base.find(params[:id])
result = @job_invocation.cancel(params[:force])
if result
flash[:info] = if params[:force]
_('Trying to abort the job')
else
_('Trying to cancel the job')
end
else
flash[:warning] = if params[:force]
_('The job cannot be aborted at the moment.')
else
_('The job cannot be cancelled at the moment.')
end
end
redirect_back(:fallback_location => job_invocation_path(@job_invocation))
end
|
#chart ⇒ Object
88
89
90
91
92
93
94
95
96
97
98
99
100
|
# File 'app/controllers/job_invocations_controller.rb', line 88
def chart
find_resource
render :json => {
:finished => @job_invocation.finished?,
:job_invocations => job_invocation_data(@job_invocation)[:columns],
:statuses => {
:success => @job_invocation.progress_report[:success],
:cancelled => @job_invocation.progress_report[:cancelled],
:failed => @job_invocation.progress_report[:error],
:pending => @job_invocation.progress_report[:pending],
},
}
end
|
#create ⇒ Object
53
54
55
56
57
58
59
60
|
# File 'app/controllers/job_invocations_controller.rb', line 53
def create
@composer = prepare_composer
if @composer.trigger
redirect_to job_invocation_path(@composer.job_invocation)
else
redirect_to new_job_invocation_path({:inputs => params[:inputs], :feature => params[:feature], :host_ids => params[:host_ids]})
end
end
|
#index ⇒ Object
78
79
80
|
# File 'app/controllers/job_invocations_controller.rb', line 78
def index
@job_invocations = resource_base_search_and_page.preload(:task, :targeting).order('job_invocations.id DESC')
end
|
#legacy_create ⇒ Object
43
44
45
46
47
48
49
50
51
|
# File 'app/controllers/job_invocations_controller.rb', line 43
def legacy_create
@composer = prepare_composer
if @composer.trigger
redirect_to job_invocation_path(@composer.job_invocation)
else
@composer.job_invocation.description_format = nil if params.fetch(:job_invocation, {}).key?(:description_override)
render :action => 'new'
end
end
|
#new ⇒ Object
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'app/controllers/job_invocations_controller.rb', line 6
def new
return @composer = prepare_composer if params[:feature].present?
ui_params = {
:host_ids => params[:host_ids],
:targeting => {
:targeting_type => Targeting::STATIC_TYPE,
:bookmark_id => params[:bookmark_id],
},
}
if params.key?(:search)
query = params[:search].empty? ? "name != ''" : params[:search]
ui_params[:targeting].update(:search_query => query)
end
if (template = JobTemplate.find_by(id: params[:template_id]))
ui_params[:job_invocation] = {
:job_category => template.job_category,
:providers => {
template.provider_type => {:job_template_id => template.id},
},
}
end
@composer = JobInvocationComposer.from_ui_params(ui_params)
end
|
#preview_hosts ⇒ Object
102
103
104
105
106
107
108
109
110
111
|
# File 'app/controllers/job_invocations_controller.rb', line 102
def preview_hosts
composer = prepare_composer
@hosts = composer.targeted_hosts.limit(Setting[:entries_per_page])
@additional = composer.targeted_hosts.count - Setting[:entries_per_page]
@dynamic = composer.targeting.dynamic?
@query = composer.displayed_search_query
render :partial => 'job_invocations/preview_hosts_list'
end
|
#preview_job_invocations_per_host ⇒ Object
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
# File 'app/controllers/job_invocations_controller.rb', line 133
def preview_job_invocations_per_host
job_invocations = resource_base.search_for("targeted_host_id = #{params[:host_id]} and (status=#{params[:status]})").limit(params[:limit] || 3)
job_invocations = job_invocations.map do |job|
@job_invocation = job
template_invocation = job.template_invocations.find { |template_inv| template_inv.host_id == params[:host_id].to_i }
task = template_invocation.try(:run_host_job_task)
status_mapper = task ? HostStatus::ExecutionStatus::ExecutionTaskStatusMapper.new(task) : job
{
start_at: job.start_at,
description: job.description,
id: job.id,
status: status_mapper.status,
status_label: status_mapper.status_label,
}
end
render :json => {:job_invocations => job_invocations}
end
|
#refresh ⇒ Object
83
84
85
86
|
# File 'app/controllers/job_invocations_controller.rb', line 83
def refresh
params[:job_invocation].delete :description_format if params[:job_invocation].key?(:description_override)
@composer = prepare_composer
end
|
#rerun ⇒ Object
35
36
37
38
39
40
41
|
# File 'app/controllers/job_invocations_controller.rb', line 35
def rerun
job_invocation = resource_base.find(params[:id])
@composer = JobInvocationComposer.from_job_invocation(job_invocation, params)
@job_organization = Taxonomy.find_by(id: job_invocation.task.input[:current_organization_id])
@job_location = Taxonomy.find_by(id: job_invocation.task.input[:current_location_id])
render :action => 'new'
end
|
#show ⇒ Object
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
# File 'app/controllers/job_invocations_controller.rb', line 62
def show
@job_invocation = resource_base.includes(:template_invocations => :run_host_job_task).find(params[:id])
@job_organization = Taxonomy.find_by(id: @job_invocation.task.input[:current_organization_id])
@job_location = Taxonomy.find_by(id: @job_invocation.task.input[:current_location_id])
@auto_refresh = @job_invocation.task.try(:pending?)
respond_to do |format|
format.json do
targeting_hosts_resources
end
format.html
format.js
end
end
|