hammer_cli_foreman_remote_execution 0.0.6 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +5 -4
  3. data/.tx/config +8 -0
  4. data/hammer_cli_foreman_remote_execution.gemspec +3 -3
  5. data/lib/hammer_cli_foreman_remote_execution.rb +2 -0
  6. data/lib/hammer_cli_foreman_remote_execution/interface_extensions.rb +30 -0
  7. data/lib/hammer_cli_foreman_remote_execution/job_invocation.rb +122 -25
  8. data/lib/hammer_cli_foreman_remote_execution/job_template.rb +1 -0
  9. data/lib/hammer_cli_foreman_remote_execution/subnet_extensions.rb +16 -0
  10. data/lib/hammer_cli_foreman_remote_execution/template_input.rb +10 -2
  11. data/lib/hammer_cli_foreman_remote_execution/version.rb +1 -1
  12. data/locale/README.md +2 -2
  13. data/locale/de/hammer-cli-foreman-remote-execution.po +262 -0
  14. data/locale/en/hammer-cli-foreman-remote-execution.po +49 -1
  15. data/locale/es/hammer-cli-foreman-remote-execution.po +262 -0
  16. data/locale/fr/hammer-cli-foreman-remote-execution.po +262 -0
  17. data/locale/hammer-cli-foreman-remote-execution.pot +105 -33
  18. data/locale/it/hammer-cli-foreman-remote-execution.po +261 -0
  19. data/locale/ja/hammer-cli-foreman-remote-execution.po +262 -0
  20. data/locale/ko/hammer-cli-foreman-remote-execution.po +262 -0
  21. data/locale/pt_BR/hammer-cli-foreman-remote-execution.po +263 -0
  22. data/locale/ru/hammer-cli-foreman-remote-execution.po +264 -0
  23. data/locale/zh_CN/hammer-cli-foreman-remote-execution.po +263 -0
  24. data/locale/zh_TW/hammer-cli-foreman-remote-execution.po +263 -0
  25. data/test/data/1.16/foreman_api.json +1 -0
  26. data/test/data/1.17/foreman_api.json +1 -0
  27. data/test/unit/foreign_input_set_test.rb +1 -1
  28. data/test/unit/job_invocation_test.rb +27 -5
  29. data/test/unit/job_template_test.rb +1 -1
  30. data/test/unit/remote_execution_feature_test.rb +1 -1
  31. data/test/unit/template_input_test.rb +9 -1
  32. metadata +27 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: f879c32ae742ceb90ab61bbc02322b2a44416df7
4
- data.tar.gz: a66b9ac45d9714ebc8350d7ec51074d6f2eb860f
2
+ SHA256:
3
+ metadata.gz: a8cd0e41c73966cfa7089868144153770421ab767e7c85e7e4a1ea904c95bd67
4
+ data.tar.gz: 6e9c15d1174bbf9037c6548c814c88bd56dbef7eb338f0729302e233b9cc9572
5
5
  SHA512:
6
- metadata.gz: 81171fd1db3da7eec1d8e25ebcf59df15dca78981a74f09decb181b8fdd500f844a07a84f8cfe2ec0b1ab7612643dadedabaebb9ec9dfd81224ae5bb007f8052
7
- data.tar.gz: c9153fc2750b9f9653e9655370f2547dc8880fb5c5746be9914ab9764091f3edd6f7f4172b302c9007ba384595827fa5605d7975ef71d21090ba41d518370b31
6
+ metadata.gz: f4bf60dc1d75ff17914e15257faafaefbb6aceb6b0d3e5d550bee2f915747553fc769d9deab994d38c31cb4639131efc2164a6a09686b9128459389a4d832dde
7
+ data.tar.gz: 523f21e8d58871c5dbf43b73841117e570332fbe665d7eec45d261076637692dc5bbbeb06a25855c6ff5e5aca957c16f352f983c59c4af70279c9d2fd9004c38
@@ -1,8 +1,9 @@
1
1
  ---
2
2
  language: ruby
3
3
  rvm:
4
- - 2.0.0
5
- - 2.1.0
6
- - 2.2.0
7
- - 2.3.0
4
+ - 2.4.0
5
+ - 2.5.0
6
+ - 2.6.0
8
7
  sudo: false
8
+ before_install:
9
+ - gem update bundler
@@ -0,0 +1,8 @@
1
+ [main]
2
+ host = https://www.transifex.com
3
+
4
+ [foreman.hammer-cli-foreman-remote-execution]
5
+ file_filter = locale/<lang>/hammer-cli-foreman-remote-execution.edit.po
6
+ source_file = locale/hammer-cli-foreman-remote-exectution.pot
7
+ source_lang = en
8
+ type = PO
@@ -6,8 +6,8 @@ Gem::Specification.new do |s|
6
6
  s.platform = Gem::Platform::RUBY
7
7
  s.authors = ['Foreman Remote Execution team']
8
8
  s.email = ['foreman-dev@googlegroups.com']
9
- s.homepage = 'http://github.com/theforeman/hammer_cli_foreman_remote_execution'
10
- s.license = 'GPL v3+'
9
+ s.homepage = 'https://github.com/theforeman/hammer_cli_foreman_remote_execution'
10
+ s.license = 'GPL-3.0-or-later'
11
11
 
12
12
  s.summary = 'CLI for the Foreman remote execution plugin'
13
13
  s.description = 'CLI for the Foreman remote execution plugin'
@@ -16,6 +16,6 @@ Gem::Specification.new do |s|
16
16
  s.test_files = `git ls-files test`.split("\n")
17
17
  s.extra_rdoc_files = `git ls-files doc`.split("\n") + Dir['README*', 'LICENSE']
18
18
 
19
- s.add_dependency 'hammer_cli_foreman', '>= 0.1.3', '< 1.0.0'
19
+ s.add_dependency 'hammer_cli_foreman', '>= 0.1.3', '< 3.0.0'
20
20
  s.add_dependency 'hammer_cli_foreman_tasks', '~> 0.0.3'
21
21
  end
@@ -9,6 +9,8 @@ module HammerCLIForemanRemoteExecution
9
9
  require 'hammer_cli_foreman_remote_execution/template_input'
10
10
  require 'hammer_cli_foreman_remote_execution/foreign_input_set'
11
11
  require 'hammer_cli_foreman_remote_execution/remote_execution_feature'
12
+ require 'hammer_cli_foreman_remote_execution/interface_extensions'
13
+ require 'hammer_cli_foreman_remote_execution/subnet_extensions'
12
14
 
13
15
  def self.exception_handler_class
14
16
  HammerCLIForeman::ExceptionHandler
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'hammer_cli_foreman/interface'
4
+
5
+ module HammerCLIForemanRemoteExecution
6
+ class InterfaceExtensionsInfo < ::HammerCLI::CommandExtensions
7
+ output do |definition|
8
+ definition.append do
9
+ field :execution, _('Execution'), Fields::Boolean
10
+ end
11
+ end
12
+ end
13
+
14
+ module InterfaceExtensionsList
15
+ def format_type(nic)
16
+ type = super(nic)
17
+ if nic['execution']
18
+ if nic['primary'] || nic['provision']
19
+ type[-1] = ', '+_('execution') +')'
20
+ else
21
+ type += ' ('+_('execution') +')'
22
+ end
23
+ end
24
+ type
25
+ end
26
+ end
27
+
28
+ ::HammerCLIForeman::Interface.singleton_class.prepend InterfaceExtensionsList
29
+ ::HammerCLIForeman::Interface::InfoCommand.extend_with(InterfaceExtensionsInfo.new)
30
+ end
@@ -2,17 +2,31 @@ module HammerCLIForemanRemoteExecution
2
2
  class JobInvocation < HammerCLIForeman::Command
3
3
  resource :job_invocations
4
4
 
5
- class ListCommand < HammerCLIForeman::ListCommand
6
- output do
7
- field :id, _('ID')
8
- field :description, _('Description')
9
- field :status_label, _('Status')
10
- field :succeeded, _('Success')
11
- field :failed, _('Failed')
12
- field :pending, _('Pending')
13
- field :total, _('Total')
14
- field :start_at, _('Start')
5
+ module WithoutNameOption
6
+ def create_option_builder
7
+ HammerCLI::Apipie::OptionBuilder.new(resource, resource.action(action), :require_options => false)
15
8
  end
9
+ end
10
+
11
+ module BaseOutput
12
+ def self.included(base)
13
+ base.output do
14
+ field :id, _('ID')
15
+ field :description, _('Description')
16
+ field :status_label, _('Status')
17
+ field :succeeded, _('Success')
18
+ field :failed, _('Failed')
19
+ field :pending, _('Pending')
20
+ field :total, _('Total')
21
+ field :start_at, _('Start')
22
+ field :randomized_ordering, _('Randomized ordering')
23
+ field :inputs, _('Inputs'), nil, :hide_blank => true
24
+ end
25
+ end
26
+ end
27
+
28
+ class ListCommand < HammerCLIForeman::ListCommand
29
+ include BaseOutput
16
30
 
17
31
  def extend_data(invocation)
18
32
  JobInvocation.extend_data(invocation)
@@ -22,24 +36,57 @@ module HammerCLIForemanRemoteExecution
22
36
  end
23
37
 
24
38
  class InfoCommand < HammerCLIForeman::InfoCommand
25
- output ListCommand.output_definition do
26
- field :job_category, _('Job Category')
27
- field :mode, _('Mode')
28
- field :cron_line, _('Cron line')
29
- field :recurring_logic_id, _('Recurring logic ID')
30
- field :hosts, _('Hosts')
39
+ extend WithoutNameOption
40
+ include BaseOutput
41
+ option '--show-inputs', :flag, _('Show the complete input of the job')
42
+ option '--show-host-status', :flag, _('Show job status for the hosts')
43
+
44
+ extend_output_definition do |definition|
45
+ definition.insert(:before, :total) do
46
+ field :missing, _('Missing')
47
+ end
48
+ definition.append do
49
+ field :job_category, _('Job Category')
50
+ field :mode, _('Mode')
51
+ field :cron_line, _('Cron line')
52
+ field :recurring_logic_id, _('Recurring logic ID')
53
+ field :hosts, _('Hosts')
54
+ end
31
55
  end
32
56
 
33
- def extend_data(invocation)
34
- JobInvocation.extend_data(invocation)
57
+ def adapter
58
+ if option_id
59
+ :yaml
60
+ else
61
+ :base
62
+ end
35
63
  end
36
64
 
37
- def self.create_option_builder
38
- HammerCLI::Apipie::OptionBuilder.new(resource, resource.action(action), :require_options => false)
65
+ def extend_data(invocation)
66
+ if option_show_inputs?
67
+ invocation['template_invocations']&.each do |template|
68
+ input_values = template['template_invocation_input_values']
69
+ values_for_host = {}
70
+ input_values&.each do |input_value|
71
+ values_for_host[input_value['template_input_name']] = input_value['value']
72
+ end
73
+ hosts = invocation.dig('targeting', 'hosts')
74
+ host_index = hosts&.index { |h| h['id'] == template['host_id'] }
75
+ invocation['targeting']['hosts'][host_index][:inputs] = values_for_host if host_index
76
+ end
77
+ end
78
+ JobInvocation.extend_data(invocation)
39
79
  end
40
80
 
41
81
  build_options do |o|
42
82
  o.expand(:none)
83
+ o.without(:host_status)
84
+ end
85
+
86
+ def request_params
87
+ params = super
88
+ params[:host_status] = true if option_show_host_status?
89
+ params
43
90
  end
44
91
  end
45
92
 
@@ -58,17 +105,39 @@ module HammerCLIForemanRemoteExecution
58
105
  puts line['output']
59
106
  since = line['timestamp']
60
107
  end
108
+ since
109
+ end
61
110
 
62
- if output['refresh'] && !option_async?
63
- sleep 1
64
- print_data(resource.call(action, request_params.merge(:since => since), request_headers, request_options))
111
+ def execute
112
+ data = get_output
113
+ if data['delayed']
114
+ puts _('The job is scheduled to start at %{timestamp}') % { :timestamp => data['start_at'] }
115
+ return HammerCLI::EX_OK if option_async?
65
116
  end
117
+ since = print_data(data)
118
+
119
+ output_loop(data, since)
120
+ return HammerCLI::EX_OK
66
121
  end
67
122
 
68
123
  build_options do |o|
69
124
  o.expand(:all).except(:job_invocations)
70
125
  o.without(:since)
71
126
  end
127
+
128
+ private
129
+
130
+ def output_loop(data, since = nil)
131
+ while data['refresh'] && !option_async? do
132
+ sleep 1
133
+ data = get_output(since)
134
+ since = print_data(data)
135
+ end
136
+ end
137
+
138
+ def get_output(since = nil)
139
+ resource.call(action, request_params.merge(:since => since), request_headers, request_options)
140
+ end
72
141
  end
73
142
 
74
143
  class CreateCommand < HammerCLIForeman::CreateCommand
@@ -135,9 +204,37 @@ module HammerCLIForemanRemoteExecution
135
204
  end
136
205
  end
137
206
 
207
+ class CancelCommand < HammerCLIForeman::Command
208
+ extend WithoutNameOption
209
+
210
+ action :cancel
211
+ command_name 'cancel'
212
+ desc _('Cancel the job')
213
+ success_message _('Job invocation %{id} cancelled')
214
+ failure_message _('Could not cancel the job invocation')
215
+
216
+ build_options { |o| o.expand(:none) }
217
+ end
218
+
219
+ class RerunCommand < HammerCLIForeman::CreateCommand
220
+ extend WithoutNameOption
221
+
222
+ action :rerun
223
+ command_name 'rerun'
224
+ desc _('Rerun the job')
225
+ success_message _('Job invocation was rerun as %{id}')
226
+
227
+ build_options { |o| o.expand(:none) }
228
+ end
229
+
138
230
  def self.extend_data(invocation)
139
- if invocation['targeting'] && invocation['targeting']['hosts']
140
- invocation['hosts'] = "\n" + invocation['targeting']['hosts'].map { |host| " - #{host['name']}" }.join("\n")
231
+ if (targeting = invocation['targeting']) && invocation['targeting']['hosts']
232
+ invocation['randomized_ordering'] = targeting['randomized_ordering']
233
+
234
+ hosts = targeting['hosts'].map do |host|
235
+ { 'Name' => host['name'], 'Job status' => host['job_status'], 'Inputs' => host[:inputs] }.compact
236
+ end
237
+ invocation['hosts'] = hosts
141
238
  end
142
239
 
143
240
  if invocation['recurrence']
@@ -20,6 +20,7 @@ module HammerCLIForemanRemoteExecution
20
20
 
21
21
  class InfoCommand < HammerCLIForeman::InfoCommand
22
22
  output ListCommand.output_definition do
23
+ field :description, _('Description'), Fields::Text
23
24
  field :template_inputs, _('Inputs')
24
25
  HammerCLIForeman::References.taxonomies(self)
25
26
  end
@@ -0,0 +1,16 @@
1
+ require 'hammer_cli_foreman/subnet'
2
+
3
+ module HammerCLIForemanRemoteExecution
4
+ class SubnetExtensions < ::HammerCLI::CommandExtensions
5
+ output do |definition|
6
+ definition.insert(:after, _("Smart Proxies"))do
7
+ collection :remote_execution_proxies, _('Remote execution proxies'), :numbered => false do
8
+ field :id, _('Id')
9
+ field :name, _('Name')
10
+ end
11
+ end
12
+ end
13
+ end
14
+
15
+ ::HammerCLIForeman::Subnet::InfoCommand.extend_with(SubnetExtensions.new)
16
+ end
@@ -23,20 +23,28 @@ module HammerCLIForemanRemoteExecution
23
23
  field :variable_name, _('Variable name')
24
24
  field :puppet_parameter_name, _('Puppet parameter name')
25
25
  field :options, _('Options'), Fields::List, :width => 25, :hide_blank => true
26
+ field :default, _('Default value')
26
27
  end
27
28
 
28
29
  build_options
29
30
  end
30
31
 
31
32
  class CreateCommand < HammerCLIForeman::CreateCommand
32
- success_message _('Template input created')
33
+ success_message _('Template input created.')
33
34
  failure_message _('Could not create the template input')
34
35
 
35
36
  build_options
36
37
  end
37
38
 
39
+ class UpdateCommand < HammerCLIForeman::UpdateCommand
40
+ success_message _('Template input updated.')
41
+ failure_message _('Could not update the template input')
42
+
43
+ build_options
44
+ end
45
+
38
46
  class DeleteCommand < HammerCLIForeman::DeleteCommand
39
- success_message _('Template input deleted')
47
+ success_message _('Template input deleted.')
40
48
  failure_message _('Could not delete the template input')
41
49
 
42
50
  build_options
@@ -1,5 +1,5 @@
1
1
  module HammerCLIForemanRemoteExecution
2
2
  def self.version
3
- @version ||= Gem::Version.new '0.0.6'
3
+ @version ||= Gem::Version.new '0.2.1'
4
4
  end
5
5
  end
@@ -1,11 +1,11 @@
1
1
  Updating the translations
2
2
  -------------------------
3
3
 
4
- 1. Check if there are any new languages with progress more than 50% on [transifex](https://www.transifex.com/projects/p/foreman/resource/hammer-cli-foreman/). If so, do the following for each of the new languages:
4
+ 1. Check if there are any new languages with progress more than 50% on [transifex](https://www.transifex.com/projects/p/foreman/resource/hammer-cli-foreman-remote-execution/). If so, do the following for each of the new languages:
5
5
 
6
6
  ```
7
7
  mkdir locale/<lang>
8
- cp locale/hammer-cli-foreman.pot locale/<lang>/hammer-cli-foreman.po
8
+ cp locale/hammer-cli-foreman-remote-execution.pot locale/<lang>/hammer-cli-foreman-remote-execution.po
9
9
  ```
10
10
  2. Make sure you have `transifex-client` installed
11
11
 
@@ -0,0 +1,262 @@
1
+ # SOME DESCRIPTIVE TITLE.
2
+ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3
+ # This file is distributed under the same license as the hammer_cli_foreman_tasks package.
4
+ # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
+ #
6
+ msgid ""
7
+ msgstr ""
8
+ "Project-Id-Version: hammer-cli-foreman-remote-execution 0.2.0\n"
9
+ "Report-Msgid-Bugs-To: \n"
10
+ "PO-Revision-Date: 2016-02-18 10:36-0500\n"
11
+ "Last-Translator: Wiederoder <stefanwiederoder@googlemail.com>, 2017\n"
12
+ "Language-Team: German (https://www.transifex.com/foreman/teams/114/de/)\n"
13
+ "MIME-Version: 1.0\n"
14
+ "Content-Type: text/plain; charset=UTF-8\n"
15
+ "Content-Transfer-Encoding: 8bit\n"
16
+ "Language: de\n"
17
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
+
19
+ msgid "Manage foreign input sets"
20
+ msgstr ""
21
+
22
+ msgid "ID"
23
+ msgstr "ID"
24
+
25
+ #, fuzzy
26
+ msgid "Target template ID"
27
+ msgstr "ID"
28
+
29
+ msgid "Target template name"
30
+ msgstr ""
31
+
32
+ msgid "Name"
33
+ msgstr "Name"
34
+
35
+ msgid "Include all"
36
+ msgstr ""
37
+
38
+ msgid "Include"
39
+ msgstr ""
40
+
41
+ msgid "Exclude"
42
+ msgstr ""
43
+
44
+ msgid "Foreign input set updated"
45
+ msgstr ""
46
+
47
+ msgid "Could not update the input set"
48
+ msgstr ""
49
+
50
+ msgid "Foreign input set created"
51
+ msgstr ""
52
+
53
+ msgid "Could not create the input set"
54
+ msgstr ""
55
+
56
+ msgid "Foreign input set deleted"
57
+ msgstr ""
58
+
59
+ msgid "Could not delete the input set"
60
+ msgstr ""
61
+
62
+ msgid "Description"
63
+ msgstr ""
64
+
65
+ #, fuzzy
66
+ msgid "Status"
67
+ msgstr "Status"
68
+
69
+ msgid "Success"
70
+ msgstr ""
71
+
72
+ msgid "Failed"
73
+ msgstr ""
74
+
75
+ msgid "Pending"
76
+ msgstr ""
77
+
78
+ msgid "Total"
79
+ msgstr ""
80
+
81
+ #, fuzzy
82
+ msgid "Start"
83
+ msgstr "Status"
84
+
85
+ msgid "Job Category"
86
+ msgstr ""
87
+
88
+ msgid "Mode"
89
+ msgstr ""
90
+
91
+ msgid "Cron line"
92
+ msgstr "Cron-Zeile"
93
+
94
+ #, fuzzy
95
+ msgid "Recurring logic ID"
96
+ msgstr "ID"
97
+
98
+ msgid "Hosts"
99
+ msgstr ""
100
+
101
+ msgid "View the output for a host"
102
+ msgstr ""
103
+
104
+ msgid "Do not wait for job to complete, shows current output only"
105
+ msgstr ""
106
+
107
+ msgid "The job is scheduled to start at %{timestamp}"
108
+ msgstr ""
109
+
110
+ msgid "Job invocation %{id} created"
111
+ msgstr ""
112
+
113
+ msgid "Schedule the execution for a later time"
114
+ msgstr ""
115
+
116
+ msgid "Execution should be cancelled if it cannot be started before --start-at"
117
+ msgstr ""
118
+
119
+ msgid "Create a recurring execution"
120
+ msgstr ""
121
+
122
+ msgid "Perform no more executions after this time, used with --cron-line"
123
+ msgstr ""
124
+
125
+ msgid "Specify inputs from command line"
126
+ msgstr ""
127
+
128
+ msgid "Read input values from files"
129
+ msgstr ""
130
+
131
+ msgid "Dynamic search queries are evaluated at run time"
132
+ msgstr ""
133
+
134
+ msgid "Cancel the job"
135
+ msgstr ""
136
+
137
+ msgid "Job invocation %{id} cancelled"
138
+ msgstr ""
139
+
140
+ msgid "Could not cancel the job invocation"
141
+ msgstr ""
142
+
143
+ msgid "Rerun the job"
144
+ msgstr ""
145
+
146
+ msgid "Job invocation was rerun as %{id}"
147
+ msgstr ""
148
+
149
+ msgid "Manage job invocations"
150
+ msgstr ""
151
+
152
+ msgid "Provider"
153
+ msgstr ""
154
+
155
+ msgid "Type"
156
+ msgstr ""
157
+
158
+ msgid "Inputs"
159
+ msgstr ""
160
+
161
+ msgid "View job template content"
162
+ msgstr ""
163
+
164
+ msgid "Path to a file that contains the template"
165
+ msgstr ""
166
+
167
+ msgid "Job template created"
168
+ msgstr ""
169
+
170
+ msgid "Could not create the job template"
171
+ msgstr ""
172
+
173
+ msgid "Path to a file that contains the template - must include ERB metadata"
174
+ msgstr ""
175
+
176
+ msgid "Job template imported"
177
+ msgstr ""
178
+
179
+ msgid "Could not import the job template"
180
+ msgstr ""
181
+
182
+ msgid "Export a template including all metadata"
183
+ msgstr ""
184
+
185
+ msgid "Job template updated"
186
+ msgstr ""
187
+
188
+ msgid "Could not update the job template"
189
+ msgstr ""
190
+
191
+ msgid "Job template deleted"
192
+ msgstr ""
193
+
194
+ msgid "Could not delete the job template"
195
+ msgstr ""
196
+
197
+ msgid "Manage job templates"
198
+ msgstr ""
199
+
200
+ msgid ""
201
+ "Comma-separated list of key=file, where file is a path to a text file to be re"
202
+ "ad"
203
+ msgstr ""
204
+
205
+ #, fuzzy
206
+ msgid ""
207
+ "Cron line format 'a b c d e', where:\n"
208
+ " a. is minute (range: 0-59)\n"
209
+ " b. is hour (range: 0-23)\n"
210
+ " c. is day of month (range: 1-31)\n"
211
+ " d. is month (range: 1-12)\n"
212
+ " e. is day of week (range: 0-6)"
213
+ msgstr "Cron-Zeile"
214
+
215
+ msgid "Manage remote execution features"
216
+ msgstr ""
217
+
218
+ msgid "Job template name"
219
+ msgstr ""
220
+
221
+ msgid "Label"
222
+ msgstr ""
223
+
224
+ #, fuzzy
225
+ msgid "Job template ID"
226
+ msgstr "ID"
227
+
228
+ msgid "Remote execution feature updated"
229
+ msgstr ""
230
+
231
+ msgid "Could not update the remote execution feature"
232
+ msgstr ""
233
+
234
+ msgid "Manage template inputs"
235
+ msgstr ""
236
+
237
+ msgid "Input type"
238
+ msgstr ""
239
+
240
+ msgid "Fact name"
241
+ msgstr ""
242
+
243
+ msgid "Variable name"
244
+ msgstr ""
245
+
246
+ msgid "Puppet parameter name"
247
+ msgstr ""
248
+
249
+ msgid "Options"
250
+ msgstr ""
251
+
252
+ msgid "Template input created"
253
+ msgstr ""
254
+
255
+ msgid "Could not create the template input"
256
+ msgstr ""
257
+
258
+ msgid "Template input deleted"
259
+ msgstr ""
260
+
261
+ msgid "Could not delete the template input"
262
+ msgstr ""