foreman_remote_execution 1.6.3 → 1.6.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/foreman_remote_execution/template_input.js +0 -10
  3. data/app/assets/javascripts/foreman_remote_execution/template_invocation.js +1 -12
  4. data/app/assets/stylesheets/foreman_remote_execution/template_invocation.css.scss +1 -0
  5. data/app/controllers/api/v2/job_invocations_controller.rb +5 -1
  6. data/app/helpers/job_invocation_output_helper.rb +5 -4
  7. data/app/helpers/job_invocations_helper.rb +0 -29
  8. data/app/helpers/remote_execution_helper.rb +1 -24
  9. data/app/lib/foreman_remote_execution/renderer/scope/input.rb +28 -8
  10. data/app/models/concerns/foreman_remote_execution/template_extensions.rb +0 -12
  11. data/app/models/concerns/foreman_remote_execution/template_input_extensions.rb +9 -0
  12. data/app/models/concerns/foreman_remote_execution/template_overrides.rb +11 -0
  13. data/app/models/input_template_renderer.rb +16 -17
  14. data/app/models/job_invocation.rb +14 -4
  15. data/app/models/job_invocation_composer.rb +2 -6
  16. data/app/models/job_template.rb +23 -52
  17. data/app/models/template_invocation_input_value.rb +12 -1
  18. data/app/views/api/v2/smart_proxies/pubkey.json.rabl +1 -0
  19. data/app/views/job_invocations/_form.html.erb +1 -7
  20. data/app/views/job_templates/_custom_tabs.html.erb +0 -7
  21. data/app/views/template_invocations/_output_line_set.html.erb +2 -2
  22. data/app/views/templates/ssh/module_action.erb +67 -0
  23. data/app/views/templates/ssh/package_action.erb +39 -7
  24. data/app/views/templates/ssh/power_action.erb +2 -1
  25. data/app/views/templates/ssh/puppet_run_once.erb +1 -0
  26. data/app/views/templates/ssh/run_command.erb +1 -0
  27. data/app/views/templates/ssh/service_action.erb +9 -1
  28. data/config/routes.rb +0 -1
  29. data/lib/foreman_remote_execution/engine.rb +4 -0
  30. data/lib/foreman_remote_execution/version.rb +1 -1
  31. data/locale/de/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  32. data/locale/de/foreman_remote_execution.po +3 -72
  33. data/locale/en/foreman_remote_execution.po +3 -72
  34. data/locale/en_GB/foreman_remote_execution.po +3 -72
  35. data/locale/es/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  36. data/locale/es/foreman_remote_execution.po +3 -72
  37. data/locale/foreman_remote_execution.pot +124 -225
  38. data/locale/fr/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  39. data/locale/fr/foreman_remote_execution.po +3 -72
  40. data/locale/ja/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  41. data/locale/ja/foreman_remote_execution.po +3 -72
  42. data/locale/ko/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  43. data/locale/ko/foreman_remote_execution.po +3 -72
  44. data/locale/pt_BR/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  45. data/locale/pt_BR/foreman_remote_execution.po +3 -72
  46. data/locale/ru/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  47. data/locale/ru/foreman_remote_execution.po +3 -72
  48. data/locale/zh_CN/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  49. data/locale/zh_CN/foreman_remote_execution.po +3 -72
  50. data/locale/zh_TW/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  51. data/locale/zh_TW/foreman_remote_execution.po +3 -72
  52. data/test/factories/foreman_remote_execution_factories.rb +6 -5
  53. data/test/functional/api/v2/job_invocations_controller_test.rb +10 -0
  54. data/test/unit/input_template_renderer_test.rb +52 -21
  55. data/test/unit/job_invocation_composer_test.rb +2 -2
  56. data/test/unit/job_invocation_test.rb +36 -0
  57. metadata +6 -19
  58. data/app/controllers/api/v2/template_inputs_controller.rb +0 -92
  59. data/app/controllers/concerns/foreman/controller/parameters/template_input.rb +0 -17
  60. data/app/models/template_input.rb +0 -179
  61. data/app/views/api/v2/template_inputs/base.json.rabl +0 -3
  62. data/app/views/api/v2/template_inputs/create.json.rabl +0 -3
  63. data/app/views/api/v2/template_inputs/index.json.rabl +0 -3
  64. data/app/views/api/v2/template_inputs/main.json.rabl +0 -10
  65. data/app/views/api/v2/template_inputs/show.json.rabl +0 -3
  66. data/app/views/template_inputs/_form.html.erb +0 -25
  67. data/app/views/template_inputs/_invocation_form.html.erb +0 -7
  68. data/db/migrate/20150616080015_create_template_input.rb +0 -19
  69. data/db/migrate/20150827152730_add_options_to_template_input.rb +0 -5
  70. data/db/migrate/20160127134031_add_advanced_to_template_input.rb +0 -11
  71. data/test/functional/api/v2/template_inputs_controller_test.rb +0 -56
  72. data/test/unit/template_input_test.rb +0 -40
@@ -6,7 +6,7 @@ class JobTemplate < ::Template
6
6
  class NonUniqueInputsError < Foreman::Exception
7
7
  end
8
8
 
9
- attr_exportable :job_category, :description_format, :template_inputs,
9
+ attr_exportable :job_category, :description_format,
10
10
  :foreign_input_sets, :provider_type,
11
11
  { :kind => ->(template) { template.class.name.underscore } }.merge(taxonomy_exportable)
12
12
 
@@ -43,15 +43,6 @@ class JobTemplate < ::Template
43
43
  validates :provider_type, :presence => true
44
44
  validates :name, :uniqueness => true
45
45
  validate :provider_type_whitelist
46
- validate :inputs_unchanged_when_locked, :if => ->(template) { (template.locked? || template.locked_changed?) && template.persisted? && !Foreman.in_rake? }
47
-
48
- validate do
49
- begin
50
- validate_unique_inputs!
51
- rescue Foreman::Exception => e
52
- errors.add :base, e.message
53
- end
54
- end
55
46
  validates_associated :foreign_input_sets
56
47
 
57
48
  has_one :effective_user, :class_name => 'JobTemplateEffectiveUser', :foreign_key => 'job_template_id', :dependent => :destroy
@@ -90,6 +81,21 @@ class JobTemplate < ::Template
90
81
  template
91
82
  end
92
83
  end
84
+
85
+ def acceptable_template_input_types
86
+ [ :user, :fact, :variable, :puppet_parameter ]
87
+ end
88
+
89
+ def default_render_scope_class
90
+ ForemanRemoteExecution::Renderer::Scope::Input
91
+ end
92
+ end
93
+
94
+ def validate_unique_inputs!
95
+ duplicated_inputs = template_inputs_with_foreign.group_by(&:name).values.select { |values| values.size > 1 }.map(&:first)
96
+ unless duplicated_inputs.empty?
97
+ raise NonUniqueInputsError.new(N_('Duplicated inputs detected: %{duplicated_inputs}'), :duplicated_inputs => duplicated_inputs.map(&:name))
98
+ end
93
99
  end
94
100
 
95
101
  def metadata
@@ -111,14 +117,6 @@ class JobTemplate < ::Template
111
117
  []
112
118
  end
113
119
 
114
- def dup
115
- dup = super
116
- self.template_inputs.each do |input|
117
- dup.template_inputs.build input.attributes.except('template_id', 'id', 'created_at', 'updated_at')
118
- end
119
- dup
120
- end
121
-
122
120
  def assign_taxonomies
123
121
  if default
124
122
  organizations << Organization.all if SETTINGS[:organizations_enabled]
@@ -147,31 +145,6 @@ class JobTemplate < ::Template
147
145
  end
148
146
  end
149
147
 
150
- def validate_unique_inputs!
151
- duplicated_inputs = template_inputs_with_foreign.group_by(&:name).values.select { |values| values.size > 1 }.map(&:first)
152
- unless duplicated_inputs.empty?
153
- raise NonUniqueInputsError.new(N_('Duplicated inputs detected: %{duplicated_inputs}'), :duplicated_inputs => duplicated_inputs.map(&:name))
154
- end
155
- end
156
-
157
- def sync_inputs(inputs)
158
- inputs ||= []
159
- # Build a hash where keys are input names
160
- inputs = inputs.inject({}) { |h, input| h.update(input['name'] => input) }
161
-
162
- # Sync existing inputs
163
- template_inputs.each do |existing_input|
164
- if inputs.include?(existing_input.name)
165
- existing_input.assign_attributes(inputs.delete(existing_input.name))
166
- else
167
- existing_input.mark_for_destruction
168
- end
169
- end
170
-
171
- # Create new inputs
172
- inputs.each_value { |new_input| template_inputs.build(new_input) }
173
- end
174
-
175
148
  def sync_foreign_input_sets(input_sets)
176
149
  input_sets ||= []
177
150
 
@@ -201,7 +174,7 @@ class JobTemplate < ::Template
201
174
  end
202
175
 
203
176
  def import_custom_data(options)
204
- sync_inputs(@importing_metadata['template_inputs'])
177
+ super
205
178
  sync_foreign_input_sets(@importing_metadata['foreign_input_sets'])
206
179
  sync_feature(@importing_metadata['feature'])
207
180
 
@@ -218,18 +191,16 @@ class JobTemplate < ::Template
218
191
  self.template = self.template.gsub(/<%\#.+?.-?%>\n?/m, '').strip
219
192
  end
220
193
 
194
+ def default_input_values(ignore_keys)
195
+ result = self.template_inputs_with_foreign.select { |ti| !ti.required? && ti.user_template_input? }.map { |ti| ti.name.to_s }
196
+ result -= ignore_keys.map(&:to_s)
197
+ Hash[result.map { |k| [ k, nil ] }]
198
+ end
199
+
221
200
  private
222
201
 
223
202
  # we can't use standard validator, .provider_names output can change but the validator does not reflect it
224
203
  def provider_type_whitelist
225
204
  errors.add :provider_type, :uniq unless RemoteExecutionProvider.provider_names.include?(self.provider_type)
226
205
  end
227
-
228
- def inputs_unchanged_when_locked
229
- inputs_changed = template_inputs.any? { |input| input.changed? || input.new_record? }
230
- foreign_input_sets_changed = foreign_input_sets.any? { |input_set| input_set.changed? || input_set.new_record? }
231
- if inputs_changed || foreign_input_sets_changed
232
- errors.add(:base, _('This template is locked. Please clone it to a new template to customize.'))
233
- end
234
- end
235
206
  end
@@ -5,6 +5,17 @@ class TemplateInvocationInputValue < ApplicationRecord
5
5
 
6
6
  validates :value, :presence => true, :if => proc { |v| v.template_input.required? || v.value.nil? }
7
7
 
8
- validates :value, :inclusion => { :in => proc { |v| v.template_input.options_array } },
8
+ validates :value, :inclusion => { :in => proc { |v| options_for_template_input v.template_input } },
9
9
  :if => proc { |v| v.template_input.input_type == 'user' && v.template_input.options_array.present? }
10
+
11
+ class << self
12
+
13
+ private
14
+
15
+ def options_for_template_input(template_input)
16
+ options = template_input.options_array
17
+ options += [''] unless template_input.required?
18
+ options
19
+ end
20
+ end
10
21
  end
@@ -0,0 +1 @@
1
+ attribute :pubkey => :remote_execution_pubkey
@@ -1,9 +1,3 @@
1
- <script type="text/javascript">
2
- $(function () {
3
- template_change($('select.job_template_selector'));
4
- });
5
- </script>
6
-
7
1
  <%= form_for @composer.job_invocation, :html => {'data-refresh-url' => refresh_job_invocations_path, :id => 'job_invocation_form'} do |f| %>
8
2
 
9
3
  <% unless @composer.rerun_possible? %>
@@ -67,7 +61,7 @@
67
61
  <%= job_template_fields.fields_for :input_values do |input_values_fields| %>
68
62
  <% inputs = job_template.template_inputs_with_foreign.select { |input| input.input_type == 'user' } %>
69
63
  <% inputs.select { |i| i.basic? }.each do |input| %>
70
- <%= render :partial => 'template_inputs/invocation_form', :locals => { :input_values_fields => input_values_fields, :composer => @composer, :job_template => job_template, :input => input } %>
64
+ <%= render :partial => 'template_inputs/invocation_form', :locals => { :input_values_fields => input_values_fields, :composer => @composer, :job_template => job_template, :input => input, :onchange => "regenerate_description(this);" } %>
71
65
  <% end %>
72
66
 
73
67
  <%= advanced_switch_f _('Display advanced fields'), _('Hide advanced fields') %>
@@ -18,13 +18,6 @@
18
18
  <%= number_f f, :execution_timeout_interval, :disabled => @template.locked?, :label => _('Timeout to kill') %>
19
19
 
20
20
  <div class="children_fields">
21
- <%= new_child_fields_template(f, :template_inputs, { :partial => "template_inputs/form" }) %>
22
- <%= f.fields_for :template_inputs do |ff| %>
23
- <div class="template_input_form fields">
24
- <%= render 'template_inputs/form', :f => ff %>
25
- </div>
26
- <% end %>
27
- <%= add_child_link '+ ' + _("Add Input"), :template_inputs, { :title => _('add a input for this template')} unless @template.locked? %>
28
21
  <%= new_child_fields_template(f, :foreign_input_sets, { :partial => "template_inputs/foreign_input_set_form" }) %>
29
22
  <%= f.fields_for :foreign_input_sets do |ff| %>
30
23
  <div class="template_input_form fields">
@@ -1,7 +1,7 @@
1
- <% output_line_set['output'].strip.split("\n").each do |line| %>
1
+ <% output_line_set['output'].gsub("\r\n", "\n").split("\n", -1).each do |line| %>
2
2
  <%= content_tag :div, :class => 'line ' + output_line_set['output_type'], :data => { :timestamp => output_line_set['timestamp'] } do %>
3
3
 
4
4
  <%= content_tag(:span, (@line_counter += 1).to_s.rjust(4).gsub(' ', '&nbsp;').html_safe + ':', :class => 'counter', :title => (output_line_set['timestamp'] && Time.at(output_line_set['timestamp']))) %>
5
- <%= content_tag(:div, (line.empty? ? '&nbsp;' : colorize_line(line)).html_safe, :class => 'content') %>
5
+ <%= content_tag(:div, colorize_line(line.gsub(JobInvocationOutputHelper::COLOR_PATTERN, '').empty? ? "#{line}\n" : line).html_safe, :class => 'content') %>
6
6
  <% end %>
7
7
  <% end %>
@@ -0,0 +1,67 @@
1
+ <%#
2
+ kind: job_template
3
+ name: Module Action - SSH Default
4
+ model: JobTemplate
5
+ job_category: Modules
6
+ description_format: "Module %{action} %{module_spec}"
7
+ provider_type: SSH
8
+ template_inputs:
9
+ - name: pre_script
10
+ description: A script to run prior to the module action
11
+ input_type: user
12
+ required: false
13
+ advanced: true
14
+ - name: action
15
+ description: 'The module action enable, install etc.'
16
+ input_type: user
17
+ required: true
18
+ options: "\nlist\ninfo\nenable\ndisable\ninstall\nupdate\nremove\nprovides\nlock\nunlock\nprofile\nstreams"
19
+ - name: module_spec
20
+ description: The module specification. module:stream/profile
21
+ input_type: user
22
+ required: false
23
+ - name: options
24
+ description: Other optional flags for the action
25
+ input_type: user
26
+ required: false
27
+ - name: post_script
28
+ description: A script to run after the module action
29
+ input_type: user
30
+ required: false
31
+ advanced: true
32
+ %>
33
+
34
+ <%
35
+ supported_families = ['Redhat']
36
+ render_error(N_('Unsupported or no operating system found for this host.')) unless @host.operatingsystem && supported_families.include?(@host.operatingsystem.family)
37
+ -%>
38
+ #!/bin/bash
39
+
40
+ # Helper function that exits with a particular message and code.
41
+ #
42
+ # Usage:
43
+ # exit_with_message "Could not do a thing" 2
44
+ #
45
+ function exit_with_message {
46
+ echo "${1}, exiting..."
47
+ exit $2
48
+ }
49
+
50
+ <% unless input("pre_script").blank? -%>
51
+ # Pre Script
52
+ <%= input("pre_script") %>
53
+ RETVAL=$?
54
+ [ $RETVAL -eq 0 ] || exit_with_message "Pre script failed" $RETVAL
55
+ <% end -%>
56
+
57
+ # Action
58
+ dnf -y module <%= input("action") %> <%= input("module_spec") %> <%= input("options") %>
59
+ RETVAL=$?
60
+ [ $RETVAL -eq 0 ] || exit_with_message " module action failed" $RETVAL
61
+
62
+ <% unless input("post_script").blank? -%>
63
+ # Post Script
64
+ <%= input("post_script") %>
65
+ RETVAL=$?
66
+ [ $RETVAL -eq 0 ] || exit_with_message "Post script failed" $RETVAL
67
+ <% end -%>
@@ -1,6 +1,7 @@
1
1
  <%#
2
2
  kind: job_template
3
3
  name: Package Action - SSH Default
4
+ model: JobTemplate
4
5
  job_category: Packages
5
6
  description_format: "%{action} package(s) %{package}"
6
7
  provider_type: SSH
@@ -27,16 +28,26 @@ template_inputs:
27
28
  %>
28
29
 
29
30
  <%
30
- supported_families = ['Redhat', 'Debian']
31
+ supported_families = ['Redhat', 'Debian', 'Suse']
31
32
  render_error(N_('Unsupported or no operating system found for this host.')) unless @host.operatingsystem && supported_families.include?(@host.operatingsystem.family)
32
- %>
33
+ action = input("action")
34
+
35
+ if @host.operatingsystem.family == 'Redhat'
36
+ package_manager = 'yum'
37
+ elsif @host.operatingsystem.family == 'Debian'
38
+ package_manager = 'apt'
39
+ elsif @host.operatingsystem.family == 'Suse'
40
+ package_manager = 'zypper'
41
+ end
42
+ -%>
43
+ #!/bin/bash
33
44
 
34
45
  # Helper function that exits with a particular message and code.
35
46
  #
36
47
  # Usage:
37
48
  # exit_with_message "Could not do a thing" 2
38
49
  #
39
- function exit_with_message() {
50
+ exit_with_message () {
40
51
  echo "${1}, exiting..."
41
52
  exit $2
42
53
  }
@@ -49,10 +60,31 @@ function exit_with_message() {
49
60
  <% end -%>
50
61
 
51
62
  # Action
52
- <% if @host.operatingsystem.family == 'Redhat' -%>
53
- yum -y <%= input("action") %> <%= input("package") %>
54
- <% elsif @host.operatingsystem.family == 'Debian' -%>
55
- apt-get -y <%= input("action") %> <%= input("package") %>
63
+ <% if package_manager == 'yum' -%>
64
+ yum -y <%= action %> <%= input("package") %>
65
+ <% elsif package_manager == 'apt' -%>
66
+ <%-
67
+ action = 'install' if action == 'group install'
68
+ action = 'remove' if action == 'group remove'
69
+ if action == 'group update' || action == 'update'
70
+ if input('package').blank?
71
+ action = 'upgrade'
72
+ else
73
+ action = '--only-upgrade install'
74
+ end
75
+ end
76
+ -%>
77
+ apt-get -y update
78
+ apt-get -y <%= action %> <%= input("package") %>
79
+ <% elsif package_manager == 'zypper' -%>
80
+ <%-
81
+ if action == "group install"
82
+ action = "install -t pattern"
83
+ elsif action == "group remove"
84
+ action = "remove -t pattern"
85
+ end
86
+ -%>
87
+ zypper -n <%= action %> <%= input("package") %>
56
88
  <% end -%>
57
89
  RETVAL=$?
58
90
  [ $RETVAL -eq 0 ] || exit_with_message "Package action failed" $RETVAL
@@ -1,6 +1,7 @@
1
1
  <%#
2
2
  kind: job_template
3
3
  name: Power Action - SSH Default
4
+ model: JobTemplate
4
5
  job_category: Power
5
6
  description_format: '%{action} host'
6
7
  provider_type: SSH
@@ -15,7 +16,7 @@ template_inputs:
15
16
  echo <%= input('action') %> host && sleep 3
16
17
  <%= case input('action')
17
18
  when 'restart'
18
- 'reboot'
19
+ 'shutdown -r +1'
19
20
  else
20
21
  'shutdown -h now'
21
22
  end %>
@@ -1,6 +1,7 @@
1
1
  <%#
2
2
  kind: job_template
3
3
  name: Puppet Run Once - SSH Default
4
+ model: JobTemplate
4
5
  job_category: Puppet
5
6
  description_format: 'Run Puppet once with "%{puppet_options}"'
6
7
  provider_type: SSH
@@ -1,6 +1,7 @@
1
1
  <%#
2
2
  kind: job_template
3
3
  name: Run Command - SSH Default
4
+ model: JobTemplate
4
5
  job_category: Commands
5
6
  description_format: "Run %{command}"
6
7
  provider_type: SSH
@@ -1,6 +1,7 @@
1
1
  <%#
2
2
  kind: job_template
3
3
  name: Service Action - SSH Default
4
+ model: JobTemplate
4
5
  job_category: Services
5
6
  description_format: '%{action} service %{service}'
6
7
  provider_type: SSH
@@ -8,7 +9,7 @@ template_inputs:
8
9
  - name: action
9
10
  description: Action to perform on the service
10
11
  input_type: user
11
- options: "restart\nstart\nstop\nstatus"
12
+ options: "restart\nstart\nstop\nstatus\nreload\nenable\ndisable"
12
13
  required: true
13
14
  - name: service
14
15
  description: Name of the service
@@ -18,5 +19,12 @@ template_inputs:
18
19
  <% if @host.operatingsystem.family == "Redhat" && @host.operatingsystem.major.to_i > 6 %>
19
20
  systemctl <%= input("action") %> <%= input("service") %>
20
21
  <% else %>
22
+ <% case input("action")
23
+ when 'enable' %>
24
+ chkconfig --add <%= input("service") %>
25
+ <% when 'disable' %>
26
+ chkconfig --del <%= input("service") %>
27
+ <% else %>
21
28
  service <%= input("service") %> <%= input("action") %>
29
+ <% end %>
22
30
  <% end -%>
data/config/routes.rb CHANGED
@@ -75,7 +75,6 @@ Rails.application.routes.draw do
75
75
  end
76
76
 
77
77
  resources :templates, :only => :none do
78
- resources :template_inputs, :only => [:index, :show, :create, :destroy, :update]
79
78
  resources :foreign_input_sets, :only => [:index, :show, :create, :destroy, :update]
80
79
  end
81
80
 
@@ -119,6 +119,8 @@ module ForemanRemoteExecution
119
119
  parameter_filter Nic::Interface do |ctx|
120
120
  ctx.permit :execution
121
121
  end
122
+
123
+ extend_rabl_template 'api/v2/smart_proxies/main', 'api/v2/smart_proxies/pubkey'
122
124
  end
123
125
  end
124
126
 
@@ -150,6 +152,7 @@ module ForemanRemoteExecution
150
152
  # ProvisioningTemplate.reflect_on_association :template_inputs # => nil
151
153
  require_dependency 'job_template'
152
154
  (Template.descendants + [Template]).each { |klass| klass.send(:include, ForemanRemoteExecution::TemplateExtensions) }
155
+ Template.send(:prepend, ForemanRemoteExecution::TemplateOverrides)
153
156
 
154
157
  (Taxonomy.descendants + [Taxonomy]).each { |klass| klass.send(:include, ForemanRemoteExecution::TaxonomyExtensions) }
155
158
 
@@ -165,6 +168,7 @@ module ForemanRemoteExecution
165
168
  Bookmark.send(:include, ForemanRemoteExecution::BookmarkExtensions)
166
169
  HostsHelper.send(:prepend, ForemanRemoteExecution::HostsHelperExtensions)
167
170
  ProvisioningTemplatesHelper.send(:prepend, ForemanRemoteExecution::JobTemplatesExtensions)
171
+ TemplateInput.send(:include, ForemanRemoteExecution::TemplateInputExtensions)
168
172
 
169
173
  SmartProxy.send(:prepend, ForemanRemoteExecution::SmartProxyExtensions)
170
174
  Subnet.send(:include, ForemanRemoteExecution::SubnetExtensions)
@@ -1,3 +1,3 @@
1
1
  module ForemanRemoteExecution
2
- VERSION = '1.6.3'.freeze
2
+ VERSION = '1.6.4'.freeze
3
3
  end
@@ -41,9 +41,6 @@ msgstr "Kommagetrennte Liste von Eingabenamen, die in die Fremdvorlage einzubezi
41
41
  msgid "A job '%{subject}' has finished successfully"
42
42
  msgstr ""
43
43
 
44
- msgid "A list of options the user can select from. If not provided, the user will be given a free-form field"
45
- msgstr "Eine Liste von Optionen, aus der der Benutzer auswählen kann. Wenn keine Liste bereitgestellt ist, wird dem Benutzer ein Freitext-Feld zur Verfügung gestellt"
46
-
47
44
  msgid "A plugin bringing remote execution to the Foreman, completing the config management functionality with remote management functionality."
48
45
  msgstr "Ein Plugin, das Foreman entfernte Ausführung bietet und die Konfig-Verwaltungsfunktion mit einer entfernten Verwaltungsfunktion ergänzt."
49
46
 
@@ -62,9 +59,6 @@ msgstr "Aktionen"
62
59
  msgid "Add Foreign Input Set"
63
60
  msgstr "Fremdeingabe-Satz hinzufügen"
64
61
 
65
- msgid "Add Input"
66
- msgstr "Eingabe hinzufügen"
67
-
68
62
  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."
69
63
  msgstr ""
70
64
 
@@ -128,6 +122,9 @@ msgstr ""
128
122
  msgid "Could not render the preview because no host matches the search query."
129
123
  msgstr ""
130
124
 
125
+ msgid "Could not rerun job %{id} because its template could not be found"
126
+ msgstr ""
127
+
131
128
  msgid "Could not use any proxy. Consider configuring %{global_proxy}, %{fallback_proxy} or %{no_proxy} in settings"
132
129
  msgstr ""
133
130
 
@@ -146,9 +143,6 @@ msgstr "Job-Vorlage erstellen"
146
143
  msgid "Create a recurring job"
147
144
  msgstr "Wiederholten Job erstellen"
148
145
 
149
- msgid "Create a template input"
150
- msgstr "Vorlageneingabe erstellen"
151
-
152
146
  msgid "Default SSH key passphrase"
153
147
  msgstr ""
154
148
 
@@ -173,9 +167,6 @@ msgstr "Fremdeingabe-Satz löschen"
173
167
  msgid "Delete a job template"
174
168
  msgstr "Job-Vorlage löschen"
175
169
 
176
- msgid "Delete a template input"
177
- msgstr "Vorlageneingabe löschen"
178
-
179
170
  msgid "Description"
180
171
  msgstr "Beschreibung"
181
172
 
@@ -239,12 +230,6 @@ msgstr "Exit-Status: %s"
239
230
  msgid "Export a job template to ERB"
240
231
  msgstr "Job-Vorlage nach ERB exportieren"
241
232
 
242
- msgid "Fact name, used when input type is fact"
243
- msgstr "Faktenname wird benutzt, wenn Eingabetyp Fakt ist"
244
-
245
- msgid "Fact value"
246
- msgstr "Faktenwert"
247
-
248
233
  msgid "Failed"
249
234
  msgstr "Fehlgeschlagen"
250
235
 
@@ -311,24 +296,9 @@ msgstr "Gibt an, dass die Aktion abgebrochen werden soll, wenn sie nicht vor die
311
296
  msgid "Input"
312
297
  msgstr "Eingabe"
313
298
 
314
- msgid "Input description"
315
- msgstr "Eingabebeschreibung"
316
-
317
- msgid "Input is advanced"
318
- msgstr "Eingabe ist erweitert"
319
-
320
- msgid "Input is required"
321
- msgstr "Eingabe ist erforderlich"
322
-
323
- msgid "Input name"
324
- msgstr "Eingabename"
325
-
326
299
  msgid "Input set description"
327
300
  msgstr "Beschreibung des Eingabe-Satzes"
328
301
 
329
- msgid "Input type"
330
- msgstr "Eingabetyp"
331
-
332
302
  msgid "Inputs to use"
333
303
  msgstr "Zu verwendende Eingaben"
334
304
 
@@ -428,9 +398,6 @@ msgstr "Job-Vorlagen pro Organisation auflisten"
428
398
  msgid "List remote execution features"
429
399
  msgstr "Entfernte Ausführungsfunktionen auflisten"
430
400
 
431
- msgid "List template inputs"
432
- msgstr "Vorlageneingabe auflisten"
433
-
434
401
  msgid "List template invocations belonging to job invocation"
435
402
  msgstr ""
436
403
 
@@ -514,15 +481,6 @@ msgstr "Anbieter und Vorlagen"
514
481
  msgid "Proxies"
515
482
  msgstr "Proxys"
516
483
 
517
- msgid "Puppet class name, used when input type is puppet_parameter"
518
- msgstr "Name der Puppet-Klasse wird benutzt, wenn Eingabetyp Puppet-Parameter ist"
519
-
520
- msgid "Puppet parameter"
521
- msgstr "Puppet-Parameter"
522
-
523
- msgid "Puppet parameter name, used when input type is puppet_parameter"
524
- msgstr "Puppet-Parameter-Name wird benutzt, wenn Eingabetyp Puppet-Parameter ist"
525
-
526
484
  msgid "Recurring logic"
527
485
  msgstr "Wiederholungslogik"
528
486
 
@@ -640,9 +598,6 @@ msgstr "ERB-Datei zum Hochladen auswählen, um Job-Vorlage zu importieren. Die V
640
598
  msgid "Select as many remote execution proxies as applicable for this subnet. When multiple proxies with the same provider are added, actions will be load balanced among them."
641
599
  msgstr "Wählen Sie so viele Proxys für entfernte Ausführung aus, wie es für dieses Subnetz zutreffend ist. Wenn mehrere Proxys mit demselben Provider hinzugefügt werden, dann wird die Auslastung unter diesen ausgeglichen."
642
600
 
643
- msgid "Selectable values for user inputs"
644
- msgstr "Auswählbare Werte für Benutzereingaben"
645
-
646
601
  msgid "Set to distribute over"
647
602
  msgstr ""
648
603
 
@@ -661,9 +616,6 @@ msgstr "Details der Job-Vorlage anzeigen"
661
616
  msgid "Show remote execution feature"
662
617
  msgstr "Entfernte Ausführungsfunktionen anzeigen"
663
618
 
664
- msgid "Show template input details"
665
- msgstr "Details der Vorlageneingabe anzeigen"
666
-
667
619
  msgid "Snippet"
668
620
  msgstr "Snippet"
669
621
 
@@ -712,9 +664,6 @@ msgstr "Vorlage ERB"
712
664
  msgid "Template Invocation for %s"
713
665
  msgstr ""
714
666
 
715
- msgid "Template input"
716
- msgstr "Vorlageneingabe"
717
-
718
667
  msgid "Template name"
719
668
  msgstr "Vorlagenname"
720
669
 
@@ -849,9 +798,6 @@ msgstr "Fremdeingabe-Satz aktualisieren"
849
798
  msgid "Update a job template"
850
799
  msgstr "Job-Vorlage aktualisieren"
851
800
 
852
- msgid "Update a template input"
853
- msgstr "Vorlageneingabe aktualisieren"
854
-
855
801
  msgid "Use default description template"
856
802
  msgstr "Standardbeschreibungsvorlage verwenden"
857
803
 
@@ -873,15 +819,6 @@ msgstr "Benutzereingabe"
873
819
  msgid "Value"
874
820
  msgstr "Wert"
875
821
 
876
- msgid "Value for required input '%s' was not specified"
877
- msgstr "Wert für erforderliche Eingabe '%s' wurde nicht angegeben"
878
-
879
- msgid "Variable"
880
- msgstr "Variable"
881
-
882
- msgid "Variable name, used when input type is variable"
883
- msgstr "Variablenname wird benutzt, wenn Eingabetyp Variable ist"
884
-
885
822
  msgid "What command should be used to switch to the effective user. One of %s"
886
823
  msgstr "Welcher Befehl für den Wechsel zum effektiven Benutzer verwendet werden soll. Einer von %s"
887
824
 
@@ -920,9 +857,6 @@ msgstr ""
920
857
  msgid "You are not allowed to see the currently assigned template. Saving the form now would unassign the template."
921
858
  msgstr "Sie haben nicht die Genehmigung, die aktuell zugewiesenen Vorlagen einzusehen. Wenn Sie das Formular jetzt speichern, wird die Zuweisung der Vorlage aufgehoben."
922
859
 
923
- msgid "add a input for this template"
924
- msgstr "Eingabe für diese Vorlage hinzufügen"
925
-
926
860
  msgid "add an input set for this template to reference a different template inputs"
927
861
  msgstr "Eingabe-Satz für diese Vorlage hinzufügen, um auf andere Vorlage-Eingaben zu verweisen"
928
862
 
@@ -965,9 +899,6 @@ msgstr "in der Warteschlange"
965
899
  msgid "queued to start executing in %{time}"
966
900
  msgstr ""
967
901
 
968
- msgid "remove template input"
969
- msgstr "Vorlageneingabe entfernen"
970
-
971
902
  msgid "remove template input set"
972
903
  msgstr "Vorlageneingabe-Satz entfernen"
973
904