hammer_cli_foreman 2.3.2 → 3.0.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.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/doc/release_notes.md +33 -3
  3. data/lib/hammer_cli_foreman.rb +3 -21
  4. data/lib/hammer_cli_foreman/associating_commands.rb +0 -24
  5. data/lib/hammer_cli_foreman/bookmark.rb +1 -1
  6. data/lib/hammer_cli_foreman/combination.rb +3 -13
  7. data/lib/hammer_cli_foreman/command_extensions.rb +1 -2
  8. data/lib/hammer_cli_foreman/command_extensions/ping.rb +21 -2
  9. data/lib/hammer_cli_foreman/command_extensions/status.rb +1 -1
  10. data/lib/hammer_cli_foreman/command_extensions/update_common.rb +14 -0
  11. data/lib/hammer_cli_foreman/commands.rb +16 -9
  12. data/lib/hammer_cli_foreman/compute_resource.rb +22 -0
  13. data/lib/hammer_cli_foreman/compute_resource/ovirt.rb +2 -1
  14. data/lib/hammer_cli_foreman/config_report.rb +2 -0
  15. data/lib/hammer_cli_foreman/filter.rb +2 -2
  16. data/lib/hammer_cli_foreman/host.rb +1 -47
  17. data/lib/hammer_cli_foreman/hostgroup.rb +2 -53
  18. data/lib/hammer_cli_foreman/hosts/common_update_options.rb +7 -28
  19. data/lib/hammer_cli_foreman/id_resolver.rb +0 -61
  20. data/lib/hammer_cli_foreman/location.rb +0 -6
  21. data/lib/hammer_cli_foreman/operating_system.rb +2 -1
  22. data/lib/hammer_cli_foreman/option_builders.rb +6 -5
  23. data/lib/hammer_cli_foreman/option_sources.rb +0 -1
  24. data/lib/hammer_cli_foreman/option_sources/id_params.rb +27 -10
  25. data/lib/hammer_cli_foreman/option_sources/ids_params.rb +25 -6
  26. data/lib/hammer_cli_foreman/organization.rb +0 -6
  27. data/lib/hammer_cli_foreman/ping.rb +6 -1
  28. data/lib/hammer_cli_foreman/references.rb +0 -16
  29. data/lib/hammer_cli_foreman/registration.rb +18 -0
  30. data/lib/hammer_cli_foreman/smart_proxy.rb +0 -52
  31. data/lib/hammer_cli_foreman/version.rb +1 -1
  32. data/lib/minitest/coverage_reporter.rb +1 -1
  33. data/locale/ca/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  34. data/locale/de/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  35. data/locale/en/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  36. data/locale/en_GB/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  37. data/locale/es/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  38. data/locale/fr/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  39. data/locale/it/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  40. data/locale/ja/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  41. data/locale/ko/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  42. data/locale/pt_BR/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  43. data/locale/ru/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  44. data/locale/zh_CN/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  45. data/locale/zh_TW/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  46. data/test/data/2.4/foreman_api.json +1 -0
  47. data/test/data/2.5/foreman_api.json +1 -0
  48. data/test/functional/architecture_test.rb +81 -0
  49. data/test/functional/bookmark_test.rb +24 -1
  50. data/test/functional/compute_profile_test.rb +56 -0
  51. data/test/functional/compute_resource_test.rb +37 -0
  52. data/test/functional/filter_test.rb +115 -47
  53. data/test/functional/host_test.rb +94 -13
  54. data/test/functional/hostgroup/create_test.rb +0 -117
  55. data/test/functional/hostgroup/update_test.rb +0 -79
  56. data/test/functional/http_proxy_test.rb +12 -0
  57. data/test/functional/location_test.rb +13 -3
  58. data/test/functional/mail_notification_test.rb +22 -0
  59. data/test/functional/media_test.rb +11 -0
  60. data/test/functional/model_test.rb +52 -0
  61. data/test/functional/operating_system_test.rb +53 -0
  62. data/test/functional/ping_test.rb +33 -0
  63. data/test/functional/realm_test.rb +11 -0
  64. data/test/functional/registration_test.rb +8 -0
  65. data/test/functional/report_template_test.rb +11 -0
  66. data/test/functional/settings_test.rb +21 -0
  67. data/test/functional/status_test.rb +79 -13
  68. data/test/functional/template_test.rb +16 -37
  69. data/test/functional/user_test.rb +11 -0
  70. data/test/functional/usergroup_test.rb +53 -0
  71. data/test/test_helper.rb +1 -1
  72. data/test/unit/apipie_resource_mock.rb +22 -39
  73. data/test/unit/architecture_test.rb +10 -1
  74. data/test/unit/bookmark_test.rb +95 -0
  75. data/test/unit/compute_profile_test.rb +87 -0
  76. data/test/unit/config_report_test.rb +1 -0
  77. data/test/unit/helpers/command.rb +0 -8
  78. data/test/unit/host_test.rb +14 -61
  79. data/test/unit/hostgroup_test.rb +7 -26
  80. data/test/unit/id_resolver_test.rb +0 -28
  81. data/test/unit/mail_notification_test.rb +53 -0
  82. data/test/unit/model_test.rb +47 -37
  83. data/test/unit/operating_system_test.rb +10 -3
  84. data/test/unit/option_sources/id_params_test.rb +9 -0
  85. data/test/unit/option_sources/ids_params_test.rb +9 -0
  86. data/test/unit/settings_test.rb +4 -0
  87. data/test/unit/smart_proxy_test.rb +0 -12
  88. data/test/unit/usergroup_test.rb +10 -0
  89. metadata +76 -73
  90. data/lib/hammer_cli_foreman/command_extensions/puppet_environment.rb +0 -29
  91. data/lib/hammer_cli_foreman/command_extensions/puppet_environments.rb +0 -29
  92. data/lib/hammer_cli_foreman/config_group.rb +0 -45
  93. data/lib/hammer_cli_foreman/option_sources/puppet_environment_params.rb +0 -59
  94. data/lib/hammer_cli_foreman/puppet_class.rb +0 -61
  95. data/lib/hammer_cli_foreman/puppet_environment.rb +0 -65
  96. data/lib/hammer_cli_foreman/smart_class_parameter.rb +0 -189
  97. data/test/functional/proxy_test.rb +0 -86
  98. data/test/functional/smart_class_parameter_test.rb +0 -97
  99. data/test/unit/config_group_test.rb +0 -72
  100. data/test/unit/puppet_class_test.rb +0 -72
  101. data/test/unit/puppet_environment_test.rb +0 -114
  102. data/test/unit/smart_class_parameter_test.rb +0 -113
@@ -1,25 +1,12 @@
1
- require 'hammer_cli_foreman/smart_class_parameter'
2
- require 'hammer_cli_foreman/puppet_class'
3
-
4
1
  module HammerCLIForeman
5
2
 
6
3
  module HostgroupUpdateCreateCommons
7
4
 
8
5
  def self.included(base)
9
- base.option "--puppet-class-ids", "PUPPETCLASS_IDS", _("List of puppetclass ids"),
10
- :format => HammerCLI::Options::Normalizers::List.new,
11
- :attribute_name => :option_puppetclass_ids
12
- base.option "--puppet-classes", "PUPPET_CLASS_NAMES", "",
13
- :format => HammerCLI::Options::Normalizers::List.new,
14
- :attribute_name => :option_puppetclass_names
15
- base.option "--puppet-ca-proxy", "PUPPET_CA_PROXY_NAME", _("Name of puppet CA proxy")
16
- base.option "--puppet-proxy", "PUPPET_PROXY_NAME", _("Name of puppet proxy")
17
6
  base.option "--parent", "PARENT_NAME", _("Name of parent hostgroup")
18
- base.option ["--root-password", "--root-pass"], "ROOT_PASSWORD", _("Root password"),
19
- deprecated: { '--root-pass' => _("Use --root-password instead") }
7
+ base.option ["--root-password"], "ROOT_PASSWORD", _("Root password")
20
8
  base.option ["--ask-root-password", "--ask-root-pass"], "ASK_ROOT_PW", "",
21
- format: HammerCLI::Options::Normalizers::Bool.new,
22
- deprecated: { '--ask-root-pass' => _("Use --ask-root-password instead") }
9
+ format: HammerCLI::Options::Normalizers::Bool.new
23
10
  base.option "--subnet6", "SUBNET6_NAME", _("Subnet IPv6 name")
24
11
 
25
12
  base.build_options without: %i[root_pass]
@@ -33,8 +20,6 @@ module HammerCLIForeman
33
20
  def request_params
34
21
  params = super
35
22
  params['hostgroup']["parent_id"] ||= resolver.hostgroup_id('option_name' => option_parent) if option_parent
36
- params['hostgroup']["puppet_proxy_id"] ||= proxy_id(option_puppet_proxy) if option_puppet_proxy
37
- params['hostgroup']["puppet_ca_proxy_id"] ||= proxy_id(option_puppet_ca_proxy) if option_puppet_ca_proxy
38
23
 
39
24
  params['hostgroup']['root_pass'] = option_root_password if option_root_password
40
25
  params['hostgroup']['root_pass'] = HammerCLIForeman::HostgroupUpdateCreateCommons::ask_password if option_ask_root_password
@@ -61,7 +46,6 @@ module HammerCLIForeman
61
46
  field :name, _("Name")
62
47
  field :title, _("Title")
63
48
  field nil, _("Operating System"), Fields::SingleReference, :key => :operatingsystem
64
- field nil, _("Puppet Environment"), Fields::SingleReference, :key => :environment
65
49
  field nil, _("Model"), Fields::SingleReference, :key => :model
66
50
  end
67
51
 
@@ -75,13 +59,10 @@ module HammerCLIForeman
75
59
  field :id, _("Id")
76
60
  field :name, _("Name")
77
61
  field :title, _("Title")
78
- field nil, _("Puppet Environment"), Fields::SingleReference, :key => :environment
79
62
  field nil, _("Model"), Fields::SingleReference, :key => :model
80
63
 
81
64
  field :description, _("Description"), Fields::LongText, :hide_blank => true
82
65
  field nil, _("Parent"), Fields::SingleReference, :key => :parent, :hide_blank => true
83
- field nil, _("Puppet CA Proxy"), Fields::SingleReference, :key => :puppet_ca_proxy
84
- field nil, _("Puppet Master Proxy"), Fields::SingleReference, :key => :puppet_proxy
85
66
  field nil, _("Compute Profile"), Fields::SingleReference, :key => :compute_profile
86
67
  field nil, _("Compute Resource"), Fields::SingleReference, :key => :compute_resource
87
68
  label _('Network') do
@@ -97,7 +78,6 @@ module HammerCLIForeman
97
78
  field nil, _("Partition Table"), Fields::SingleReference, :key => :ptable
98
79
  field :pxe_loader, _("PXE Loader"), Fields::Field, :hide_blank => true
99
80
  end
100
- HammerCLIForeman::References.puppetclasses(self)
101
81
  HammerCLIForeman::References.parameters(self)
102
82
  HammerCLIForeman::References.taxonomies(self)
103
83
  end
@@ -111,8 +91,6 @@ module HammerCLIForeman
111
91
 
112
92
  success_message _("Hostgroup created.")
113
93
  failure_message _("Could not create the hostgroup")
114
-
115
- extend_with(HammerCLIForeman::CommandExtensions::PuppetEnvironment.new)
116
94
  end
117
95
 
118
96
 
@@ -121,8 +99,6 @@ module HammerCLIForeman
121
99
 
122
100
  success_message _("Hostgroup updated.")
123
101
  failure_message _("Could not update the hostgroup")
124
-
125
- extend_with(HammerCLIForeman::CommandExtensions::PuppetEnvironment.new)
126
102
  end
127
103
 
128
104
 
@@ -133,24 +109,6 @@ module HammerCLIForeman
133
109
  build_options
134
110
  end
135
111
 
136
-
137
- class PuppetClassesCommand < HammerCLIForeman::ListCommand
138
- command_name "puppet-classes"
139
- resource :puppetclasses
140
-
141
- output HammerCLIForeman::PuppetClass::ListCommand.output_definition
142
-
143
- def send_request
144
- HammerCLIForeman::PuppetClass::ListCommand.unhash_classes(super)
145
- end
146
-
147
- build_options do |o|
148
- o.without(:host_id, :environment_id)
149
- o.expand.only(:hostgroups)
150
- end
151
- end
152
-
153
-
154
112
  class SetParameterCommand < HammerCLIForeman::Parameter::SetCommand
155
113
  desc _("Create or update parameter for a hostgroup")
156
114
 
@@ -170,15 +128,6 @@ module HammerCLIForeman
170
128
  build_options
171
129
  end
172
130
 
173
- class SCParamsCommand < HammerCLIForeman::SmartClassParametersList
174
- build_options_for :hostgroups
175
-
176
- def validate_options
177
- super
178
- validator.any(:option_hostgroup_name, :option_hostgroup_id).required
179
- end
180
- end
181
-
182
131
  class RebuildConfigCommand < HammerCLIForeman::SingleResourceCommand
183
132
  action :rebuild_config
184
133
  command_name "rebuild-config"
@@ -6,7 +6,7 @@ module HammerCLIForeman
6
6
  base.option "--owner", "OWNER_LOGIN", _("Login of the owner"),
7
7
  :attribute_name => :option_user_login
8
8
  base.option "--owner-id", "OWNER_ID", _("ID of the owner"),
9
- :attribute_name => :option_user_id
9
+ :attribute_name => :option_owner_id
10
10
 
11
11
  base.option "--root-password", "ROOT_PW",
12
12
  _("Required if host is managed and value is not inherited from host group or default password in settings")
@@ -14,22 +14,6 @@ module HammerCLIForeman
14
14
  base.option "--ask-root-password", "ASK_ROOT_PW", " ",
15
15
  :format => HammerCLI::Options::Normalizers::Bool.new
16
16
 
17
- base.option '--puppet-proxy', 'PUPPET_PROXY_NAME', '',
18
- referenced_resource: 'puppet_proxy',
19
- aliased_resource: 'puppet_proxy'
20
- base.option '--puppet-ca-proxy', 'PUPPET_CA_PROXY_NAME', '',
21
- referenced_resource: 'puppet_ca_proxy',
22
- aliased_resource: 'puppet_ca_proxy'
23
- base.option_family(
24
- format: HammerCLI::Options::Normalizers::List.new,
25
- aliased_resource: 'puppet-class',
26
- description: 'Names/Ids of associated puppet classes'
27
- ) do
28
- parent '--puppet-class-ids', 'PUPPET_CLASS_IDS', '',
29
- attribute_name: :option_puppetclass_ids
30
- child '--puppet-classes', 'PUPPET_CLASS_NAMES', '',
31
- attribute_name: :option_puppetclass_names
32
- end
33
17
  bme_options = {}
34
18
  bme_options[:default] = 'true' if base.action.to_sym == :create
35
19
 
@@ -56,7 +40,7 @@ module HammerCLIForeman
56
40
  :capabilities, :flavour_ref, :image_ref, :start,
57
41
  :network, :cpus, :memory, :provider, :type, :tenant_id, :image_id,
58
42
  # ----------------------------------------------------------------------------------
59
- :puppet_class_ids, :host_parameters_attributes, :interfaces_attributes, :root_pass]
43
+ :host_parameters_attributes, :interfaces_attributes, :root_pass]
60
44
  end
61
45
 
62
46
  def self.ask_password
@@ -69,12 +53,6 @@ module HammerCLIForeman
69
53
  owner_id = owner_id(option_user_login, params['host']['owner_type'])
70
54
  params['host']['owner_id'] ||= owner_id unless owner_id.nil?
71
55
 
72
- puppet_proxy_id = proxy_id(option_puppet_proxy)
73
- params['host']['puppet_proxy_id'] ||= puppet_proxy_id unless puppet_proxy_id.nil?
74
-
75
- puppet_ca_proxy_id = proxy_id(option_puppet_ca_proxy)
76
- params['host']['puppet_ca_proxy_id'] ||= puppet_ca_proxy_id unless puppet_ca_proxy_id.nil?
77
-
78
56
  if action == :create
79
57
  params['host']['build'] = true if option_build.nil?
80
58
  params['host']['managed'] = true if option_managed.nil?
@@ -134,13 +112,14 @@ module HammerCLIForeman
134
112
 
135
113
  private
136
114
 
137
- def owner_id(name, type = 'User')
115
+
116
+ def owner_id(name, type)
138
117
  return unless name
139
- return resolver.user_id('option_login' => name) if type == 'User'
118
+ return resolver.usergroup_id('option_name' => name) if type == 'Usergroup'
140
119
 
141
- resolver.usergroup_id('option_name' => name)
120
+ resolver.user_id('option_login' => name)
142
121
  end
143
-
122
+
144
123
  def proxy_id(name)
145
124
  resolver.smart_proxy_id('option_name' => name) if name
146
125
  end
@@ -42,8 +42,6 @@ module HammerCLIForeman
42
42
  :compute_resource => [ s_name(_("Compute resource name")) ],
43
43
  :compute_profile => [ s_name(_("Compute profile name")) ],
44
44
  :domain => [ s_name(_("Domain name")) ],
45
- :environment => [s_name(_('Puppet environment name'))],
46
- :puppet_environment => [s_name(_('Puppet environment name'))],
47
45
  :fact_value => [],
48
46
  :filter => [],
49
47
  :host => [ s_name(_("Host name")) ],
@@ -66,7 +64,6 @@ module HammerCLIForeman
66
64
  :override_value => [],
67
65
  :ptable => [ s_name(_("Partition table name")) ],
68
66
  :proxy => [ s_name(_("Proxy name")) ],
69
- :puppetclass => [ s_name(_("Puppet class name")) ],
70
67
  :config_report => [],
71
68
  :role => [ s_name(_("User role name")) ],
72
69
  :setting => [ s_name(_("Setting name"), :editable => false) ],
@@ -74,7 +71,6 @@ module HammerCLIForeman
74
71
  :template => [],
75
72
  :user => [ s("login", _("User's login to search by")) ],
76
73
  :common_parameter => [ s_name(_("Common parameter name")) ],
77
- :smart_class_parameter => [ s_name(_("Smart class parameter name"), :editable => false) ],
78
74
  :template_combination => [],
79
75
  :compute_attribute => []
80
76
  }
@@ -129,44 +125,6 @@ module HammerCLIForeman
129
125
  scoped_options
130
126
  end
131
127
 
132
- def puppetclass_ids(options)
133
- resource_name = :puppetclasses
134
- resource = @api.resource(resource_name)
135
- results = if (ids = options[HammerCLI.option_accessor_name("ids")])
136
- ids
137
- elsif (ids = nil_from_searchables(resource_name, options, :plural => true))
138
- ids
139
- elsif options_not_set?(resource, options)
140
- raise MissingSearchOptions.new(_("Missing options to search %s") % resource.name, resource)
141
- elsif options_empty?(resource, options)
142
- []
143
- else
144
- require('hammer_cli_foreman/puppet_class')
145
- results = HammerCLIForeman::PuppetClass::ListCommand.unhash_classes(
146
- resolved_call(resource_name, :index, options, :multi)
147
- )
148
- raise ResolverError.new(_("one of %s not found.") % resource.name, resource) if results.count < expected_record_count(options, resource, :multi)
149
-
150
- results.map { |r| r['id'] }
151
- end
152
- end
153
-
154
- def environment_id(options)
155
- puppet_environment_id(options)
156
- end
157
-
158
- def puppet_environment_id(options)
159
- get_id(:environments, options)
160
- end
161
-
162
- def environment_ids(options)
163
- puppet_environment_ids(options)
164
- end
165
-
166
- def puppet_environment_ids(options)
167
- get_ids(:environments, options)
168
- end
169
-
170
128
  def searchables(resource)
171
129
  resource = @api.resource(resource) if resource.is_a? Symbol
172
130
  @searchables.for(resource)
@@ -331,17 +289,6 @@ module HammerCLIForeman
331
289
  0
332
290
  end
333
291
 
334
- # puppet class search results are in non-standard format
335
- # and needs to be un-hashed first
336
- def puppetclass_id(options)
337
- return options[HammerCLI.option_accessor_name("id")] if options[HammerCLI.option_accessor_name("id")]
338
- resource = @api.resource(:puppetclasses)
339
- results = find_resource_raw(:puppetclasses, options)
340
- require('hammer_cli_foreman/puppet_class')
341
- results = HammerCLIForeman::PuppetClass::ListCommand.unhash_classes(results)
342
- pick_result(results, resource)['id']
343
- end
344
-
345
292
  def options_empty?(resource, options)
346
293
  searchables(resource).all? do |s|
347
294
  values = options[HammerCLI.option_accessor_name(s.plural_name.to_s)]
@@ -356,14 +303,6 @@ module HammerCLIForeman
356
303
  end
357
304
  end
358
305
 
359
- def create_smart_class_parameters_search_options(options, mode = nil)
360
- search_options = {}
361
- value = options[HammerCLI.option_accessor_name('name')]
362
- search_options[:search] = "key = \"#{value}\""
363
- search_options[:puppetclass_id] = puppetclass_id(scoped_options("puppetclass", options))
364
- search_options
365
- end
366
-
367
306
  # @param mode [Symbol] mode in which ids are searched :single, :multi, nil for old beahvior
368
307
  def create_search_options(options, resource, mode = nil)
369
308
  searchables(resource).each do |s|
@@ -36,7 +36,6 @@ module HammerCLIForeman
36
36
  HammerCLIForeman::References.partition_tables(self)
37
37
  HammerCLIForeman::References.domains(self)
38
38
  HammerCLIForeman::References.realms(self)
39
- HammerCLIForeman::References.environments(self)
40
39
  HammerCLIForeman::References.hostgroups(self)
41
40
  HammerCLIForeman::References.parameters(self)
42
41
  collection :organizations, _("Organizations"), :numbered => false, :hide_blank => true do
@@ -58,8 +57,6 @@ module HammerCLIForeman
58
57
  failure_message _("Could not create the location")
59
58
 
60
59
  build_options
61
-
62
- extend_with(HammerCLIForeman::CommandExtensions::PuppetEnvironments.new)
63
60
  end
64
61
 
65
62
 
@@ -72,8 +69,6 @@ module HammerCLIForeman
72
69
  failure_message _("Could not update the location")
73
70
 
74
71
  build_options
75
-
76
- extend_with(HammerCLIForeman::CommandExtensions::PuppetEnvironments.new)
77
72
  end
78
73
 
79
74
 
@@ -112,7 +107,6 @@ module HammerCLIForeman
112
107
  end
113
108
 
114
109
  HammerCLIForeman::AssociatingCommands::Hostgroup.extend_command(self)
115
- HammerCLIForeman::AssociatingCommands::PuppetEnvironment.extend_command(self)
116
110
  HammerCLIForeman::AssociatingCommands::Domain.extend_command(self)
117
111
  HammerCLIForeman::AssociatingCommands::Medium.extend_command(self)
118
112
  HammerCLIForeman::AssociatingCommands::Subnet.extend_command(self)
@@ -156,7 +156,8 @@ module HammerCLIForeman
156
156
  HammerCLI::EX_OK
157
157
  end
158
158
 
159
- build_options :without => [:template_kind_id, :type]
159
+ build_options without: [:template_kind_id, :type]
160
+
160
161
  end
161
162
 
162
163
 
@@ -224,11 +224,11 @@ module HammerCLIForeman
224
224
  resource_name = resource.singular_name
225
225
  aliased_name = aliased(resource_name, resource_name_map)
226
226
  types = searchables.map(&:name).push('id').map(&:capitalize).join('/')
227
- associated_resource = resource.singular_name.to_s.tr('_', ' ')
227
+ associated_resource = aliased_name.to_s.tr('_', ' ')
228
228
  family = HammerCLI::Options::OptionFamily.new(
229
229
  referenced_resource: resource_name,
230
230
  aliased_resource: aliased_name,
231
- description: _('Set the current %{resource} context for the request. %{types} can be used') % { types: types, resource: associated_resource }
231
+ description: _('%{types} of associated %{resource}') % { types: types, resource: associated_resource }
232
232
  )
233
233
 
234
234
  unless searchables.empty?
@@ -256,7 +256,7 @@ module HammerCLIForeman
256
256
  end
257
257
  end
258
258
 
259
- unless options.any? { |o| o.handles?("--#{aliased_name}-id") }
259
+ unless options.any? { |o| o.handles?(optionamize("--#{aliased_name}-id")) }
260
260
  options << family.parent(
261
261
  optionamize("--#{aliased_name}-id"),
262
262
  "#{aliased_name}_id".upcase,
@@ -319,7 +319,7 @@ module HammerCLIForeman
319
319
  end
320
320
  end
321
321
 
322
- unless options.any? { |o| o.handles?("--new-#{aliased_name}-id") }
322
+ unless options.any? { |o| o.handles?(optionamize("--new-#{aliased_name}-id")) }
323
323
  options << family.parent(
324
324
  optionamize("--new-#{aliased_name}-id"),
325
325
  "new_#{aliased_name}_id".upcase,
@@ -347,7 +347,7 @@ module HammerCLIForeman
347
347
  first = searchables[0]
348
348
  remaining = searchables[1..-1] || []
349
349
  types = searchables.map(&:plural_name).map(&:capitalize).join('/')
350
- associated_resource = resource.name.to_s.tr('_', ' ')
350
+ associated_resource = aliased_plural_name.to_s.tr('_', ' ')
351
351
  family = HammerCLI::Options::OptionFamily.new(
352
352
  format: HammerCLI::Options::Normalizers::List.new,
353
353
  referenced_resource: resource_name,
@@ -421,3 +421,4 @@ module HammerCLIForeman
421
421
  end
422
422
 
423
423
  end
424
+
@@ -3,6 +3,5 @@ require 'hammer_cli_foreman/option_sources/ids_params'
3
3
  require 'hammer_cli_foreman/option_sources/self_param'
4
4
  require 'hammer_cli_foreman/option_sources/user_params'
5
5
  require 'hammer_cli_foreman/option_sources/fields_params'
6
- require 'hammer_cli_foreman/option_sources/puppet_environment_params'
7
6
  require 'hammer_cli_foreman/option_sources/new_params'
8
7
  require 'hammer_cli_foreman/option_sources/referenced_resource_id_params'
@@ -13,22 +13,39 @@ module HammerCLIForeman
13
13
  IdParamsFilter.new(:only_required => false).for_action(@command.resource.action(@command.action))
14
14
  end
15
15
 
16
- def get_options(defined_options, result)
16
+ def needs_resolving?(param_option, param_resource, all_opts)
17
+ return false unless param_updatable?(param_resource)
18
+
19
+ searchables_set = @command.searchables.for(param_resource).any? do |s|
20
+ option = HammerCLI.option_accessor_name("#{param_resource.singular_name}_#{s.name}")
21
+ !all_opts[option].nil?
22
+ end
23
+ return all_opts[param_option].nil? unless searchables_set
24
+
25
+ # Remove set '<resource_name>_id' option to force resolving in case of
26
+ # '<resource_name>_[name|title]' was set
27
+ all_opts.delete(param_option)
28
+ true
29
+ end
30
+
31
+ def get_options(_defined_options, result)
17
32
  # resolve all '<resource_name>_id' parameters if they are defined as options
18
33
  # (they can be skipped using .without or .expand.except)
19
34
  return result if @command.action.nil?
35
+
20
36
  available_id_params.each do |api_param|
21
37
  param_resource = HammerCLIForeman.param_to_resource(api_param.name)
22
- if result[HammerCLI.option_accessor_name(api_param.name)].nil? && param_updatable?(param_resource)
23
- resource_id = @command.get_resource_id(param_resource, :scoped => true, :required => api_param.required?, :all_options => result)
24
- result[HammerCLI.option_accessor_name(api_param.name)] = resource_id if resource_id
25
- end
38
+ param_option = HammerCLI.option_accessor_name(api_param.name)
39
+ next unless needs_resolving?(param_option, param_resource, result)
40
+
41
+ resource_id = @command.get_resource_id(
42
+ param_resource, scoped: true, required: api_param.required?, all_options: result
43
+ )
44
+ result[param_option] = resource_id if resource_id
26
45
  end
27
46
  result
28
-
29
47
  rescue HammerCLIForeman::MissingSearchOptions => e
30
-
31
- switches = @command.class.find_options(:referenced_resource => e.resource.singular_name).map(&:long_switch)
48
+ switches = @command.class.find_options(referenced_resource: e.resource.singular_name).map(&:long_switch)
32
49
 
33
50
  if switches.empty?
34
51
  error_message = _("Could not find %{resource}. Some search options were missing, please see --help.")
@@ -40,8 +57,8 @@ module HammerCLIForeman
40
57
 
41
58
  raise MissingSearchOptions.new(
42
59
  error_message % {
43
- :resource => e.resource.singular_name,
44
- :switches => switches.join(", ")
60
+ resource: e.resource.singular_name,
61
+ switches: switches.join(', ')
45
62
  },
46
63
  e.resource
47
64
  )