foreman-tasks 7.0.0 → 7.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1c6773ac47a0c5b8e3e28da1461a348510e8595da0bd2d08feafd78092394fb2
4
- data.tar.gz: 40d4c506cd3d31b72355e8c2d4255c854c703be6be49644b8d30a55032bd9b2b
3
+ metadata.gz: 7b653c4a46abfb110f3a5c1ff0f130814110475989e364d39aa2756bc76c4ae2
4
+ data.tar.gz: b7ad044c96a9cd2f7f7dbf10416ce42b88e5f2ddaf4fe5cbed696cfde39dee32
5
5
  SHA512:
6
- metadata.gz: 1d05cdb24aea11a647028a4b1c314cf5f0db3d95459bbcfa0c52aa8f53263b6deb3d27ee23bbb7ec2a227e1ebbead0a432c0ecf6701131b2f7921b39145085ab
7
- data.tar.gz: 777127d69a84b7c94780f78ad5a8aa5754ad246e6019a9f35c518e0b246d73b8f6f31acc84029b1b0648b8ff3ba8f167efc4fad7f4116cb4eb2f3fad7b850591
6
+ metadata.gz: b0525a6e659bf05476e86b69c6147600463f16274e71fc15b1ccee628011a785dc53fc6b8cad0ef5f3439cac8c6581a73cea7a1175c4489778f5204fe3914c76
7
+ data.tar.gz: feab08efc57055c27fab6010dd1f5dac438f74091dee9c239da5722a7236eacf467433f17838066e3ef707f2268e39e2f3130615a25a9094286a9c65d66b2485
@@ -29,7 +29,7 @@ jobs:
29
29
  fail-fast: false
30
30
  matrix:
31
31
  foreman-core-branch: [develop]
32
- ruby-version: [2.5, 2.6, 2.7]
32
+ ruby-version: [2.7]
33
33
  node-version: [12]
34
34
  steps:
35
35
  - run: sudo apt-get update
@@ -3,7 +3,7 @@ module Actions
3
3
  module WithDelegatedAction
4
4
  include ::Actions::Helpers::WithContinuousOutput
5
5
 
6
- def plan_delegated_action(proxy, klass, options)
6
+ def plan_delegated_action(proxy, klass, options, proxy_action_class: ::Actions::ProxyAction)
7
7
  case proxy
8
8
  when :not_defined
9
9
  if klass.is_a?(String)
@@ -14,7 +14,7 @@ module Actions
14
14
  when :not_available
15
15
  raise Foreman::Exception, _('All proxies with the required feature are unavailable at the moment')
16
16
  when ::SmartProxy
17
- delegated_action = plan_action(::Actions::ProxyAction, proxy, klass, options)
17
+ delegated_action = plan_action(proxy_action_class, proxy, klass, options)
18
18
  end
19
19
 
20
20
  input[:delegated_action_id] = delegated_action.id
@@ -22,7 +22,15 @@ module Actions
22
22
  end
23
23
  end
24
24
 
25
- class ProxyActionStopped; end
25
+ class ProxyActionStopped < RuntimeError
26
+ def backtrace
27
+ []
28
+ end
29
+ end
30
+
31
+ ProxyActionStoppedEvent = ::Algebrick.type do
32
+ fields! exception: type { variants NilClass, Exception }
33
+ end
26
34
 
27
35
  def plan(proxy, klass, options)
28
36
  options[:connection_options] ||= {}
@@ -52,8 +60,8 @@ module Actions
52
60
  on_data(event.data, event.meta)
53
61
  when ProxyActionMissing
54
62
  on_proxy_action_missing
55
- when ProxyActionStopped
56
- on_proxy_action_stopped
63
+ when ProxyActionStoppedEvent
64
+ on_proxy_action_stopped(event)
57
65
  else
58
66
  raise "Unexpected event #{event.inspect}"
59
67
  end
@@ -94,6 +102,8 @@ module Actions
94
102
  else
95
103
  suspend
96
104
  end
105
+ rescue RestClient::NotFound
106
+ on_proxy_action_missing
97
107
  end
98
108
 
99
109
  def cancel_proxy_task
@@ -133,8 +143,12 @@ module Actions
133
143
  error! ProxyActionMissing.new(_('Proxy task gone missing from the smart proxy'))
134
144
  end
135
145
 
136
- def on_proxy_action_stopped
137
- check_task_status
146
+ def on_proxy_action_stopped(event)
147
+ if event.exception
148
+ error! ProxyActionStopped.new(_('Failed to trigger task on the smart proxy: ') + event.exception.message)
149
+ else
150
+ check_task_status
151
+ end
138
152
  end
139
153
 
140
154
  # @override String name of an action to be triggered on server
@@ -42,7 +42,10 @@ module Actions
42
42
  rescue => e
43
43
  action_logger.warn "Could not trigger task on the smart proxy"
44
44
  action_logger.warn e
45
- batch.each { |remote_task| remote_task.update_from_batch_trigger({}) }
45
+ # The response contains non-serializable objects
46
+ # TypeError: no _dump_data is defined for class Monitor
47
+ e.response = nil
48
+ batch.each { |remote_task| remote_task.update_from_batch_trigger({ 'exception' => e }) }
46
49
  output[:failed_count] += batch.size
47
50
  end
48
51
 
@@ -7,7 +7,7 @@ module ForemanTasks
7
7
  :foreign_key => :execution_plan_id,
8
8
  :inverse_of => :remote_tasks
9
9
 
10
- scope :triggered, -> { where(:state => 'triggered') }
10
+ scope :triggered, -> { where(:state => ['triggered', 'parent-triggered']) }
11
11
  scope :pending, -> { where(:state => 'new') }
12
12
  scope :external, -> { where(:state => 'external') }
13
13
 
@@ -49,10 +49,11 @@ module ForemanTasks
49
49
  self.parent_task_id = parent['task_id']
50
50
  self.state = 'parent-triggered'
51
51
  else
52
+ exception = data['exception']
52
53
  # Tell the action the task on the smart proxy stopped
53
54
  ForemanTasks.dynflow.world.event execution_plan_id,
54
55
  step_id,
55
- ::Actions::ProxyAction::ProxyActionStopped.new,
56
+ ::Actions::ProxyAction::ProxyActionStoppedEvent[exception],
56
57
  optional: true
57
58
  end
58
59
  save!
@@ -38,16 +38,16 @@
38
38
  <table class="<%= table_css_classes('table-condensed table-fixed') %>">
39
39
  <thead>
40
40
  <th class="col-md-1"><%= N_("ID") %></th>
41
- <th><%= N_("Cron line") %></th>
42
- <th><%= N_("Task count") %></th>
43
- <th><%= N_("Action") %></th>
44
- <th><%= N_("Last occurrence") %></th>
45
- <th><%= N_("Next occurrence") %></th>
46
- <th><%= N_("Current iteration") %></th>
47
- <th><%= N_("Iteration limit") %></th>
48
- <th><%= N_("Repeat until") %></th>
49
- <th><%= N_("State") %></th>
50
- <th><%= N_("Purpose") %></th>
41
+ <th><%= _("Cron line") %></th>
42
+ <th><%= _("Task count") %></th>
43
+ <th><%= _("Action") %></th>
44
+ <th><%= _("Last occurrence") %></th>
45
+ <th><%= _("Next occurrence") %></th>
46
+ <th><%= _("Current iteration") %></th>
47
+ <th><%= _("Iteration limit") %></th>
48
+ <th><%= _("Repeat until") %></th>
49
+ <th><%= _("State") %></th>
50
+ <th><%= _("Purpose") %></th>
51
51
  <th/>
52
52
  </thead>
53
53
  <% @recurring_logics.each do |recurring_logic| %>
@@ -1,11 +1,11 @@
1
1
  <div>
2
2
  <table class='<%= table_css_classes('table-condensed') %>'>
3
3
  <tr>
4
- <th><%= N_('ID') %></th>
4
+ <th><%= _('ID') %></th>
5
5
  <td><%= link_to(task_group.id, foreman_tasks_task_group_url(task_group)) %></td>
6
6
  </tr>
7
7
  <tr>
8
- <th><%= N_('Task count') %></th>
8
+ <th><%= _('Task count') %></th>
9
9
  <td><%= link_to(task_group.tasks.count, foreman_tasks_tasks_url(:search => "task_group.id = #{task_group.id}")) %></td>
10
10
  </tr>
11
11
  </table>
@@ -1,47 +1,47 @@
1
1
  <% recurring_logic = task_group.recurring_logic -%>
2
2
  <table class='<%= table_css_classes('table-condensed') %>'>
3
3
  <tr>
4
- <th>ID</th>
4
+ <th><%= _('ID') %></th>
5
5
  <td><%= link_to(recurring_logic.id, recurring_logic) %></td>
6
6
  </tr>
7
7
  <tr>
8
- <th><%= N_("Cron line") %></th>
8
+ <th><%= _("Cron line") %></th>
9
9
  <td><%= recurring_logic.cron_line %></td>
10
10
  </tr>
11
11
  <tr>
12
- <th><%= N_("Action") %></th>
12
+ <th><%= _("Action") %></th>
13
13
  <td><%= format_task_input(recurring_logic.tasks.last) %></td>
14
14
  </tr>
15
15
  <tr>
16
- <th><%= N_("Last occurrence") %></th>
16
+ <th><%= _("Last occurrence") %></th>
17
17
  <td><%= recurring_logic.tasks.order(:started_at).where('started_at IS NOT NULL').last.try(:started_at) || '-' %></td>
18
18
  </tr>
19
19
  <tr>
20
- <th><%= N_("Next occurrence") %></th>
20
+ <th><%= _("Next occurrence") %></th>
21
21
  <td><%= recurring_logic_next_occurrence recurring_logic %></td>
22
22
  </tr>
23
23
  <tr>
24
- <th><%= N_("Current iteration") %></th>
24
+ <th><%= _("Current iteration") %></th>
25
25
  <td><%= recurring_logic.iteration %></td>
26
26
  </tr>
27
27
  <tr>
28
- <th><%= N_("Iteration limit") %></th>
28
+ <th><%= _("Iteration limit") %></th>
29
29
  <td><%= format_recurring_logic_limit recurring_logic.max_iteration %></td>
30
30
  </tr>
31
31
  <tr>
32
- <th><%= N_("Repeat until") %></th>
32
+ <th><%= _("Repeat until") %></th>
33
33
  <td><%= format_recurring_logic_limit recurring_logic.end_time.try(:in_time_zone) %></td>
34
34
  </tr>
35
35
  <tr>
36
- <th><%= N_("State") %></th>
36
+ <th><%= _("State") %></th>
37
37
  <td><%= recurring_logic_state(recurring_logic) %></td>
38
38
  </tr>
39
39
  <tr>
40
- <th><%= N_("Purpose") %></th>
40
+ <th><%= _("Purpose") %></th>
41
41
  <td><%= recurring_logic.purpose %></td>
42
42
  </tr>
43
43
  <tr>
44
- <th><%= N_("Task count") %></th>
44
+ <th><%= _("Task count") %></th>
45
45
  <td><%= link_to(task_group.tasks.count, foreman_tasks_tasks_url(:search => "task_group.id = #{task_group.id}")) %></td>
46
46
  </tr>
47
47
  </table>
@@ -1,3 +1,3 @@
1
1
  module ForemanTasks
2
- VERSION = '7.0.0'.freeze
2
+ VERSION = '7.1.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman-tasks
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.0.0
4
+ version: 7.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Nečas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 1980-01-01 00:00:00.000000000 Z
11
+ date: 2022-11-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dynflow
@@ -608,7 +608,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
608
608
  - !ruby/object:Gem::Version
609
609
  version: '0'
610
610
  requirements: []
611
- rubygems_version: 3.2.26
611
+ rubygems_version: 3.3.20
612
612
  signing_key:
613
613
  specification_version: 4
614
614
  summary: Foreman plugin for showing tasks information for resources and users