foreman-tasks 4.0.1 → 4.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby_tests.yml +5 -3
- data/app/controllers/concerns/foreman_tasks/find_tasks_common.rb +14 -0
- data/app/controllers/foreman_tasks/api/tasks_controller.rb +4 -3
- data/app/controllers/foreman_tasks/tasks_controller.rb +3 -10
- data/app/lib/actions/middleware/load_setting_values.rb +35 -0
- data/app/lib/actions/middleware/watch_delegated_proxy_sub_tasks.rb +2 -6
- data/app/lib/actions/proxy_action.rb +2 -4
- data/app/models/foreman_tasks/task.rb +2 -2
- data/app/models/foreman_tasks/task/dynflow_task.rb +8 -3
- data/lib/foreman_tasks/engine.rb +1 -0
- data/lib/foreman_tasks/tasks/export_tasks.rake +90 -46
- data/lib/foreman_tasks/version.rb +1 -1
- data/locale/action_names.rb +3 -2
- data/locale/en/foreman_tasks.po +60 -27
- data/locale/foreman_tasks.pot +180 -132
- data/locale/fr/foreman_tasks.po +61 -28
- data/locale/ja/foreman_tasks.po +61 -28
- data/locale/zh_CN/foreman_tasks.po +61 -28
- data/test/controllers/api/tasks_controller_test.rb +15 -0
- data/test/core/unit/runner_test.rb +4 -17
- data/test/factories/task_factory.rb +31 -4
- data/test/unit/actions/proxy_action_test.rb +4 -1
- data/test/unit/task_test.rb +15 -15
- data/test/unit/triggering_test.rb +2 -2
- data/webpack/ForemanTasks/Components/TaskActions/TaskActionHelpers.js +11 -4
- data/webpack/ForemanTasks/Components/TaskActions/TaskActionHelpers.test.js +27 -5
- data/webpack/ForemanTasks/Components/TasksTable/TasksTableActions.js +6 -1
- data/webpack/ForemanTasks/Components/TasksTable/TasksTableHelpers.js +2 -1
- data/webpack/ForemanTasks/Components/TasksTable/TasksTablePage.js +1 -1
- data/webpack/ForemanTasks/Components/TasksTable/__tests__/TasksTableHelpers.test.js +1 -1
- data/webpack/ForemanTasks/Components/TasksTable/__tests__/__snapshots__/TasksTablePage.test.js.snap +2 -2
- metadata +4 -5
- data/app/services/foreman_tasks/dashboard_table_filter.rb +0 -56
- data/test/unit/dashboard_table_filter_test.rb +0 -77
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ba89e76b07357c27678169c5350b13a80ea346896e681e7061da8c9ff5c6d2ce
|
4
|
+
data.tar.gz: c0a597c5a7db439fcd6627460b0fa91ed9e5bf0ef2d5308f356d35582c141b9d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3f873f26387eb89860543bca5f888b017c2ac692c986873b97b48506f30429172d49e926450937262a9dcb06c26c45d7eefabdb7f3cce0b8c70ce6786ea7e4ad
|
7
|
+
data.tar.gz: b021241e11f9db347960eb55e2497112cf996f1e77e48d92f593fa47b735c0268532ec61e2779bd35fc01768178037eaedf8248b59dfc178031dd56fb1340b6f
|
@@ -12,7 +12,7 @@ jobs:
|
|
12
12
|
- name: Setup Ruby
|
13
13
|
uses: ruby/setup-ruby@v1
|
14
14
|
with:
|
15
|
-
ruby-version: 2.
|
15
|
+
ruby-version: 2.7
|
16
16
|
- name: Setup
|
17
17
|
run: |
|
18
18
|
gem install bundler
|
@@ -31,7 +31,7 @@ jobs:
|
|
31
31
|
fail-fast: false
|
32
32
|
matrix:
|
33
33
|
foreman-core-branch: [develop]
|
34
|
-
ruby-version: [2.5, 2.6]
|
34
|
+
ruby-version: [2.5, 2.6, 2.7]
|
35
35
|
node-version: [12]
|
36
36
|
steps:
|
37
37
|
- run: sudo apt-get update
|
@@ -60,6 +60,7 @@ jobs:
|
|
60
60
|
- name: Setup Bundler
|
61
61
|
run: |
|
62
62
|
echo "gem 'foreman-tasks', path: './foreman-tasks'" > bundler.d/foreman-tasks.local.rb
|
63
|
+
echo "gem 'sqlite3'" >> bundler.d/foreman-tasks.local.rb
|
63
64
|
gem install bundler
|
64
65
|
bundle config set without journald development console libvirt
|
65
66
|
bundle config set path vendor/bundle
|
@@ -70,5 +71,6 @@ jobs:
|
|
70
71
|
bundle exec rake db:migrate
|
71
72
|
- name: Run plugin tests
|
72
73
|
run: |
|
73
|
-
bundle exec rake test:
|
74
|
+
bundle exec rake test:foreman_tasks
|
75
|
+
bundle exec rake test:foreman_tasks_core
|
74
76
|
bundle exec rake test TEST="test/unit/foreman/access_permissions_test.rb"
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module ForemanTasks
|
2
|
+
module FindTasksCommon
|
3
|
+
def search_query
|
4
|
+
[current_taxonomy_search, params[:search]].select(&:present?).join(' AND ')
|
5
|
+
end
|
6
|
+
|
7
|
+
def current_taxonomy_search
|
8
|
+
conditions = []
|
9
|
+
conditions << "organization_id = #{Organization.current.id}" if Organization.current
|
10
|
+
conditions << "location_id = #{Location.current.id}" if Location.current
|
11
|
+
conditions.empty? ? '' : "(#{conditions.join(' AND ')})"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module ForemanTasks
|
2
2
|
module Api
|
3
3
|
class TasksController < ::Api::V2::BaseController
|
4
|
+
include ForemanTasks::FindTasksCommon
|
4
5
|
include ::Foreman::Controller::SmartProxyAuth
|
5
6
|
add_smart_proxy_filters :callback, :features => 'Dynflow'
|
6
7
|
|
@@ -51,7 +52,7 @@ module ForemanTasks
|
|
51
52
|
In case :type = 'resource', what resource id we're searching the tasks for
|
52
53
|
DESC
|
53
54
|
param :action_types, [String], :desc => <<-DESC
|
54
|
-
Return just tasks of given action type, e.g. ["Actions::Katello::Repository::Synchronize"]
|
55
|
+
Return just tasks of given action type, e.g. `["Actions::Katello::Repository::Synchronize"]`
|
55
56
|
DESC
|
56
57
|
param :active_only, :bool
|
57
58
|
param :page, String
|
@@ -191,11 +192,11 @@ module ForemanTasks
|
|
191
192
|
params[:order] = "#{ordering_params[:sort_by]} #{ordering_params[:sort_order]}"
|
192
193
|
end
|
193
194
|
params[:order] ||= 'started_at DESC'
|
194
|
-
@tasks =
|
195
|
+
@tasks = resource_scope_for_index.order(params[:order].to_s)
|
195
196
|
end
|
196
197
|
|
197
198
|
def search_options
|
198
|
-
[
|
199
|
+
[search_query, {}]
|
199
200
|
end
|
200
201
|
|
201
202
|
def_param_group :callback_target do
|
@@ -2,6 +2,7 @@ module ForemanTasks
|
|
2
2
|
class TasksController < ::ApplicationController
|
3
3
|
include Foreman::Controller::AutoCompleteSearch
|
4
4
|
include Foreman::Controller::CsvResponder
|
5
|
+
include ForemanTasks::FindTasksCommon
|
5
6
|
|
6
7
|
def show
|
7
8
|
@task = resource_base.find(params[:id])
|
@@ -128,17 +129,9 @@ module ForemanTasks
|
|
128
129
|
def filter(scope, paginate: true)
|
129
130
|
search = current_taxonomy_search
|
130
131
|
search = [search, params[:search]].select(&:present?).join(' AND ')
|
131
|
-
scope =
|
132
|
-
scope = scope.
|
133
|
-
scope = scope.paginate(:page => params[:page], :per_page => params[:per_page]) if paginate
|
132
|
+
scope = scope.search_for(search, order: params[:order])
|
133
|
+
scope = scope.paginate(page: params[:page], per_page: params[:per_page]) if paginate
|
134
134
|
scope.distinct
|
135
135
|
end
|
136
|
-
|
137
|
-
def current_taxonomy_search
|
138
|
-
conditions = []
|
139
|
-
conditions << "organization_id = #{Organization.current.id}" if Organization.current
|
140
|
-
conditions << "location_id = #{Location.current.id}" if Location.current
|
141
|
-
conditions.empty? ? '' : "(#{conditions.join(' AND ')})"
|
142
|
-
end
|
143
136
|
end
|
144
137
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Actions
|
2
|
+
module Middleware
|
3
|
+
class LoadSettingValues < ::Dynflow::Middleware
|
4
|
+
# ::Actions::Middleware::LoadSettingValues
|
5
|
+
#
|
6
|
+
# A middleware to ensure we load current setting values
|
7
|
+
|
8
|
+
def delay(*args)
|
9
|
+
reload_setting_values
|
10
|
+
pass(*args)
|
11
|
+
end
|
12
|
+
|
13
|
+
def plan(*args)
|
14
|
+
reload_setting_values
|
15
|
+
pass(*args)
|
16
|
+
end
|
17
|
+
|
18
|
+
def run(*args)
|
19
|
+
reload_setting_values
|
20
|
+
pass(*args)
|
21
|
+
end
|
22
|
+
|
23
|
+
def finalize(*args)
|
24
|
+
reload_setting_values
|
25
|
+
pass(*args)
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def reload_setting_values
|
31
|
+
::Foreman.settings.load_values
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -20,9 +20,7 @@ module Actions
|
|
20
20
|
private
|
21
21
|
|
22
22
|
def set_clock
|
23
|
-
action.
|
24
|
-
POLL_INTERVAL,
|
25
|
-
CheckOnProxyActions
|
23
|
+
action.plan_event(CheckOnProxyActions, POLL_INTERVAL, optional: true)
|
26
24
|
end
|
27
25
|
|
28
26
|
def check_triggered
|
@@ -44,9 +42,7 @@ module Actions
|
|
44
42
|
|
45
43
|
def notify(event, tasks)
|
46
44
|
tasks.each do |task|
|
47
|
-
action.
|
48
|
-
task.step_id,
|
49
|
-
event
|
45
|
+
action.plan_event(event, execution_plan_id: task.execution_plan_id, step_id: task.step_id)
|
50
46
|
end
|
51
47
|
end
|
52
48
|
|
@@ -218,10 +218,8 @@ module Actions
|
|
218
218
|
end
|
219
219
|
|
220
220
|
def get_proxy_data(response)
|
221
|
-
|
222
|
-
|
223
|
-
end
|
224
|
-
proxy_data.fetch('output', {})
|
221
|
+
response['actions'].detect { |action| action.fetch('input', {})['task_id'] == task.id }
|
222
|
+
.try(:fetch, 'output', {}) || {}
|
225
223
|
end
|
226
224
|
|
227
225
|
def proxy_version(proxy)
|
@@ -89,7 +89,7 @@ module ForemanTasks
|
|
89
89
|
property :ended_at, ActiveSupport::TimeWithZone, desc: 'Returns date with time the task ended at'
|
90
90
|
end
|
91
91
|
class Jail < Safemode::Jail
|
92
|
-
allow :started_at, :ended_at, :result, :state, :label, :main_action, :
|
92
|
+
allow :started_at, :ended_at, :result, :state, :label, :main_action, :action_continuous_output
|
93
93
|
end
|
94
94
|
|
95
95
|
def input
|
@@ -249,7 +249,7 @@ module ForemanTasks
|
|
249
249
|
parts.join(' ').strip
|
250
250
|
end
|
251
251
|
|
252
|
-
def
|
252
|
+
def action_continuous_output
|
253
253
|
return unless main_action.is_a?(Actions::Helpers::WithContinuousOutput)
|
254
254
|
main_action.continuous_output.sort!
|
255
255
|
main_action.continuous_output.raw_outputs
|
@@ -140,12 +140,17 @@ module ForemanTasks
|
|
140
140
|
|
141
141
|
def main_action
|
142
142
|
return @main_action if defined?(@main_action)
|
143
|
+
|
144
|
+
@main_action = execution_plan && execution_plan.root_plan_step.try(:action, execution_plan)
|
143
145
|
if active_job?
|
144
146
|
job_data = active_job_data
|
145
|
-
|
146
|
-
|
147
|
-
|
147
|
+
begin
|
148
|
+
@main_action = active_job_action(job_data['job_class'], job_data['arguments'])
|
149
|
+
rescue => e
|
150
|
+
Foreman::Logging.exception("Failed to load ActiveJob for task #{id}", e, :logger => 'foreman-tasks')
|
151
|
+
end
|
148
152
|
end
|
153
|
+
@main_action
|
149
154
|
end
|
150
155
|
|
151
156
|
# The class for ActiveJob jobs in Dynflow, JobWrapper is not expected to
|
data/lib/foreman_tasks/engine.rb
CHANGED
@@ -114,6 +114,7 @@ module ForemanTasks
|
|
114
114
|
world.middleware.use Actions::Middleware::KeepCurrentUser, :before => ::Dynflow::Middleware::Common::Transaction
|
115
115
|
world.middleware.use Actions::Middleware::KeepCurrentTimezone
|
116
116
|
world.middleware.use Actions::Middleware::KeepCurrentRequestID
|
117
|
+
world.middleware.use ::Actions::Middleware::LoadSettingValues if Gem::Version.new(::SETTINGS[:version]) >= Gem::Version.new('2.5')
|
117
118
|
end
|
118
119
|
|
119
120
|
::ForemanTasks.dynflow.config.on_init do |world|
|
@@ -12,7 +12,7 @@ namespace :foreman_tasks do
|
|
12
12
|
|
13
13
|
* TASK_SEARCH : scoped search filter (example: 'label = "Actions::Foreman::Host::ImportFacts"')
|
14
14
|
* TASK_FILE : file to export to
|
15
|
-
* TASK_FORMAT : format to use for the export (either html or csv)
|
15
|
+
* TASK_FORMAT : format to use for the export (either html, html-dir or csv)
|
16
16
|
* TASK_DAYS : number of days to go back
|
17
17
|
|
18
18
|
If TASK_SEARCH is not defined, it defaults to all tasks in the past 7 days and
|
@@ -185,23 +185,27 @@ namespace :foreman_tasks do
|
|
185
185
|
end
|
186
186
|
|
187
187
|
class PageHelper
|
188
|
-
def self.pagify(template)
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
#{template}
|
202
|
-
<body>
|
203
|
-
</html>
|
188
|
+
def self.pagify(io, template = nil)
|
189
|
+
io.write <<~HTML
|
190
|
+
<html>
|
191
|
+
<head>
|
192
|
+
<title>Dynflow Console</title>
|
193
|
+
<script src="jquery.js"></script>
|
194
|
+
<link rel="stylesheet" type="text/css" href="bootstrap.css">
|
195
|
+
<link rel="stylesheet" type="text/css" href="application.css">
|
196
|
+
<script src="bootstrap.js"></script>
|
197
|
+
<script src="run_prettify.js"></script>
|
198
|
+
<script src="application.js"></script>
|
199
|
+
</head>
|
200
|
+
<body>
|
204
201
|
HTML
|
202
|
+
if block_given?
|
203
|
+
yield io
|
204
|
+
else
|
205
|
+
io.write template
|
206
|
+
end
|
207
|
+
ensure
|
208
|
+
io.write '</body></html>'
|
205
209
|
end
|
206
210
|
|
207
211
|
def self.copy_assets(tmp_dir)
|
@@ -216,13 +220,64 @@ namespace :foreman_tasks do
|
|
216
220
|
end
|
217
221
|
end
|
218
222
|
|
219
|
-
def self.
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
223
|
+
def self.generate_with_index(io)
|
224
|
+
io.write '<div><table class="table">'
|
225
|
+
yield io
|
226
|
+
ensure
|
227
|
+
io.write '</table></div>'
|
228
|
+
end
|
229
|
+
|
230
|
+
def self.generate_index_entry(io, task)
|
231
|
+
io << <<~HTML
|
232
|
+
<tr>
|
233
|
+
<td><a href=\"#{task.id}.html\">#{task.label}</a></td>
|
234
|
+
<td>#{task.started_at}</td>
|
235
|
+
<td>#{task.state}</td>
|
236
|
+
<td>#{task.result}</td>
|
237
|
+
</tr>
|
238
|
+
HTML
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
242
|
+
def csv_export(export_filename, tasks)
|
243
|
+
CSV.open(export_filename, 'wb') do |csv|
|
244
|
+
csv << %w[id state type label result parent_task_id started_at ended_at]
|
245
|
+
tasks.find_each do |task|
|
246
|
+
csv << [task.id, task.state, task.type, task.label, task.result,
|
247
|
+
task.parent_task_id, task.started_at, task.ended_at]
|
224
248
|
end
|
225
|
-
|
249
|
+
end
|
250
|
+
end
|
251
|
+
|
252
|
+
def html_export(workdir, tasks)
|
253
|
+
PageHelper.copy_assets(workdir)
|
254
|
+
|
255
|
+
renderer = TaskRender.new
|
256
|
+
total = tasks.count
|
257
|
+
index = File.open(File.join(workdir, 'index.html'), 'w')
|
258
|
+
|
259
|
+
File.open(File.join(workdir, 'index.html'), 'w') do |index|
|
260
|
+
PageHelper.pagify(index) do |io|
|
261
|
+
PageHelper.generate_with_index(io) do |index|
|
262
|
+
tasks.find_each.each_with_index do |task, count|
|
263
|
+
File.open(File.join(workdir, "#{task.id}.html"), 'w') { |file| PageHelper.pagify(file, renderer.render_task(task)) }
|
264
|
+
PageHelper.generate_index_entry(index, task)
|
265
|
+
puts "#{count + 1}/#{total}"
|
266
|
+
end
|
267
|
+
end
|
268
|
+
end
|
269
|
+
end
|
270
|
+
end
|
271
|
+
|
272
|
+
def generate_filename(format)
|
273
|
+
base = "/tmp/task-export-#{Time.now.to_i}"
|
274
|
+
case format
|
275
|
+
when 'html'
|
276
|
+
base + '.tar.gz'
|
277
|
+
when 'csv'
|
278
|
+
base + '.csv'
|
279
|
+
when 'html-dir'
|
280
|
+
base
|
226
281
|
end
|
227
282
|
end
|
228
283
|
|
@@ -239,36 +294,25 @@ namespace :foreman_tasks do
|
|
239
294
|
end
|
240
295
|
|
241
296
|
format = ENV['TASK_FORMAT'] || 'html'
|
242
|
-
export_filename = ENV['TASK_FILE'] ||
|
297
|
+
export_filename = ENV['TASK_FILE'] || generate_filename(format)
|
243
298
|
|
244
|
-
tasks = ForemanTasks::Task.search_for(filter)
|
299
|
+
tasks = ForemanTasks::Task.search_for(filter).order(:started_at => :desc)
|
245
300
|
|
246
301
|
puts _("Exporting all tasks matching filter #{filter}")
|
247
302
|
puts _("Gathering #{tasks.count} tasks.")
|
248
|
-
|
303
|
+
case format
|
304
|
+
when 'html'
|
249
305
|
Dir.mktmpdir('task-export') do |tmp_dir|
|
250
|
-
|
251
|
-
|
252
|
-
renderer = TaskRender.new
|
253
|
-
total = tasks.count
|
254
|
-
|
255
|
-
tasks.find_each.with_index do |task, count|
|
256
|
-
File.open(File.join(tmp_dir, "#{task.id}.html"), 'w') { |file| file.write(PageHelper.pagify(renderer.render_task(task))) }
|
257
|
-
puts "#{count + 1}/#{total}"
|
258
|
-
end
|
259
|
-
|
260
|
-
File.open(File.join(tmp_dir, 'index.html'), 'w') { |file| file.write(PageHelper.pagify(PageHelper.generate_index(tasks))) }
|
261
|
-
|
306
|
+
html_export(tmp_dir, tasks)
|
262
307
|
system("tar", "czf", export_filename, tmp_dir)
|
263
308
|
end
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
end
|
309
|
+
when 'html-dir'
|
310
|
+
FileUtils.mkdir_p(export_filename)
|
311
|
+
html_export(export_filename, tasks)
|
312
|
+
when 'csv'
|
313
|
+
csv_export(export_filename, tasks)
|
314
|
+
else
|
315
|
+
raise "Unkonwn export format '#{format}'"
|
272
316
|
end
|
273
317
|
|
274
318
|
puts "Created #{export_filename}"
|
data/locale/action_names.rb
CHANGED
data/locale/en/foreman_tasks.po
CHANGED
@@ -74,6 +74,9 @@ msgstr ""
|
|
74
74
|
msgid "All proxies with the required feature are unavailable at the moment"
|
75
75
|
msgstr ""
|
76
76
|
|
77
|
+
msgid "Allow proxy batch tasks"
|
78
|
+
msgstr ""
|
79
|
+
|
77
80
|
msgid "Allow triggering tasks on the smart proxy in batches"
|
78
81
|
msgstr ""
|
79
82
|
|
@@ -99,15 +102,15 @@ msgstr ""
|
|
99
102
|
msgid "Cancel Selected"
|
100
103
|
msgstr ""
|
101
104
|
|
102
|
-
msgid "Cancel all cancellable tasks"
|
103
|
-
msgstr ""
|
104
|
-
|
105
105
|
msgid "Cancel enforced: the task might be still running on the proxy"
|
106
106
|
msgstr ""
|
107
107
|
|
108
108
|
msgid "Cancel recurring logic"
|
109
109
|
msgstr ""
|
110
110
|
|
111
|
+
msgid "Cancel selected cancellable tasks"
|
112
|
+
msgstr ""
|
113
|
+
|
111
114
|
msgid "Cancel selected tasks"
|
112
115
|
msgstr ""
|
113
116
|
|
@@ -156,6 +159,9 @@ msgstr ""
|
|
156
159
|
msgid "Could not cancel step."
|
157
160
|
msgstr ""
|
158
161
|
|
162
|
+
msgid "Could not receive data: ${APIerror && APIerror.message}"
|
163
|
+
msgstr ""
|
164
|
+
|
159
165
|
msgid "Could not receive data: ${error && error.message}"
|
160
166
|
msgstr ""
|
161
167
|
|
@@ -207,6 +213,9 @@ msgstr ""
|
|
207
213
|
msgid "Enable"
|
208
214
|
msgstr ""
|
209
215
|
|
216
|
+
msgid "Enable dynflow console"
|
217
|
+
msgstr ""
|
218
|
+
|
210
219
|
msgid "Enable the dynflow console (/foreman_tasks/dynflow) for debugging"
|
211
220
|
msgstr ""
|
212
221
|
|
@@ -246,9 +255,6 @@ msgstr ""
|
|
246
255
|
msgid "Failed to initialize"
|
247
256
|
msgstr ""
|
248
257
|
|
249
|
-
msgid "Field to sort the results on"
|
250
|
-
msgstr ""
|
251
|
-
|
252
258
|
msgid "Finished"
|
253
259
|
msgstr ""
|
254
260
|
|
@@ -270,12 +276,6 @@ msgstr ""
|
|
270
276
|
msgid "Fri"
|
271
277
|
msgstr ""
|
272
278
|
|
273
|
-
msgid "Hash version of 'order' param"
|
274
|
-
msgstr ""
|
275
|
-
|
276
|
-
msgid "How to order the sorted results (e.g. ASC for ascending)"
|
277
|
-
msgstr ""
|
278
|
-
|
279
279
|
msgid "ID"
|
280
280
|
msgstr ""
|
281
281
|
|
@@ -381,9 +381,6 @@ msgstr ""
|
|
381
381
|
msgid "Number of attempts to start a task on the smart proxy before failing"
|
382
382
|
msgstr ""
|
383
383
|
|
384
|
-
msgid "Number of results per page to return"
|
385
|
-
msgstr ""
|
386
|
-
|
387
384
|
msgid "Number of seconds to wait for synchronous task to finish."
|
388
385
|
msgstr ""
|
389
386
|
|
@@ -397,13 +394,16 @@ msgstr ""
|
|
397
394
|
msgid "Operation"
|
398
395
|
msgstr ""
|
399
396
|
|
400
|
-
msgid "
|
397
|
+
msgid "Other includes all stopped tasks that are cancelled or pending"
|
401
398
|
msgstr ""
|
402
399
|
|
403
|
-
msgid "
|
400
|
+
msgid "Other:"
|
401
|
+
msgstr ""
|
402
|
+
|
403
|
+
msgid "Output"
|
404
404
|
msgstr ""
|
405
405
|
|
406
|
-
msgid "
|
406
|
+
msgid "Output:"
|
407
407
|
msgstr ""
|
408
408
|
|
409
409
|
msgid "Parent task"
|
@@ -427,9 +427,21 @@ msgstr ""
|
|
427
427
|
msgid "Polling multiplier which is used to multiply the default polling intervals. This can be used to prevent polling too frequently for long running tasks."
|
428
428
|
msgstr ""
|
429
429
|
|
430
|
+
msgid "Preupgrade job"
|
431
|
+
msgstr ""
|
432
|
+
|
433
|
+
msgid "Proxy action retry count"
|
434
|
+
msgstr ""
|
435
|
+
|
436
|
+
msgid "Proxy action retry interval"
|
437
|
+
msgstr ""
|
438
|
+
|
430
439
|
msgid "Proxy task gone missing from the smart proxy"
|
431
440
|
msgstr ""
|
432
441
|
|
442
|
+
msgid "Proxy tasks batch size"
|
443
|
+
msgstr ""
|
444
|
+
|
433
445
|
msgid "Raw"
|
434
446
|
msgstr ""
|
435
447
|
|
@@ -448,6 +460,12 @@ msgstr ""
|
|
448
460
|
msgid "Recurring logics"
|
449
461
|
msgstr ""
|
450
462
|
|
463
|
+
msgid "Refresh Data"
|
464
|
+
msgstr ""
|
465
|
+
|
466
|
+
msgid "Remote action:"
|
467
|
+
msgstr ""
|
468
|
+
|
451
469
|
msgid "Repeat N times"
|
452
470
|
msgstr ""
|
453
471
|
|
@@ -457,13 +475,13 @@ msgstr ""
|
|
457
475
|
msgid "Repeats"
|
458
476
|
msgstr ""
|
459
477
|
|
460
|
-
msgid "Require
|
478
|
+
msgid "Require auth for dynflow console"
|
461
479
|
msgstr ""
|
462
480
|
|
463
|
-
msgid "
|
481
|
+
msgid "Require user to be authenticated as user with admin rights when accessing dynflow console"
|
464
482
|
msgstr ""
|
465
483
|
|
466
|
-
msgid "Required lock
|
484
|
+
msgid "Required lock is already taken by other running tasks."
|
467
485
|
msgstr ""
|
468
486
|
|
469
487
|
msgid "Resource search_params requires resource_type and resource_id to be specified"
|
@@ -514,9 +532,6 @@ msgstr ""
|
|
514
532
|
msgid "Search query"
|
515
533
|
msgstr ""
|
516
534
|
|
517
|
-
msgid "Search string"
|
518
|
-
msgstr ""
|
519
|
-
|
520
535
|
msgid "See %{link} for more details on how to resolve the issue"
|
521
536
|
msgstr ""
|
522
537
|
|
@@ -535,10 +550,10 @@ msgstr ""
|
|
535
550
|
msgid "Set up recurring execution"
|
536
551
|
msgstr ""
|
537
552
|
|
538
|
-
msgid "
|
553
|
+
msgid "Setting is off"
|
539
554
|
msgstr ""
|
540
555
|
|
541
|
-
msgid "
|
556
|
+
msgid "Show recurring logic details"
|
542
557
|
msgstr ""
|
543
558
|
|
544
559
|
msgid "Start at"
|
@@ -559,7 +574,7 @@ msgstr ""
|
|
559
574
|
msgid "Step Canceled"
|
560
575
|
msgstr ""
|
561
576
|
|
562
|
-
msgid "Stop
|
577
|
+
msgid "Stop selected stoppable tasks"
|
563
578
|
msgstr ""
|
564
579
|
|
565
580
|
msgid "Stop specific tasks by ID"
|
@@ -580,6 +595,9 @@ msgstr ""
|
|
580
595
|
msgid "Sun"
|
581
596
|
msgstr ""
|
582
597
|
|
598
|
+
msgid "Sync task timeout"
|
599
|
+
msgstr ""
|
600
|
+
|
583
601
|
msgid "Task"
|
584
602
|
msgstr ""
|
585
603
|
|
@@ -610,12 +628,21 @@ msgstr ""
|
|
610
628
|
msgid "Tasks"
|
611
629
|
msgstr ""
|
612
630
|
|
631
|
+
msgid "Tasks troubleshooting URL"
|
632
|
+
msgstr ""
|
633
|
+
|
613
634
|
msgid "The ID of the step inside the execution plan to send the event to"
|
614
635
|
msgstr ""
|
615
636
|
|
616
637
|
msgid "The recommended approach is to investigate the error messages below and in 'errors' tab, address the primary cause of the issue and resume the task."
|
617
638
|
msgstr ""
|
618
639
|
|
640
|
+
msgid "The recurring logic was disabled."
|
641
|
+
msgstr ""
|
642
|
+
|
643
|
+
msgid "The recurring logic was enabled."
|
644
|
+
msgstr ""
|
645
|
+
|
619
646
|
msgid "The smart proxy task %s failed."
|
620
647
|
msgstr ""
|
621
648
|
|
@@ -690,6 +717,9 @@ msgstr ""
|
|
690
717
|
msgid "Yes"
|
691
718
|
msgstr ""
|
692
719
|
|
720
|
+
msgid "You do not have permission"
|
721
|
+
msgstr ""
|
722
|
+
|
693
723
|
msgid "activation key"
|
694
724
|
msgstr ""
|
695
725
|
|
@@ -743,6 +773,9 @@ msgstr ""
|
|
743
773
|
msgid "organization"
|
744
774
|
msgstr ""
|
745
775
|
|
776
|
+
msgid "other"
|
777
|
+
msgstr ""
|
778
|
+
|
746
779
|
msgid "paused"
|
747
780
|
msgstr ""
|
748
781
|
|