hammer_cli_foreman 0.1.0 → 0.1.1

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 (69) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +12 -1
  3. data/doc/configuration.md +13 -0
  4. data/lib/hammer_cli_foreman.rb +3 -0
  5. data/lib/hammer_cli_foreman/architecture.rb +9 -9
  6. data/lib/hammer_cli_foreman/associating_commands.rb +57 -34
  7. data/lib/hammer_cli_foreman/commands.rb +188 -101
  8. data/lib/hammer_cli_foreman/common_parameter.rb +7 -10
  9. data/lib/hammer_cli_foreman/compute_resource.rb +8 -11
  10. data/lib/hammer_cli_foreman/domain.rb +14 -40
  11. data/lib/hammer_cli_foreman/environment.rb +10 -15
  12. data/lib/hammer_cli_foreman/exceptions.rb +4 -0
  13. data/lib/hammer_cli_foreman/fact.rb +5 -5
  14. data/lib/hammer_cli_foreman/host.rb +76 -132
  15. data/lib/hammer_cli_foreman/hostgroup.rb +26 -61
  16. data/lib/hammer_cli_foreman/id_resolver.rb +163 -0
  17. data/lib/hammer_cli_foreman/image.rb +14 -50
  18. data/lib/hammer_cli_foreman/location.rb +35 -17
  19. data/lib/hammer_cli_foreman/media.rb +9 -16
  20. data/lib/hammer_cli_foreman/model.rb +6 -8
  21. data/lib/hammer_cli_foreman/operating_system.rb +129 -63
  22. data/lib/hammer_cli_foreman/organization.rb +36 -16
  23. data/lib/hammer_cli_foreman/output/fields.rb +10 -2
  24. data/lib/hammer_cli_foreman/output/formatters.rb +44 -18
  25. data/lib/hammer_cli_foreman/parameter.rb +45 -41
  26. data/lib/hammer_cli_foreman/partition_table.rb +9 -12
  27. data/lib/hammer_cli_foreman/puppet_class.rb +14 -14
  28. data/lib/hammer_cli_foreman/references.rb +122 -0
  29. data/lib/hammer_cli_foreman/report.rb +3 -6
  30. data/lib/hammer_cli_foreman/searchables_option_builder.rb +99 -0
  31. data/lib/hammer_cli_foreman/smart_class_parameter.rb +17 -13
  32. data/lib/hammer_cli_foreman/smart_proxy.rb +18 -28
  33. data/lib/hammer_cli_foreman/subnet.rb +12 -13
  34. data/lib/hammer_cli_foreman/template.rb +10 -19
  35. data/lib/hammer_cli_foreman/user.rb +9 -28
  36. data/lib/hammer_cli_foreman/version.rb +1 -1
  37. data/locale/hammer-cli-foreman.pot +828 -817
  38. data/test/unit/apipie_resource_mock.rb +33 -11
  39. data/test/unit/architecture_test.rb +7 -10
  40. data/test/unit/commands_test.rb +8 -9
  41. data/test/unit/common_parameter_test.rb +6 -8
  42. data/test/unit/compute_resource_test.rb +9 -12
  43. data/test/unit/data/1.5/foreman_api.json +14130 -0
  44. data/test/unit/domain_test.rb +19 -22
  45. data/test/unit/environment_test.rb +9 -11
  46. data/test/unit/fact_test.rb +5 -6
  47. data/test/unit/helpers/command.rb +115 -59
  48. data/test/unit/helpers/fake_searchables.rb +19 -0
  49. data/test/unit/host_test.rb +44 -33
  50. data/test/unit/hostgroup_test.rb +19 -26
  51. data/test/unit/id_resolver_test.rb +225 -0
  52. data/test/unit/image_test.rb +16 -18
  53. data/test/unit/location_test.rb +8 -10
  54. data/test/unit/media_test.rb +11 -13
  55. data/test/unit/model_test.rb +8 -10
  56. data/test/unit/operating_system_test.rb +23 -23
  57. data/test/unit/organization_test.rb +9 -10
  58. data/test/unit/output/formatters_test.rb +133 -20
  59. data/test/unit/partition_table_test.rb +12 -9
  60. data/test/unit/puppet_class_test.rb +3 -7
  61. data/test/unit/report_test.rb +3 -7
  62. data/test/unit/searchables_option_builder_test.rb +172 -0
  63. data/test/unit/smart_class_parameter_test.rb +5 -7
  64. data/test/unit/smart_proxy_test.rb +11 -12
  65. data/test/unit/subnet_test.rb +15 -16
  66. data/test/unit/template_test.rb +15 -12
  67. data/test/unit/test_helper.rb +1 -1
  68. data/test/unit/user_test.rb +9 -12
  69. metadata +536 -509
@@ -13,16 +13,16 @@ module HammerCLIForeman
13
13
  field :value, _("Value")
14
14
  end
15
15
 
16
- apipie_options
16
+ build_options
17
17
  end
18
18
 
19
- class SetCommand < HammerCLIForeman::WriteCommand
19
+ class SetCommand < HammerCLIForeman::Command
20
20
 
21
21
  command_name "set"
22
22
  desc _("Set a global parameter.")
23
23
 
24
- success_message_for :create, _("Created parameter [%{name}s] with value [%{value}s].")
25
- success_message_for :update, _("Parameter [%{name}s] updated to [%{value}s].")
24
+ success_message_for :create, _("Created parameter [%{name}] with value [%{value}].")
25
+ success_message_for :update, _("Parameter [%{name}] updated to [%{value}].")
26
26
 
27
27
  option "--name", "NAME", _("parameter name"), :required => true
28
28
  option "--value", "VALUE", _("parameter value"), :required => true
@@ -52,13 +52,10 @@ module HammerCLIForeman
52
52
 
53
53
 
54
54
  class DeleteCommand < HammerCLIForeman::DeleteCommand
55
+ success_message _("Global parameter [%{name}] deleted.")
56
+ failure_message _("Could not delete the global parameter [%{name}]")
55
57
 
56
- identifiers :name
57
-
58
- success_message _("Global parameter [%{name}s] deleted.")
59
- failure_message _("Could not delete the global parameter [%{name}s]")
60
-
61
- apipie_options :without => :id
58
+ build_options :without => :id
62
59
  end
63
60
 
64
61
  autoload_subcommands
@@ -13,12 +13,11 @@ module HammerCLIForeman
13
13
  field :provider, _("Provider")
14
14
  end
15
15
 
16
- apipie_options
16
+ build_options
17
17
  end
18
18
 
19
19
 
20
20
  class InfoCommand < HammerCLIForeman::InfoCommand
21
-
22
21
  PROVIDER_SPECIFIC_FIELDS = {
23
22
  'ovirt' => [
24
23
  Fields::Field.new(:label => _('UUID'), :path => ["compute_resource", "uuid"])
@@ -44,17 +43,17 @@ module HammerCLIForeman
44
43
  field :url, _("Url")
45
44
  field :description, _("Description")
46
45
  field :user, _("User")
47
- field :created_at, _("Created at"), Fields::Date
48
- field :updated_at, _("Updated at"), Fields::Date
46
+ HammerCLIForeman::References.taxonomies(self)
47
+ HammerCLIForeman::References.timestamps(self)
49
48
  end
50
49
 
51
50
  def print_data(data)
52
51
  provider = data["provider"].downcase
53
52
  output_definition.fields.concat PROVIDER_SPECIFIC_FIELDS[provider]
54
- print_collection(output_definition, data)
53
+ super(data)
55
54
  end
56
55
 
57
- apipie_options
56
+ build_options
58
57
  end
59
58
 
60
59
 
@@ -63,7 +62,7 @@ module HammerCLIForeman
63
62
  success_message _("Compute resource created")
64
63
  failure_message _("Could not create the compute resource")
65
64
 
66
- apipie_options
65
+ build_options
67
66
 
68
67
  validate_options do
69
68
  all(:option_name, :option_url, :option_provider).required
@@ -72,20 +71,18 @@ module HammerCLIForeman
72
71
 
73
72
 
74
73
  class UpdateCommand < HammerCLIForeman::UpdateCommand
75
-
76
74
  success_message _("Compute resource updated")
77
75
  failure_message _("Could not update the compute resource")
78
76
 
79
- apipie_options
77
+ build_options :without => :name
80
78
  end
81
79
 
82
80
 
83
81
  class DeleteCommand < HammerCLIForeman::DeleteCommand
84
-
85
82
  success_message _("Compute resource deleted")
86
83
  failure_message _("Could not delete the compute resource")
87
84
 
88
- apipie_options
85
+ build_options
89
86
  end
90
87
 
91
88
 
@@ -11,7 +11,7 @@ module HammerCLIForeman
11
11
  field :name, _("Name")
12
12
  end
13
13
 
14
- apipie_options
14
+ build_options
15
15
  end
16
16
 
17
17
 
@@ -20,60 +20,48 @@ module HammerCLIForeman
20
20
  output ListCommand.output_definition do
21
21
  field :fullname, _("Description")
22
22
  field :dns_id, _("DNS Id")
23
- field :created_at, _("Created at"), Fields::Date
24
- field :updated_at, _("Updated at"), Fields::Date
25
- collection :parameters, _("Parameters") do
26
- field nil, nil, Fields::KeyValue
27
- end
23
+ HammerCLIForeman::References.subnets(self)
24
+ HammerCLIForeman::References.taxonomies(self)
25
+ HammerCLIForeman::References.parameters(self)
26
+ HammerCLIForeman::References.timestamps(self)
28
27
  end
29
28
 
30
- def extend_data(record)
31
- record["parameters"] = HammerCLIForeman::Parameter.get_parameters(resource_config, :domain, record)
32
- record
33
- end
34
-
35
- apipie_options
29
+ build_options
36
30
  end
37
31
 
38
32
 
39
33
  class CreateCommand < HammerCLIForeman::CreateCommand
40
34
 
41
- success_message _("Domain [%{name}s] created")
35
+ success_message _("Domain [%{name}] created")
42
36
  failure_message _("Could not create the domain")
43
37
 
44
- apipie_options :without => [:domain_parameters_attributes, :fullname]
45
38
  option "--description", "DESC", _("Full name describing the domain"), :attribute_name => :option_fullname
39
+ build_options :without => [:domain_parameters_attributes, :fullname]
46
40
  end
47
41
 
48
42
 
49
43
  class UpdateCommand < HammerCLIForeman::UpdateCommand
50
44
 
51
- success_message _("Domain [%{name}s] updated")
45
+ success_message _("Domain [%{name}] updated")
52
46
  failure_message _("Could not update the domain")
53
47
 
54
- apipie_options :without => [:domain_parameters_attributes, :name, :id, :fullname]
55
48
  option "--description", "DESC", _("Full name describing the domain"), :attribute_name => :option_fullname
49
+ build_options :without => [:domain_parameters_attributes, :fullname]
56
50
  end
57
51
 
58
52
 
59
53
  class DeleteCommand < HammerCLIForeman::DeleteCommand
60
54
 
61
- success_message _("Domain [%{name}s] deleted")
55
+ success_message _("Domain [%{name}] deleted")
62
56
  failure_message _("Could not delete the domain")
63
57
 
64
- apipie_options
58
+ build_options
65
59
  end
66
60
 
67
61
 
68
62
  class SetParameterCommand < HammerCLIForeman::Parameter::SetCommand
69
-
70
- resource :parameters
71
-
72
63
  desc _("Create or update parameter for a domain.")
73
64
 
74
- option "--domain-name", "DOMAIN_NAME", _("name of the domain the parameter is being set for")
75
- option "--domain-id", "DOMAIN_ID", _("id of the domain the parameter is being set for")
76
-
77
65
  success_message_for :update, _("Domain parameter updated")
78
66
  success_message_for :create, _("New domain parameter created")
79
67
  failure_message _("Could not set domain parameter")
@@ -83,23 +71,13 @@ module HammerCLIForeman
83
71
  validator.any(:option_domain_name, :option_domain_id).required
84
72
  end
85
73
 
86
- def base_action_params
87
- {
88
- "domain_id" => option_domain_id || option_domain_name
89
- }
90
- end
74
+ build_options
91
75
  end
92
76
 
93
77
 
94
78
  class DeleteParameterCommand < HammerCLIForeman::Parameter::DeleteCommand
95
-
96
- resource :parameters
97
-
98
79
  desc _("Delete parameter for a domain.")
99
80
 
100
- option "--domain-name", "DOMAIN_NAME", _("name of the domain the parameter is being deleted for")
101
- option "--domain-id", "DOMAIN_ID", _("id of the domain the parameter is being deleted for")
102
-
103
81
  success_message _("Domain parameter deleted")
104
82
 
105
83
  def validate_options
@@ -107,11 +85,7 @@ module HammerCLIForeman
107
85
  validator.any(:option_domain_name, :option_domain_id).required
108
86
  end
109
87
 
110
- def base_action_params
111
- {
112
- "domain_id" => option_domain_id || option_domain_name
113
- }
114
- end
88
+ build_options
115
89
  end
116
90
 
117
91
  autoload_subcommands
@@ -15,52 +15,47 @@ module HammerCLIForeman
15
15
  field :name, _("Name")
16
16
  end
17
17
 
18
- apipie_options
18
+ build_options
19
19
  end
20
20
 
21
21
 
22
22
  class InfoCommand < HammerCLIForeman::InfoCommand
23
-
24
23
  output ListCommand.output_definition do
25
- field :created_at, _("Created at"), Fields::Date
26
- field :updated_at, _("Updated at"), Fields::Date
24
+ HammerCLIForeman::References.puppetclasses(self)
25
+ HammerCLIForeman::References.taxonomies(self)
26
+ HammerCLIForeman::References.timestamps(self)
27
27
  end
28
28
 
29
- apipie_options
29
+ build_options
30
30
  end
31
31
 
32
32
 
33
33
  class CreateCommand < HammerCLIForeman::CreateCommand
34
-
35
34
  success_message _("Environment created")
36
35
  failure_message _("Could not create the environment")
37
36
 
38
- apipie_options
37
+ build_options
39
38
  end
40
39
 
41
40
 
42
41
  class UpdateCommand < HammerCLIForeman::UpdateCommand
43
-
44
42
  success_message _("Environment updated")
45
43
  failure_message _("Could not update the environment")
46
44
 
47
- apipie_options
45
+ build_options
48
46
  end
49
47
 
50
48
 
51
49
  class DeleteCommand < HammerCLIForeman::DeleteCommand
52
-
53
50
  success_message _("Environment deleted")
54
51
  failure_message _("Could not delete the environment")
55
52
 
56
- apipie_options
53
+ build_options
57
54
  end
58
55
 
59
56
  class SCParamsCommand < HammerCLIForeman::SmartClassParametersList
60
-
61
- apipie_options :without => [:host_id, :hostgroup_id, :puppetclass_id, :environment_id]
62
- option ['--id', '--name'], 'ENVIRONMENT_ID', _('environment id/name'),
63
- :required => true, :attribute_name => :environment_id
57
+ parent_resource :environments
58
+ build_options
64
59
  end
65
60
 
66
61
 
@@ -2,6 +2,10 @@ module HammerCLIForeman
2
2
 
3
3
  class OperationNotSupportedError < StandardError; end
4
4
 
5
+ # Resolver exceptions
6
+ class ResolverError < StandardError; end
7
+ class MissingSeachOptions < ResolverError; end
8
+
5
9
  end
6
10
 
7
11
 
@@ -6,7 +6,7 @@ module HammerCLIForeman
6
6
 
7
7
  resource :fact_values, :index
8
8
 
9
- apipie_options
9
+ build_options
10
10
 
11
11
  output do
12
12
  field :host, _("Host")
@@ -14,17 +14,17 @@ module HammerCLIForeman
14
14
  field :value, _("Value")
15
15
  end
16
16
 
17
- def retrieve_data
17
+ def send_request
18
18
  self.class.unhash_facts(super)
19
19
  end
20
20
 
21
- def self.unhash_facts(facts_hash)
22
- facts = facts_hash.first.inject([]) do |list, (host, facts)|
21
+ def self.unhash_facts(facts_collection)
22
+ facts = facts_collection.first.inject([]) do |list, (host, facts)|
23
23
  list + facts.collect do |(fact, value)|
24
24
  { :host => host, :fact => fact, :value => value }
25
25
  end
26
26
  end
27
- HammerCLI::Output::RecordCollection.new(facts, :meta => facts_hash.meta)
27
+ HammerCLI::Output::RecordCollection.new(facts, :meta => facts_collection.meta)
28
28
  end
29
29
  end
30
30
 
@@ -9,20 +9,6 @@ module HammerCLIForeman
9
9
  module CommonHostUpdateOptions
10
10
 
11
11
  def self.included(base)
12
- base.apipie_options :without => [:host_parameters_attributes, :environment_id, :architecture_id, :domain_id,
13
- :puppet_proxy_id, :operatingsystem_id,
14
- # - temporarily disabled params until we add support for boolean options to apipie -
15
- :build, :managed, :enabled, :start,
16
- # - temporarily disabled params until they are fixed in API
17
- :puppet_class_ids, #3884
18
- # - temporarily disabled params that will be removed from the api ------------------
19
- :provision_method, :capabilities, :flavour_ref, :image_ref, :start,
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,
23
- # ----------------------------------------------------------------------------------
24
- :compute_resource_id, :ptable_id] + base.declared_identifiers.keys
25
-
26
12
  base.option "--environment-id", "ENVIRONMENT_ID", " "
27
13
  base.option "--architecture-id", "ARCHITECTURE_ID", " "
28
14
  base.option "--domain-id", "DOMAIN_ID", " "
@@ -30,7 +16,6 @@ module HammerCLIForeman
30
16
  base.option "--operatingsystem-id", "OPERATINGSYSTEM_ID", " "
31
17
  base.option "--partition-table-id", "PARTITION_TABLE_ID", " "
32
18
  base.option "--compute-resource-id", "COMPUTE_RESOURCE", " "
33
- base.option "--partition-table-id", "PARTITION_TABLE", " "
34
19
  base.option "--puppetclass-ids", "PUPPETCLASS_IDS", " ",
35
20
  :format => HammerCLI::Options::Normalizers::List.new
36
21
  base.option "--root-password", "ROOT_PW", " "
@@ -58,6 +43,18 @@ module HammerCLIForeman
58
43
  :format => HammerCLI::Options::Normalizers::KeyValueList.new
59
44
  base.option "--provision-method", "METHOD", " ",
60
45
  :format => HammerCLI::Options::Normalizers::Enum.new(['build', 'image'])
46
+
47
+ base.build_options :without => [
48
+ # - temporarily disabled params until they are fixed in API ------------------------
49
+ # issue #3884
50
+ :puppet_class_ids,
51
+ # - temporarily disabled params that will be removed from the api ------------------
52
+ :provision_method, :capabilities, :flavour_ref, :image_ref, :start,
53
+ :network, :cpus, :memory, :provider, :type, :tenant_id, :image_id,
54
+ # - avoids future conflicts as :root_pass is currently missing in the api docs
55
+ :root_pass,
56
+ # ----------------------------------------------------------------------------------
57
+ :ptable_id, :host_parameters_attributes]
61
58
  end
62
59
 
63
60
  def self.ask_password
@@ -126,21 +123,24 @@ module HammerCLIForeman
126
123
  output do
127
124
  field :id, _("Id")
128
125
  field :name, _("Name")
129
- field :operatingsystem_id, _("Operating System Id")
130
- field :hostgroup_id, _("Host Group Id")
126
+ field nil, _("Operating System"), Fields::SingleReference, :key => :operatingsystem
127
+ field nil, _("Host Group"), Fields::SingleReference, :key => :hostgroup
131
128
  field :ip, _("IP")
132
129
  field :mac, _("MAC")
133
130
  end
134
131
 
135
- apipie_options
132
+ build_options
136
133
  end
137
134
 
138
135
 
139
136
  class InfoCommand < HammerCLIForeman::InfoCommand
140
137
 
141
138
  def extend_data(host)
142
- host["environment_name"] = host["environment"]["environment"]["name"] rescue nil
143
- host["parameters"] = HammerCLIForeman::Parameter.get_parameters(resource_config, :host, host)
139
+ # FIXME: temporary fetching parameters until the api gets fixed.
140
+ # Noramlly they should come in the host's json.
141
+ # http://projects.theforeman.org/issues/5820
142
+ host["parameters"] = get_parameters(host["id"])
143
+
144
144
  host["_bmc_interfaces"] =
145
145
  host["interfaces"].select{|intfs| intfs["type"] == "Nic::BMC" } rescue []
146
146
  host["_managed_interfaces"] =
@@ -148,12 +148,16 @@ module HammerCLIForeman
148
148
  host
149
149
  end
150
150
 
151
+ def get_parameters(host_id)
152
+ params = HammerCLIForeman.foreman_resource(:parameters).call(:index, :host_id => host_id)
153
+ HammerCLIForeman.collection_to_common_format(params)
154
+ end
155
+
151
156
  output ListCommand.output_definition do
152
157
  field :uuid, _("UUID")
153
158
  field :certname, _("Cert name")
154
159
 
155
- field :environment_name, _("Environment")
156
- field :environment_id, _("Environment Id")
160
+ field nil, _("Environment"), Fields::SingleReference, :key => :environment
157
161
 
158
162
  field :managed, _("Managed")
159
163
  field :enabled, _("Enabled")
@@ -166,33 +170,27 @@ module HammerCLIForeman
166
170
  field :sp_name, _("SP Name")
167
171
  field :sp_ip, _("SP IP")
168
172
  field :sp_mac, _("SP MAC")
169
- field :sp_subnet, _("SP Subnet")
170
- field :sp_subnet_id, _("SP Subnet Id")
171
173
 
172
- field :created_at, _("Created at"), Fields::Date
173
- field :updated_at, _("Updated at"), Fields::Date
174
+ field nil, _("SP Subnet"), Fields::SingleReference, :key => :sp_subnet
175
+
174
176
  field :installed_at, _("Installed at"), Fields::Date
175
177
  field :last_report, _("Last report"), Fields::Date
176
178
 
177
179
  field :puppet_ca_proxy_id, _("Puppet CA Proxy Id")
178
- field :medium_id, _("Medium Id")
179
- field :model_id, _("Model Id")
180
+ field nil, _("Medium"), Fields::SingleReference, :key => :medium
181
+ field nil, _("Model"), Fields::SingleReference, :key => :model
180
182
  field :owner_id, _("Owner Id")
181
- field :subnet_id, _("Subnet Id")
182
- field :domain_id, _("Domain Id")
183
+ field nil, _("Subnet"), Fields::SingleReference, :key => :subnet
184
+ field nil, _("Domain"), Fields::SingleReference, :key => :domain
183
185
  field :puppet_proxy_id, _("Puppet Proxy Id")
184
186
  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")
187
+ field nil, _("Partition Table"), Fields::SingleReference, :key => :ptable
188
+ field nil, _("Architecture"), Fields::SingleReference, :key => :architecture
189
+ field nil, _("Image"), Fields::SingleReference, :key => :image
190
+ field nil, _("Compute Resource"), Fields::SingleReference, :key => :compute_resource
189
191
 
190
192
  field :comment, _("Comment")
191
193
 
192
- collection :parameters, _("Parameters") do
193
- field nil, nil, Fields::KeyValue
194
- end
195
-
196
194
  collection :_bmc_interfaces, _("BMC Network Interfaces"), :hide_blank => true do
197
195
  field :id, _("Id")
198
196
  field :name, _("Name")
@@ -217,24 +215,24 @@ module HammerCLIForeman
217
215
  field :subnet_name, _("Subnet Name")
218
216
  end
219
217
 
218
+ HammerCLIForeman::References.parameters(self)
219
+ HammerCLIForeman::References.timestamps(self)
220
220
  end
221
221
 
222
- apipie_options
222
+ build_options
223
223
  end
224
224
 
225
225
 
226
- class StatusCommand < HammerCLI::Apipie::ReadCommand
227
-
228
- identifiers :id, :name
229
-
226
+ class StatusCommand < HammerCLIForeman::SingleResourceCommand
230
227
  command_name "status"
228
+ action :status
231
229
 
232
230
  output do
233
231
  field :status, _("Status")
234
232
  field :power, _("Power")
235
233
  end
236
234
 
237
- def retrieve_data
235
+ def send_request
238
236
  {
239
237
  :status => get_status,
240
238
  :power => get_power_status
@@ -243,7 +241,7 @@ module HammerCLIForeman
243
241
 
244
242
  def get_status
245
243
  params = {
246
- 'id' => get_identifier[0],
244
+ 'id' => get_identifier,
247
245
  }
248
246
  status = resource.call(:status, params)
249
247
  status["status"]
@@ -251,19 +249,18 @@ module HammerCLIForeman
251
249
 
252
250
  def get_power_status
253
251
  params = {
254
- 'id' => get_identifier[0],
252
+ 'id' => get_identifier,
255
253
  'power_action' => :state
256
254
  }
257
255
  status = resource.call(:power, params)
258
256
  status["power"]
259
257
  end
260
258
 
261
- apipie_options
259
+ build_options
262
260
  end
263
261
 
264
262
 
265
- class PuppetRunCommand < HammerCLIForeman::InfoCommand
266
-
263
+ class PuppetRunCommand < HammerCLIForeman::SingleResourceCommand
267
264
  command_name "puppetrun"
268
265
  action :puppetrun
269
266
 
@@ -271,77 +268,54 @@ module HammerCLIForeman
271
268
  print_message _('Puppet run triggered')
272
269
  end
273
270
 
274
- apipie_options
271
+ build_options
275
272
  end
276
273
 
277
274
 
278
- class FactsCommand < HammerCLIForeman::ListCommand
279
-
275
+ class FactsCommand < HammerCLIForeman::AssociatedResourceListCommand
280
276
  command_name "facts"
281
277
  resource :fact_values, :index
282
- identifiers :id, :name
283
-
284
- apipie_options :without => declared_identifiers.keys
278
+ parent_resource :hosts
285
279
 
286
280
  output do
287
281
  field :fact, _("Fact")
288
282
  field :value, _("Value")
289
283
  end
290
284
 
291
- def request_params
292
- params = method_options
293
- params['host_id'] = get_identifier[0]
294
- params
295
- end
296
-
297
- def retrieve_data
298
- data = super
299
- HammerCLIForeman::Fact::ListCommand.unhash_facts(data)
285
+ def send_request
286
+ HammerCLIForeman::Fact::ListCommand.unhash_facts(super)
300
287
  end
301
288
 
289
+ build_options
302
290
  end
303
291
 
304
292
 
305
- class PuppetClassesCommand < HammerCLIForeman::ListCommand
306
-
293
+ class PuppetClassesCommand < HammerCLIForeman::AssociatedResourceListCommand
307
294
  command_name "puppet-classes"
308
- resource :puppetclasses
309
-
310
- identifiers :id, :name
295
+ resource :puppetclasses, :index
296
+ parent_resource :hosts
311
297
 
312
298
  output HammerCLIForeman::PuppetClass::ListCommand.output_definition
313
299
 
314
- def retrieve_data
300
+ def send_request
315
301
  HammerCLIForeman::PuppetClass::ListCommand.unhash_classes(super)
316
302
  end
317
303
 
318
- def request_params
319
- params = method_options
320
- params['host_id'] = get_identifier[0]
321
- params
322
- end
323
-
324
- apipie_options
304
+ build_options :without => [:host_id, :hostgroup_id, :environment_id]
325
305
  end
326
306
 
327
307
 
328
- class ReportsCommand < HammerCLIForeman::ListCommand
329
-
330
- identifiers :id, :name
331
-
308
+ class ReportsCommand < HammerCLIForeman::AssociatedResourceListCommand
332
309
  command_name "reports"
333
- resource :reports
334
- output HammerCLIForeman::Report::ListCommand.output_definition
310
+ resource :reports, :index
311
+ parent_resource :hosts
335
312
 
336
- apipie_options :without => :search
313
+ output HammerCLIForeman::Report::ListCommand.output_definition
337
314
 
338
- def search
339
- 'host.id = %s' % get_identifier[0].to_s
340
- end
315
+ build_options
341
316
  end
342
317
 
343
318
  class CreateCommand < HammerCLIForeman::CreateCommand
344
-
345
319
  success_message _("Host created")
346
320
  failure_message _("Could not create the host")
347
321
 
@@ -364,7 +338,6 @@ module HammerCLIForeman
364
338
 
365
339
 
366
340
  class UpdateCommand < HammerCLIForeman::UpdateCommand
367
-
368
341
  success_message _("Host updated")
369
342
  failure_message _("Could not update the host")
370
343
 
@@ -373,23 +346,16 @@ module HammerCLIForeman
373
346
 
374
347
 
375
348
  class DeleteCommand < HammerCLIForeman::DeleteCommand
376
-
377
349
  success_message _("Host deleted")
378
350
  failure_message _("Could not delete the host")
379
351
 
380
- apipie_options
352
+ build_options
381
353
  end
382
354
 
383
355
 
384
356
  class SetParameterCommand < HammerCLIForeman::Parameter::SetCommand
385
-
386
- resource :parameters
387
-
388
357
  desc _("Create or update parameter for a host.")
389
358
 
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")
392
-
393
359
  success_message_for :update, _("Host parameter updated")
394
360
  success_message_for :create, _("New host parameter created")
395
361
  failure_message _("Could not set host parameter")
@@ -399,23 +365,13 @@ module HammerCLIForeman
399
365
  validator.any(:option_host_name, :option_host_id).required
400
366
  end
401
367
 
402
- def base_action_params
403
- {
404
- "host_id" => option_host_id || option_host_name
405
- }
406
- end
368
+ build_options
407
369
  end
408
370
 
409
371
 
410
372
  class DeleteParameterCommand < HammerCLIForeman::Parameter::DeleteCommand
411
-
412
- resource :parameters
413
-
414
373
  desc _("Delete parameter for a host.")
415
374
 
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")
418
-
419
375
  success_message _("Host parameter deleted")
420
376
 
421
377
  def validate_options
@@ -423,17 +379,11 @@ module HammerCLIForeman
423
379
  validator.any(:option_host_name, :option_host_id).required
424
380
  end
425
381
 
426
- def base_action_params
427
- {
428
- "host_id" => option_host_id || option_host_name
429
- }
430
- end
382
+ build_options
431
383
  end
432
384
 
433
385
 
434
- class StartCommand < HammerCLI::Apipie::WriteCommand
435
-
436
- identifiers :id, :name
386
+ class StartCommand < HammerCLIForeman::SingleResourceCommand
437
387
  action :power
438
388
 
439
389
  command_name "start"
@@ -446,19 +396,17 @@ module HammerCLIForeman
446
396
 
447
397
  def request_params
448
398
  params = method_options
449
- params['id'] = get_identifier[0]
399
+ params['id'] = get_identifier
450
400
  params
451
401
  end
452
402
 
453
- apipie_options :without => :power_action
403
+ build_options :without => :power_action
454
404
  end
455
405
 
456
406
 
457
- class StopCommand < HammerCLI::Apipie::WriteCommand
458
-
407
+ class StopCommand < HammerCLIForeman::SingleResourceCommand
459
408
  option '--force', :flag, _("Force turning off a host")
460
409
 
461
- identifiers :id, :name
462
410
  action :power
463
411
 
464
412
  command_name "stop"
@@ -482,16 +430,14 @@ module HammerCLIForeman
482
430
 
483
431
  def request_params
484
432
  params = method_options
485
- params['id'] = get_identifier[0]
433
+ params['id'] = get_identifier
486
434
  params
487
435
  end
488
436
 
489
- apipie_options :without => :power_action
437
+ build_options :without => :power_action
490
438
  end
491
439
 
492
- class RebootCommand < HammerCLI::Apipie::WriteCommand
493
-
494
- identifiers :id, :name
440
+ class RebootCommand < HammerCLIForeman::SingleResourceCommand
495
441
  action :power
496
442
 
497
443
  command_name "reboot"
@@ -504,18 +450,16 @@ module HammerCLIForeman
504
450
 
505
451
  def request_params
506
452
  params = method_options
507
- params['id'] = get_identifier[0]
453
+ params['id'] = get_identifier
508
454
  params
509
455
  end
510
456
 
511
- apipie_options :without => :power_action
457
+ build_options :without => :power_action
512
458
  end
513
459
 
514
460
  class SCParamsCommand < HammerCLIForeman::SmartClassParametersList
515
-
516
- apipie_options :without => [:host_id, :hostgroup_id, :puppetclass_id, :environment_id]
517
- option ['--id', '--name'], 'HOST_ID', _('host id/name'),
518
- :attribute_name => :option_host_id, :required => true
461
+ parent_resource :hosts
462
+ build_options
519
463
  end
520
464
 
521
465
  autoload_subcommands