foreman-tasks 1.1.2 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +2 -0
- data/README.md +2 -0
- data/app/controllers/foreman_tasks/api/tasks_controller.rb +33 -1
- data/app/controllers/foreman_tasks/tasks_controller.rb +9 -14
- data/app/lib/actions/proxy_action.rb +1 -1
- data/app/models/foreman_tasks/task.rb +4 -0
- data/app/models/foreman_tasks/task/dynflow_task.rb +3 -1
- data/app/models/setting/foreman_tasks.rb +1 -1
- data/app/services/ui_notifications/tasks/task_bulk_stop.rb +36 -0
- data/app/views/foreman_tasks/api/tasks/details.json.rabl +0 -1
- data/app/views/foreman_tasks/api/tasks/show.json.rabl +2 -0
- data/config/routes.rb +1 -0
- data/db/migrate/20200517215015_rename_bookmarks_controller.rb +35 -0
- data/db/migrate/20200519093217_drop_dynflow_allow_dangerous_actions_setting.foreman_tasks.rb +5 -0
- data/db/migrate/20200611090846_add_task_lock_index_on_resource_type_and_task_id.rb +3 -3
- data/db/seeds.d/30-notification_blueprints.rb +7 -0
- data/lib/foreman_tasks/engine.rb +2 -7
- data/lib/foreman_tasks/version.rb +1 -1
- data/locale/action_names.rb +1 -1
- data/locale/en/LC_MESSAGES/foreman_tasks.mo +0 -0
- data/locale/en/foreman_tasks.po +270 -54
- data/locale/foreman_tasks.pot +630 -292
- data/locale/fr/LC_MESSAGES/foreman_tasks.mo +0 -0
- data/locale/fr/foreman_tasks.po +817 -0
- data/locale/ja/LC_MESSAGES/foreman_tasks.mo +0 -0
- data/locale/ja/foreman_tasks.po +817 -0
- data/locale/zh_CN/LC_MESSAGES/foreman_tasks.mo +0 -0
- data/locale/zh_CN/foreman_tasks.po +816 -0
- data/package.json +1 -0
- data/script/npm_link_foreman_js.sh +26 -0
- data/webpack/ForemanTasks/Components/TaskActions/TaskAction.test.js +60 -0
- data/webpack/ForemanTasks/Components/{TasksTable/TasksTableActionHelpers.js → TaskActions/TaskActionHelpers.js} +21 -6
- data/webpack/ForemanTasks/Components/{TasksTable/__tests__/TasksTableActionHelpers.test.js → TaskActions/TaskActionHelpers.test.js} +2 -2
- data/webpack/ForemanTasks/Components/TaskActions/TaskActionsConstants.js +16 -0
- data/webpack/ForemanTasks/Components/TaskActions/UnlockModals.js +60 -0
- data/webpack/ForemanTasks/Components/TaskActions/UnlockModals.test.js +14 -0
- data/webpack/ForemanTasks/Components/TaskActions/__snapshots__/TaskAction.test.js.snap +233 -0
- data/webpack/ForemanTasks/Components/TaskActions/__snapshots__/UnlockModals.test.js.snap +25 -0
- data/webpack/ForemanTasks/Components/TaskActions/index.js +115 -0
- data/webpack/ForemanTasks/Components/TaskDetails/Components/RunningSteps.js +17 -3
- data/webpack/ForemanTasks/Components/TaskDetails/Components/Task.js +149 -167
- data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/RunningSteps.test.js +8 -1
- data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/Task.test.js +68 -3
- data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/TaskInfo.test.js +0 -1
- data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/__snapshots__/RunningSteps.test.js.snap +1 -1
- data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/__snapshots__/Task.test.js.snap +124 -76
- data/webpack/ForemanTasks/Components/TaskDetails/TaskDetails.js +35 -5
- data/webpack/ForemanTasks/Components/TaskDetails/TaskDetails.scss +3 -14
- data/webpack/ForemanTasks/Components/TaskDetails/TaskDetailsActions.js +40 -16
- data/webpack/ForemanTasks/Components/TaskDetails/TaskDetailsConstants.js +3 -4
- data/webpack/ForemanTasks/Components/TaskDetails/TaskDetailsReducer.js +0 -6
- data/webpack/ForemanTasks/Components/TaskDetails/TaskDetailsSelectors.js +4 -10
- data/webpack/ForemanTasks/Components/TaskDetails/TasksDetailsHelper.js +6 -1
- data/webpack/ForemanTasks/Components/TaskDetails/__tests__/TaskDetails.fixtures.js +8 -0
- data/webpack/ForemanTasks/Components/TaskDetails/__tests__/TaskDetails.test.js +7 -1
- data/webpack/ForemanTasks/Components/TaskDetails/__tests__/TaskDetailsActions.test.js +18 -2
- data/webpack/ForemanTasks/Components/TaskDetails/__tests__/__snapshots__/TaskDetails.test.js.snap +30 -13
- data/webpack/ForemanTasks/Components/TaskDetails/__tests__/__snapshots__/TaskDetailsActions.test.js.snap +91 -0
- data/webpack/ForemanTasks/Components/TaskDetails/__tests__/integration.test.js +13 -4
- data/webpack/ForemanTasks/Components/TaskDetails/index.js +6 -8
- data/webpack/ForemanTasks/Components/TasksDashboard/TasksDashboardActions.js +1 -1
- data/webpack/ForemanTasks/Components/TasksDashboard/__tests__/TasksDashboardActions.test.js +2 -2
- data/webpack/ForemanTasks/Components/TasksTable/Components/ActionSelectButton.js +14 -1
- data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/ConfirmModal.js +83 -0
- data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/ConfirmModalActions.js +106 -0
- data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/ConfirmModalReducer.js +38 -0
- data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/ConfirmModalSelectors.js +46 -0
- data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/ConfirmModal.test.js +36 -0
- data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/ConfirmModalActions.test.js +205 -0
- data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/ConfirmModalReducer.test.js +27 -0
- data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/ConfirmModalSelectors.test.js +55 -0
- data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/__snapshots__/ConfirmModal.test.js.snap +41 -0
- data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/__snapshots__/ConfirmModalReducer.test.js.snap +19 -0
- data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/__snapshots__/ConfirmModalSelectors.test.js.snap +32 -0
- data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/index.js +29 -0
- data/webpack/ForemanTasks/Components/TasksTable/Components/__test__/ActionSelectButton.test.js +1 -0
- data/webpack/ForemanTasks/Components/TasksTable/Components/__test__/__snapshots__/ActionSelectButton.test.js.snap +11 -0
- data/webpack/ForemanTasks/Components/TasksTable/TasksBulkActions.js +135 -35
- data/webpack/ForemanTasks/Components/TasksTable/TasksTable.js +13 -9
- data/webpack/ForemanTasks/Components/TasksTable/TasksTableActions.js +26 -66
- data/webpack/ForemanTasks/Components/TasksTable/TasksTableConstants.js +10 -12
- data/webpack/ForemanTasks/Components/TasksTable/TasksTablePage.js +30 -96
- data/webpack/ForemanTasks/Components/TasksTable/TasksTableSchema.js +2 -2
- data/webpack/ForemanTasks/Components/TasksTable/TasksTableSelectors.js +8 -4
- data/webpack/ForemanTasks/Components/TasksTable/__tests__/TasksBulkActions.test.js +50 -2
- data/webpack/ForemanTasks/Components/TasksTable/__tests__/TasksTable.fixtures.js +3 -12
- data/webpack/ForemanTasks/Components/TasksTable/__tests__/TasksTableActions.test.js +22 -26
- data/webpack/ForemanTasks/Components/TasksTable/__tests__/TasksTablePage.test.js +2 -1
- data/webpack/ForemanTasks/Components/TasksTable/__tests__/__snapshots__/SubTasksPage.test.js.snap +3 -14
- data/webpack/ForemanTasks/Components/TasksTable/__tests__/__snapshots__/TasksBulkActions.test.js.snap +155 -0
- data/webpack/ForemanTasks/Components/TasksTable/__tests__/__snapshots__/TasksIndexPage.test.js.snap +3 -14
- data/webpack/ForemanTasks/Components/TasksTable/__tests__/__snapshots__/TasksTableActions.test.js.snap +17 -124
- data/webpack/ForemanTasks/Components/TasksTable/__tests__/__snapshots__/TasksTablePage.test.js.snap +63 -133
- data/webpack/ForemanTasks/Components/TasksTable/formatters/__test__/__snapshots__/actionCellFormatter.test.js.snap +1 -0
- data/webpack/ForemanTasks/Components/TasksTable/formatters/__test__/__snapshots__/selectionCellFormatter.test.js.snap +2 -0
- data/webpack/ForemanTasks/Components/TasksTable/formatters/__test__/actionCellFormatter.test.js +1 -1
- data/webpack/ForemanTasks/Components/TasksTable/formatters/__test__/selectionCellFormatter.test.js +1 -1
- data/webpack/ForemanTasks/Components/TasksTable/formatters/actionCellFormatter.js +10 -7
- data/webpack/ForemanTasks/Components/TasksTable/formatters/selectionCellFormatter.js +7 -0
- data/webpack/ForemanTasks/Components/TasksTable/index.js +2 -2
- data/webpack/ForemanTasks/Components/common/ActionButtons/ActionButton.js +55 -19
- data/webpack/ForemanTasks/Components/common/ActionButtons/ActionButton.test.js +75 -19
- data/webpack/ForemanTasks/Components/common/ActionButtons/__snapshots__/ActionButton.test.js.snap +88 -21
- data/webpack/ForemanTasks/Components/common/ClickConfirmation/ClickConfirmation.scss +9 -0
- data/webpack/ForemanTasks/Components/common/ClickConfirmation/ClickConfirmation.test.js +44 -0
- data/webpack/ForemanTasks/Components/common/ClickConfirmation/__snapshots__/ClickConfirmation.test.js.snap +52 -0
- data/webpack/ForemanTasks/Components/common/ClickConfirmation/index.js +59 -66
- data/webpack/ForemanTasks/Components/common/{ToastTypesConstants.js → ToastsHelpers/ToastTypesConstants.js} +0 -0
- data/webpack/ForemanTasks/Components/common/ToastsHelpers/index.js +15 -0
- data/webpack/ForemanTasks/ForemanTasksReducers.js +2 -0
- data/webpack/ForemanTasks/Routes/ForemanTasksRoutes.test.js +2 -1
- data/webpack/__mocks__/foremanReact/components/ForemanModal/ForemanModalHooks.js +2 -2
- data/webpack/__mocks__/foremanReact/components/ForemanModal/index.js +17 -3
- data/webpack/__mocks__/foremanReact/components/common/ActionButtons/ActionButtons.js +3 -0
- data/webpack/__mocks__/foremanReact/{API.js → redux/API.js} +1 -1
- metadata +41 -21
- data/webpack/ForemanTasks/Components/TasksTable/Components/CancelConfirm.js +0 -53
- data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmationModals.js +0 -56
- data/webpack/ForemanTasks/Components/TasksTable/Components/ResumeConfirm.js +0 -52
- data/webpack/ForemanTasks/Components/TasksTable/Components/__test__/CancelConfirm.test.js +0 -26
- data/webpack/ForemanTasks/Components/TasksTable/Components/__test__/ConfirmationModals.test.js +0 -24
- data/webpack/ForemanTasks/Components/TasksTable/Components/__test__/ResumeConfirm.test.js +0 -26
- data/webpack/ForemanTasks/Components/TasksTable/Components/__test__/__snapshots__/CancelConfirm.test.js.snap +0 -65
- data/webpack/ForemanTasks/Components/TasksTable/Components/__test__/__snapshots__/ConfirmationModals.test.js.snap +0 -30
- data/webpack/ForemanTasks/Components/TasksTable/Components/__test__/__snapshots__/ResumeConfirm.test.js.snap +0 -63
- data/webpack/ForemanTasks/Components/common/ActionButtons/CancelButton.js +0 -23
- data/webpack/ForemanTasks/Components/common/ActionButtons/CancelButton.test.js +0 -26
- data/webpack/ForemanTasks/Components/common/ActionButtons/ResumeButton.js +0 -23
- data/webpack/ForemanTasks/Components/common/ActionButtons/ResumeButton.test.js +0 -27
- data/webpack/ForemanTasks/Components/common/ActionButtons/__snapshots__/CancelButton.test.js.snap +0 -15
- data/webpack/ForemanTasks/Components/common/ActionButtons/__snapshots__/ResumeButton.test.js.snap +0 -15
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 62a10715bd5b194c1cb750c2f100b60a2f3bca155e0df6d303b284cf157a87d9
|
|
4
|
+
data.tar.gz: fd24e269912731dd0e2cee07e99e694dbf98547cab3a3d3dd89963f87d2dc3b9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 011ae333df38537c17b1593a06f41828aa600e45d653c4231644b7d86e0a0ea92016de9d36abb067c432eb4e04466bec72e9ceb9f6ad87be3142b9896d7f18e4
|
|
7
|
+
data.tar.gz: 0c06ac795bc95787682262e42e8330b5b1e10d0923bc68581ba19623be01cac63ab6bab70d67a168a51c61b2f34f383f19c95276eee9fd564fb7a8c32edec16f
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
|
@@ -141,6 +141,34 @@ module ForemanTasks
|
|
|
141
141
|
}
|
|
142
142
|
end
|
|
143
143
|
|
|
144
|
+
api :POST, '/tasks/bulk_stop', N_('Stop all stoppable tasks')
|
|
145
|
+
param :search, String, :desc => N_('Stop tasks matching search string')
|
|
146
|
+
param :task_ids, Array, :desc => N_('Stop specific tasks by ID')
|
|
147
|
+
def bulk_stop
|
|
148
|
+
if params[:search].nil? && params[:task_ids].nil?
|
|
149
|
+
raise BadRequest, _('Please provide at least one of search or task_ids parameters in the request')
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
filtered_scope = bulk_scope
|
|
153
|
+
total_length = filtered_scope.count
|
|
154
|
+
to_stop = filtered_scope.where.not(state: :stopped)
|
|
155
|
+
to_stop_length = to_stop.count
|
|
156
|
+
skipped_length = total_length - to_stop_length
|
|
157
|
+
|
|
158
|
+
to_stop.find_each { |task| task.update(state: :stopped) }
|
|
159
|
+
|
|
160
|
+
if params[:search]
|
|
161
|
+
notification = UINotifications::Tasks::TaskBulkStop.new(filtered_scope.first, to_stop_length, skipped_length)
|
|
162
|
+
notification.deliver!
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
render :json => {
|
|
166
|
+
total: total_length,
|
|
167
|
+
stopped_length: to_stop_length,
|
|
168
|
+
skipped_length: skipped_length
|
|
169
|
+
}
|
|
170
|
+
end
|
|
171
|
+
|
|
144
172
|
api :GET, '/tasks', N_('List tasks')
|
|
145
173
|
param :search, String, :desc => N_('Search string')
|
|
146
174
|
param :page, :number, :desc => N_('Page number, starting at 1')
|
|
@@ -287,11 +315,15 @@ module ForemanTasks
|
|
|
287
315
|
@resource_scope ||= ForemanTasks::Task.authorized("#{action_permission}_foreman_tasks")
|
|
288
316
|
end
|
|
289
317
|
|
|
318
|
+
def controller_permission
|
|
319
|
+
'foreman_tasks'
|
|
320
|
+
end
|
|
321
|
+
|
|
290
322
|
def action_permission
|
|
291
323
|
case params[:action]
|
|
292
324
|
when 'bulk_search', 'summary', 'details', 'sub_tasks'
|
|
293
325
|
:view
|
|
294
|
-
when 'bulk_resume', 'bulk_cancel'
|
|
326
|
+
when 'bulk_resume', 'bulk_cancel', 'bulk_stop'
|
|
295
327
|
:edit
|
|
296
328
|
else
|
|
297
329
|
super
|
|
@@ -3,8 +3,6 @@ module ForemanTasks
|
|
|
3
3
|
include Foreman::Controller::AutoCompleteSearch
|
|
4
4
|
include Foreman::Controller::CsvResponder
|
|
5
5
|
|
|
6
|
-
before_action :restrict_dangerous_actions, :only => [:unlock, :force_unlock]
|
|
7
|
-
|
|
8
6
|
def show
|
|
9
7
|
@task = resource_base.find(params[:id])
|
|
10
8
|
render :layout => !request.xhr?
|
|
@@ -33,9 +31,12 @@ module ForemanTasks
|
|
|
33
31
|
|
|
34
32
|
def cancel_step
|
|
35
33
|
task = find_dynflow_task
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
34
|
+
result = ForemanTasks.dynflow.world.event(task.external_id, params[:step_id].to_i, ::Dynflow::Action::Cancellable::Cancel).wait
|
|
35
|
+
if result.rejected?
|
|
36
|
+
render json: { error: result.reason }, status: :bad_request
|
|
37
|
+
else
|
|
38
|
+
render json: { statusText: 'OK' }
|
|
39
|
+
end
|
|
39
40
|
end
|
|
40
41
|
|
|
41
42
|
def cancel
|
|
@@ -72,19 +73,17 @@ module ForemanTasks
|
|
|
72
73
|
if task.paused?
|
|
73
74
|
task.state = :stopped
|
|
74
75
|
task.save!
|
|
75
|
-
|
|
76
|
+
render json: { statusText: 'OK' }
|
|
76
77
|
else
|
|
77
|
-
|
|
78
|
+
render json: {}, status: :bad_request
|
|
78
79
|
end
|
|
79
|
-
redirect_back(:fallback_location => foreman_tasks_task_path(task))
|
|
80
80
|
end
|
|
81
81
|
|
|
82
82
|
def force_unlock
|
|
83
83
|
task = find_dynflow_task
|
|
84
84
|
task.state = :stopped
|
|
85
85
|
task.save!
|
|
86
|
-
|
|
87
|
-
redirect_back(:fallback_location => foreman_tasks_task_path(task))
|
|
86
|
+
render json: { statusText: 'OK' }
|
|
88
87
|
end
|
|
89
88
|
|
|
90
89
|
# we need do this to make the Foreman helpers working properly
|
|
@@ -103,10 +102,6 @@ module ForemanTasks
|
|
|
103
102
|
csv_response(@tasks, [:id, :action, :state, :result, 'started_at.in_time_zone', 'ended_at.in_time_zone', :username], ['Id', 'Action', 'State', 'Result', 'Started At', 'Ended At', 'User'])
|
|
104
103
|
end
|
|
105
104
|
|
|
106
|
-
def restrict_dangerous_actions
|
|
107
|
-
render_403 unless Setting['dynflow_allow_dangerous_actions']
|
|
108
|
-
end
|
|
109
|
-
|
|
110
105
|
def controller_permission
|
|
111
106
|
'foreman_tasks'
|
|
112
107
|
end
|
|
@@ -257,7 +257,7 @@ module Actions
|
|
|
257
257
|
if failed_proxy_tasks.count < options[:retry_count]
|
|
258
258
|
suspend do |suspended_action|
|
|
259
259
|
@world.clock.ping suspended_action,
|
|
260
|
-
Time.
|
|
260
|
+
Time.now.getlocal + options[:retry_interval],
|
|
261
261
|
event
|
|
262
262
|
end
|
|
263
263
|
else
|
|
@@ -70,6 +70,10 @@ module ForemanTasks
|
|
|
70
70
|
end)
|
|
71
71
|
scope :for_action_types, (->(action_types) { where('foreman_tasks_tasks.label IN (?)', Array(action_types)) })
|
|
72
72
|
|
|
73
|
+
class Jail < Safemode::Jail
|
|
74
|
+
allow :started_at, :ended_at, :result, :state, :label, :main_action
|
|
75
|
+
end
|
|
76
|
+
|
|
73
77
|
def input
|
|
74
78
|
{}
|
|
75
79
|
end
|
|
@@ -46,7 +46,8 @@ module ForemanTasks
|
|
|
46
46
|
end
|
|
47
47
|
|
|
48
48
|
def progress
|
|
49
|
-
execution_plan.try(:progress) || 0
|
|
49
|
+
progress_raw = execution_plan.try(:progress) || 0
|
|
50
|
+
progress_raw.round(2)
|
|
50
51
|
end
|
|
51
52
|
|
|
52
53
|
def execution_plan(silence_exception = true)
|
|
@@ -119,6 +120,7 @@ module ForemanTasks
|
|
|
119
120
|
begin
|
|
120
121
|
f_action = f.action(execution_plan)
|
|
121
122
|
{
|
|
123
|
+
id: f_action.id,
|
|
122
124
|
action_class: f.action_class.name,
|
|
123
125
|
state: f.state,
|
|
124
126
|
input: f_action.input.pretty_inspect,
|
|
@@ -2,7 +2,6 @@ class Setting::ForemanTasks < Setting
|
|
|
2
2
|
def self.default_settings
|
|
3
3
|
[
|
|
4
4
|
set('foreman_tasks_sync_task_timeout', N_('Number of seconds to wait for synchronous task to finish.'), 120),
|
|
5
|
-
set('dynflow_allow_dangerous_actions', N_('Allow unlocking actions which can have dangerous consequences.'), false),
|
|
6
5
|
set('dynflow_enable_console', N_('Enable the dynflow console (/foreman_tasks/dynflow) for debugging'), true),
|
|
7
6
|
set('dynflow_console_require_auth', N_('Require user to be authenticated as user with admin rights when accessing dynflow console'), true),
|
|
8
7
|
set('foreman_tasks_proxy_action_retry_count', N_('Number of attempts to start a task on the smart proxy before failing'), 4),
|
|
@@ -24,6 +23,7 @@ class Setting::ForemanTasks < Setting
|
|
|
24
23
|
|
|
25
24
|
def self.load_defaults
|
|
26
25
|
Setting::BLANK_ATTRS.push('foreman_tasks_troubleshooting_url')
|
|
26
|
+
Setting::NONZERO_ATTRS.push('foreman_tasks_polling_multiplier')
|
|
27
27
|
super
|
|
28
28
|
end
|
|
29
29
|
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module UINotifications
|
|
2
|
+
module Tasks
|
|
3
|
+
class TaskBulkStop < ::UINotifications::Base
|
|
4
|
+
def initialize(task, stopped_length, skipped_length)
|
|
5
|
+
@subject = task
|
|
6
|
+
@stopped_length = stopped_length
|
|
7
|
+
@skipped_length = skipped_length
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def create
|
|
11
|
+
Notification.create!(
|
|
12
|
+
initiator: initiator,
|
|
13
|
+
audience: audience,
|
|
14
|
+
subject: subject,
|
|
15
|
+
notification_blueprint: blueprint,
|
|
16
|
+
message: message,
|
|
17
|
+
notification_recipients: [NotificationRecipient.create(:user => User.current)]
|
|
18
|
+
)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def audience
|
|
22
|
+
Notification::AUDIENCE_GLOBAL
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def message
|
|
26
|
+
('%{stopped} Tasks were stopped. %{skipped} Tasks were already stopped. ' %
|
|
27
|
+
{ stopped: @stopped_length,
|
|
28
|
+
skipped: @skipped_length })
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def blueprint
|
|
32
|
+
@blueprint ||= NotificationBlueprint.find_by(name: 'tasks_bulk_stop')
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -9,7 +9,6 @@ node(:failed_steps) { @task.input_output_failed_steps }
|
|
|
9
9
|
node(:running_steps) { @task.input_output_running_steps }
|
|
10
10
|
node(:help) { troubleshooting_info_text }
|
|
11
11
|
node(:has_sub_tasks) { @task.sub_tasks.any? }
|
|
12
|
-
node(:allowDangerousActions) { Setting['dynflow_allow_dangerous_actions'] }
|
|
13
12
|
node(:locks) do
|
|
14
13
|
@task.locks.map do |lock|
|
|
15
14
|
{ name: lock.name, exclusive: lock.exclusive, resource_type: lock.resource_type, resource_id: lock.resource_id }
|
data/config/routes.rb
CHANGED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
class RenameBookmarksController < ActiveRecord::Migration[5.2]
|
|
2
|
+
def up
|
|
3
|
+
original_controller = 'foreman_tasks_tasks'
|
|
4
|
+
original_bookmarks = Bookmark.where(controller: original_controller)
|
|
5
|
+
original_bookmarks_names = Hash[original_bookmarks.pluck(:name, :id)]
|
|
6
|
+
|
|
7
|
+
new_controller = 'foreman_tasks/tasks'
|
|
8
|
+
new_bookmarks = Bookmark.where(controller: new_controller)
|
|
9
|
+
new_bookmarks.find_each do |new_bookmark|
|
|
10
|
+
name = new_bookmark.name
|
|
11
|
+
is_name_taken = original_bookmarks_names.key? name
|
|
12
|
+
|
|
13
|
+
if is_name_taken
|
|
14
|
+
original_bookmark = original_bookmarks.find(original_bookmarks_names[name])
|
|
15
|
+
is_duplicated = original_bookmark.query == new_bookmark.query &&
|
|
16
|
+
original_bookmark.owner_id == new_bookmark.owner_id &&
|
|
17
|
+
original_bookmark.owner_type == new_bookmark.owner_type &&
|
|
18
|
+
original_bookmark.public == new_bookmark.public
|
|
19
|
+
|
|
20
|
+
if is_duplicated
|
|
21
|
+
original_bookmark.destroy
|
|
22
|
+
else
|
|
23
|
+
modified_name = "#{name}_#{generate_token}"
|
|
24
|
+
original_bookmark.update(name: modified_name)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
# Revert to the original controller name
|
|
28
|
+
new_bookmark.update(controller: original_controller)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def generate_token
|
|
33
|
+
SecureRandom.base64(5).gsub(/[^0-9a-z ]/i, '')
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -2,8 +2,8 @@ class AddTaskLockIndexOnResourceTypeAndTaskId < ActiveRecord::Migration[6.0]
|
|
|
2
2
|
def change
|
|
3
3
|
add_index :foreman_tasks_locks, [:task_id, :resource_type, :resource_id], name: 'index_tasks_locks_on_task_id_resource_type_and_resource_id'
|
|
4
4
|
# These indexes are not needed as they can be gained from partial index lookups
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
[:task_id, :name, :resource_type].each do |index|
|
|
6
|
+
remove_index :foreman_tasks_locks, index if index_exists?(:foreman_tasks_locks, index)
|
|
7
|
+
end
|
|
8
8
|
end
|
|
9
9
|
end
|
data/lib/foreman_tasks/engine.rb
CHANGED
|
@@ -34,7 +34,7 @@ module ForemanTasks
|
|
|
34
34
|
|
|
35
35
|
initializer 'foreman_tasks.register_plugin', :before => :finisher_hook do |_app|
|
|
36
36
|
Foreman::Plugin.register :"foreman-tasks" do
|
|
37
|
-
requires_foreman '>= 2.
|
|
37
|
+
requires_foreman '>= 2.1.0'
|
|
38
38
|
divider :top_menu, :parent => :monitor_menu, :last => true, :caption => N_('Foreman Tasks')
|
|
39
39
|
menu :top_menu, :tasks,
|
|
40
40
|
:url_hash => { :controller => 'foreman_tasks/tasks', :action => :index },
|
|
@@ -53,7 +53,7 @@ module ForemanTasks
|
|
|
53
53
|
:'foreman_tasks/react' => [:index],
|
|
54
54
|
:'foreman_tasks/api/tasks' => [:bulk_search, :show, :index, :summary, :summary_sub_tasks, :details, :sub_tasks] }, :resource_type => ForemanTasks::Task.name
|
|
55
55
|
permission :edit_foreman_tasks, { :'foreman_tasks/tasks' => [:resume, :unlock, :force_unlock, :cancel_step, :cancel, :abort],
|
|
56
|
-
:'foreman_tasks/api/tasks' => [:bulk_resume, :bulk_cancel] }, :resource_type => ForemanTasks::Task.name
|
|
56
|
+
:'foreman_tasks/api/tasks' => [:bulk_resume, :bulk_cancel, :bulk_stop] }, :resource_type => ForemanTasks::Task.name
|
|
57
57
|
|
|
58
58
|
permission :create_recurring_logics, {}, :resource_type => ForemanTasks::RecurringLogic.name
|
|
59
59
|
|
|
@@ -79,11 +79,6 @@ module ForemanTasks
|
|
|
79
79
|
end
|
|
80
80
|
end
|
|
81
81
|
|
|
82
|
-
initializer 'foreman_tasks.ignore_dynflow_tables' do |_app|
|
|
83
|
-
# Ignore Dynflow tables when schema-dumping. Dynflow tables are handled automatically by Dynflow.
|
|
84
|
-
ActiveRecord::SchemaDumper.ignore_tables << /^dynflow_.*$/
|
|
85
|
-
end
|
|
86
|
-
|
|
87
82
|
initializer 'foreman_tasks.apipie' do
|
|
88
83
|
# this condition is here for compatibility reason to work with Foreman 1.4.x
|
|
89
84
|
if Apipie.configuration.api_controllers_matcher.is_a?(Array) &&
|
data/locale/action_names.rb
CHANGED
|
Binary file
|
data/locale/en/foreman_tasks.po
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
#
|
|
6
6
|
msgid ""
|
|
7
7
|
msgstr ""
|
|
8
|
-
"Project-Id-Version: foreman_tasks 0.
|
|
8
|
+
"Project-Id-Version: foreman_tasks 0.3.4\n"
|
|
9
9
|
"Report-Msgid-Bugs-To: \n"
|
|
10
10
|
"PO-Revision-Date: 2016-02-03 09:55-0500\n"
|
|
11
11
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
@@ -17,10 +17,16 @@ msgstr ""
|
|
|
17
17
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
|
18
18
|
"\n"
|
|
19
19
|
|
|
20
|
-
msgid "
|
|
20
|
+
msgid "${taskReload ? 'Stop' : 'Start'} auto-reloading"
|
|
21
21
|
msgstr ""
|
|
22
22
|
|
|
23
|
-
msgid "%s
|
|
23
|
+
msgid "%(last)s Last %(time)s"
|
|
24
|
+
msgstr ""
|
|
25
|
+
|
|
26
|
+
msgid "%(older)s Older %(time)s"
|
|
27
|
+
msgstr ""
|
|
28
|
+
|
|
29
|
+
msgid "%s Selected Tasks"
|
|
24
30
|
msgstr ""
|
|
25
31
|
|
|
26
32
|
msgid "%s is not valid format of cron line"
|
|
@@ -38,7 +44,10 @@ msgstr ""
|
|
|
38
44
|
msgid "%{value} is wrong format"
|
|
39
45
|
msgstr ""
|
|
40
46
|
|
|
41
|
-
msgid "
|
|
47
|
+
msgid "12h"
|
|
48
|
+
msgstr ""
|
|
49
|
+
|
|
50
|
+
msgid "24h"
|
|
42
51
|
msgstr ""
|
|
43
52
|
|
|
44
53
|
msgid ":after setting in tasks cleanup section is deprecated, use :after in :rules section to set the value. to cleanup rules"
|
|
@@ -56,13 +65,16 @@ msgstr ""
|
|
|
56
65
|
msgid "Active"
|
|
57
66
|
msgstr ""
|
|
58
67
|
|
|
59
|
-
msgid "
|
|
68
|
+
msgid "Active Filters:"
|
|
60
69
|
msgstr ""
|
|
61
70
|
|
|
62
|
-
msgid "
|
|
71
|
+
msgid "All %s tasks are selected. "
|
|
72
|
+
msgstr ""
|
|
73
|
+
|
|
74
|
+
msgid "All proxies with the required feature are unavailable at the moment"
|
|
63
75
|
msgstr ""
|
|
64
76
|
|
|
65
|
-
msgid "Allow
|
|
77
|
+
msgid "Allow triggering tasks on the smart proxy in batches"
|
|
66
78
|
msgstr ""
|
|
67
79
|
|
|
68
80
|
msgid "Associated resources"
|
|
@@ -72,9 +84,6 @@ msgstr ""
|
|
|
72
84
|
msgid "At"
|
|
73
85
|
msgstr ""
|
|
74
86
|
|
|
75
|
-
msgid "Auto Reload"
|
|
76
|
-
msgstr ""
|
|
77
|
-
|
|
78
87
|
msgid "Back to tasks"
|
|
79
88
|
msgstr ""
|
|
80
89
|
|
|
@@ -87,21 +96,69 @@ msgstr ""
|
|
|
87
96
|
msgid "Cancel"
|
|
88
97
|
msgstr ""
|
|
89
98
|
|
|
99
|
+
msgid "Cancel Selected"
|
|
100
|
+
msgstr ""
|
|
101
|
+
|
|
102
|
+
msgid "Cancel all cancellable tasks"
|
|
103
|
+
msgstr ""
|
|
104
|
+
|
|
90
105
|
msgid "Cancel enforced: the task might be still running on the proxy"
|
|
91
106
|
msgstr ""
|
|
92
107
|
|
|
93
108
|
msgid "Cancel recurring logic"
|
|
94
109
|
msgstr ""
|
|
95
110
|
|
|
111
|
+
msgid "Cancel selected tasks"
|
|
112
|
+
msgstr ""
|
|
113
|
+
|
|
114
|
+
msgid "Cancel specific tasks by ID"
|
|
115
|
+
msgstr ""
|
|
116
|
+
|
|
117
|
+
msgid "Cancel tasks matching search string"
|
|
118
|
+
msgstr ""
|
|
119
|
+
|
|
120
|
+
msgid "Canceling selected tasks, this might take a while"
|
|
121
|
+
msgstr ""
|
|
122
|
+
|
|
123
|
+
msgid "Canceling with force selected tasks, this might take a while"
|
|
124
|
+
msgstr ""
|
|
125
|
+
|
|
96
126
|
msgid "Cancelled"
|
|
97
127
|
msgstr ""
|
|
98
128
|
|
|
129
|
+
msgid "Cannot cancel tasks at the moment"
|
|
130
|
+
msgstr ""
|
|
131
|
+
|
|
132
|
+
msgid "Cannot force cancel tasks at the moment"
|
|
133
|
+
msgstr ""
|
|
134
|
+
|
|
135
|
+
msgid "Cannot resume tasks at the moment"
|
|
136
|
+
msgstr ""
|
|
137
|
+
|
|
99
138
|
msgid "Cannot update a cancelled Recurring Logic."
|
|
100
139
|
msgstr ""
|
|
101
140
|
|
|
102
141
|
msgid "Changing request id %{request_id} to saved id %{saved_id}"
|
|
103
142
|
msgstr ""
|
|
104
143
|
|
|
144
|
+
msgid "Clear All Filters"
|
|
145
|
+
msgstr ""
|
|
146
|
+
|
|
147
|
+
msgid "Clear Cancelled"
|
|
148
|
+
msgstr ""
|
|
149
|
+
|
|
150
|
+
msgid "Complete"
|
|
151
|
+
msgstr ""
|
|
152
|
+
|
|
153
|
+
msgid "Conflicts with tasks:"
|
|
154
|
+
msgstr ""
|
|
155
|
+
|
|
156
|
+
msgid "Could not cancel step."
|
|
157
|
+
msgstr ""
|
|
158
|
+
|
|
159
|
+
msgid "Could not receive data: ${error && error.message}"
|
|
160
|
+
msgstr ""
|
|
161
|
+
|
|
105
162
|
msgid "Cron line"
|
|
106
163
|
msgstr ""
|
|
107
164
|
|
|
@@ -123,9 +180,15 @@ msgstr ""
|
|
|
123
180
|
msgid "Delayed"
|
|
124
181
|
msgstr ""
|
|
125
182
|
|
|
183
|
+
msgid "Delete recurring logics by search query"
|
|
184
|
+
msgstr ""
|
|
185
|
+
|
|
126
186
|
msgid "Details"
|
|
127
187
|
msgstr ""
|
|
128
188
|
|
|
189
|
+
msgid "Details of %s task"
|
|
190
|
+
msgstr ""
|
|
191
|
+
|
|
129
192
|
msgid "Disable"
|
|
130
193
|
msgstr ""
|
|
131
194
|
|
|
@@ -147,9 +210,6 @@ msgstr ""
|
|
|
147
210
|
msgid "Enable the dynflow console (/foreman_tasks/dynflow) for debugging"
|
|
148
211
|
msgstr ""
|
|
149
212
|
|
|
150
|
-
msgid "Ended at"
|
|
151
|
-
msgstr ""
|
|
152
|
-
|
|
153
213
|
msgid "Ends"
|
|
154
214
|
msgstr ""
|
|
155
215
|
|
|
@@ -159,6 +219,9 @@ msgstr ""
|
|
|
159
219
|
msgid "Errors"
|
|
160
220
|
msgstr ""
|
|
161
221
|
|
|
222
|
+
msgid "Errors:"
|
|
223
|
+
msgstr ""
|
|
224
|
+
|
|
162
225
|
msgid "Event delivered by request %{request_id}"
|
|
163
226
|
msgstr ""
|
|
164
227
|
|
|
@@ -171,7 +234,7 @@ msgstr ""
|
|
|
171
234
|
msgid "Execution plan data not available "
|
|
172
235
|
msgstr ""
|
|
173
236
|
|
|
174
|
-
msgid "
|
|
237
|
+
msgid "Export All"
|
|
175
238
|
msgstr ""
|
|
176
239
|
|
|
177
240
|
msgid "External Id"
|
|
@@ -189,6 +252,15 @@ msgstr ""
|
|
|
189
252
|
msgid "Finished"
|
|
190
253
|
msgstr ""
|
|
191
254
|
|
|
255
|
+
msgid "Force Cancel"
|
|
256
|
+
msgstr ""
|
|
257
|
+
|
|
258
|
+
msgid "Force Cancel Selected"
|
|
259
|
+
msgstr ""
|
|
260
|
+
|
|
261
|
+
msgid "Force Cancel selected tasks"
|
|
262
|
+
msgstr ""
|
|
263
|
+
|
|
192
264
|
msgid "Force Unlock"
|
|
193
265
|
msgstr ""
|
|
194
266
|
|
|
@@ -204,9 +276,6 @@ msgstr ""
|
|
|
204
276
|
msgid "How to order the sorted results (e.g. ASC for ascending)"
|
|
205
277
|
msgstr ""
|
|
206
278
|
|
|
207
|
-
msgid "I understand that this may cause harm and have working database backups of all backend services."
|
|
208
|
-
msgstr ""
|
|
209
|
-
|
|
210
279
|
msgid "ID"
|
|
211
280
|
msgstr ""
|
|
212
281
|
|
|
@@ -246,6 +315,9 @@ msgstr ""
|
|
|
246
315
|
msgid "Latest Warning/Error Tasks"
|
|
247
316
|
msgstr ""
|
|
248
317
|
|
|
318
|
+
msgid "Less than a second"
|
|
319
|
+
msgstr ""
|
|
320
|
+
|
|
249
321
|
msgid "List of tasks"
|
|
250
322
|
msgstr ""
|
|
251
323
|
|
|
@@ -261,6 +333,9 @@ msgstr ""
|
|
|
261
333
|
msgid "Mon"
|
|
262
334
|
msgstr ""
|
|
263
335
|
|
|
336
|
+
msgid "More than"
|
|
337
|
+
msgstr ""
|
|
338
|
+
|
|
264
339
|
msgid "N/A"
|
|
265
340
|
msgstr ""
|
|
266
341
|
|
|
@@ -273,6 +348,12 @@ msgstr ""
|
|
|
273
348
|
msgid "Next occurrence"
|
|
274
349
|
msgstr ""
|
|
275
350
|
|
|
351
|
+
msgid "No"
|
|
352
|
+
msgstr ""
|
|
353
|
+
|
|
354
|
+
msgid "No Tasks"
|
|
355
|
+
msgstr ""
|
|
356
|
+
|
|
276
357
|
msgid "No errors"
|
|
277
358
|
msgstr ""
|
|
278
359
|
|
|
@@ -282,12 +363,21 @@ msgstr ""
|
|
|
282
363
|
msgid "No running steps"
|
|
283
364
|
msgstr ""
|
|
284
365
|
|
|
366
|
+
msgid "No start or end dates"
|
|
367
|
+
msgstr ""
|
|
368
|
+
|
|
285
369
|
msgid "No task could be started"
|
|
286
370
|
msgstr ""
|
|
287
371
|
|
|
288
372
|
msgid "No. of Tasks"
|
|
289
373
|
msgstr ""
|
|
290
374
|
|
|
375
|
+
msgid "Not all the selected tasks can be cancelled"
|
|
376
|
+
msgstr ""
|
|
377
|
+
|
|
378
|
+
msgid "Not all the selected tasks can be resumed"
|
|
379
|
+
msgstr ""
|
|
380
|
+
|
|
291
381
|
msgid "Number of attempts to start a task on the smart proxy before failing"
|
|
292
382
|
msgstr ""
|
|
293
383
|
|
|
@@ -304,15 +394,39 @@ msgstr ""
|
|
|
304
394
|
msgid "On"
|
|
305
395
|
msgstr ""
|
|
306
396
|
|
|
397
|
+
msgid "Operation"
|
|
398
|
+
msgstr ""
|
|
399
|
+
|
|
307
400
|
msgid "Output"
|
|
308
401
|
msgstr ""
|
|
309
402
|
|
|
403
|
+
msgid "Output:"
|
|
404
|
+
msgstr ""
|
|
405
|
+
|
|
310
406
|
msgid "Page number, starting at 1"
|
|
311
407
|
msgstr ""
|
|
312
408
|
|
|
313
409
|
msgid "Parent task"
|
|
314
410
|
msgstr ""
|
|
315
411
|
|
|
412
|
+
msgid "Paused"
|
|
413
|
+
msgstr ""
|
|
414
|
+
|
|
415
|
+
msgid "Please inspect their state, fix their errors and resume them."
|
|
416
|
+
msgstr ""
|
|
417
|
+
|
|
418
|
+
msgid "Please provide a search parameter in the request"
|
|
419
|
+
msgstr ""
|
|
420
|
+
|
|
421
|
+
msgid "Please provide at least one of search or task_ids parameters in the request"
|
|
422
|
+
msgstr ""
|
|
423
|
+
|
|
424
|
+
msgid "Polling intervals multiplier"
|
|
425
|
+
msgstr ""
|
|
426
|
+
|
|
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
|
+
msgstr ""
|
|
429
|
+
|
|
316
430
|
msgid "Proxy task gone missing from the smart proxy"
|
|
317
431
|
msgstr ""
|
|
318
432
|
|
|
@@ -334,9 +448,6 @@ msgstr ""
|
|
|
334
448
|
msgid "Recurring logics"
|
|
335
449
|
msgstr ""
|
|
336
450
|
|
|
337
|
-
msgid "Remote action:"
|
|
338
|
-
msgstr ""
|
|
339
|
-
|
|
340
451
|
msgid "Repeat N times"
|
|
341
452
|
msgstr ""
|
|
342
453
|
|
|
@@ -349,10 +460,13 @@ msgstr ""
|
|
|
349
460
|
msgid "Require user to be authenticated as user with admin rights when accessing dynflow console"
|
|
350
461
|
msgstr ""
|
|
351
462
|
|
|
352
|
-
msgid "
|
|
463
|
+
msgid "Required lock is already taken by other running tasks."
|
|
464
|
+
msgstr ""
|
|
465
|
+
|
|
466
|
+
msgid "Required lock: %s"
|
|
353
467
|
msgstr ""
|
|
354
468
|
|
|
355
|
-
msgid "
|
|
469
|
+
msgid "Resource search_params requires resource_type and resource_id to be specified"
|
|
356
470
|
msgstr ""
|
|
357
471
|
|
|
358
472
|
msgid "Result"
|
|
@@ -361,15 +475,27 @@ msgstr ""
|
|
|
361
475
|
msgid "Resume"
|
|
362
476
|
msgstr ""
|
|
363
477
|
|
|
478
|
+
msgid "Resume Selected"
|
|
479
|
+
msgstr ""
|
|
480
|
+
|
|
364
481
|
msgid "Resume all paused error tasks"
|
|
365
482
|
msgstr ""
|
|
366
483
|
|
|
484
|
+
msgid "Resume selected tasks"
|
|
485
|
+
msgstr ""
|
|
486
|
+
|
|
367
487
|
msgid "Resume specific tasks by ID"
|
|
368
488
|
msgstr ""
|
|
369
489
|
|
|
370
490
|
msgid "Resume tasks matching search string"
|
|
371
491
|
msgstr ""
|
|
372
492
|
|
|
493
|
+
msgid "Resuming selected tasks, this might take a while"
|
|
494
|
+
msgstr ""
|
|
495
|
+
|
|
496
|
+
msgid "Running"
|
|
497
|
+
msgstr ""
|
|
498
|
+
|
|
373
499
|
msgid "Running Steps"
|
|
374
500
|
msgstr ""
|
|
375
501
|
|
|
@@ -382,12 +508,27 @@ msgstr ""
|
|
|
382
508
|
msgid "Schedule future execution"
|
|
383
509
|
msgstr ""
|
|
384
510
|
|
|
511
|
+
msgid "Scheduled"
|
|
512
|
+
msgstr ""
|
|
513
|
+
|
|
514
|
+
msgid "Search query"
|
|
515
|
+
msgstr ""
|
|
516
|
+
|
|
385
517
|
msgid "Search string"
|
|
386
518
|
msgstr ""
|
|
387
519
|
|
|
388
520
|
msgid "See %{link} for more details on how to resolve the issue"
|
|
389
521
|
msgstr ""
|
|
390
522
|
|
|
523
|
+
msgid "Select Action"
|
|
524
|
+
msgstr ""
|
|
525
|
+
|
|
526
|
+
msgid "Select All"
|
|
527
|
+
msgstr ""
|
|
528
|
+
|
|
529
|
+
msgid "Select row"
|
|
530
|
+
msgstr ""
|
|
531
|
+
|
|
391
532
|
msgid "Send data to the task from external executor (such as smart_proxy_dynflow)"
|
|
392
533
|
msgstr ""
|
|
393
534
|
|
|
@@ -403,9 +544,6 @@ msgstr ""
|
|
|
403
544
|
msgid "Start at"
|
|
404
545
|
msgstr ""
|
|
405
546
|
|
|
406
|
-
msgid "Start auto-reloading"
|
|
407
|
-
msgstr ""
|
|
408
|
-
|
|
409
547
|
msgid "Start before"
|
|
410
548
|
msgstr ""
|
|
411
549
|
|
|
@@ -418,12 +556,27 @@ msgstr ""
|
|
|
418
556
|
msgid "State"
|
|
419
557
|
msgstr ""
|
|
420
558
|
|
|
421
|
-
msgid "
|
|
559
|
+
msgid "Step Canceled"
|
|
560
|
+
msgstr ""
|
|
561
|
+
|
|
562
|
+
msgid "Stop all stoppable tasks"
|
|
563
|
+
msgstr ""
|
|
564
|
+
|
|
565
|
+
msgid "Stop specific tasks by ID"
|
|
566
|
+
msgstr ""
|
|
567
|
+
|
|
568
|
+
msgid "Stop tasks matching search string"
|
|
569
|
+
msgstr ""
|
|
570
|
+
|
|
571
|
+
msgid "Stopped"
|
|
422
572
|
msgstr ""
|
|
423
573
|
|
|
424
574
|
msgid "Sub tasks"
|
|
425
575
|
msgstr ""
|
|
426
576
|
|
|
577
|
+
msgid "Sub tasks of %s"
|
|
578
|
+
msgstr ""
|
|
579
|
+
|
|
427
580
|
msgid "Sun"
|
|
428
581
|
msgstr ""
|
|
429
582
|
|
|
@@ -439,6 +592,9 @@ msgstr ""
|
|
|
439
592
|
msgid "Task aborted: the task might be still running on the proxy"
|
|
440
593
|
msgstr ""
|
|
441
594
|
|
|
595
|
+
msgid "Task cannot be canceled"
|
|
596
|
+
msgstr ""
|
|
597
|
+
|
|
442
598
|
msgid "Task count"
|
|
443
599
|
msgstr ""
|
|
444
600
|
|
|
@@ -448,19 +604,13 @@ msgstr ""
|
|
|
448
604
|
msgid "Task search_params requires task_id to be specified"
|
|
449
605
|
msgstr ""
|
|
450
606
|
|
|
451
|
-
msgid "
|
|
607
|
+
msgid "Task was canceled"
|
|
452
608
|
msgstr ""
|
|
453
609
|
|
|
454
|
-
msgid "
|
|
455
|
-
msgstr ""
|
|
456
|
-
|
|
457
|
-
msgid "The execution has to be paused."
|
|
458
|
-
msgstr ""
|
|
459
|
-
|
|
460
|
-
msgid "The execution has to be resumable."
|
|
610
|
+
msgid "Tasks"
|
|
461
611
|
msgstr ""
|
|
462
612
|
|
|
463
|
-
msgid "The execution
|
|
613
|
+
msgid "The ID of the step inside the execution plan to send the event to"
|
|
464
614
|
msgstr ""
|
|
465
615
|
|
|
466
616
|
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."
|
|
@@ -475,24 +625,15 @@ msgstr ""
|
|
|
475
625
|
msgid "The task cannot be aborted at the moment."
|
|
476
626
|
msgstr ""
|
|
477
627
|
|
|
478
|
-
msgid "The task cannot be cancelled at the moment."
|
|
479
|
-
msgstr ""
|
|
480
|
-
|
|
481
628
|
msgid "The task could not be started"
|
|
482
629
|
msgstr ""
|
|
483
630
|
|
|
484
|
-
msgid "The task resources were unlocked with force."
|
|
485
|
-
msgstr ""
|
|
486
|
-
|
|
487
|
-
msgid "The task resources were unlocked."
|
|
488
|
-
msgstr ""
|
|
489
|
-
|
|
490
631
|
msgid "There is %{count} paused task in the system that need attention"
|
|
491
632
|
msgid_plural "There are %{count} paused tasks in the system that need attention"
|
|
492
633
|
msgstr[0] ""
|
|
493
634
|
msgstr[1] ""
|
|
494
635
|
|
|
495
|
-
msgid "This will
|
|
636
|
+
msgid "This action will delete all cancelled recurring logics. Please note that this action can't be reversed."
|
|
496
637
|
msgstr ""
|
|
497
638
|
|
|
498
639
|
msgid "Thu"
|
|
@@ -501,16 +642,16 @@ msgstr ""
|
|
|
501
642
|
msgid "Time in seconds between retries"
|
|
502
643
|
msgstr ""
|
|
503
644
|
|
|
504
|
-
msgid "
|
|
645
|
+
msgid "Total"
|
|
505
646
|
msgstr ""
|
|
506
647
|
|
|
507
|
-
msgid "
|
|
648
|
+
msgid "Troubleshooting"
|
|
508
649
|
msgstr ""
|
|
509
650
|
|
|
510
|
-
msgid "Trying to
|
|
651
|
+
msgid "Trying to abort the task"
|
|
511
652
|
msgstr ""
|
|
512
653
|
|
|
513
|
-
msgid "Trying to cancel
|
|
654
|
+
msgid "Trying to cancel step"
|
|
514
655
|
msgstr ""
|
|
515
656
|
|
|
516
657
|
msgid "Tue"
|
|
@@ -522,6 +663,9 @@ msgstr ""
|
|
|
522
663
|
msgid "UUID of the task"
|
|
523
664
|
msgstr ""
|
|
524
665
|
|
|
666
|
+
msgid "Undo selection"
|
|
667
|
+
msgstr ""
|
|
668
|
+
|
|
525
669
|
msgid "Unlimited"
|
|
526
670
|
msgstr ""
|
|
527
671
|
|
|
@@ -534,28 +678,34 @@ msgstr ""
|
|
|
534
678
|
msgid "Url pointing to the task troubleshooting documentation. It should contain %{label} placeholder, that will be replaced with normalized task label (restricted to only alphanumeric characters)). %{version} placeholder is also available."
|
|
535
679
|
msgstr ""
|
|
536
680
|
|
|
537
|
-
msgid "User"
|
|
538
|
-
msgstr ""
|
|
539
|
-
|
|
540
681
|
msgid "User search_params requires user_id to be specified"
|
|
541
682
|
msgstr ""
|
|
542
683
|
|
|
543
684
|
msgid "Wed"
|
|
544
685
|
msgstr ""
|
|
545
686
|
|
|
546
|
-
msgid "
|
|
687
|
+
msgid "With focus on last"
|
|
688
|
+
msgstr ""
|
|
689
|
+
|
|
690
|
+
msgid "Yes"
|
|
547
691
|
msgstr ""
|
|
548
692
|
|
|
549
693
|
msgid "activation key"
|
|
550
694
|
msgstr ""
|
|
551
695
|
|
|
696
|
+
msgid "cannot be cancelled with force at the moment."
|
|
697
|
+
msgstr ""
|
|
698
|
+
|
|
552
699
|
msgid "content view"
|
|
553
700
|
msgstr ""
|
|
554
701
|
|
|
555
702
|
msgid "content view version"
|
|
556
703
|
msgstr ""
|
|
557
704
|
|
|
558
|
-
msgid "
|
|
705
|
+
msgid "could not be resumed"
|
|
706
|
+
msgstr ""
|
|
707
|
+
|
|
708
|
+
msgid "error"
|
|
559
709
|
msgstr ""
|
|
560
710
|
|
|
561
711
|
#. TRANSLATORS: this translation is referring to an option which is a time interval
|
|
@@ -578,23 +728,89 @@ msgstr ""
|
|
|
578
728
|
msgid "is month (range: 1-12)"
|
|
579
729
|
msgstr ""
|
|
580
730
|
|
|
731
|
+
msgid "last"
|
|
732
|
+
msgstr ""
|
|
733
|
+
|
|
734
|
+
msgid "mode"
|
|
735
|
+
msgstr ""
|
|
736
|
+
|
|
581
737
|
msgid "mode has to be one of %{allowed_modes}"
|
|
582
738
|
msgstr ""
|
|
583
739
|
|
|
740
|
+
msgid "older"
|
|
741
|
+
msgstr ""
|
|
742
|
+
|
|
584
743
|
msgid "organization"
|
|
585
744
|
msgstr ""
|
|
586
745
|
|
|
746
|
+
msgid "paused"
|
|
747
|
+
msgstr ""
|
|
748
|
+
|
|
587
749
|
msgid "product"
|
|
588
750
|
msgstr ""
|
|
589
751
|
|
|
590
752
|
msgid "repository"
|
|
591
753
|
msgstr ""
|
|
592
754
|
|
|
755
|
+
msgid "resources cannot be unlocked at the moment."
|
|
756
|
+
msgstr ""
|
|
757
|
+
|
|
758
|
+
msgid "resources were unlocked "
|
|
759
|
+
msgstr ""
|
|
760
|
+
|
|
761
|
+
msgid "resources were unlocked with force."
|
|
762
|
+
msgstr ""
|
|
763
|
+
|
|
764
|
+
msgid "result"
|
|
765
|
+
msgstr ""
|
|
766
|
+
|
|
767
|
+
msgid "running"
|
|
768
|
+
msgstr ""
|
|
769
|
+
|
|
770
|
+
msgid "scheduled"
|
|
771
|
+
msgstr ""
|
|
772
|
+
|
|
773
|
+
msgid "seconds"
|
|
774
|
+
msgstr ""
|
|
775
|
+
|
|
776
|
+
msgid "state"
|
|
777
|
+
msgstr ""
|
|
778
|
+
|
|
779
|
+
msgid "stopped"
|
|
780
|
+
msgstr ""
|
|
781
|
+
|
|
782
|
+
msgid "success"
|
|
783
|
+
msgstr ""
|
|
784
|
+
|
|
593
785
|
msgid "system"
|
|
594
786
|
msgstr ""
|
|
595
787
|
|
|
788
|
+
msgid "task has to be cancellable"
|
|
789
|
+
msgstr ""
|
|
790
|
+
|
|
791
|
+
msgid "task has to be resumable"
|
|
792
|
+
msgstr ""
|
|
793
|
+
|
|
794
|
+
msgid "tasks."
|
|
795
|
+
msgstr ""
|
|
796
|
+
|
|
797
|
+
msgid "time"
|
|
798
|
+
msgstr ""
|
|
799
|
+
|
|
596
800
|
msgid "troubleshooting documentation"
|
|
597
801
|
msgstr ""
|
|
598
802
|
|
|
599
803
|
msgid "user"
|
|
600
804
|
msgstr ""
|
|
805
|
+
|
|
806
|
+
msgid "warning"
|
|
807
|
+
msgstr ""
|
|
808
|
+
|
|
809
|
+
msgid "was cancelled"
|
|
810
|
+
msgstr ""
|
|
811
|
+
|
|
812
|
+
msgid "was resumed"
|
|
813
|
+
msgstr ""
|
|
814
|
+
|
|
815
|
+
msgid "week"
|
|
816
|
+
msgstr ""
|