foreman_remote_execution 3.1.0 → 3.3.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/.eslintrc +5 -30
- data/.github/workflows/ci.yml +100 -0
- data/.gitignore +1 -0
- data/.rubocop_todo.yml +3 -0
- data/Gemfile +1 -0
- data/app/controllers/api/v2/job_invocations_controller.rb +22 -1
- data/app/controllers/api/v2/template_invocations_controller.rb +4 -1
- data/app/helpers/job_invocations_chart_helper.rb +2 -0
- data/app/helpers/job_invocations_helper.rb +6 -1
- data/app/helpers/remote_execution_helper.rb +39 -30
- data/app/lib/actions/remote_execution/run_host_job.rb +3 -2
- data/app/lib/proxy_api/remote_execution_ssh.rb +6 -0
- data/app/models/concerns/foreman_remote_execution/host_extensions.rb +1 -1
- data/app/models/concerns/foreman_remote_execution/orchestration/ssh.rb +63 -0
- data/app/models/concerns/foreman_remote_execution/smart_proxy_extensions.rb +4 -0
- data/app/models/host_status/execution_status.rb +9 -1
- data/app/models/remote_execution_provider.rb +5 -0
- data/app/services/default_proxy_proxy_selector.rb +18 -0
- data/app/views/api/v2/job_invocations/main.json.rabl +8 -2
- data/app/views/job_invocations/_card_results.html.erb +1 -0
- data/app/views/job_invocations/_card_user_input.html.erb +1 -1
- data/app/views/job_invocations/_tab_hosts.html.erb +3 -23
- data/app/views/job_invocations/_tab_overview.html.erb +1 -1
- data/app/views/job_invocations/_user_input.html.erb +1 -1
- data/app/views/job_invocations/show.html.erb +1 -7
- data/app/views/job_invocations/show.json.erb +4 -0
- data/config/routes.rb +2 -1
- data/db/seeds.d/70-job_templates.rb +1 -1
- data/foreman_remote_execution.gemspec +5 -6
- data/lib/foreman_remote_execution/engine.rb +2 -0
- data/lib/foreman_remote_execution/version.rb +1 -1
- data/locale/action_names.rb +3 -3
- data/locale/de/LC_MESSAGES/foreman_remote_execution.mo +0 -0
- data/locale/de/foreman_remote_execution.po +65 -16
- data/locale/en/foreman_remote_execution.po +63 -15
- data/locale/en_GB/LC_MESSAGES/foreman_remote_execution.mo +0 -0
- data/locale/en_GB/foreman_remote_execution.po +64 -15
- data/locale/es/LC_MESSAGES/foreman_remote_execution.mo +0 -0
- data/locale/es/foreman_remote_execution.po +66 -17
- data/locale/foreman_remote_execution.pot +193 -148
- data/locale/fr/LC_MESSAGES/foreman_remote_execution.mo +0 -0
- data/locale/fr/foreman_remote_execution.po +66 -17
- data/locale/ja/LC_MESSAGES/foreman_remote_execution.mo +0 -0
- data/locale/ja/foreman_remote_execution.po +66 -17
- data/locale/ko/LC_MESSAGES/foreman_remote_execution.mo +0 -0
- data/locale/ko/foreman_remote_execution.po +65 -15
- data/locale/pt_BR/LC_MESSAGES/foreman_remote_execution.mo +0 -0
- data/locale/pt_BR/foreman_remote_execution.po +66 -17
- data/locale/ru/LC_MESSAGES/foreman_remote_execution.mo +0 -0
- data/locale/ru/foreman_remote_execution.po +65 -18
- data/locale/zh_CN/LC_MESSAGES/foreman_remote_execution.mo +0 -0
- data/locale/zh_CN/foreman_remote_execution.po +66 -17
- data/locale/zh_TW/LC_MESSAGES/foreman_remote_execution.mo +0 -0
- data/locale/zh_TW/foreman_remote_execution.po +65 -16
- data/package.json +16 -33
- data/test/functional/api/v2/job_invocations_controller_test.rb +42 -14
- data/test/functional/job_invocations_controller_test.rb +12 -0
- data/test/models/orchestration/ssh_test.rb +56 -0
- data/test/unit/concerns/host_extensions_test.rb +7 -0
- data/test/unit/remote_execution_provider_test.rb +4 -1
- data/webpack/__mocks__/foremanReact/common/I18n.js +1 -0
- data/webpack/__mocks__/foremanReact/components/common/ActionButtons/ActionButtons.js +3 -0
- data/webpack/__mocks__/foremanReact/constants.js +3 -0
- data/webpack/index.js +9 -22
- data/webpack/react_app/components/TargetingHosts/TargetingHosts.js +52 -0
- data/webpack/react_app/components/TargetingHosts/TargetingHostsActions.js +8 -0
- data/webpack/react_app/components/TargetingHosts/TargetingHostsConsts.js +1 -0
- data/webpack/react_app/components/TargetingHosts/TargetingHostsSelectors.js +12 -0
- data/webpack/react_app/components/TargetingHosts/__tests__/HostItem.test.js +6 -0
- data/webpack/react_app/components/TargetingHosts/__tests__/HostStatus.test.js +6 -0
- data/webpack/react_app/components/TargetingHosts/__tests__/TargetingHosts.test.js +6 -0
- data/webpack/react_app/components/TargetingHosts/__tests__/__snapshots__/HostItem.test.js.snap +31 -0
- data/webpack/react_app/components/TargetingHosts/__tests__/__snapshots__/HostStatus.test.js.snap +12 -0
- data/webpack/react_app/components/TargetingHosts/__tests__/__snapshots__/TargetingHosts.test.js.snap +81 -0
- data/webpack/react_app/components/TargetingHosts/__tests__/fixtures.js +43 -0
- data/webpack/react_app/components/TargetingHosts/components/HostItem.js +39 -0
- data/webpack/react_app/components/TargetingHosts/components/HostStatus.js +54 -0
- data/webpack/react_app/components/TargetingHosts/index.js +37 -0
- data/webpack/react_app/components/jobInvocations/AggregateStatus/index.js +10 -0
- data/webpack/react_app/components/jobInvocations/AggregateStatus/index.test.js +6 -3
- data/webpack/react_app/components/jobInvocations/index.js +19 -7
- data/webpack/react_app/redux/actions/jobInvocations/index.js +12 -8
- data/webpack/react_app/redux/consts.js +1 -2
- data/webpack/react_app/redux/reducers/jobInvocations/index.fixtures.js +8 -40
- data/webpack/react_app/redux/reducers/jobInvocations/index.test.js +17 -11
- data/webpack/test_setup.js +2 -1
- metadata +31 -14
- data/.hound.yml +0 -19
- data/.travis.yml +0 -6
- data/app/views/job_invocations/_host_actions_td.html.erb +0 -3
- data/app/views/job_invocations/_host_name_td.html.erb +0 -8
- data/app/views/job_invocations/_host_status_td.html.erb +0 -1
- data/app/views/job_invocations/show.js.erb +0 -23
|
@@ -7,8 +7,10 @@ class HostStatus::ExecutionStatus < HostStatus::Status
|
|
|
7
7
|
QUEUED = 2
|
|
8
8
|
# execution is in progress, dynflow task was created
|
|
9
9
|
RUNNING = 3
|
|
10
|
+
# execution has been cancelled
|
|
11
|
+
CANCELLED = 4
|
|
10
12
|
# mapping to string representation
|
|
11
|
-
STATUS_NAMES = { OK => 'succeeded', ERROR => 'failed', QUEUED => 'queued', RUNNING => 'running' }.freeze
|
|
13
|
+
STATUS_NAMES = { OK => 'succeeded', ERROR => 'failed', QUEUED => 'queued', RUNNING => 'running', CANCELLED => 'cancelled' }.freeze
|
|
12
14
|
|
|
13
15
|
def relevant?(*args)
|
|
14
16
|
execution_tasks.present?
|
|
@@ -38,6 +40,8 @@ class HostStatus::ExecutionStatus < HostStatus::Status
|
|
|
38
40
|
case to_status(options)
|
|
39
41
|
when OK
|
|
40
42
|
execution_tasks.present? ? N_('Last execution succeeded') : N_('No execution finished yet')
|
|
43
|
+
when CANCELLED
|
|
44
|
+
N_('Last execution cancelled')
|
|
41
45
|
when ERROR
|
|
42
46
|
N_('Last execution failed')
|
|
43
47
|
else
|
|
@@ -54,6 +58,8 @@ class HostStatus::ExecutionStatus < HostStatus::Status
|
|
|
54
58
|
case status
|
|
55
59
|
when OK
|
|
56
60
|
[ "state = 'stopped' AND result = 'success'" ]
|
|
61
|
+
when CANCELLED
|
|
62
|
+
[ "state = 'stopped' AND result = 'cancelled'" ]
|
|
57
63
|
when ERROR
|
|
58
64
|
[ "state = 'stopped' AND (result = 'error' OR result = 'warning')" ]
|
|
59
65
|
when QUEUED
|
|
@@ -74,6 +80,8 @@ class HostStatus::ExecutionStatus < HostStatus::Status
|
|
|
74
80
|
QUEUED
|
|
75
81
|
elsif task.state == 'stopped' && task.result == 'success'
|
|
76
82
|
OK
|
|
83
|
+
elsif task.state == 'stopped' && task.result == 'cancelled'
|
|
84
|
+
CANCELLED
|
|
77
85
|
elsif task.pending?
|
|
78
86
|
RUNNING
|
|
79
87
|
else
|
|
@@ -98,5 +98,10 @@ class RemoteExecutionProvider
|
|
|
98
98
|
def proxy_action_class
|
|
99
99
|
ForemanRemoteExecutionCore::Actions::RunScript
|
|
100
100
|
end
|
|
101
|
+
|
|
102
|
+
# Return a specific proxy selector to use for running a given template
|
|
103
|
+
# Returns either nil to use the default selector or an instance of a (sub)class of ::ForemanTasks::ProxySelector
|
|
104
|
+
def required_proxy_selector_for(_template)
|
|
105
|
+
end
|
|
101
106
|
end
|
|
102
107
|
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
class DefaultProxyProxySelector < ::RemoteExecutionProxySelector
|
|
2
|
+
def initialize
|
|
3
|
+
# TODO: Remove this once we have a reliable way of determining the internal proxy without katello
|
|
4
|
+
# Tracked as https://projects.theforeman.org/issues/29840
|
|
5
|
+
raise _('Internal proxy selector can only be used if Katello is enabled') unless defined?(::Katello)
|
|
6
|
+
|
|
7
|
+
super
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def available_proxies(host, provider)
|
|
11
|
+
# TODO: Once we have a internal proxy marker/feature on the proxy, we can
|
|
12
|
+
# swap the implementation
|
|
13
|
+
internal_proxy = ::Katello.default_capsule
|
|
14
|
+
super.reduce({}) do |acc, (key, proxies)|
|
|
15
|
+
acc.merge(key => proxies.select { |proxy| proxy == internal_proxy })
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -19,8 +19,14 @@ child :targeting do
|
|
|
19
19
|
attributes :bookmark_id, :search_query, :targeting_type, :user_id, :status, :status_label,
|
|
20
20
|
:randomized_ordering
|
|
21
21
|
|
|
22
|
-
child
|
|
22
|
+
child @hosts do
|
|
23
23
|
extends 'api/v2/hosts/base'
|
|
24
|
+
|
|
25
|
+
if params[:host_status]
|
|
26
|
+
node :job_status do |host|
|
|
27
|
+
@host_statuses[host.id]
|
|
28
|
+
end
|
|
29
|
+
end
|
|
24
30
|
end
|
|
25
31
|
end
|
|
26
32
|
|
|
@@ -28,7 +34,7 @@ child :task do
|
|
|
28
34
|
attributes :id, :state
|
|
29
35
|
end
|
|
30
36
|
|
|
31
|
-
child
|
|
37
|
+
child @template_invocations do
|
|
32
38
|
attributes :template_id, :template_name
|
|
33
39
|
child :input_values do
|
|
34
40
|
attributes :template_input_name, :template_input_id
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<p>
|
|
9
9
|
<ul>
|
|
10
10
|
<% template_invocation.input_values.joins(:template_input).each do |input_value| %>
|
|
11
|
-
<li><b><%= input_value.template_input.name %></b>: <%=
|
|
11
|
+
<li><b><%= input_value.template_input.name %></b>: <%= trunc_with_tooltip(input_safe_value(input_value), 255) %></li>
|
|
12
12
|
<% end %>
|
|
13
13
|
</ul>
|
|
14
14
|
</p>
|
|
@@ -15,29 +15,9 @@
|
|
|
15
15
|
<% end %>
|
|
16
16
|
<br>
|
|
17
17
|
|
|
18
|
-
<
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
<th><%= sort :name, :as => _('Host') %></th>
|
|
22
|
-
<th><%= _('Status') %></th>
|
|
23
|
-
<th><%= _('Actions') %></th>
|
|
24
|
-
</tr>
|
|
25
|
-
</thead>
|
|
26
|
-
|
|
27
|
-
<tbody>
|
|
28
|
-
<% hosts.each do |host| %>
|
|
29
|
-
<% template_invocation = job_invocation.template_invocations.find { |template_invocation| template_invocation.host_id == host.id } %>
|
|
30
|
-
<% task = template_invocation.try(:run_host_job_task) %>
|
|
31
|
-
<tr>
|
|
32
|
-
<% options = { :host => host, :task => task, :job_invocation => job_invocation, :template_invocation => template_invocation } %>
|
|
33
|
-
<%= render 'host_name_td', options %>
|
|
34
|
-
<%= render 'host_status_td', options %>
|
|
35
|
-
<%= render 'host_actions_td', options %>
|
|
36
|
-
</tr>
|
|
37
|
-
<% end %>
|
|
38
|
-
</tbody>
|
|
39
|
-
</table>
|
|
40
|
-
|
|
18
|
+
<div id="targeting_hosts">
|
|
19
|
+
<%= mount_react_component('TargetingHosts', '#targeting_hosts') %>
|
|
20
|
+
</div>
|
|
41
21
|
<%= will_paginate_with_info @hosts, :container => true %>
|
|
42
22
|
<% else %>
|
|
43
23
|
<div class="alert alert-warning">
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<% template_invocations = job_invocation.pattern_template_invocations %>
|
|
2
2
|
<div class='row'>
|
|
3
3
|
<div class="col-xs-6 col-sm-6 col-md-6">
|
|
4
|
-
<%= render :partial => 'card_results' %>
|
|
4
|
+
<%= render :partial => 'card_results', :locals => { :job_invocation => job_invocation } %>
|
|
5
5
|
<%= render :partial => 'card_schedule', :locals => { :job_invocation => job_invocation } %>
|
|
6
6
|
</div>
|
|
7
7
|
<div class='col-xs-12 col-sm-6 col-md-6'>
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<% template_invocation.input_values.joins(:template_input).each do |input_value| %>
|
|
13
13
|
<tr>
|
|
14
14
|
<td><b><%= input_value.template_input.name %></b></td>
|
|
15
|
-
<td><%= input_value
|
|
15
|
+
<td><%= input_safe_value(input_value) %></td>
|
|
16
16
|
</tr>
|
|
17
17
|
<% end %>
|
|
18
18
|
</tbody>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<% title @job_invocation.description %>
|
|
2
2
|
<% stylesheet 'foreman_remote_execution/foreman_remote_execution' %>
|
|
3
3
|
<% javascript 'charts', 'foreman_remote_execution/template_invocation' %>
|
|
4
|
-
|
|
4
|
+
<% javascript *webpack_asset_paths('foreman_remote_execution', :extension => 'js') %>
|
|
5
5
|
|
|
6
6
|
<%= breadcrumbs name_field: 'description' %>
|
|
7
7
|
|
|
@@ -41,9 +41,3 @@
|
|
|
41
41
|
<% end %>
|
|
42
42
|
<%= render_tab_content_for(:main_tabs, subject: @job_invocation) %>
|
|
43
43
|
</div>
|
|
44
|
-
|
|
45
|
-
<script id="job_invocation_refresh" data-refresh-url="<%= job_invocation_path(@job_invocation) %>">
|
|
46
|
-
<% if @auto_refresh %>
|
|
47
|
-
delayed_refresh($('script#job_invocation_refresh').data('refresh-url'), job_invocation_refresh_data());
|
|
48
|
-
<% end %>
|
|
49
|
-
</script>
|
data/config/routes.rb
CHANGED
|
@@ -16,7 +16,8 @@ Rails.application.routes.draw do
|
|
|
16
16
|
end
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
match 'job_invocations/new', to: 'job_invocations#new', via: [:get, :post], as: 'new_job_invocation'
|
|
20
|
+
resources :job_invocations, :only => [:create, :show, :index] do
|
|
20
21
|
collection do
|
|
21
22
|
post 'refresh'
|
|
22
23
|
get 'chart'
|
|
@@ -4,7 +4,7 @@ User.as_anonymous_admin do
|
|
|
4
4
|
JobTemplate.without_auditing do
|
|
5
5
|
Dir[File.join("#{ForemanRemoteExecution::Engine.root}/app/views/templates/**/*.erb")].each do |template|
|
|
6
6
|
sync = !Rails.env.test? && Setting[:remote_execution_sync_templates]
|
|
7
|
-
template = JobTemplate.import_raw!(File.read(template), :default => true, :
|
|
7
|
+
template = JobTemplate.import_raw!(File.read(template), :default => true, :lock => true, :update => sync)
|
|
8
8
|
template.organizations = organizations if template.present?
|
|
9
9
|
template.locations = locations if template.present?
|
|
10
10
|
end
|
|
@@ -15,21 +15,20 @@ Gem::Specification.new do |s|
|
|
|
15
15
|
s.description = 'A plugin bringing remote execution to the Foreman, completing the config ' +
|
|
16
16
|
'management functionality with remote management functionality.'
|
|
17
17
|
|
|
18
|
-
s.files =
|
|
19
|
-
file
|
|
20
|
-
|
|
21
|
-
file == 'foreman_remote_execution_core.gemspec'
|
|
18
|
+
s.files = `git ls-files`.split("\n").reject do |file|
|
|
19
|
+
file.start_with?('scripts', 'lib/foreman_remote_execution_core') ||
|
|
20
|
+
file == 'foreman_remote_execution_core.gemspec'
|
|
22
21
|
end
|
|
23
22
|
|
|
24
23
|
s.test_files = `git ls-files test`.split("\n")
|
|
25
24
|
s.extra_rdoc_files = Dir['README*', 'LICENSE']
|
|
26
25
|
|
|
27
26
|
s.add_dependency 'deface'
|
|
28
|
-
s.add_dependency 'dynflow', '>= 1.0.
|
|
27
|
+
s.add_dependency 'dynflow', '>= 1.0.2', '< 2.0.0'
|
|
29
28
|
s.add_dependency 'foreman_remote_execution_core'
|
|
30
29
|
s.add_dependency 'foreman-tasks', '>= 0.15.1'
|
|
31
30
|
|
|
32
31
|
s.add_development_dependency 'factory_bot_rails', '~> 4.8.0'
|
|
33
|
-
s.add_development_dependency 'rubocop'
|
|
32
|
+
s.add_development_dependency 'rubocop', '~> 0.80.0'
|
|
34
33
|
s.add_development_dependency 'rdoc'
|
|
35
34
|
end
|
|
@@ -166,10 +166,12 @@ module ForemanRemoteExecution
|
|
|
166
166
|
|
|
167
167
|
Host::Managed.prepend ForemanRemoteExecution::HostExtensions
|
|
168
168
|
Host::Managed.include ForemanTasks::Concerns::HostActionSubject
|
|
169
|
+
Host::Managed.include ForemanRemoteExecution::Orchestration::SSH
|
|
169
170
|
|
|
170
171
|
(Nic::Base.descendants + [Nic::Base]).each do |klass|
|
|
171
172
|
klass.send(:include, ForemanRemoteExecution::NicExtensions)
|
|
172
173
|
end
|
|
174
|
+
Nic::Managed.include ForemanRemoteExecution::Orchestration::SSH
|
|
173
175
|
|
|
174
176
|
Bookmark.include ForemanRemoteExecution::BookmarkExtensions
|
|
175
177
|
HostsHelper.prepend ForemanRemoteExecution::HostsHelperExtensions
|
data/locale/action_names.rb
CHANGED
|
Binary file
|
|
@@ -27,11 +27,6 @@ msgstr "vor %s"
|
|
|
27
27
|
msgid "%{description} on %{host}"
|
|
28
28
|
msgstr "%{description} auf %{host}"
|
|
29
29
|
|
|
30
|
-
msgid "...and %{count} more"
|
|
31
|
-
msgid_plural "...and %{count} more"
|
|
32
|
-
msgstr[0] "...und %{count} weiteren"
|
|
33
|
-
msgstr[1] "...und %{count} weiteren"
|
|
34
|
-
|
|
35
30
|
msgid "A comma separated list of input names to be excluded from the foreign template."
|
|
36
31
|
msgstr "Kommagetrennte Liste von Eingabenamen, die aus der Fremdvorlage auszuschließen ist"
|
|
37
32
|
|
|
@@ -59,12 +54,21 @@ msgstr "Aktionen"
|
|
|
59
54
|
msgid "Add Foreign Input Set"
|
|
60
55
|
msgstr "Fremdeingabe-Satz hinzufügen"
|
|
61
56
|
|
|
57
|
+
msgid "Alphabetical"
|
|
58
|
+
msgstr ""
|
|
59
|
+
|
|
62
60
|
msgid "Amount of workers in the pool to handle the execution of the remote execution jobs. Restart of the dynflowd/foreman-tasks service is required."
|
|
63
61
|
msgstr ""
|
|
64
62
|
|
|
65
63
|
msgid "Another interface is already set as execution. Are you sure you want to use this one instead?"
|
|
66
64
|
msgstr "Es ist bereits eine andere Schnittstelle für die Ausführung bestimmt. Sind Sie sicher, dass Sie stattdessen diese Schnittstelle verwenden möchten?"
|
|
67
65
|
|
|
66
|
+
msgid "Any Location"
|
|
67
|
+
msgstr ""
|
|
68
|
+
|
|
69
|
+
msgid "Any Organization"
|
|
70
|
+
msgstr ""
|
|
71
|
+
|
|
68
72
|
msgid "Back to Job"
|
|
69
73
|
msgstr "Zurück zum Job"
|
|
70
74
|
|
|
@@ -92,6 +96,9 @@ msgstr "bookmark_id und search_query konnte nicht angegeben werden"
|
|
|
92
96
|
msgid "Cannot specify both recurrence and scheduling"
|
|
93
97
|
msgstr "Wiederholung und Planung konnten nicht angegeben werden"
|
|
94
98
|
|
|
99
|
+
msgid "Choose a job template that is pre-selected in job invocation form"
|
|
100
|
+
msgstr ""
|
|
101
|
+
|
|
95
102
|
msgid "Circular dependency detected in foreign input set '%{template}' -> '%{target_template}'. Templates stack: %{templates_stack}"
|
|
96
103
|
msgstr "Zirkuläre Abhängigkeit im Fremdeingabe-Satz gefunden '%{template}' -> '%{target_template}'. Vorlagen-Stack: %{templates_stack}"
|
|
97
104
|
|
|
@@ -146,6 +153,12 @@ msgstr "Job-Vorlage erstellen"
|
|
|
146
153
|
msgid "Create a recurring job"
|
|
147
154
|
msgstr "Wiederholten Job erstellen"
|
|
148
155
|
|
|
156
|
+
msgid "Current location %{loc_c} is different from job's location %{loc_j}."
|
|
157
|
+
msgstr ""
|
|
158
|
+
|
|
159
|
+
msgid "Current organization %{org_c} is different from job's organization %{org_j}."
|
|
160
|
+
msgstr ""
|
|
161
|
+
|
|
149
162
|
msgid "Default SSH key passphrase"
|
|
150
163
|
msgstr ""
|
|
151
164
|
|
|
@@ -179,8 +192,8 @@ msgstr "Beschreibungsvorlage"
|
|
|
179
192
|
msgid "Display advanced fields"
|
|
180
193
|
msgstr "Erweiterte Felder einblenden"
|
|
181
194
|
|
|
182
|
-
msgid "Distribute execution over N seconds"
|
|
183
|
-
msgstr "
|
|
195
|
+
msgid "Distribute execution over N seconds. If this is set and proxy batch triggering is enabled, then tasks are triggered on the smart proxy in batches of size 1."
|
|
196
|
+
msgstr ""
|
|
184
197
|
|
|
185
198
|
msgid "Distribute tasks over N seconds"
|
|
186
199
|
msgstr "Aufgaben über n Sekunden verteilen"
|
|
@@ -224,9 +237,21 @@ msgstr "Fehler die Daten vom Proxy zu laden."
|
|
|
224
237
|
msgid "Evaluated at:"
|
|
225
238
|
msgstr "Evaluiert an:"
|
|
226
239
|
|
|
240
|
+
msgid "Execute the jobs on hosts in randomized order"
|
|
241
|
+
msgstr ""
|
|
242
|
+
|
|
227
243
|
msgid "Execution"
|
|
228
244
|
msgstr "Ausführung"
|
|
229
245
|
|
|
246
|
+
msgid "Execution order"
|
|
247
|
+
msgstr ""
|
|
248
|
+
|
|
249
|
+
msgid "Execution ordering"
|
|
250
|
+
msgstr ""
|
|
251
|
+
|
|
252
|
+
msgid "Execution ordering determines whether the jobs should be executed on hosts in alphabetical order or in randomized order.<br><ul><li><b>Ordered</b> - executes the jobs on hosts in alphabetical order</li><li><b>Randomized</b> - randomizes the order in which jobs are executed on hosts</li></ul>"
|
|
253
|
+
msgstr ""
|
|
254
|
+
|
|
230
255
|
msgid "Exit status: %s"
|
|
231
256
|
msgstr "Exit-Status: %s"
|
|
232
257
|
|
|
@@ -257,6 +282,9 @@ msgstr "Fremdeingabe-Satz"
|
|
|
257
282
|
msgid "Foreman can run arbitrary commands on remote hosts using different providers, such as SSH or Ansible. Communication goes through the Smart Proxy so Foreman does not have to have direct access to the target hosts and can scale to control many hosts."
|
|
258
283
|
msgstr ""
|
|
259
284
|
|
|
285
|
+
msgid "Form Job Template"
|
|
286
|
+
msgstr ""
|
|
287
|
+
|
|
260
288
|
msgid "Get output for a host"
|
|
261
289
|
msgstr "Ausgabe für einen Host abfragen"
|
|
262
290
|
|
|
@@ -377,6 +405,9 @@ msgstr ""
|
|
|
377
405
|
msgid "Label"
|
|
378
406
|
msgstr "Kennung"
|
|
379
407
|
|
|
408
|
+
msgid "Last execution cancelled"
|
|
409
|
+
msgstr ""
|
|
410
|
+
|
|
380
411
|
msgid "Last execution failed"
|
|
381
412
|
msgstr "Letzte Ausführung fehlgeschlagen"
|
|
382
413
|
|
|
@@ -407,6 +438,9 @@ msgstr "Entfernte Ausführungsfunktionen auflisten"
|
|
|
407
438
|
msgid "List template invocations belonging to job invocation"
|
|
408
439
|
msgstr ""
|
|
409
440
|
|
|
441
|
+
msgid "Location"
|
|
442
|
+
msgstr ""
|
|
443
|
+
|
|
410
444
|
msgid "Manual selection"
|
|
411
445
|
msgstr "Manuelle Auswahl"
|
|
412
446
|
|
|
@@ -425,15 +459,15 @@ msgstr "Neue Job-Vorlage"
|
|
|
425
459
|
msgid "No execution finished yet"
|
|
426
460
|
msgstr "Noch keine Ausführung abgeschlossen"
|
|
427
461
|
|
|
428
|
-
msgid "No hosts found."
|
|
429
|
-
msgstr "Keine Hosts gefunden"
|
|
430
|
-
|
|
431
462
|
msgid "No template mapped to feature %{feature_name}"
|
|
432
463
|
msgstr "Der Funktion %{feature_name} wurde keine Vorlage zugewiesen"
|
|
433
464
|
|
|
434
465
|
msgid "Not all required inputs have values. Missing inputs: %s"
|
|
435
466
|
msgstr "Nicht alle erforderlichen Eingaben haben Werte. Fehlende Eingaben: %s"
|
|
436
467
|
|
|
468
|
+
msgid "Organization"
|
|
469
|
+
msgstr ""
|
|
470
|
+
|
|
437
471
|
msgid "Override the description format from the template for this invocation only"
|
|
438
472
|
msgstr "Beschreibungsformat der Vorlage nur für diesen Aufruf außer Kraft setzen "
|
|
439
473
|
|
|
@@ -458,6 +492,9 @@ msgstr ""
|
|
|
458
492
|
msgid "Pending"
|
|
459
493
|
msgstr "Ausstehend"
|
|
460
494
|
|
|
495
|
+
msgid "Perform a single Puppet run"
|
|
496
|
+
msgstr ""
|
|
497
|
+
|
|
461
498
|
msgid "Perform no more executions after this time"
|
|
462
499
|
msgstr "Danach nicht mehr ausführen"
|
|
463
500
|
|
|
@@ -487,6 +524,9 @@ msgstr "Anbieter und Vorlagen"
|
|
|
487
524
|
msgid "Proxies"
|
|
488
525
|
msgstr "Proxys"
|
|
489
526
|
|
|
527
|
+
msgid "Randomized"
|
|
528
|
+
msgstr ""
|
|
529
|
+
|
|
490
530
|
msgid "Recurring logic"
|
|
491
531
|
msgstr "Wiederholungslogik"
|
|
492
532
|
|
|
@@ -511,6 +551,9 @@ msgstr "Entfernte Ausführung"
|
|
|
511
551
|
msgid "Remote execution feature label that should be triggered, job template assigned to this feature will be used"
|
|
512
552
|
msgstr ""
|
|
513
553
|
|
|
554
|
+
msgid "Remove SSH known hosts for %s"
|
|
555
|
+
msgstr ""
|
|
556
|
+
|
|
514
557
|
msgid "Repeat a maximum of N times"
|
|
515
558
|
msgstr "Maximal n-mal wiederholen"
|
|
516
559
|
|
|
@@ -544,9 +587,15 @@ msgstr "Ausführen"
|
|
|
544
587
|
msgid "Run Job"
|
|
545
588
|
msgstr "Job ausführen"
|
|
546
589
|
|
|
590
|
+
msgid "Run Puppet Once"
|
|
591
|
+
msgstr ""
|
|
592
|
+
|
|
547
593
|
msgid "Run at most N tasks at a time"
|
|
548
594
|
msgstr "Höchstens n Aufgaben gleichzeitig ausführen"
|
|
549
595
|
|
|
596
|
+
msgid "Run at most N tasks at a time. If this is set and proxy batch triggering is enabled, then tasks are triggered on the smart proxy in batches of size 1."
|
|
597
|
+
msgstr ""
|
|
598
|
+
|
|
550
599
|
msgid "SSH"
|
|
551
600
|
msgstr "SSH"
|
|
552
601
|
|
|
@@ -589,8 +638,8 @@ msgstr "Suchen"
|
|
|
589
638
|
msgid "Search Query"
|
|
590
639
|
msgstr ""
|
|
591
640
|
|
|
592
|
-
msgid "Search for remote execution proxy outside of the proxies assigned to the host.
|
|
593
|
-
msgstr "
|
|
641
|
+
msgid "Search for remote execution proxy outside of the proxies assigned to the host. The search will be limited to the host's organization and location."
|
|
642
|
+
msgstr ""
|
|
594
643
|
|
|
595
644
|
msgid "Search the host for any proxy with Remote Execution, useful when the host has no subnet or the subnet does not have an execution proxy"
|
|
596
645
|
msgstr "Den Host nach einem Proxy mit entfernter Ausführung durchsuchen. Dies ist nützlich, wenn der Host kein Subnetz hat oder das Subnetz keinen Proxy für die Ausführung hat."
|
|
@@ -610,7 +659,7 @@ msgstr "Wählen Sie so viele Proxys für entfernte Ausführung aus, wie es für
|
|
|
610
659
|
msgid "Set to distribute over"
|
|
611
660
|
msgstr ""
|
|
612
661
|
|
|
613
|
-
msgid "Should the ip addresses on host interfaces be preferred over the fqdn? It is useful
|
|
662
|
+
msgid "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. This setting only applies to IPv4. When the host has only an IPv6 address on the interface used for remote execution, hostname will be used even if this setting is set to true."
|
|
614
663
|
msgstr ""
|
|
615
664
|
|
|
616
665
|
msgid "Show foreign input set details"
|
|
@@ -682,9 +731,6 @@ msgstr "Vorlagenversion"
|
|
|
682
731
|
msgid "Template with id '%{id}' was not found"
|
|
683
732
|
msgstr "Vorlage mit ID '%{id}' nicht gefunden"
|
|
684
733
|
|
|
685
|
-
msgid "The dynamic query '#{job_invocation.targeting.search_query}' was not resolved yet. The list of hosts to which it would resolve now can be seen"
|
|
686
|
-
msgstr ""
|
|
687
|
-
|
|
688
734
|
msgid "The dynamic query '%{query}' was not resolved yet. The list of hosts to which it would resolve now can be seen %{here}."
|
|
689
735
|
msgstr "Die dynamische Anfrage '%{query}' wurde noch nicht aufgelöst. Die Liste von Hosts, zu denen sie sich auflösen würde, ist jetzt %{here} zu sehen."
|
|
690
736
|
|
|
@@ -786,6 +832,9 @@ msgstr "Anfragetyp"
|
|
|
786
832
|
msgid "Unable to fetch public key"
|
|
787
833
|
msgstr "Öffentlicher Schlüssel konnte nicht abgerufen werden"
|
|
788
834
|
|
|
835
|
+
msgid "Unable to remove host from known hosts"
|
|
836
|
+
msgstr ""
|
|
837
|
+
|
|
789
838
|
msgid "Unable to save template. Correct highlighted errors"
|
|
790
839
|
msgstr "Vorlage kann nicht gespeichert werden. Bitte korrigieren Sie die markierten Fehler"
|
|
791
840
|
|