foreman_remote_execution 6.2.0 → 7.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/api/v2/job_invocations_controller.rb +1 -0
- data/app/helpers/hosts_extensions_helper.rb +62 -0
- data/app/lib/actions/remote_execution/run_host_job.rb +4 -0
- data/app/lib/actions/remote_execution/run_hosts_job.rb +4 -0
- data/app/models/job_invocation_composer.rb +6 -2
- data/app/models/job_template.rb +4 -1
- data/app/models/ssh_execution_provider.rb +3 -3
- data/app/views/api/v2/job_invocations/base.json.rabl +1 -1
- data/app/views/job_invocations/_card_target_hosts.html.erb +8 -0
- data/app/views/job_invocations/_form.html.erb +2 -0
- data/db/migrate/20220331112719_add_ssh_user_to_job_invocation.rb +5 -0
- data/lib/foreman_remote_execution/engine.rb +6 -3
- data/lib/foreman_remote_execution/version.rb +1 -1
- data/locale/action_names.rb +3 -3
- data/locale/de/foreman_remote_execution.po +23 -23
- data/locale/en/foreman_remote_execution.po +23 -23
- data/locale/en_GB/foreman_remote_execution.po +23 -23
- data/locale/es/foreman_remote_execution.po +23 -23
- data/locale/foreman_remote_execution.pot +64 -66
- data/locale/fr/foreman_remote_execution.po +23 -23
- data/locale/ja/foreman_remote_execution.po +23 -23
- data/locale/ko/foreman_remote_execution.po +23 -23
- data/locale/pt_BR/foreman_remote_execution.po +23 -23
- data/locale/ru/foreman_remote_execution.po +23 -23
- data/locale/zh_CN/foreman_remote_execution.po +23 -23
- data/locale/zh_TW/foreman_remote_execution.po +23 -23
- data/webpack/JobWizard/JobWizardConstants.js +2 -2
- data/webpack/JobWizard/__tests__/fixtures.js +8 -4
- data/webpack/JobWizard/steps/AdvancedFields/__tests__/AdvancedFields.test.js +2 -2
- data/webpack/JobWizard/steps/HostsAndInputs/SelectGQL.js +2 -1
- data/webpack/JobWizard/steps/HostsAndInputs/SelectedChips.js +1 -1
- data/webpack/JobWizard/steps/HostsAndInputs/buildHostQuery.js +1 -1
- data/webpack/JobWizard/steps/HostsAndInputs/hostgroups.gql +1 -0
- data/webpack/JobWizard/steps/HostsAndInputs/hosts.gql +1 -0
- data/webpack/JobWizard/steps/ReviewDetails/index.js +1 -1
- data/webpack/JobWizard/steps/Schedule/__tests__/Schedule.test.js +15 -15
- data/webpack/JobWizard/steps/form/SearchSelect.js +0 -1
- data/webpack/__mocks__/foremanReact/common/globalIdHelpers.js +1 -0
- data/webpack/global_index.js +2 -8
- data/webpack/react_app/components/HostKebab/KebabItems.js +6 -1
- data/webpack/react_app/components/RecentJobsCard/RecentJobsCard.js +4 -4
- data/webpack/react_app/components/TargetingHosts/TargetingHostsConsts.js +1 -0
- data/webpack/react_app/components/TargetingHosts/TargetingHostsPage.js +8 -3
- data/webpack/react_app/components/TargetingHosts/__tests__/__snapshots__/TargetingHostsPage.test.js.snap +9 -1
- data/webpack/react_app/components/TargetingHosts/__tests__/fixtures.js +1 -4
- data/webpack/react_app/components/TargetingHosts/index.js +1 -0
- data/webpack/react_app/extend/Fills.js +48 -0
- metadata +6 -7
- data/app/helpers/concerns/foreman_remote_execution/hosts_helper_extensions.rb +0 -62
- data/webpack/react_app/extend/fillKebabItems.js +0 -11
- data/webpack/react_app/extend/fillRecentJobsCard.js +0 -11
- data/webpack/react_app/extend/fillRexFeaturesDropdown.js +0 -11
- data/webpack/react_app/extend/fillregistrationAdvanced.js +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e9183b3b81c3033d696f4aedf861cb5eed143fb9eacccb144a23d859e3ccae69
|
4
|
+
data.tar.gz: 4c7c6c09c84f3d4cbef2aaa8330b7bf048d42570e9319ad227c30abc5613770c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b35e41908b57f97f80272070d84b8d2ceeb7e061e22ad673d07c694a643d057399e207af9c8f36d14d535a7ddb3eddefa013e04b3d63689796e66e6d9aeae88b
|
7
|
+
data.tar.gz: 5c0b0d79edaab4c28721ad26df27ad8ac14878e09349929d28175c2cc1714ebb1f81ceb9f4824215d781dc1b4b0662962a9043f4f56963fea4d0aaa3e2483f8d
|
@@ -45,6 +45,7 @@ module Api
|
|
45
45
|
:required => false,
|
46
46
|
:desc => N_('Set password for effective user (using sudo-like mechanisms)')
|
47
47
|
end
|
48
|
+
param :ssh_user, String, :required => false, :desc => N_('Set SSH user')
|
48
49
|
param :password, String, :required => false, :desc => N_('Set SSH password')
|
49
50
|
param :key_passphrase, String, :required => false, :desc => N_('Set SSH key passphrase')
|
50
51
|
|
@@ -0,0 +1,62 @@
|
|
1
|
+
module HostsExtensionsHelper
|
2
|
+
def rex_hosts_multiple_actions
|
3
|
+
return [] unless can_schedule_jobs?
|
4
|
+
|
5
|
+
[{ action: [_('Schedule Remote Job'), new_job_invocation_path, false], priority: 1000 }]
|
6
|
+
end
|
7
|
+
|
8
|
+
def rex_host_overview_buttons(host)
|
9
|
+
[
|
10
|
+
{ button: link_to_if_authorized(_("Jobs"), hash_for_job_invocations_path(search: "host=#{host.name}"), title: _("Job invocations"), class: 'btn btn-default'), priority: 200 },
|
11
|
+
]
|
12
|
+
end
|
13
|
+
|
14
|
+
def host_title_actions(*args)
|
15
|
+
title_actions(button_group(schedule_job_multi_button(*args)),
|
16
|
+
button_group(web_console_button(*args)))
|
17
|
+
super(*args)
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def schedule_job_multi_button(*args)
|
23
|
+
host_features = rex_host_features(*args)
|
24
|
+
|
25
|
+
if host_features.present?
|
26
|
+
action_buttons(schedule_job_button(*args), *host_features)
|
27
|
+
else
|
28
|
+
schedule_job_button(*args)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def rex_host_features(host, *_rest)
|
33
|
+
return [] unless can_execute_on_host?(host)
|
34
|
+
RemoteExecutionFeature.with_host_action_button.order(:label).map do |feature|
|
35
|
+
link_to(_('%s') % feature.name, job_invocations_path(:host_ids => [host.id], :feature => feature.label), :method => :post)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def schedule_job_button(host, *_rest)
|
40
|
+
return unless can_execute_on_host?(host)
|
41
|
+
link_to(_('Schedule Remote Job'), new_job_invocation_path(:host_ids => [host.id]), :id => :run_button, :class => 'btn btn-default')
|
42
|
+
end
|
43
|
+
|
44
|
+
def web_console_button(host, *_args)
|
45
|
+
return if !authorized_for(permission: 'cockpit_hosts', auth_object: host) || !can_execute_on_infrastructure_host?(host)
|
46
|
+
|
47
|
+
url = SSHExecutionProvider.cockpit_url_for_host(host.name)
|
48
|
+
url ? link_to(_('Web Console'), url, :class => 'btn btn-default', :id => :'web-console-button', :target => '_new') : nil
|
49
|
+
end
|
50
|
+
|
51
|
+
def can_schedule_jobs?
|
52
|
+
authorized_for(controller: :job_invocations, action: :create)
|
53
|
+
end
|
54
|
+
|
55
|
+
def can_execute_on_host?(host)
|
56
|
+
can_schedule_jobs? && can_execute_on_infrastructure_host?(host)
|
57
|
+
end
|
58
|
+
|
59
|
+
def can_execute_on_infrastructure_host?(host)
|
60
|
+
!host.infrastructure_host? || User.current.can?(:execute_jobs_on_infrastructure_hosts)
|
61
|
+
end
|
62
|
+
end
|
@@ -16,6 +16,7 @@ class JobInvocationComposer
|
|
16
16
|
:host_ids => ui_params[:host_ids],
|
17
17
|
:remote_execution_feature_id => job_invocation_base[:remote_execution_feature_id],
|
18
18
|
:description_format => job_invocation_base[:description_format],
|
19
|
+
:ssh_user => blank_to_nil(job_invocation_base[:ssh_user]),
|
19
20
|
:password => blank_to_nil(job_invocation_base[:password]),
|
20
21
|
:key_passphrase => blank_to_nil(job_invocation_base[:key_passphrase]),
|
21
22
|
:effective_user_password => blank_to_nil(job_invocation_base[:effective_user_password]),
|
@@ -121,6 +122,7 @@ class JobInvocationComposer
|
|
121
122
|
:targeting => targeting_params,
|
122
123
|
:triggering => triggering_params,
|
123
124
|
:description_format => api_params[:description_format],
|
125
|
+
:ssh_user => api_params[:ssh_user],
|
124
126
|
:password => api_params[:password],
|
125
127
|
:remote_execution_feature_id => remote_execution_feature_id,
|
126
128
|
:effective_user_password => api_params[:effective_user_password],
|
@@ -237,6 +239,7 @@ class JobInvocationComposer
|
|
237
239
|
{ :job_category => job_invocation.job_category,
|
238
240
|
:targeting => targeting_params,
|
239
241
|
:triggering => triggering_params,
|
242
|
+
:ssh_user => job_invocation.ssh_user,
|
240
243
|
:description_format => job_invocation.description_format,
|
241
244
|
:concurrency_control => concurrency_control_params,
|
242
245
|
:execution_timeout_interval => job_invocation.execution_timeout_interval,
|
@@ -399,7 +402,7 @@ class JobInvocationComposer
|
|
399
402
|
|
400
403
|
def compose
|
401
404
|
job_invocation.job_category = validate_job_category(params[:job_category])
|
402
|
-
job_invocation.job_category ||= resolve_job_category(available_job_categories.first) { |
|
405
|
+
job_invocation.job_category ||= resolve_job_category(available_job_categories.first) { |template| template.job_category } if @set_defaults
|
403
406
|
job_invocation.remote_execution_feature_id = params[:remote_execution_feature_id]
|
404
407
|
job_invocation.targeting = build_targeting
|
405
408
|
job_invocation.triggering = build_triggering
|
@@ -411,6 +414,7 @@ class JobInvocationComposer
|
|
411
414
|
job_invocation.password = params[:password]
|
412
415
|
job_invocation.key_passphrase = params[:key_passphrase]
|
413
416
|
job_invocation.effective_user_password = params[:effective_user_password]
|
417
|
+
job_invocation.ssh_user = params[:ssh_user]
|
414
418
|
|
415
419
|
if @reruns && job_invocation.targeting.static?
|
416
420
|
job_invocation.targeting.assign_host_ids(JobInvocation.find(@reruns).targeting.host_ids)
|
@@ -544,7 +548,7 @@ class JobInvocationComposer
|
|
544
548
|
|
545
549
|
def input_value_for(input)
|
546
550
|
invocations = pattern_template_invocations
|
547
|
-
default = TemplateInvocationInputValue.new(:template_input_id => input.id)
|
551
|
+
default = TemplateInvocationInputValue.new(:template_input_id => input.id, :value => input.default)
|
548
552
|
invocations.map(&:input_values).flatten.detect { |iv| iv.template_input_id == input.id } || default
|
549
553
|
end
|
550
554
|
|
data/app/models/job_template.rb
CHANGED
@@ -196,7 +196,10 @@ class JobTemplate < ::Template
|
|
196
196
|
def default_input_values(ignore_keys)
|
197
197
|
result = self.template_inputs_with_foreign.select { |ti| !ti.required? && ti.input_type == 'user' }.map { |ti| ti.name.to_s }
|
198
198
|
result -= ignore_keys.map(&:to_s)
|
199
|
-
|
199
|
+
default_values = self.template_inputs_with_foreign.reduce({}) do |acc, input|
|
200
|
+
acc.merge(input.name.to_s => input.default)
|
201
|
+
end
|
202
|
+
Hash[result.map { |k| [ k, default_values[k]] }]
|
200
203
|
end
|
201
204
|
|
202
205
|
private
|
@@ -1,7 +1,7 @@
|
|
1
1
|
class ScriptExecutionProvider < RemoteExecutionProvider
|
2
2
|
class << self
|
3
3
|
def proxy_command_options(template_invocation, host)
|
4
|
-
super.merge(:ssh_user => ssh_user(host),
|
4
|
+
super.merge(:ssh_user => ssh_user(host, template_invocation.job_invocation),
|
5
5
|
:effective_user => effective_user(template_invocation),
|
6
6
|
:effective_user_method => effective_user_method(host),
|
7
7
|
:cleanup_working_dirs => cleanup_working_dirs?(host),
|
@@ -58,8 +58,8 @@ class ScriptExecutionProvider < RemoteExecutionProvider
|
|
58
58
|
|
59
59
|
private
|
60
60
|
|
61
|
-
def ssh_user(host)
|
62
|
-
host.host_param('remote_execution_ssh_user')
|
61
|
+
def ssh_user(host, job_invocation = nil)
|
62
|
+
job_invocation&.ssh_user || host.host_param('remote_execution_ssh_user')
|
63
63
|
end
|
64
64
|
|
65
65
|
def ssh_port(host)
|
@@ -32,6 +32,14 @@
|
|
32
32
|
<%= show_job_location(@job_location) %>
|
33
33
|
</strong>
|
34
34
|
</p>
|
35
|
+
<% if job_invocation[:ssh_user] %>
|
36
|
+
<p>
|
37
|
+
<%= _('SSH User') %>:
|
38
|
+
<strong>
|
39
|
+
<%= job_invocation[:ssh_user] %>
|
40
|
+
</strong>
|
41
|
+
</p>
|
42
|
+
<% end %>
|
35
43
|
</div>
|
36
44
|
<div class='card-pf-footer'>
|
37
45
|
<p>
|
@@ -82,6 +82,8 @@
|
|
82
82
|
<% end %>
|
83
83
|
<% end %>
|
84
84
|
|
85
|
+
<%= text_f f, :ssh_user, :value => f.object.ssh_user, :label => _('SSH user'), :label_help => N_('A user to be used for SSH.') %>
|
86
|
+
|
85
87
|
<% if job_template.effective_user.overridable? %>
|
86
88
|
<%= text_f job_template_fields, :effective_user, :value => @composer.template_invocation(job_template).try(:effective_user), :label => _('Effective user'), :label_help => N_("A user to be used for executing the script. If it differs from the SSH user, su or sudo is used to switch the accounts.") %>
|
87
89
|
<% end %>
|
@@ -47,7 +47,7 @@ module ForemanRemoteExecution
|
|
47
47
|
|
48
48
|
initializer 'foreman_remote_execution.register_plugin', before: :finisher_hook do |_app|
|
49
49
|
Foreman::Plugin.register :foreman_remote_execution do
|
50
|
-
requires_foreman '>= 3.
|
50
|
+
requires_foreman '>= 3.3'
|
51
51
|
register_global_js_file 'global'
|
52
52
|
|
53
53
|
apipie_documented_controllers ["#{ForemanRemoteExecution::Engine.root}/app/controllers/api/v2/*.rb"]
|
@@ -267,7 +267,11 @@ module ForemanRemoteExecution
|
|
267
267
|
extend_rabl_template 'api/v2/subnets/show', 'api/v2/subnets/remote_execution_proxies'
|
268
268
|
extend_rabl_template 'api/v2/hosts/main', 'api/v2/host/main'
|
269
269
|
parameter_filter ::Subnet, :remote_execution_proxy_ids
|
270
|
-
|
270
|
+
|
271
|
+
describe_host do
|
272
|
+
multiple_actions_provider :rex_hosts_multiple_actions
|
273
|
+
overview_buttons_provider :rex_host_overview_buttons
|
274
|
+
end
|
271
275
|
|
272
276
|
# Extend Registration module
|
273
277
|
extend_allowed_registration_vars :remote_execution_interface
|
@@ -316,7 +320,6 @@ module ForemanRemoteExecution
|
|
316
320
|
end
|
317
321
|
|
318
322
|
Bookmark.include ForemanRemoteExecution::BookmarkExtensions
|
319
|
-
HostsHelper.prepend ForemanRemoteExecution::HostsHelperExtensions
|
320
323
|
ProvisioningTemplatesHelper.prepend ForemanRemoteExecution::JobTemplatesExtensions
|
321
324
|
TemplateInput.include ForemanRemoteExecution::TemplateInputExtensions
|
322
325
|
|
data/locale/action_names.rb
CHANGED
@@ -24,6 +24,9 @@ msgstr "%s"
|
|
24
24
|
msgid "%s ago"
|
25
25
|
msgstr "vor %s"
|
26
26
|
|
27
|
+
msgid "%s job has been invoked"
|
28
|
+
msgstr ""
|
29
|
+
|
27
30
|
msgid "%{description} on %{host}"
|
28
31
|
msgstr "%{description} auf %{host}"
|
29
32
|
|
@@ -68,15 +71,15 @@ msgstr "Ein Benutzer, der für die Ausführung des Skripts verwendet werden soll
|
|
68
71
|
msgid "Abort Job"
|
69
72
|
msgstr ""
|
70
73
|
|
74
|
+
msgid "Action with sub plans"
|
75
|
+
msgstr ""
|
76
|
+
|
71
77
|
msgid "Actions"
|
72
78
|
msgstr "Aktionen"
|
73
79
|
|
74
80
|
msgid "Add Foreign Input Set"
|
75
81
|
msgstr "Fremdeingabe-Satz hinzufügen"
|
76
82
|
|
77
|
-
msgid "Advanced Fields"
|
78
|
-
msgstr ""
|
79
|
-
|
80
83
|
msgid "Advanced fields"
|
81
84
|
msgstr ""
|
82
85
|
|
@@ -467,9 +470,15 @@ msgstr ""
|
|
467
470
|
msgid "Import"
|
468
471
|
msgstr "Import"
|
469
472
|
|
473
|
+
msgid "Import Puppet classes"
|
474
|
+
msgstr ""
|
475
|
+
|
470
476
|
msgid "Import a job template from ERB"
|
471
477
|
msgstr "Job-Vorlage aus ERB importieren"
|
472
478
|
|
479
|
+
msgid "Import facts"
|
480
|
+
msgstr ""
|
481
|
+
|
473
482
|
msgid "Include all inputs from the foreign template"
|
474
483
|
msgstr "Alle Eingaben aus Fremdvorlage einschließen"
|
475
484
|
|
@@ -503,9 +512,6 @@ msgstr "Jobtyp, einer von %s"
|
|
503
512
|
msgid "Job"
|
504
513
|
msgstr "Job"
|
505
514
|
|
506
|
-
msgid "Job Category"
|
507
|
-
msgstr ""
|
508
|
-
|
509
515
|
msgid "Job Details"
|
510
516
|
msgstr ""
|
511
517
|
|
@@ -829,7 +835,7 @@ msgstr "Wird aufgelöst zu"
|
|
829
835
|
msgid "Results"
|
830
836
|
msgstr ""
|
831
837
|
|
832
|
-
msgid "Review
|
838
|
+
msgid "Review details"
|
833
839
|
msgstr ""
|
834
840
|
|
835
841
|
msgid "Run"
|
@@ -853,9 +859,6 @@ msgstr ""
|
|
853
859
|
msgid "Running"
|
854
860
|
msgstr ""
|
855
861
|
|
856
|
-
msgid "SSH"
|
857
|
-
msgstr "SSH"
|
858
|
-
|
859
862
|
msgid "SSH Port"
|
860
863
|
msgstr ""
|
861
864
|
|
@@ -871,6 +874,9 @@ msgstr "Plan"
|
|
871
874
|
msgid "Schedule Remote Job"
|
872
875
|
msgstr ""
|
873
876
|
|
877
|
+
msgid "Schedule a job"
|
878
|
+
msgstr ""
|
879
|
+
|
874
880
|
msgid "Schedule for future execution"
|
875
881
|
msgstr ""
|
876
882
|
|
@@ -892,6 +898,9 @@ msgstr ""
|
|
892
898
|
msgid "Scheduled to start before"
|
893
899
|
msgstr ""
|
894
900
|
|
901
|
+
msgid "Script"
|
902
|
+
msgstr ""
|
903
|
+
|
895
904
|
msgid "Scroll to bottom"
|
896
905
|
msgstr "Zum Ende scrollen"
|
897
906
|
|
@@ -1212,16 +1221,16 @@ msgstr "Benutzereingabe"
|
|
1212
1221
|
msgid "Value"
|
1213
1222
|
msgstr "Wert"
|
1214
1223
|
|
1215
|
-
msgid "View
|
1224
|
+
msgid "View all jobs"
|
1216
1225
|
msgstr ""
|
1217
1226
|
|
1218
|
-
msgid "View
|
1227
|
+
msgid "View finished jobs"
|
1219
1228
|
msgstr ""
|
1220
1229
|
|
1221
|
-
msgid "View
|
1230
|
+
msgid "View running jobs"
|
1222
1231
|
msgstr ""
|
1223
1232
|
|
1224
|
-
msgid "View
|
1233
|
+
msgid "View scheduled jobs"
|
1225
1234
|
msgstr ""
|
1226
1235
|
|
1227
1236
|
msgid "Web Console"
|
@@ -1367,12 +1376,3 @@ msgstr ""
|
|
1367
1376
|
|
1368
1377
|
msgid "using Smart Proxy"
|
1369
1378
|
msgstr ""
|
1370
|
-
|
1371
|
-
msgid "»Action with sub plans«"
|
1372
|
-
msgstr ""
|
1373
|
-
|
1374
|
-
msgid "»Import Puppet classes«"
|
1375
|
-
msgstr ""
|
1376
|
-
|
1377
|
-
msgid "»Import facts«"
|
1378
|
-
msgstr ""
|
@@ -23,6 +23,9 @@ msgstr ""
|
|
23
23
|
msgid "%s ago"
|
24
24
|
msgstr ""
|
25
25
|
|
26
|
+
msgid "%s job has been invoked"
|
27
|
+
msgstr ""
|
28
|
+
|
26
29
|
msgid "%{description} on %{host}"
|
27
30
|
msgstr ""
|
28
31
|
|
@@ -67,13 +70,13 @@ msgstr ""
|
|
67
70
|
msgid "Abort Job"
|
68
71
|
msgstr ""
|
69
72
|
|
70
|
-
msgid "
|
73
|
+
msgid "Action with sub plans"
|
71
74
|
msgstr ""
|
72
75
|
|
73
|
-
msgid "
|
76
|
+
msgid "Actions"
|
74
77
|
msgstr ""
|
75
78
|
|
76
|
-
msgid "
|
79
|
+
msgid "Add Foreign Input Set"
|
77
80
|
msgstr ""
|
78
81
|
|
79
82
|
msgid "Advanced fields"
|
@@ -466,9 +469,15 @@ msgstr ""
|
|
466
469
|
msgid "Import"
|
467
470
|
msgstr ""
|
468
471
|
|
472
|
+
msgid "Import Puppet classes"
|
473
|
+
msgstr ""
|
474
|
+
|
469
475
|
msgid "Import a job template from ERB"
|
470
476
|
msgstr ""
|
471
477
|
|
478
|
+
msgid "Import facts"
|
479
|
+
msgstr ""
|
480
|
+
|
472
481
|
msgid "Include all inputs from the foreign template"
|
473
482
|
msgstr ""
|
474
483
|
|
@@ -502,9 +511,6 @@ msgstr ""
|
|
502
511
|
msgid "Job"
|
503
512
|
msgstr ""
|
504
513
|
|
505
|
-
msgid "Job Category"
|
506
|
-
msgstr ""
|
507
|
-
|
508
514
|
msgid "Job Details"
|
509
515
|
msgstr ""
|
510
516
|
|
@@ -826,7 +832,7 @@ msgstr ""
|
|
826
832
|
msgid "Results"
|
827
833
|
msgstr ""
|
828
834
|
|
829
|
-
msgid "Review
|
835
|
+
msgid "Review details"
|
830
836
|
msgstr ""
|
831
837
|
|
832
838
|
msgid "Run"
|
@@ -850,9 +856,6 @@ msgstr ""
|
|
850
856
|
msgid "Running"
|
851
857
|
msgstr ""
|
852
858
|
|
853
|
-
msgid "SSH"
|
854
|
-
msgstr ""
|
855
|
-
|
856
859
|
msgid "SSH Port"
|
857
860
|
msgstr ""
|
858
861
|
|
@@ -868,6 +871,9 @@ msgstr ""
|
|
868
871
|
msgid "Schedule Remote Job"
|
869
872
|
msgstr ""
|
870
873
|
|
874
|
+
msgid "Schedule a job"
|
875
|
+
msgstr ""
|
876
|
+
|
871
877
|
msgid "Schedule for future execution"
|
872
878
|
msgstr ""
|
873
879
|
|
@@ -889,6 +895,9 @@ msgstr ""
|
|
889
895
|
msgid "Scheduled to start before"
|
890
896
|
msgstr ""
|
891
897
|
|
898
|
+
msgid "Script"
|
899
|
+
msgstr ""
|
900
|
+
|
892
901
|
msgid "Scroll to bottom"
|
893
902
|
msgstr ""
|
894
903
|
|
@@ -1209,16 +1218,16 @@ msgstr ""
|
|
1209
1218
|
msgid "Value"
|
1210
1219
|
msgstr ""
|
1211
1220
|
|
1212
|
-
msgid "View
|
1221
|
+
msgid "View all jobs"
|
1213
1222
|
msgstr ""
|
1214
1223
|
|
1215
|
-
msgid "View
|
1224
|
+
msgid "View finished jobs"
|
1216
1225
|
msgstr ""
|
1217
1226
|
|
1218
|
-
msgid "View
|
1227
|
+
msgid "View running jobs"
|
1219
1228
|
msgstr ""
|
1220
1229
|
|
1221
|
-
msgid "View
|
1230
|
+
msgid "View scheduled jobs"
|
1222
1231
|
msgstr ""
|
1223
1232
|
|
1224
1233
|
msgid "Web Console"
|
@@ -1364,12 +1373,3 @@ msgstr ""
|
|
1364
1373
|
|
1365
1374
|
msgid "using Smart Proxy"
|
1366
1375
|
msgstr ""
|
1367
|
-
|
1368
|
-
msgid "»Action with sub plans«"
|
1369
|
-
msgstr ""
|
1370
|
-
|
1371
|
-
msgid "»Import Puppet classes«"
|
1372
|
-
msgstr ""
|
1373
|
-
|
1374
|
-
msgid "»Import facts«"
|
1375
|
-
msgstr ""
|
@@ -24,6 +24,9 @@ msgstr ""
|
|
24
24
|
msgid "%s ago"
|
25
25
|
msgstr "%s ago"
|
26
26
|
|
27
|
+
msgid "%s job has been invoked"
|
28
|
+
msgstr ""
|
29
|
+
|
27
30
|
msgid "%{description} on %{host}"
|
28
31
|
msgstr ""
|
29
32
|
|
@@ -68,13 +71,13 @@ msgstr ""
|
|
68
71
|
msgid "Abort Job"
|
69
72
|
msgstr ""
|
70
73
|
|
71
|
-
msgid "
|
74
|
+
msgid "Action with sub plans"
|
72
75
|
msgstr ""
|
73
76
|
|
74
|
-
msgid "
|
77
|
+
msgid "Actions"
|
75
78
|
msgstr ""
|
76
79
|
|
77
|
-
msgid "
|
80
|
+
msgid "Add Foreign Input Set"
|
78
81
|
msgstr ""
|
79
82
|
|
80
83
|
msgid "Advanced fields"
|
@@ -467,9 +470,15 @@ msgstr ""
|
|
467
470
|
msgid "Import"
|
468
471
|
msgstr ""
|
469
472
|
|
473
|
+
msgid "Import Puppet classes"
|
474
|
+
msgstr ""
|
475
|
+
|
470
476
|
msgid "Import a job template from ERB"
|
471
477
|
msgstr ""
|
472
478
|
|
479
|
+
msgid "Import facts"
|
480
|
+
msgstr ""
|
481
|
+
|
473
482
|
msgid "Include all inputs from the foreign template"
|
474
483
|
msgstr ""
|
475
484
|
|
@@ -503,9 +512,6 @@ msgstr ""
|
|
503
512
|
msgid "Job"
|
504
513
|
msgstr ""
|
505
514
|
|
506
|
-
msgid "Job Category"
|
507
|
-
msgstr ""
|
508
|
-
|
509
515
|
msgid "Job Details"
|
510
516
|
msgstr ""
|
511
517
|
|
@@ -827,7 +833,7 @@ msgstr ""
|
|
827
833
|
msgid "Results"
|
828
834
|
msgstr ""
|
829
835
|
|
830
|
-
msgid "Review
|
836
|
+
msgid "Review details"
|
831
837
|
msgstr ""
|
832
838
|
|
833
839
|
msgid "Run"
|
@@ -851,9 +857,6 @@ msgstr ""
|
|
851
857
|
msgid "Running"
|
852
858
|
msgstr ""
|
853
859
|
|
854
|
-
msgid "SSH"
|
855
|
-
msgstr ""
|
856
|
-
|
857
860
|
msgid "SSH Port"
|
858
861
|
msgstr ""
|
859
862
|
|
@@ -869,6 +872,9 @@ msgstr ""
|
|
869
872
|
msgid "Schedule Remote Job"
|
870
873
|
msgstr ""
|
871
874
|
|
875
|
+
msgid "Schedule a job"
|
876
|
+
msgstr ""
|
877
|
+
|
872
878
|
msgid "Schedule for future execution"
|
873
879
|
msgstr ""
|
874
880
|
|
@@ -890,6 +896,9 @@ msgstr ""
|
|
890
896
|
msgid "Scheduled to start before"
|
891
897
|
msgstr ""
|
892
898
|
|
899
|
+
msgid "Script"
|
900
|
+
msgstr ""
|
901
|
+
|
893
902
|
msgid "Scroll to bottom"
|
894
903
|
msgstr ""
|
895
904
|
|
@@ -1210,16 +1219,16 @@ msgstr ""
|
|
1210
1219
|
msgid "Value"
|
1211
1220
|
msgstr "Value"
|
1212
1221
|
|
1213
|
-
msgid "View
|
1222
|
+
msgid "View all jobs"
|
1214
1223
|
msgstr ""
|
1215
1224
|
|
1216
|
-
msgid "View
|
1225
|
+
msgid "View finished jobs"
|
1217
1226
|
msgstr ""
|
1218
1227
|
|
1219
|
-
msgid "View
|
1228
|
+
msgid "View running jobs"
|
1220
1229
|
msgstr ""
|
1221
1230
|
|
1222
|
-
msgid "View
|
1231
|
+
msgid "View scheduled jobs"
|
1223
1232
|
msgstr ""
|
1224
1233
|
|
1225
1234
|
msgid "Web Console"
|
@@ -1365,12 +1374,3 @@ msgstr ""
|
|
1365
1374
|
|
1366
1375
|
msgid "using Smart Proxy"
|
1367
1376
|
msgstr ""
|
1368
|
-
|
1369
|
-
msgid "»Action with sub plans«"
|
1370
|
-
msgstr ""
|
1371
|
-
|
1372
|
-
msgid "»Import Puppet classes«"
|
1373
|
-
msgstr ""
|
1374
|
-
|
1375
|
-
msgid "»Import facts«"
|
1376
|
-
msgstr ""
|