foreman_remote_execution 1.2.2 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|