hammer_cli_foreman 0.0.18 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of hammer_cli_foreman might be problematic. Click here for more details.

Files changed (71) hide show
  1. checksums.yaml +4 -4
  2. data/lib/hammer_cli_foreman.rb +39 -27
  3. data/lib/hammer_cli_foreman/architecture.rb +14 -14
  4. data/lib/hammer_cli_foreman/associating_commands.rb +46 -40
  5. data/lib/hammer_cli_foreman/auth.rb +49 -0
  6. data/lib/hammer_cli_foreman/commands.rb +82 -29
  7. data/lib/hammer_cli_foreman/common_parameter.rb +13 -17
  8. data/lib/hammer_cli_foreman/compute_resource.rb +23 -23
  9. data/lib/hammer_cli_foreman/credentials.rb +36 -0
  10. data/lib/hammer_cli_foreman/domain.rb +32 -35
  11. data/lib/hammer_cli_foreman/environment.rb +14 -19
  12. data/lib/hammer_cli_foreman/exception_handler.rb +30 -8
  13. data/lib/hammer_cli_foreman/fact.rb +5 -5
  14. data/lib/hammer_cli_foreman/host.rb +178 -105
  15. data/lib/hammer_cli_foreman/hostgroup.rb +59 -37
  16. data/lib/hammer_cli_foreman/i18n.rb +24 -0
  17. data/lib/hammer_cli_foreman/image.rb +24 -24
  18. data/lib/hammer_cli_foreman/location.rb +13 -13
  19. data/lib/hammer_cli_foreman/media.rb +21 -16
  20. data/lib/hammer_cli_foreman/model.rb +16 -16
  21. data/lib/hammer_cli_foreman/operating_system.rb +39 -39
  22. data/lib/hammer_cli_foreman/organization.rb +13 -13
  23. data/lib/hammer_cli_foreman/output/fields.rb +2 -2
  24. data/lib/hammer_cli_foreman/output/formatters.rb +15 -4
  25. data/lib/hammer_cli_foreman/parameter.rb +13 -11
  26. data/lib/hammer_cli_foreman/partition_table.rb +17 -18
  27. data/lib/hammer_cli_foreman/puppet_class.rb +9 -9
  28. data/lib/hammer_cli_foreman/report.rb +38 -38
  29. data/lib/hammer_cli_foreman/resource_supported_test.rb +1 -1
  30. data/lib/hammer_cli_foreman/smart_class_parameter.rb +36 -36
  31. data/lib/hammer_cli_foreman/smart_proxy.rb +22 -21
  32. data/lib/hammer_cli_foreman/subnet.rb +29 -31
  33. data/lib/hammer_cli_foreman/template.rb +45 -43
  34. data/lib/hammer_cli_foreman/user.rb +20 -23
  35. data/lib/hammer_cli_foreman/version.rb +1 -1
  36. data/locale/Makefile +64 -0
  37. data/locale/hammer-cli-foreman.pot +1573 -0
  38. data/locale/zanata.xml +29 -0
  39. data/test/unit/apipie_resource_mock.rb +44 -72
  40. data/test/unit/architecture_test.rb +1 -2
  41. data/test/unit/commands_test.rb +23 -21
  42. data/test/unit/common_parameter_test.rb +15 -10
  43. data/test/unit/compute_resource_test.rb +1 -2
  44. data/test/unit/credentials_test.rb +46 -0
  45. data/test/unit/data/1.4/foreman_api.json +10387 -0
  46. data/test/unit/domain_test.rb +2 -5
  47. data/test/unit/environment_test.rb +2 -3
  48. data/test/unit/exception_handler_test.rb +29 -4
  49. data/test/unit/fact_test.rb +0 -1
  50. data/test/unit/helpers/command.rb +20 -4
  51. data/test/unit/helpers/resource_disabled.rb +2 -2
  52. data/test/unit/host_test.rb +24 -12
  53. data/test/unit/hostgroup_test.rb +7 -8
  54. data/test/unit/image_test.rb +6 -7
  55. data/test/unit/location_test.rb +9 -5
  56. data/test/unit/media_test.rb +1 -9
  57. data/test/unit/model_test.rb +1 -3
  58. data/test/unit/operating_system_test.rb +7 -9
  59. data/test/unit/organization_test.rb +12 -6
  60. data/test/unit/output/formatters_test.rb +5 -0
  61. data/test/unit/partition_table_test.rb +1 -2
  62. data/test/unit/puppet_class_test.rb +2 -3
  63. data/test/unit/report_test.rb +1 -2
  64. data/test/unit/smart_class_parameter_test.rb +9 -4
  65. data/test/unit/smart_proxy_test.rb +1 -2
  66. data/test/unit/subnet_test.rb +2 -3
  67. data/test/unit/template_test.rb +23 -8
  68. data/test/unit/test_helper.rb +13 -0
  69. data/test/unit/test_output_adapter.rb +1 -1
  70. data/test/unit/user_test.rb +1 -2
  71. metadata +17 -7
@@ -1,18 +1,18 @@
1
1
  require 'hammer_cli'
2
- require 'foreman_api'
3
2
  require 'hammer_cli_foreman/smart_class_parameter'
4
3
 
5
4
 
6
5
  module HammerCLIForeman
7
6
 
8
- class Environment < HammerCLI::AbstractCommand
7
+ class Environment < HammerCLIForeman::Command
8
+
9
+ resource :environments
9
10
 
10
11
  class ListCommand < HammerCLIForeman::ListCommand
11
- resource ForemanApi::Resources::Environment, "index"
12
12
 
13
13
  output do
14
- field :id, "Id"
15
- field :name, "Name"
14
+ field :id, _("Id")
15
+ field :name, _("Name")
16
16
  end
17
17
 
18
18
  apipie_options
@@ -20,11 +20,10 @@ module HammerCLIForeman
20
20
 
21
21
 
22
22
  class InfoCommand < HammerCLIForeman::InfoCommand
23
- resource ForemanApi::Resources::Environment, "show"
24
23
 
25
24
  output ListCommand.output_definition do
26
- field :created_at, "Created at", Fields::Date
27
- field :updated_at, "Updated at", Fields::Date
25
+ field :created_at, _("Created at"), Fields::Date
26
+ field :updated_at, _("Updated at"), Fields::Date
28
27
  end
29
28
 
30
29
  apipie_options
@@ -33,9 +32,8 @@ module HammerCLIForeman
33
32
 
34
33
  class CreateCommand < HammerCLIForeman::CreateCommand
35
34
 
36
- success_message "Environment created"
37
- failure_message "Could not create the environment"
38
- resource ForemanApi::Resources::Environment, "create"
35
+ success_message _("Environment created")
36
+ failure_message _("Could not create the environment")
39
37
 
40
38
  apipie_options
41
39
  end
@@ -43,9 +41,8 @@ module HammerCLIForeman
43
41
 
44
42
  class UpdateCommand < HammerCLIForeman::UpdateCommand
45
43
 
46
- success_message "Environment updated"
47
- failure_message "Could not update the environment"
48
- resource ForemanApi::Resources::Environment, "update"
44
+ success_message _("Environment updated")
45
+ failure_message _("Could not update the environment")
49
46
 
50
47
  apipie_options
51
48
  end
@@ -53,9 +50,8 @@ module HammerCLIForeman
53
50
 
54
51
  class DeleteCommand < HammerCLIForeman::DeleteCommand
55
52
 
56
- success_message "Environment deleted"
57
- failure_message "Could not delete the environment"
58
- resource ForemanApi::Resources::Environment, "destroy"
53
+ success_message _("Environment deleted")
54
+ failure_message _("Could not delete the environment")
59
55
 
60
56
  apipie_options
61
57
  end
@@ -63,7 +59,7 @@ module HammerCLIForeman
63
59
  class SCParamsCommand < HammerCLIForeman::SmartClassParametersList
64
60
 
65
61
  apipie_options :without => [:host_id, :hostgroup_id, :puppetclass_id, :environment_id]
66
- option ['--id', '--name'], 'ENVIRONMENT_ID', 'environment id/name',
62
+ option ['--id', '--name'], 'ENVIRONMENT_ID', _('environment id/name'),
67
63
  :required => true, :attribute_name => :environment_id
68
64
  end
69
65
 
@@ -74,4 +70,3 @@ module HammerCLIForeman
74
70
  end
75
71
 
76
72
  HammerCLI::MainCommand.subcommand 'environment', "Manipulate environments.", HammerCLIForeman::Environment
77
-
@@ -7,6 +7,7 @@ module HammerCLIForeman
7
7
  def mappings
8
8
  super + [
9
9
  [HammerCLIForeman::OperationNotSupportedError, :handle_unsupported_operation],
10
+ [RestClient::InternalServerError, :handle_internal_error],
10
11
  [RestClient::Forbidden, :handle_forbidden],
11
12
  [RestClient::UnprocessableEntity, :handle_unprocessable_entity],
12
13
  [ArgumentError, :handle_argument_error],
@@ -23,6 +24,12 @@ module HammerCLIForeman
23
24
  end
24
25
 
25
26
 
27
+ def handle_internal_error(e)
28
+ handle_foreman_error(e)
29
+ HammerCLI::EX_SOFTWARE
30
+ end
31
+
32
+
26
33
  def handle_argument_error(e)
27
34
  print_error e.message
28
35
  log_full_error e
@@ -31,7 +38,7 @@ module HammerCLIForeman
31
38
 
32
39
 
33
40
  def handle_forbidden(e)
34
- print_error "Forbidden - server refused to process the request"
41
+ print_error _("Forbidden - server refused to process the request")
35
42
  log_full_error e
36
43
  HammerCLI::EX_NOPERM
37
44
  end
@@ -45,17 +52,32 @@ module HammerCLIForeman
45
52
 
46
53
 
47
54
  def handle_not_found(e)
48
- response = JSON.parse(e.response)
49
- response = HammerCLIForeman.record_to_common_format(response)
50
- message = response['message'] || e.message
55
+ handle_foreman_error(e)
56
+ HammerCLI::EX_NOT_FOUND
57
+ end
58
+
59
+
60
+ def handle_foreman_error(e)
61
+ begin
62
+ response = JSON.parse(e.response)
63
+ response = HammerCLIForeman.record_to_common_format(response)
64
+ message = response['message'] || e.message
65
+ rescue JSON::ParserError => parse_e
66
+ message = e.message
67
+ end
51
68
 
52
69
  print_error message
53
70
  log_full_error e
54
- HammerCLI::EX_NOT_FOUND
71
+ end
72
+
73
+ def handle_apipie_docloading_error(e)
74
+ rake_command = 'foreman-rake apipie:cache'
75
+ print_error _("Could not load API description from the server\n"\
76
+ " - is your server down?\n"\
77
+ " - was \"#{rake_command}\" run on the server when using apipie cache? (typical production settings))\n")
78
+ log_full_error e
79
+ HammerCLI::EX_CONFIG
55
80
  end
56
81
 
57
82
  end
58
83
  end
59
-
60
-
61
-
@@ -4,14 +4,14 @@ module HammerCLIForeman
4
4
 
5
5
  class ListCommand < HammerCLIForeman::ListCommand
6
6
 
7
- resource ForemanApi::Resources::FactValue, "index"
7
+ resource :fact_values, :index
8
8
 
9
9
  apipie_options
10
10
 
11
11
  output do
12
- field :host, "Host"
13
- field :fact, "Fact"
14
- field :value, "Value"
12
+ field :host, _("Host")
13
+ field :fact, _("Fact")
14
+ field :value, _("Value")
15
15
  end
16
16
 
17
17
  def retrieve_data
@@ -33,4 +33,4 @@ module HammerCLIForeman
33
33
 
34
34
  end
35
35
 
36
- HammerCLI::MainCommand.subcommand 'fact', "Search facts.", HammerCLIForeman::Fact
36
+ HammerCLI::MainCommand.subcommand 'fact', _("Search facts."), HammerCLIForeman::Fact
@@ -2,6 +2,8 @@ require 'hammer_cli_foreman/report'
2
2
  require 'hammer_cli_foreman/puppet_class'
3
3
  require 'hammer_cli_foreman/smart_class_parameter'
4
4
 
5
+ require 'highline/import'
6
+
5
7
  module HammerCLIForeman
6
8
 
7
9
  module CommonHostUpdateOptions
@@ -16,6 +18,8 @@ module HammerCLIForeman
16
18
  # - temporarily disabled params that will be removed from the api ------------------
17
19
  :provision_method, :capabilities, :flavour_ref, :image_ref, :start,
18
20
  :network, :cpus, :memory, :provider, :type, :tenant_id, :image_id,
21
+ # - avoids future conflicts as :root_pass is currently missing in the api docs
22
+ :root_pass,
19
23
  # ----------------------------------------------------------------------------------
20
24
  :compute_resource_id, :ptable_id] + base.declared_identifiers.keys
21
25
 
@@ -29,6 +33,10 @@ module HammerCLIForeman
29
33
  base.option "--partition-table-id", "PARTITION_TABLE", " "
30
34
  base.option "--puppetclass-ids", "PUPPETCLASS_IDS", " ",
31
35
  :format => HammerCLI::Options::Normalizers::List.new
36
+ base.option "--root-password", "ROOT_PW", " "
37
+ base.option "--ask-root-password", "ASK_ROOT_PW", " ",
38
+ :format => HammerCLI::Options::Normalizers::Bool.new
39
+
32
40
 
33
41
  bme_options = {}
34
42
  bme_options[:default] = 'true' if base.action.to_sym == :create
@@ -40,14 +48,21 @@ module HammerCLIForeman
40
48
  bme_options[:format] = HammerCLI::Options::Normalizers::Bool.new
41
49
  base.option "--enabled", "ENABLED", " ", bme_options
42
50
 
43
- base.option "--parameters", "PARAMS", "Host parameters.",
51
+ base.option "--parameters", "PARAMS", _("Host parameters."),
44
52
  :format => HammerCLI::Options::Normalizers::KeyValueList.new
45
- base.option "--compute-attributes", "COMPUTE_ATTRS", "Compute resource attributes.",
53
+ base.option "--compute-attributes", "COMPUTE_ATTRS", _("Compute resource attributes."),
46
54
  :format => HammerCLI::Options::Normalizers::KeyValueList.new
47
- base.option "--volume", "VOLUME", "Volume parameters", :multivalued => true,
55
+ base.option "--volume", "VOLUME", _("Volume parameters"), :multivalued => true,
48
56
  :format => HammerCLI::Options::Normalizers::KeyValueList.new
49
- base.option "--interface", "INTERFACE", "Interface parameters.", :multivalued => true,
57
+ base.option "--interface", "INTERFACE", _("Interface parameters."), :multivalued => true,
50
58
  :format => HammerCLI::Options::Normalizers::KeyValueList.new
59
+ base.option "--provision-method", "METHOD", " ",
60
+ :format => HammerCLI::Options::Normalizers::Enum.new(['build', 'image'])
61
+ end
62
+
63
+ def self.ask_password
64
+ prompt = "Enter the root password for the host: "
65
+ ask(prompt) {|q| q.echo = false}
51
66
  end
52
67
 
53
68
  def request_params
@@ -71,6 +86,12 @@ module HammerCLIForeman
71
86
  params['host']['interfaces_attributes'] = nested_attributes(option_interface_list)
72
87
  end
73
88
 
89
+ params['host']['root_pass'] = option_root_password unless option_root_password.nil?
90
+
91
+ if option_ask_root_password
92
+ params['host']['root_pass'] = HammerCLIForeman::CommonHostUpdateOptions::ask_password
93
+ end
94
+
74
95
  params
75
96
  end
76
97
 
@@ -96,19 +117,19 @@ module HammerCLIForeman
96
117
  end
97
118
 
98
119
 
99
- class Host < HammerCLI::Apipie::Command
120
+ class Host < HammerCLIForeman::Command
100
121
 
101
- resource ForemanApi::Resources::Host
122
+ resource :hosts
102
123
 
103
124
  class ListCommand < HammerCLIForeman::ListCommand
104
125
  # FIXME: list compute resource (model)
105
126
  output do
106
- field :id, "Id"
107
- field :name, "Name"
108
- field :operatingsystem_id, "Operating System Id"
109
- field :hostgroup_id, "Host Group Id"
110
- field :ip, "IP"
111
- field :mac, "MAC"
127
+ field :id, _("Id")
128
+ field :name, _("Name")
129
+ field :operatingsystem_id, _("Operating System Id")
130
+ field :hostgroup_id, _("Host Group Id")
131
+ field :ip, _("IP")
132
+ field :mac, _("MAC")
112
133
  end
113
134
 
114
135
  apipie_options
@@ -120,53 +141,82 @@ module HammerCLIForeman
120
141
  def extend_data(host)
121
142
  host["environment_name"] = host["environment"]["environment"]["name"] rescue nil
122
143
  host["parameters"] = HammerCLIForeman::Parameter.get_parameters(resource_config, :host, host)
144
+ host["_bmc_interfaces"] =
145
+ host["interfaces"].select{|intfs| intfs["type"] == "Nic::BMC" } rescue []
146
+ host["_managed_interfaces"] =
147
+ host["interfaces"].select{|intfs| intfs["type"] == "Nic::Managed" } rescue []
123
148
  host
124
149
  end
125
150
 
126
151
  output ListCommand.output_definition do
127
- field :uuid, "UUID"
128
- field :certname, "Cert name"
129
-
130
- field :environment_name, "Environment"
131
- field :environment_id, "Environment Id"
132
-
133
- field :managed, "Managed"
134
- field :enabled, "Enabled"
135
- field :build, "Build"
136
-
137
- field :use_image, "Use image"
138
- field :disk, "Disk"
139
- field :image_file, "Image file"
140
-
141
- field :sp_name, "SP Name"
142
- field :sp_ip, "SP IP"
143
- field :sp_mac, "SP MAC"
144
- field :sp_subnet, "SP Subnet"
145
- field :sp_subnet_id, "SP Subnet Id"
146
-
147
- field :created_at, "Created at", Fields::Date
148
- field :updated_at, "Updated at", Fields::Date
149
- field :installed_at, "Installed at", Fields::Date
150
- field :last_report, "Last report", Fields::Date
151
-
152
- field :puppet_ca_proxy_id, "Puppet CA Proxy Id"
153
- field :medium_id, "Medium Id"
154
- field :model_id, "Model Id"
155
- field :owner_id, "Owner Id"
156
- field :subnet_id, "Subnet Id"
157
- field :domain_id, "Domain Id"
158
- field :puppet_proxy_id, "Puppet Proxy Id"
159
- field :owner_type, "Owner Type"
160
- field :ptable_id, "Partition Table Id"
161
- field :architecture_id, "Architecture Id"
162
- field :image_id, "Image Id"
163
- field :compute_resource_id, "Compute Resource Id"
164
-
165
- field :comment, "Comment"
166
-
167
- collection :parameters, "Parameters" do
152
+ field :uuid, _("UUID")
153
+ field :certname, _("Cert name")
154
+
155
+ field :environment_name, _("Environment")
156
+ field :environment_id, _("Environment Id")
157
+
158
+ field :managed, _("Managed")
159
+ field :enabled, _("Enabled")
160
+ field :build, _("Build")
161
+
162
+ field :use_image, _("Use image")
163
+ field :disk, _("Disk")
164
+ field :image_file, _("Image file")
165
+
166
+ field :sp_name, _("SP Name")
167
+ field :sp_ip, _("SP IP")
168
+ field :sp_mac, _("SP MAC")
169
+ field :sp_subnet, _("SP Subnet")
170
+ field :sp_subnet_id, _("SP Subnet Id")
171
+
172
+ field :created_at, _("Created at"), Fields::Date
173
+ field :updated_at, _("Updated at"), Fields::Date
174
+ field :installed_at, _("Installed at"), Fields::Date
175
+ field :last_report, _("Last report"), Fields::Date
176
+
177
+ field :puppet_ca_proxy_id, _("Puppet CA Proxy Id")
178
+ field :medium_id, _("Medium Id")
179
+ field :model_id, _("Model Id")
180
+ field :owner_id, _("Owner Id")
181
+ field :subnet_id, _("Subnet Id")
182
+ field :domain_id, _("Domain Id")
183
+ field :puppet_proxy_id, _("Puppet Proxy Id")
184
+ field :owner_type, _("Owner Type")
185
+ field :ptable_id, _("Partition Table Id")
186
+ field :architecture_id, _("Architecture Id")
187
+ field :image_id, _("Image Id")
188
+ field :compute_resource_id, _("Compute Resource Id")
189
+
190
+ field :comment, _("Comment")
191
+
192
+ collection :parameters, _("Parameters") do
168
193
  field nil, nil, Fields::KeyValue
169
194
  end
195
+
196
+ collection :_bmc_interfaces, _("BMC Network Interfaces"), :hide_blank => true do
197
+ field :id, _("Id")
198
+ field :name, _("Name")
199
+ field :ip, _("IP")
200
+ field :mac, _("MAC")
201
+ field :domain_id, _("Domain Id")
202
+ field :domain_name, _("Domain Name")
203
+ field :subnet_id, _("Subnet Id")
204
+ field :subnet_name, _("Subnet Name")
205
+ field :username, _("BMC Username")
206
+ field :password, _("BMC Password")
207
+ end
208
+
209
+ collection :_managed_interfaces, _("Managed Network Interfaces"), :hide_blank => true do
210
+ field :id, _("Id")
211
+ field :name, _("Name")
212
+ field :ip, _("IP")
213
+ field :mac, _("MAC")
214
+ field :domain_id, _("Domain Id")
215
+ field :domain_name, _("Domain Name")
216
+ field :subnet_id, _("Subnet Id")
217
+ field :subnet_name, _("Subnet Name")
218
+ end
219
+
170
220
  end
171
221
 
172
222
  apipie_options
@@ -180,8 +230,8 @@ module HammerCLIForeman
180
230
  command_name "status"
181
231
 
182
232
  output do
183
- field :status, "Status"
184
- field :power, "Power"
233
+ field :status, _("Status")
234
+ field :power, _("Power")
185
235
  end
186
236
 
187
237
  def retrieve_data
@@ -195,7 +245,7 @@ module HammerCLIForeman
195
245
  params = {
196
246
  'id' => get_identifier[0],
197
247
  }
198
- status = resource.call(:status, params)[0]
248
+ status = resource.call(:status, params)
199
249
  status["status"]
200
250
  end
201
251
 
@@ -204,7 +254,7 @@ module HammerCLIForeman
204
254
  'id' => get_identifier[0],
205
255
  'power_action' => :state
206
256
  }
207
- status = resource.call(:power, params)[0]
257
+ status = resource.call(:power, params)
208
258
  status["power"]
209
259
  end
210
260
 
@@ -215,10 +265,10 @@ module HammerCLIForeman
215
265
  class PuppetRunCommand < HammerCLIForeman::InfoCommand
216
266
 
217
267
  command_name "puppetrun"
218
- action "puppetrun"
268
+ action :puppetrun
219
269
 
220
270
  def print_data(records)
221
- print_message 'Puppet run triggered'
271
+ print_message _('Puppet run triggered')
222
272
  end
223
273
 
224
274
  apipie_options
@@ -228,14 +278,14 @@ module HammerCLIForeman
228
278
  class FactsCommand < HammerCLIForeman::ListCommand
229
279
 
230
280
  command_name "facts"
231
- resource ForemanApi::Resources::FactValue, "index"
281
+ resource :fact_values, :index
232
282
  identifiers :id, :name
233
283
 
234
284
  apipie_options :without => declared_identifiers.keys
235
285
 
236
286
  output do
237
- field :fact, "Fact"
238
- field :value, "Value"
287
+ field :fact, _("Fact")
288
+ field :value, _("Value")
239
289
  end
240
290
 
241
291
  def request_params
@@ -254,8 +304,8 @@ module HammerCLIForeman
254
304
 
255
305
  class PuppetClassesCommand < HammerCLIForeman::ListCommand
256
306
 
257
- command_name "puppet_classes"
258
- resource ForemanApi::Resources::Puppetclass
307
+ command_name "puppet-classes"
308
+ resource :puppetclasses
259
309
 
260
310
  identifiers :id, :name
261
311
 
@@ -280,7 +330,7 @@ module HammerCLIForeman
280
330
  identifiers :id, :name
281
331
 
282
332
  command_name "reports"
283
- resource ForemanApi::Resources::Report
333
+ resource :reports
284
334
  output HammerCLIForeman::Report::ListCommand.output_definition
285
335
 
286
336
  apipie_options :without => :search
@@ -292,17 +342,22 @@ module HammerCLIForeman
292
342
 
293
343
  class CreateCommand < HammerCLIForeman::CreateCommand
294
344
 
295
- success_message "Host created"
296
- failure_message "Could not create the host"
297
- action "create"
345
+ success_message _("Host created")
346
+ failure_message _("Could not create the host")
298
347
 
299
348
  include HammerCLIForeman::CommonHostUpdateOptions
300
349
 
301
- validate_options do
302
- unless option(:option_hostgroup_id).exist?
303
- all(:option_environment_id, :option_architecture_id, :option_domain_id,
304
- :option_puppet_proxy_id, :option_operatingsystem_id,
305
- :option_partition_table_id).required
350
+ def validate_options
351
+ super
352
+ unless validator.option(:option_hostgroup_id).exist?
353
+ if option_managed
354
+ validator.all(:option_environment_id, :option_architecture_id, :option_domain_id,
355
+ :option_puppet_proxy_id, :option_operatingsystem_id,
356
+ :option_partition_table_id).required
357
+ else
358
+ # unmanaged host only requires environment
359
+ validator.option(:option_environment_id).required
360
+ end
306
361
  end
307
362
  end
308
363
  end
@@ -310,8 +365,8 @@ module HammerCLIForeman
310
365
 
311
366
  class UpdateCommand < HammerCLIForeman::UpdateCommand
312
367
 
313
- success_message "Host updated"
314
- failure_message "Could not update the host"
368
+ success_message _("Host updated")
369
+ failure_message _("Could not update the host")
315
370
 
316
371
  include HammerCLIForeman::CommonHostUpdateOptions
317
372
  end
@@ -319,8 +374,8 @@ module HammerCLIForeman
319
374
 
320
375
  class DeleteCommand < HammerCLIForeman::DeleteCommand
321
376
 
322
- success_message "Host deleted"
323
- failure_message "Could not delete the host"
377
+ success_message _("Host deleted")
378
+ failure_message _("Could not delete the host")
324
379
 
325
380
  apipie_options
326
381
  end
@@ -328,16 +383,16 @@ module HammerCLIForeman
328
383
 
329
384
  class SetParameterCommand < HammerCLIForeman::Parameter::SetCommand
330
385
 
331
- resource ForemanApi::Resources::Parameter
386
+ resource :parameters
332
387
 
333
- desc "Create or update parameter for a host."
388
+ desc _("Create or update parameter for a host.")
334
389
 
335
- option "--host-name", "HOST_NAME", "name of the host the parameter is being set for"
336
- option "--host-id", "HOST_ID", "id of the host the parameter is being set for"
390
+ option "--host-name", "HOST_NAME", _("name of the host the parameter is being set for")
391
+ option "--host-id", "HOST_ID", _("id of the host the parameter is being set for")
337
392
 
338
- success_message_for :update, "Host parameter updated"
339
- success_message_for :create, "New host parameter created"
340
- failure_message "Could not set host parameter"
393
+ success_message_for :update, _("Host parameter updated")
394
+ success_message_for :create, _("New host parameter created")
395
+ failure_message _("Could not set host parameter")
341
396
 
342
397
  def validate_options
343
398
  super
@@ -354,14 +409,14 @@ module HammerCLIForeman
354
409
 
355
410
  class DeleteParameterCommand < HammerCLIForeman::Parameter::DeleteCommand
356
411
 
357
- resource ForemanApi::Resources::Parameter
412
+ resource :parameters
358
413
 
359
- desc "Delete parameter for a host."
414
+ desc _("Delete parameter for a host.")
360
415
 
361
- option "--host-name", "HOST_NAME", "name of the host the parameter is being deleted for"
362
- option "--host-id", "HOST_ID", "id of the host the parameter is being deleted for"
416
+ option "--host-name", "HOST_NAME", _("name of the host the parameter is being deleted for")
417
+ option "--host-id", "HOST_ID", _("id of the host the parameter is being deleted for")
363
418
 
364
- success_message "Host parameter deleted"
419
+ success_message _("Host parameter deleted")
365
420
 
366
421
  def validate_options
367
422
  super
@@ -379,31 +434,37 @@ module HammerCLIForeman
379
434
  class StartCommand < HammerCLI::Apipie::WriteCommand
380
435
 
381
436
  identifiers :id, :name
382
- action "power"
437
+ action :power
383
438
 
384
439
  command_name "start"
385
- desc "Power a host on"
386
- success_message "The host is starting."
440
+ desc _("Power a host on")
441
+ success_message _("The host is starting.")
387
442
 
388
- def power_action
443
+ def option_power_action
389
444
  :start
390
445
  end
391
446
 
447
+ def request_params
448
+ params = method_options
449
+ params['id'] = get_identifier[0]
450
+ params
451
+ end
452
+
392
453
  apipie_options :without => :power_action
393
454
  end
394
455
 
395
456
 
396
457
  class StopCommand < HammerCLI::Apipie::WriteCommand
397
458
 
398
- option '--force', :flag, "Force turning off a host"
459
+ option '--force', :flag, _("Force turning off a host")
399
460
 
400
461
  identifiers :id, :name
401
- action "power"
462
+ action :power
402
463
 
403
464
  command_name "stop"
404
- desc "Power a host off"
465
+ desc _("Power a host off")
405
466
 
406
- def power_action
467
+ def option_power_action
407
468
  if option_force?
408
469
  :cycle
409
470
  else
@@ -413,35 +474,47 @@ module HammerCLIForeman
413
474
 
414
475
  def success_message
415
476
  if option_force?
416
- "Power off forced."
477
+ _("Power off forced.")
417
478
  else
418
- "Powering the host off."
479
+ _("Powering the host off.")
419
480
  end
420
481
  end
421
482
 
483
+ def request_params
484
+ params = method_options
485
+ params['id'] = get_identifier[0]
486
+ params
487
+ end
488
+
422
489
  apipie_options :without => :power_action
423
490
  end
424
491
 
425
492
  class RebootCommand < HammerCLI::Apipie::WriteCommand
426
493
 
427
494
  identifiers :id, :name
428
- action "power"
495
+ action :power
429
496
 
430
497
  command_name "reboot"
431
- desc "Reboot a host"
432
- success_message "Host reboot started."
498
+ desc _("Reboot a host")
499
+ success_message _("Host reboot started.")
433
500
 
434
- def power_action
501
+ def option_power_action
435
502
  :soft
436
503
  end
437
504
 
505
+ def request_params
506
+ params = method_options
507
+ params['id'] = get_identifier[0]
508
+ params
509
+ end
510
+
438
511
  apipie_options :without => :power_action
439
512
  end
440
513
 
441
514
  class SCParamsCommand < HammerCLIForeman::SmartClassParametersList
442
515
 
443
516
  apipie_options :without => [:host_id, :hostgroup_id, :puppetclass_id, :environment_id]
444
- option ['--id', '--name'], 'HOST_ID', 'host id/name',
517
+ option ['--id', '--name'], 'HOST_ID', _('host id/name'),
445
518
  :attribute_name => :option_host_id, :required => true
446
519
  end
447
520
 
@@ -450,4 +523,4 @@ module HammerCLIForeman
450
523
 
451
524
  end
452
525
 
453
- HammerCLI::MainCommand.subcommand 'host', "Manipulate hosts.", HammerCLIForeman::Host
526
+ HammerCLI::MainCommand.subcommand 'host', ("Manipulate hosts."), HammerCLIForeman::Host