Module: RemoteExecutionHelper
- Defined in:
- app/helpers/remote_execution_helper.rb
Overview
rubocop:disable Metrics/ModuleLength
Instance Method Summary collapse
- #advanced_switch_f(default_text, switch_text) ⇒ Object
- #description_checkbox_f(f, job_template, disabled) ⇒ Object
- #description_format_textarea_f(f, job_template, disabled) ⇒ Object
- #documentation_button_rex(section = '') ⇒ Object
- #host_counter(label, count) ⇒ Object
- #invocation_count(invocation, options = {}) ⇒ Object
- #invocation_result(invocation, key) ⇒ Object
- #job_invocation_active_tab(tab, params) ⇒ Object
- #job_invocation_chart(invocation) ⇒ Object
- #job_invocation_status(invocation) ⇒ Object
-
#job_invocation_task_buttons(task) ⇒ Object
rubocop:disable Metrics/AbcSize.
- #job_invocations_buttons ⇒ Object
- #link_to_invocation_task_if_authorized(invocation) ⇒ Object
- #preview_box(template_invocation, target) ⇒ Object
- #providers_options ⇒ Object
- #remote_execution_provider_for(template_invocation) ⇒ Object
- #task_cancelled?(task) ⇒ Boolean
- #task_failed?(task) ⇒ Boolean
- #template_input_header(f, template) ⇒ Object
- #template_input_types_options ⇒ Object
- #template_invocation_actions(task, host, job_invocation, template_invocation) ⇒ Object
- #template_invocation_status(task) ⇒ Object
-
#template_invocation_task_buttons(task) ⇒ Object
rubocop:enable Metrics/AbcSize.
- #time_in_words_span(time) ⇒ Object
Instance Method Details
#advanced_switch_f(default_text, switch_text) ⇒ Object
245 246 247 248 249 250 251 252 253 |
# File 'app/helpers/remote_execution_helper.rb', line 245 def advanced_switch_f(default_text, switch_text) content_tag :div, :class => 'form-group' do content_tag(:div, '', :class => 'col-md-2 control-label') + content_tag(:div, :class => 'col-md-4') do content_tag(:i, '', :class => 'fa fa-angle-right') + ' ' + link_to(default_text, '#', :class => 'advanced_fields_switch', :'data-alternative-label' => switch_text) end end end |
#description_checkbox_f(f, job_template, disabled) ⇒ Object
220 221 222 223 224 225 226 227 228 |
# File 'app/helpers/remote_execution_helper.rb', line 220 def description_checkbox_f(f, job_template, disabled) check_box_tag('description_format_override', job_template.generate_description_format, f.object.description_format.nil?, :class => 'description_format_override', :name => f.object_name + '[description_override]', :disabled => disabled, :onchange => 'description_override(this);') + ' ' + _('Use default description template') end |
#description_format_textarea_f(f, job_template, disabled) ⇒ Object
230 231 232 233 234 235 236 237 238 239 240 241 242 243 |
# File 'app/helpers/remote_execution_helper.rb', line 230 def description_format_textarea_f(f, job_template, disabled) textarea_f f, 'description_format', :label => _('Description template'), :value => f.object.description_format || job_template.generate_description_format, :rows => 2, :onchange => 'regenerate_description(this);', :class => 'description_format advanced', :disabled => disabled, :help_inline => popover(_('Explanation'), _('This template is used to generate the description ' + 'Input values can be used using the syntax %{package}. ' + 'You may also include the job category and template ' + 'name using %{job_category} and %{template_name}.')) end |
#documentation_button_rex(section = '') ⇒ Object
207 208 209 210 211 |
# File 'app/helpers/remote_execution_helper.rb', line 207 def (section = '') url = 'http://theforeman.org/plugins/foreman_remote_execution/' + "#{ForemanRemoteExecution::VERSION.split('.').take(2).join('.')}/index.html#" section, :root_url => url end |
#host_counter(label, count) ⇒ Object
56 57 58 59 60 |
# File 'app/helpers/remote_execution_helper.rb', line 56 def host_counter(label, count) content_tag(:div, :class => 'host_counter') do content_tag(:div, label, :class => 'header') + content_tag(:div, count.to_s, :class => 'count') end end |
#invocation_count(invocation, options = {}) ⇒ Object
161 162 163 164 165 166 167 168 |
# File 'app/helpers/remote_execution_helper.rb', line 161 def invocation_count(invocation, = {}) = { :unknown_string => 'N/A' }.merge() if invocation.queued? [:unknown_string] else (invocation.task.try(:output) || {}).fetch([:output_key], [:unknown_string]) end end |
#invocation_result(invocation, key) ⇒ Object
170 171 172 173 174 175 |
# File 'app/helpers/remote_execution_helper.rb', line 170 def invocation_result(invocation, key) unknown = '—' result = invocation_count(invocation, :output_key => key, :unknown_string => unknown.html_safe) label = key == :failed_count ? 'danger' : 'info' result == unknown ? result : report_event_column(result, "label-#{label}") end |
#job_invocation_active_tab(tab, params) ⇒ Object
187 188 189 190 191 192 193 194 195 196 |
# File 'app/helpers/remote_execution_helper.rb', line 187 def job_invocation_active_tab(tab, params) active = 'active' inactive = '' hosts_tab_active = params[:page].present? || params[:search].present? || params[:order].present? if hosts_tab_active tab == :hosts ? active : inactive else tab == :overview ? active : inactive end end |
#job_invocation_chart(invocation) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'app/helpers/remote_execution_helper.rb', line 11 def job_invocation_chart(invocation) = { :class => 'statistics-pie small', :expandable => true, :border => 0, :show_title => true } if (bulk_task = invocation.task) failed_tasks = bulk_task.sub_tasks.select { |sub_task| task_failed? sub_task } cancelled_tasks, failed_tasks = failed_tasks.partition { |task| task_cancelled? task } success = bulk_task.output['success_count'] || 0 cancelled = cancelled_tasks.length failed = failed_tasks.length pending = (bulk_task.output['pending_count'] || bulk_task.sub_tasks.count) flot_pie_chart('status', job_invocation_status(invocation), [{:label => _('Success'), :data => success, :color => '#5CB85C'}, {:label => _('Failed'), :data => failed, :color => '#D9534F'}, {:label => _('Pending'), :data => pending, :color => '#DEDEDE'}, {:label => _('Cancelled'), :data => cancelled, :color => '#B7312D'}], ) else content_tag(:h4, job_invocation_status(invocation)) end end |
#job_invocation_status(invocation) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'app/helpers/remote_execution_helper.rb', line 33 def job_invocation_status(invocation) case invocation.status when HostStatus::ExecutionStatus::QUEUED _('queued') when HostStatus::ExecutionStatus::RUNNING _('running %{percent}%%') % {:percent => invocation.progress} when HostStatus::ExecutionStatus::OK _('succeeded') when HostStatus::ExecutionStatus::ERROR _('failed') else _('unknown status') end end |
#job_invocation_task_buttons(task) ⇒ Object
rubocop:disable Metrics/AbcSize
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'app/helpers/remote_execution_helper.rb', line 104 def (task) job_invocation = task.task_groups.find { |group| group.class == JobInvocationTaskGroup }.job_invocation = [] << link_to(_('Refresh'), {}, :class => 'btn btn-default', :title => _('Refresh this page')) if (hash_for_new_job_invocation_path) << link_to(_('Rerun'), rerun_job_invocation_path(:id => job_invocation.id), :class => 'btn btn-default', :title => _('Rerun the job')) end if (hash_for_new_job_invocation_path) << link_to(_('Rerun failed'), rerun_job_invocation_path(:id => job_invocation.id, :failed_only => 1), :class => 'btn btn-default', :disabled => !task.sub_tasks.any? { |sub_task| task_failed?(sub_task) }, :title => _('Rerun on failed hosts')) end if (:permission => :view_foreman_tasks, :auth_object => task) << link_to(_('Job Task'), foreman_tasks_task_path(task), :class => 'btn btn-default', :title => _('See the last task details')) end if (:permission => :edit_foreman_tasks, :auth_object => task) << link_to(_('Cancel Job'), cancel_foreman_tasks_task_path(task), :class => 'btn btn-danger', :title => _('Try to cancel the job'), :disabled => !task.cancellable?, :method => :post) end return end |
#job_invocations_buttons ⇒ Object
96 97 98 99 100 101 |
# File 'app/helpers/remote_execution_helper.rb', line 96 def [ ('3.2ExecutingaJob'), new_link(_('Run Job')) ] end |
#link_to_invocation_task_if_authorized(invocation) ⇒ Object
152 153 154 155 156 157 158 159 |
# File 'app/helpers/remote_execution_helper.rb', line 152 def (invocation) if invocation.queued? job_invocation_status(invocation) else job_invocation_status(invocation), hash_for_foreman_tasks_task_path(invocation.task).merge(:auth_object => invocation.task, :permission => :view_foreman_tasks) end end |
#preview_box(template_invocation, target) ⇒ Object
177 178 179 180 181 182 183 184 185 |
# File 'app/helpers/remote_execution_helper.rb', line 177 def preview_box(template_invocation, target) renderer = InputTemplateRenderer.new(template_invocation.template, target, template_invocation) if (preview = renderer.preview) content_tag :pre, preview else alert :class => 'alert-block alert-danger base in fade has-error', :text => renderer..html_safe end end |
#providers_options ⇒ Object
3 4 5 |
# File 'app/helpers/remote_execution_helper.rb', line 3 def RemoteExecutionProvider.providers.map { |key, provider| [ key, _(provider.humanized_name) ] } end |
#remote_execution_provider_for(template_invocation) ⇒ Object
92 93 94 |
# File 'app/helpers/remote_execution_helper.rb', line 92 def remote_execution_provider_for(template_invocation) template_invocation.nil? ? _('N/A') : template_invocation.template.provider.humanized_name end |
#task_cancelled?(task) ⇒ Boolean
52 53 54 |
# File 'app/helpers/remote_execution_helper.rb', line 52 def task_cancelled?(task) task.execution_plan.errors.map(&:exception).any? { |exception| exception.class == ::ForemanTasks::Task::TaskCancelledException } end |
#task_failed?(task) ⇒ Boolean
48 49 50 |
# File 'app/helpers/remote_execution_helper.rb', line 48 def task_failed?(task) %w(warning error).include? task.result end |
#template_input_header(f, template) ⇒ Object
213 214 215 216 217 218 |
# File 'app/helpers/remote_execution_helper.rb', line 213 def template_input_header(f, template) header = _('Template input') header += ' ' + remove_child_link('x', f, {:rel => 'twipsy', :'data-title' => _('remove template input'), :'data-placement' => 'left', :class => 'fr badge badge-danger'}) unless template.locked? header.html_safe end |
#template_input_types_options ⇒ Object
7 8 9 |
# File 'app/helpers/remote_execution_helper.rb', line 7 def TemplateInput::TYPES.map { |key, name| [ _(name), key ] } end |
#template_invocation_actions(task, host, job_invocation, template_invocation) ⇒ Object
85 86 87 88 89 90 |
# File 'app/helpers/remote_execution_helper.rb', line 85 def template_invocation_actions(task, host, job_invocation, template_invocation) [ (_('Host detail'), hash_for_host_path(host).merge(:auth_object => host, :permission => :view_hosts)), (_('Rerun on %s') % host.name, hash_for_rerun_job_invocation_path(:id => job_invocation, :host_ids => [ host.id ])), ] end |
#template_invocation_status(task) ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'app/helpers/remote_execution_helper.rb', line 62 def template_invocation_status(task) if task.nil? icon_text('question', 'N/A', :kind => 'fa') elsif task.state == 'running' icon_text('running', _('running'), :kind => 'pficon') elsif task.state == 'planned' icon_text('build', _('planned'), :kind => 'pficon') else case task.result when 'warning', 'error' if task_cancelled?(task) icon_text('warning-triangle-o', _('cancelled'), :kind => 'pficon') else icon_text('error-circle-o', _('failed'), :kind => 'pficon') end when 'success' icon_text('ok', _('success'), :kind => 'pficon') else task.result end end end |
#template_invocation_task_buttons(task) ⇒ Object
rubocop:enable Metrics/AbcSize
135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
# File 'app/helpers/remote_execution_helper.rb', line 135 def (task) = [] if (:permission => :view_foreman_tasks, :auth_object => task) << link_to(_('Task Details'), foreman_tasks_task_path(task), :class => 'btn btn-default', :title => _('See the task details')) end if (:permission => :edit_foreman_tasks, :auth_object => task) << link_to(_('Cancel Job'), cancel_foreman_tasks_task_path(task), :class => 'btn btn-danger', :title => _('Try to cancel the job on a host'), :disabled => !task.cancellable?, :method => :post) end return end |
#time_in_words_span(time) ⇒ Object
198 199 200 201 202 203 204 205 |
# File 'app/helpers/remote_execution_helper.rb', line 198 def time_in_words_span(time) if time.nil? _('N/A') else content_tag :span, (time > Time.now.utc ? _('in %s') : _('%s ago')) % time_ago_in_words(time), { :'data-original-title' => time.try(:in_time_zone), :rel => 'twipsy' } end end |