hammer_cli_foreman 0.0.18 → 0.1.0

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.

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