foreman_remote_execution 1.2.2 → 1.3.0
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/README.md +11 -0
- data/app/assets/javascripts/template_invocation.js +6 -11
- data/app/controllers/api/v2/job_templates_controller.rb +1 -0
- data/app/controllers/concerns/foreman/controller/parameters/remote_execution_feature.rb +1 -1
- data/app/controllers/job_invocations_controller.rb +6 -2
- data/app/controllers/job_templates_controller.rb +0 -5
- data/app/helpers/concerns/foreman_remote_execution/hosts_helper_extensions.rb +18 -2
- data/app/helpers/concerns/foreman_remote_execution/job_templates_extensions.rb +1 -2
- data/app/helpers/remote_execution_helper.rb +42 -41
- data/app/lib/actions/remote_execution/run_host_job.rb +2 -15
- data/app/lib/actions/remote_execution/run_hosts_job.rb +17 -3
- data/app/models/concerns/foreman_remote_execution/host_extensions.rb +7 -6
- data/app/models/input_template_renderer.rb +1 -1
- data/app/models/job_invocation.rb +23 -5
- data/app/models/remote_execution_feature.rb +16 -3
- data/app/models/setting/remote_execution.rb +4 -1
- data/app/models/ssh_execution_provider.rb +33 -2
- data/app/models/targeting.rb +7 -3
- data/app/views/api/v2/remote_execution_features/base.json.rabl +1 -1
- data/app/views/job_invocations/_form.html.erb +1 -4
- data/app/views/job_invocations/_host_name_td.html.erb +2 -1
- data/app/views/job_invocations/index.html.erb +1 -1
- data/app/views/job_invocations/show.html.erb +1 -1
- data/app/views/job_templates/_custom_tabs.html.erb +1 -4
- data/app/views/overrides/nics/_execution_interface.html.erb +2 -3
- data/app/views/remote_execution_features/index.html.erb +1 -1
- data/db/migrate/20170110145641_add_host_action_button_to_remote_execution_feature.rb +5 -0
- data/foreman_remote_execution.gemspec +1 -1
- data/lib/foreman_remote_execution/engine.rb +3 -1
- data/lib/foreman_remote_execution/version.rb +1 -1
- data/locale/action_names.rb +2 -5
- data/locale/de/LC_MESSAGES/foreman_remote_execution.mo +0 -0
- data/locale/de/foreman_remote_execution.po +13 -23
- data/locale/en/foreman_remote_execution.po +12 -22
- data/locale/en_GB/LC_MESSAGES/foreman_remote_execution.mo +0 -0
- data/locale/en_GB/foreman_remote_execution.po +12 -22
- data/locale/es/LC_MESSAGES/foreman_remote_execution.mo +0 -0
- data/locale/es/foreman_remote_execution.po +13 -23
- data/locale/foreman_remote_execution.pot +71 -80
- data/locale/fr/LC_MESSAGES/foreman_remote_execution.mo +0 -0
- data/locale/fr/foreman_remote_execution.po +13 -23
- data/locale/ja/LC_MESSAGES/foreman_remote_execution.mo +0 -0
- data/locale/ja/foreman_remote_execution.po +13 -23
- data/locale/ko/LC_MESSAGES/foreman_remote_execution.mo +0 -0
- data/locale/ko/foreman_remote_execution.po +13 -23
- data/locale/pt_BR/LC_MESSAGES/foreman_remote_execution.mo +0 -0
- data/locale/pt_BR/foreman_remote_execution.po +13 -23
- data/locale/ru/LC_MESSAGES/foreman_remote_execution.mo +0 -0
- data/locale/ru/foreman_remote_execution.po +13 -23
- data/locale/zh_CN/LC_MESSAGES/foreman_remote_execution.mo +0 -0
- data/locale/zh_CN/foreman_remote_execution.po +13 -23
- data/locale/zh_TW/LC_MESSAGES/foreman_remote_execution.mo +0 -0
- data/locale/zh_TW/foreman_remote_execution.po +13 -23
- data/test/benchmark/run_hosts_job_benchmark.rb +70 -0
- data/test/benchmark/targeting_benchmark.rb +31 -0
- data/test/factories/foreman_remote_execution_factories.rb +3 -0
- data/test/functional/api/v2/job_templates_controller_test.rb +1 -1
- data/test/unit/actions/run_hosts_job_test.rb +1 -0
- data/test/unit/concerns/host_extensions_test.rb +1 -4
- data/test/unit/job_invocation_test.rb +28 -1
- data/test/unit/remote_execution_feature_test.rb +40 -0
- data/test/unit/remote_execution_provider_test.rb +55 -1
- metadata +10 -7
- data/test/unit/actions/run_host_job_test.rb +0 -50
@@ -1,4 +1,5 @@
|
|
1
1
|
class RemoteExecutionFeature < ActiveRecord::Base
|
2
|
+
VALID_OPTIONS = [:provided_inputs, :description, :host_action_button]
|
2
3
|
validates :label, :name, :presence => true, :uniqueness => true
|
3
4
|
|
4
5
|
belongs_to :job_template
|
@@ -6,6 +7,8 @@ class RemoteExecutionFeature < ActiveRecord::Base
|
|
6
7
|
extend FriendlyId
|
7
8
|
friendly_id :label
|
8
9
|
|
10
|
+
scope :with_host_action_button, lambda { where(:host_action_button => true) }
|
11
|
+
|
9
12
|
def provided_input_names
|
10
13
|
self.provided_inputs.to_s.split(',').map(&:strip)
|
11
14
|
end
|
@@ -20,12 +23,22 @@ class RemoteExecutionFeature < ActiveRecord::Base
|
|
20
23
|
|
21
24
|
def self.register(label, name, options = {})
|
22
25
|
return false unless RemoteExecutionFeature.table_exists?
|
23
|
-
options.assert_valid_keys(
|
26
|
+
options.assert_valid_keys(*VALID_OPTIONS)
|
27
|
+
options[:host_action_button] = false unless options.key?(:host_action_button)
|
28
|
+
|
24
29
|
feature = self.find_by_label(label)
|
30
|
+
|
31
|
+
attributes = { :name => name, :provided_input_names => options[:provided_inputs], :description => options[:description], :host_action_button => options[:host_action_button] }
|
32
|
+
# in case DB does not have the attribute created yet but plugin initializer registers the feature, we need to skip this attribute
|
33
|
+
unless self.attribute_names.include?('host_action_button')
|
34
|
+
attributes.delete(:host_action_button)
|
35
|
+
end
|
36
|
+
|
25
37
|
if feature.nil?
|
26
|
-
feature = self.create!(:label => label
|
38
|
+
feature = self.create!({ :label => label }.merge(attributes))
|
27
39
|
else
|
28
|
-
feature.
|
40
|
+
feature.attributes = attributes
|
41
|
+
feature.save if feature.changed?
|
29
42
|
end
|
30
43
|
return feature
|
31
44
|
end
|
@@ -35,7 +35,10 @@ class Setting::RemoteExecution < Setting
|
|
35
35
|
true),
|
36
36
|
self.set('remote_execution_ssh_port',
|
37
37
|
N_('Port to use for SSH communication. Default port 22. You may override per host by setting a parameter called remote_execution_ssh_port.'),
|
38
|
-
'22')
|
38
|
+
'22'),
|
39
|
+
self.set('remote_execution_connect_by_ip',
|
40
|
+
N_('Should the ip addresses on host interfaces be preferred over the fqdn? It is useful, when DNS not resolving the fqdns properly. You may override this per host by setting a parameter called remote_execution_connect_by_ip.'),
|
41
|
+
false),
|
39
42
|
].each { |s| self.create! s.update(:category => 'Setting::RemoteExecution') }
|
40
43
|
end
|
41
44
|
|
@@ -18,6 +18,23 @@ class SSHExecutionProvider < RemoteExecutionProvider
|
|
18
18
|
true
|
19
19
|
end
|
20
20
|
|
21
|
+
def find_ip_or_hostname(host)
|
22
|
+
interfaces = effective_interfaces(host)
|
23
|
+
if host_setting(host, :remote_execution_connect_by_ip)
|
24
|
+
ip_interface = interfaces.find { |i| i.ip.present? }
|
25
|
+
end
|
26
|
+
if ip_interface
|
27
|
+
ip_interface.ip
|
28
|
+
else
|
29
|
+
fqdn_interface = interfaces.find { |i| i.fqdn.present? }
|
30
|
+
if fqdn_interface
|
31
|
+
fqdn_interface.fqdn
|
32
|
+
else
|
33
|
+
raise _('Could not find any suitable interface for execution')
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
21
38
|
private
|
22
39
|
|
23
40
|
def ssh_user(host)
|
@@ -25,7 +42,7 @@ class SSHExecutionProvider < RemoteExecutionProvider
|
|
25
42
|
end
|
26
43
|
|
27
44
|
def ssh_port(host)
|
28
|
-
Integer(host
|
45
|
+
Integer(host_setting(host, :remote_execution_ssh_port))
|
29
46
|
end
|
30
47
|
|
31
48
|
def effective_user(template_invocation)
|
@@ -33,12 +50,26 @@ class SSHExecutionProvider < RemoteExecutionProvider
|
|
33
50
|
end
|
34
51
|
|
35
52
|
def effective_user_method(host)
|
36
|
-
method = host
|
53
|
+
method = host_setting(host, :remote_execution_effective_user_method)
|
37
54
|
unless EFFECTIVE_USER_METHODS.include?(method)
|
38
55
|
raise _('Effective user method "%{current_value}" is not one of %{valid_methods}') %
|
39
56
|
{ :current_value => method, :valid_methods => EFFECTIVE_USER_METHODS}
|
40
57
|
end
|
41
58
|
method
|
42
59
|
end
|
60
|
+
|
61
|
+
private
|
62
|
+
|
63
|
+
def effective_interfaces(host)
|
64
|
+
interfaces = []
|
65
|
+
%w(execution primary provision).map do |flag|
|
66
|
+
interfaces << host.send(flag + '_interface')
|
67
|
+
end
|
68
|
+
interfaces.compact.uniq
|
69
|
+
end
|
70
|
+
|
71
|
+
def host_setting(host, setting)
|
72
|
+
host.params[setting.to_s] || Setting[setting]
|
73
|
+
end
|
43
74
|
end
|
44
75
|
end
|
data/app/models/targeting.rb
CHANGED
@@ -36,9 +36,13 @@ class Targeting < ActiveRecord::Base
|
|
36
36
|
raise ::Foreman::Exception, _('Cannot resolve hosts without a bookmark or search query') if bookmark.nil? && search_query.blank?
|
37
37
|
|
38
38
|
self.search_query = bookmark.query if dynamic? && bookmark.present?
|
39
|
-
self.
|
40
|
-
self.
|
41
|
-
|
39
|
+
self.resolved_at = Time.zone.now
|
40
|
+
self.validate!
|
41
|
+
# avoid validation of hosts objects - tey will be loaded for no reason.
|
42
|
+
host_ids = User.as(user.login) { Host.authorized(RESOLVE_PERMISSION, Host).search_for(search_query).pluck(:id) }
|
43
|
+
# this can be optimized even more, by introducing bulk insert
|
44
|
+
self.targeting_hosts.build(host_ids.map { |id| { :host_id => id } })
|
45
|
+
self.save(:validate => false)
|
42
46
|
end
|
43
47
|
|
44
48
|
def dynamic?
|
@@ -91,16 +91,13 @@
|
|
91
91
|
</div>
|
92
92
|
|
93
93
|
<div class="form-group advanced hidden">
|
94
|
-
|
94
|
+
<%= add_label({ :label => _('Type of query'), :label_help => _("Type has impact on when is the query evaulated to hosts.<br><ul><li><b>Static</b> - evaluates just after you submit this form</li><li><b>Dynamic</b> - evaluates just before the execution is started, so if it's planed in future, targeted hosts set may change before it</li></ul>") }, f, :targetting_type) %>
|
95
95
|
|
96
96
|
<div class="col-md-4">
|
97
97
|
<%= radio_button_f targeting_fields, :targeting_type, :value => Targeting::STATIC_TYPE, :text => _(Targeting::TYPES[Targeting::STATIC_TYPE]) %>
|
98
98
|
<%= radio_button_f targeting_fields, :targeting_type, :value => Targeting::DYNAMIC_TYPE, :text => _(Targeting::TYPES[Targeting::DYNAMIC_TYPE]) %>
|
99
99
|
</div>
|
100
100
|
|
101
|
-
<span class="help-inline"><%= popover(_('Explanation'),
|
102
|
-
_("Type has impact on when is the query evaulated to hosts.<br><ul><li><b>Static</b> - evaluates just after you submit this form</li><li><b>Dynamic</b> - evaluates just before the execution is started, so if it's planed in future, targeted hosts set may change before it</li></ul>")) %>
|
103
|
-
</span>
|
104
101
|
</div>
|
105
102
|
<% end %>
|
106
103
|
|
@@ -1,6 +1,7 @@
|
|
1
1
|
<td class="host_name" id="<%= dom_id(host) %>-name" data-refresh_required="<%= task.nil? ? 'true' : '' %>" data-id="<%= host.id %>">
|
2
2
|
<% if task %>
|
3
|
-
<%= link_to_if_authorized host.name, hash_for_template_invocation_path(:id => template_invocation).merge(:auth_object => host, :permission => :view_hosts) %>
|
3
|
+
<%= link_to_if_authorized host.name, hash_for_template_invocation_path(:id => template_invocation).merge(:auth_object => host, :permission => :view_hosts, :authorizer => job_hosts_authorizer) %>
|
4
|
+
|
4
5
|
<% else %>
|
5
6
|
<%= host.name %>
|
6
7
|
<% end %>
|
@@ -18,7 +18,7 @@
|
|
18
18
|
<tbody>
|
19
19
|
<% @job_invocations.each do |invocation| %>
|
20
20
|
<tr>
|
21
|
-
<td><%= link_to_if_authorized invocation_description(invocation), hash_for_job_invocation_path(invocation).merge(:auth_object => invocation, :permission => :view_job_invocations) %></td>
|
21
|
+
<td><%= link_to_if_authorized invocation_description(invocation), hash_for_job_invocation_path(invocation).merge(:auth_object => invocation, :permission => :view_job_invocations, :authorizer => authorizer) %></td>
|
22
22
|
<td><%= link_to_invocation_task_if_authorized(invocation) %></td>
|
23
23
|
<td><%= invocation_result(invocation, :success_count) %></td>
|
24
24
|
<td><%= invocation_result(invocation, :failed_count) %></td>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<% title @job_invocation.description, trunc_with_tooltip(@job_invocation.description, 120) %>
|
2
2
|
<% stylesheet 'job_invocations' %>
|
3
|
-
<% javascript 'template_invocation' %>
|
3
|
+
<% javascript 'charts', 'template_invocation' %>
|
4
4
|
|
5
5
|
<% if @job_invocation.task %>
|
6
6
|
<% title_actions(button_group(job_invocation_task_buttons(@job_invocation.task))) %>
|
@@ -11,10 +11,7 @@
|
|
11
11
|
|
12
12
|
<%= text_f f, :description_format,
|
13
13
|
:disabled => @template.locked?,
|
14
|
-
:
|
15
|
-
'Input values can be used using the syntax %{package}. ' +
|
16
|
-
'You may also include the job category and template ' +
|
17
|
-
'name using %{job_category} and %{template_name}.')) %>
|
14
|
+
:label_help => description_format_help %>
|
18
15
|
|
19
16
|
<%= select_f f, :provider_type, providers_options, :first, :last, :disabled => @template.locked? %>
|
20
17
|
|
@@ -1,9 +1,8 @@
|
|
1
1
|
<%= checkbox_f(
|
2
2
|
f,
|
3
3
|
:execution,
|
4
|
-
:
|
5
|
-
|
6
|
-
:rel => 'popover-modal'),
|
4
|
+
:label_help => _("The execution interface is used for remote execution"),
|
5
|
+
:label_help_options => { :rel => 'popover-modal' },
|
7
6
|
:label_size => 'col-md-3',
|
8
7
|
:label => _('Remote execution'),
|
9
8
|
:class => :interface_execution) %>
|
@@ -12,7 +12,7 @@
|
|
12
12
|
<tbody>
|
13
13
|
<% @remote_execution_features.each do |feature| %>
|
14
14
|
<tr>
|
15
|
-
<td><%= link_to_if_authorized feature.label, hash_for_remote_execution_feature_path(feature).merge(:auth_object => feature, :permission => :edit_remote_execution_features) %></td>
|
15
|
+
<td><%= link_to_if_authorized feature.label, hash_for_remote_execution_feature_path(feature).merge(:auth_object => feature, :permission => :edit_remote_execution_features, :authorizer => authorizer) %></td>
|
16
16
|
<td><%= feature.name %></td>
|
17
17
|
<td><%= feature.description %></td>
|
18
18
|
</tr>
|
@@ -26,7 +26,7 @@ Gem::Specification.new do |s|
|
|
26
26
|
s.add_dependency 'deface'
|
27
27
|
s.add_dependency 'dynflow', '~> 0.8.10'
|
28
28
|
s.add_dependency 'foreman_remote_execution_core'
|
29
|
-
s.add_dependency 'foreman-tasks', '~> 0.
|
29
|
+
s.add_dependency 'foreman-tasks', '~> 0.9.0'
|
30
30
|
|
31
31
|
s.add_development_dependency 'rubocop'
|
32
32
|
s.add_development_dependency 'rdoc'
|
@@ -31,7 +31,7 @@ module ForemanRemoteExecution
|
|
31
31
|
|
32
32
|
initializer 'foreman_remote_execution.register_plugin', before: :finisher_hook do |_app|
|
33
33
|
Foreman::Plugin.register :foreman_remote_execution do
|
34
|
-
requires_foreman '>= 1.
|
34
|
+
requires_foreman '>= 1.15'
|
35
35
|
|
36
36
|
apipie_documented_controllers ["#{ForemanRemoteExecution::Engine.root}/app/controllers/api/v2/*.rb"]
|
37
37
|
|
@@ -84,6 +84,8 @@ module ForemanRemoteExecution
|
|
84
84
|
role 'Remote Execution User', USER_PERMISSIONS
|
85
85
|
role 'Remote Execution Manager', MANAGER_PERMISSIONS
|
86
86
|
|
87
|
+
add_all_permissions_to_default_roles
|
88
|
+
|
87
89
|
# add menu entry
|
88
90
|
menu :top_menu, :job_templates,
|
89
91
|
url_hash: { controller: :job_templates, action: :index },
|
data/locale/action_names.rb
CHANGED
Binary file
|
@@ -97,8 +97,8 @@ msgstr "Parallelitätsebene"
|
|
97
97
|
msgid "Control concurrency level and distribution over time"
|
98
98
|
msgstr "Parallelitätsebene und zeitliche Verteilung steuern"
|
99
99
|
|
100
|
-
msgid "Could not use any proxy. Consider configuring %{global_proxy} or %{
|
101
|
-
msgstr "
|
100
|
+
msgid "Could not use any proxy. Consider configuring %{global_proxy}, %{fallback_proxy} or %{no_proxy} in settings"
|
101
|
+
msgstr ""
|
102
102
|
|
103
103
|
msgid "Could not use any template used in the job invocation"
|
104
104
|
msgstr "Es konnte keine Vorlage aus dem Jobaufruf verwendet werden"
|
@@ -118,9 +118,6 @@ msgstr "Wiederholten Job erstellen"
|
|
118
118
|
msgid "Create a template input"
|
119
119
|
msgstr "Vorlageneingabe erstellen"
|
120
120
|
|
121
|
-
msgid "Create architecture"
|
122
|
-
msgstr "Architektur erstellen"
|
123
|
-
|
124
121
|
msgid "Default user to use for SSH. You may override per host by setting a parameter called remote_execution_ssh_user."
|
125
122
|
msgstr "Standardbenutzer für SSH. Kann für jeden Host einzeln überschrieben werden, indem Sie ein Parameter namens remote_execution_ssh_user bestimmen."
|
126
123
|
|
@@ -136,9 +133,6 @@ msgstr "Job-Vorlage löschen"
|
|
136
133
|
msgid "Delete a template input"
|
137
134
|
msgstr "Vorlageneingabe löschen"
|
138
135
|
|
139
|
-
msgid "Delete architecture"
|
140
|
-
msgstr "Architektur löschen"
|
141
|
-
|
142
136
|
msgid "Description"
|
143
137
|
msgstr "Beschreibung"
|
144
138
|
|
@@ -211,9 +205,6 @@ msgstr "Fehlgeschlagen"
|
|
211
205
|
msgid "Failed rendering template: %s"
|
212
206
|
msgstr "Rendern der Vorlage fehlgeschlagen: %s"
|
213
207
|
|
214
|
-
msgid "Failed to initialize command"
|
215
|
-
msgstr "Initialisieren des Befehls fehlgeschlagen"
|
216
|
-
|
217
208
|
msgid "Feature input %{input_name} not defined in template %{template_name}"
|
218
209
|
msgstr "Funktionseingabe %{input_name} nicht definiert in Vorlage %{template_name}"
|
219
210
|
|
@@ -262,9 +253,6 @@ msgstr ""
|
|
262
253
|
msgid "Indicates that the action should be cancelled if it cannot be started before this time."
|
263
254
|
msgstr "Gibt an, dass die Aktion abgebrochen werden soll, wenn sie nicht vor diesem Zeitpunkt gestartet werden kann."
|
264
255
|
|
265
|
-
msgid "Initialization error: %s"
|
266
|
-
msgstr "Initialisierungsfehler: %s"
|
267
|
-
|
268
256
|
msgid "Input"
|
269
257
|
msgstr "Eingabe"
|
270
258
|
|
@@ -391,9 +379,6 @@ msgstr "Noch keine Ausführung abgeschlossen"
|
|
391
379
|
msgid "No hosts found."
|
392
380
|
msgstr "Keine Hosts gefunden"
|
393
381
|
|
394
|
-
msgid "No output"
|
395
|
-
msgstr "Keine Ausgabe"
|
396
|
-
|
397
382
|
msgid "No template mapped to feature %{feature_name}"
|
398
383
|
msgstr "Der Funktion %{feature_name} wurde keine Vorlage zugewiesen"
|
399
384
|
|
@@ -418,6 +403,12 @@ msgstr "Ausstehend"
|
|
418
403
|
msgid "Perform no more executions after this time"
|
419
404
|
msgstr "Danach nicht mehr ausführen"
|
420
405
|
|
406
|
+
msgid "Playbook execution failed"
|
407
|
+
msgstr ""
|
408
|
+
|
409
|
+
msgid "Port to use for SSH communication. Default port 22. You may override per host by setting a parameter called remote_execution_ssh_port."
|
410
|
+
msgstr ""
|
411
|
+
|
421
412
|
msgid "Preview"
|
422
413
|
msgstr "Vorschau"
|
423
414
|
|
@@ -511,9 +502,6 @@ msgstr "Job zu einem zukünftigen Zeitpunkt starten lassen"
|
|
511
502
|
msgid "Schedule the job to start at a later time"
|
512
503
|
msgstr "Job zu einer späteren Zeit starten lassen"
|
513
504
|
|
514
|
-
msgid "Script execution failed"
|
515
|
-
msgstr "Ausführung des Skripts fehlgeschlagen"
|
516
|
-
|
517
505
|
msgid "Scroll to bottom"
|
518
506
|
msgstr "Zum Ende scrollen"
|
519
507
|
|
@@ -699,9 +687,6 @@ msgstr "Job-Vorlage aktualisieren"
|
|
699
687
|
msgid "Update a template input"
|
700
688
|
msgstr "Vorlageneingabe aktualisieren"
|
701
689
|
|
702
|
-
msgid "Update architecture"
|
703
|
-
msgstr "Architektur aktualisieren"
|
704
|
-
|
705
690
|
msgid "Use default description template"
|
706
691
|
msgstr "Standardbeschreibungsvorlage verwenden"
|
707
692
|
|
@@ -735,6 +720,11 @@ msgstr "Welcher Benutzer zur Ausführung des Skripts verwendet werden soll (mitt
|
|
735
720
|
msgid "What user should be used to run the script (using sudo-like mechanisms). Defaults to a template parameter or global setting."
|
736
721
|
msgstr "Welcher Benutzer zur Ausführung des Skripts (mittels sudo-ähnlichen Mechanismen) verwendet werden soll. Standardmäßig wird ein Vorlagenparameter oder eine allgemeine Einstellung verwendet."
|
737
722
|
|
723
|
+
msgid ""
|
724
|
+
"When enabled, the remote execution will try to run the commands directly, when no\n"
|
725
|
+
" proxy with remote execution feature is configured for the host."
|
726
|
+
msgstr ""
|
727
|
+
|
738
728
|
msgid "Whether it should be allowed to override the effective user from the invocation form."
|
739
729
|
msgstr "Ob es möglich sein soll, den effektiven Benutzer des Aufruf-Formulars außer Kraft zu setzen."
|
740
730
|
|
@@ -98,7 +98,7 @@ msgstr ""
|
|
98
98
|
msgid "Control concurrency level and distribution over time"
|
99
99
|
msgstr ""
|
100
100
|
|
101
|
-
msgid "Could not use any proxy. Consider configuring %{global_proxy} or %{
|
101
|
+
msgid "Could not use any proxy. Consider configuring %{global_proxy}, %{fallback_proxy} or %{no_proxy} in settings"
|
102
102
|
msgstr ""
|
103
103
|
|
104
104
|
msgid "Could not use any template used in the job invocation"
|
@@ -119,9 +119,6 @@ msgstr ""
|
|
119
119
|
msgid "Create a template input"
|
120
120
|
msgstr ""
|
121
121
|
|
122
|
-
msgid "Create architecture"
|
123
|
-
msgstr ""
|
124
|
-
|
125
122
|
msgid "Default user to use for SSH. You may override per host by setting a parameter called remote_execution_ssh_user."
|
126
123
|
msgstr ""
|
127
124
|
|
@@ -137,9 +134,6 @@ msgstr ""
|
|
137
134
|
msgid "Delete a template input"
|
138
135
|
msgstr ""
|
139
136
|
|
140
|
-
msgid "Delete architecture"
|
141
|
-
msgstr ""
|
142
|
-
|
143
137
|
msgid "Description"
|
144
138
|
msgstr ""
|
145
139
|
|
@@ -212,9 +206,6 @@ msgstr ""
|
|
212
206
|
msgid "Failed rendering template: %s"
|
213
207
|
msgstr ""
|
214
208
|
|
215
|
-
msgid "Failed to initialize command"
|
216
|
-
msgstr ""
|
217
|
-
|
218
209
|
msgid "Feature input %{input_name} not defined in template %{template_name}"
|
219
210
|
msgstr ""
|
220
211
|
|
@@ -263,9 +254,6 @@ msgstr ""
|
|
263
254
|
msgid "Indicates that the action should be cancelled if it cannot be started before this time."
|
264
255
|
msgstr ""
|
265
256
|
|
266
|
-
msgid "Initialization error: %s"
|
267
|
-
msgstr ""
|
268
|
-
|
269
257
|
msgid "Input"
|
270
258
|
msgstr ""
|
271
259
|
|
@@ -392,9 +380,6 @@ msgstr ""
|
|
392
380
|
msgid "No hosts found."
|
393
381
|
msgstr ""
|
394
382
|
|
395
|
-
msgid "No output"
|
396
|
-
msgstr ""
|
397
|
-
|
398
383
|
msgid "No template mapped to feature %{feature_name}"
|
399
384
|
msgstr ""
|
400
385
|
|
@@ -419,6 +404,12 @@ msgstr ""
|
|
419
404
|
msgid "Perform no more executions after this time"
|
420
405
|
msgstr ""
|
421
406
|
|
407
|
+
msgid "Playbook execution failed"
|
408
|
+
msgstr ""
|
409
|
+
|
410
|
+
msgid "Port to use for SSH communication. Default port 22. You may override per host by setting a parameter called remote_execution_ssh_port."
|
411
|
+
msgstr ""
|
412
|
+
|
422
413
|
msgid "Preview"
|
423
414
|
msgstr ""
|
424
415
|
|
@@ -512,9 +503,6 @@ msgstr ""
|
|
512
503
|
msgid "Schedule the job to start at a later time"
|
513
504
|
msgstr ""
|
514
505
|
|
515
|
-
msgid "Script execution failed"
|
516
|
-
msgstr ""
|
517
|
-
|
518
506
|
msgid "Scroll to bottom"
|
519
507
|
msgstr ""
|
520
508
|
|
@@ -700,9 +688,6 @@ msgstr ""
|
|
700
688
|
msgid "Update a template input"
|
701
689
|
msgstr ""
|
702
690
|
|
703
|
-
msgid "Update architecture"
|
704
|
-
msgstr ""
|
705
|
-
|
706
691
|
msgid "Use default description template"
|
707
692
|
msgstr ""
|
708
693
|
|
@@ -736,6 +721,11 @@ msgstr ""
|
|
736
721
|
msgid "What user should be used to run the script (using sudo-like mechanisms). Defaults to a template parameter or global setting."
|
737
722
|
msgstr ""
|
738
723
|
|
724
|
+
msgid ""
|
725
|
+
"When enabled, the remote execution will try to run the commands directly, when no\n"
|
726
|
+
" proxy with remote execution feature is configured for the host."
|
727
|
+
msgstr ""
|
728
|
+
|
739
729
|
msgid "Whether it should be allowed to override the effective user from the invocation form."
|
740
730
|
msgstr ""
|
741
731
|
|