hammer_cli_katello 0.16.1 → 0.17.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 (41) hide show
  1. checksums.yaml +5 -5
  2. data/lib/hammer_cli_katello/activation_key.rb +3 -3
  3. data/lib/hammer_cli_katello/content_view.rb +14 -11
  4. data/lib/hammer_cli_katello/content_view_name_resolvable.rb +6 -3
  5. data/lib/hammer_cli_katello/content_view_purge.rb +7 -4
  6. data/lib/hammer_cli_katello/content_view_version.rb +11 -10
  7. data/lib/hammer_cli_katello/erratum.rb +5 -15
  8. data/lib/hammer_cli_katello/erratum_info_command.rb +26 -0
  9. data/lib/hammer_cli_katello/file.rb +2 -2
  10. data/lib/hammer_cli_katello/filter.rb +1 -1
  11. data/lib/hammer_cli_katello/foreman_search_options_creators.rb +4 -0
  12. data/lib/hammer_cli_katello/host_collection.rb +1 -1
  13. data/lib/hammer_cli_katello/host_errata.rb +3 -18
  14. data/lib/hammer_cli_katello/hostgroup_extensions.rb +1 -1
  15. data/lib/hammer_cli_katello/id_name_options_validator.rb +1 -1
  16. data/lib/hammer_cli_katello/lifecycle_environment.rb +1 -1
  17. data/lib/hammer_cli_katello/lifecycle_environment_name_resolvable.rb +6 -3
  18. data/lib/hammer_cli_katello/ostree_branch.rb +1 -0
  19. data/lib/hammer_cli_katello/package.rb +1 -1
  20. data/lib/hammer_cli_katello/puppet_environment_name_resolvable.rb +6 -3
  21. data/lib/hammer_cli_katello/repository.rb +7 -6
  22. data/lib/hammer_cli_katello/repository_scoped_to_product.rb +1 -1
  23. data/lib/hammer_cli_katello/repository_set.rb +32 -0
  24. data/lib/hammer_cli_katello/search_options_creators.rb +7 -0
  25. data/lib/hammer_cli_katello/version.rb +1 -1
  26. data/test/data/3.11/foreman_api.json +1 -0
  27. data/test/functional/content_view/version/export_test.rb +44 -0
  28. data/test/functional/erratum/erratum_helpers.rb +91 -0
  29. data/test/functional/erratum/info_test.rb +29 -0
  30. data/test/functional/host/errata/info_test.rb +27 -0
  31. data/test/functional/repository_set/available_repositories_test.rb +18 -0
  32. data/test/functional/repository_set/disable_test.rb +42 -0
  33. data/test/functional/repository_set/enable_test.rb +42 -0
  34. data/test/functional/repository_set/info_test.rb +17 -0
  35. data/test/functional/repository_set/list_test.rb +18 -0
  36. data/test/functional/repository_set/repository_set_helpers.rb +20 -0
  37. data/test/functional/test_helper.rb +13 -0
  38. data/test/test_helper.rb +1 -1
  39. data/test/unit/id_name_options_validator_test.rb +1 -1
  40. data/test/unit/search_options_creators_test.rb +6 -0
  41. metadata +26 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: 96b7e37c04cf182db80991f71900540b53c147a655bc003cffd000c6b6a43675
4
- data.tar.gz: 9984c39d7276c1f39012290f6f4d04cf6630d97077096bdf55063cb9115d9265
2
+ SHA1:
3
+ metadata.gz: 91526da6c7ebab95a7aba39558d81c0a47fbe074
4
+ data.tar.gz: 6c44980914fdd9a4e8d308863f65aeaac002f09a
5
5
  SHA512:
6
- metadata.gz: 014c54b5130dfd01f28162635ef4fe95e7af4e88d1623cd65ac5a9fc33c1f5f2d351a2efef084d09346c86c07e26141438ca6a16f53763c561eba8bbf400379f
7
- data.tar.gz: 97d8619b2048661b4a752cbe8680d1ed5f98d9a90af29b50eb5b330ac132292afc31e3ac6b7c0ffb122506f1d4780dcecaf77f4c67e51543c7f20f6ffdce5778
6
+ metadata.gz: 0b530c2a5f82758bd0e074f9988d7973be4134a9f832877c2afc4c336f73a6e5a172778d9bfeeb6bb53370787d896a2f08578048fe818a71a9f9e68657e1e595
7
+ data.tar.gz: c9b15e7566318c658abefb3a372405571fe2f0875666f1d9bdec6596159d95021baf62e704ca2af33c96ebfbdaf61e9b5d9716d65c2c6d3859903d3d745d429f
@@ -90,7 +90,7 @@ module HammerCLIKatello
90
90
 
91
91
  option "--unlimited-hosts", :flag, "Set hosts max to unlimited"
92
92
 
93
- validate_options do
93
+ validate_options :before, 'IdResolution' do
94
94
  all(:option_unlimited_hosts, :option_max_hosts).rejected
95
95
  end
96
96
 
@@ -165,7 +165,7 @@ module HammerCLIKatello
165
165
  option '--name', "ACTIVATION_KEY_NAME", _("Activation key name to search by"),
166
166
  attribute_name: :option_activation_key_name
167
167
 
168
- validate_options do
168
+ validate_options :before, 'IdResolution' do
169
169
  any(:option_activation_key_id, :option_activation_key_name).required
170
170
  end
171
171
 
@@ -238,7 +238,7 @@ module HammerCLIKatello
238
238
  option "--name", "NAME", _("Name of activation key"),
239
239
  :attribute_name => :option_activation_key_name
240
240
 
241
- validate_options do
241
+ validate_options :before, 'IdResolution' do
242
242
  any(:option_activation_key_id, :option_activation_key_name).required
243
243
  end
244
244
 
@@ -109,7 +109,7 @@ module HammerCLIKatello
109
109
  end
110
110
  end
111
111
 
112
- validate_options do
112
+ validate_options :before, 'IdResolution' do
113
113
  product_options = [:option_product_id, :option_product_name]
114
114
  if option(:option_repository_ids).exist?
115
115
  any(*product_options).rejected
@@ -138,7 +138,7 @@ module HammerCLIKatello
138
138
  option "--new-name", "NEW_NAME", _("New content view name"),
139
139
  :attribute_name => :option_new_name
140
140
 
141
- validate_options do
141
+ validate_options :before, 'IdResolution' do
142
142
  organization_options = [:option_organization_id, :option_organization_name, \
143
143
  :option_organization_label]
144
144
 
@@ -165,7 +165,7 @@ module HammerCLIKatello
165
165
  success_message _("Content view updated.")
166
166
  failure_message _("Could not update the content view")
167
167
 
168
- validate_options do
168
+ validate_options :before, 'IdResolution' do
169
169
  organization_options = [:option_organization_id, :option_organization_name, \
170
170
  :option_organization_label]
171
171
 
@@ -187,7 +187,7 @@ module HammerCLIKatello
187
187
  success_message _("Content view is being deleted with task %{id}.")
188
188
  failure_message _("Could not delete the content view")
189
189
 
190
- validate_options do
190
+ validate_options :before, 'IdResolution' do
191
191
  organization_options = [:option_organization_id, :option_organization_name, \
192
192
  :option_organization_label]
193
193
 
@@ -227,7 +227,7 @@ module HammerCLIKatello
227
227
  build_options
228
228
  end
229
229
 
230
- class CVEnvParamsSource
230
+ class CVEnvParamsSource < HammerCLI::Options::Sources::Base
231
231
  def initialize(command)
232
232
  @command = command
233
233
  end
@@ -257,8 +257,11 @@ module HammerCLIKatello
257
257
 
258
258
  def option_sources
259
259
  sources = super
260
- idx = sources.index { |s| s.class == HammerCLIForeman::OptionSources::IdParams }
261
- sources.insert(idx, CVEnvParamsSource.new(self))
260
+ sources.find_by_name('IdResolution').insert_relative(
261
+ :after,
262
+ 'IdParams',
263
+ CVEnvParamsSource.new(self)
264
+ )
262
265
  sources
263
266
  end
264
267
 
@@ -282,7 +285,7 @@ module HammerCLIKatello
282
285
  command_name 'add-version'
283
286
  desc _('Add a content view version to a composite view')
284
287
 
285
- validate_options do
288
+ validate_options :before, 'IdResolution' do
286
289
  if option(:option_content_view_version_version).exist?
287
290
  any(:option_content_view_id, :option_content_view_name).required
288
291
  end
@@ -292,7 +295,7 @@ module HammerCLIKatello
292
295
  plural ? "components" : "component"
293
296
  end
294
297
 
295
- validate_options do
298
+ validate_options :before, 'IdResolution' do
296
299
  organization_options = [:option_organization_id, :option_organization_name, \
297
300
  :option_organization_label]
298
301
 
@@ -317,7 +320,7 @@ module HammerCLIKatello
317
320
  command_name 'remove-version'
318
321
  desc _('Remove a content view version from a composite view')
319
322
 
320
- validate_options do
323
+ validate_options :before, 'IdResolution' do
321
324
  if option(:option_content_view_version_version).exist?
322
325
  any(:option_content_view_id, :option_content_view_name).required
323
326
  end
@@ -327,7 +330,7 @@ module HammerCLIKatello
327
330
  plural ? "components" : "component"
328
331
  end
329
332
 
330
- validate_options do
333
+ validate_options :before, 'IdResolution' do
331
334
  organization_options = [:option_organization_id, :option_organization_name, \
332
335
  :option_organization_label]
333
336
 
@@ -1,6 +1,6 @@
1
1
  module HammerCLIKatello
2
2
  module ContentViewNameResolvable
3
- class ContentViewParamSource
3
+ class ContentViewParamSource < HammerCLI::Options::Sources::Base
4
4
  def initialize(command)
5
5
  @command = command
6
6
  end
@@ -16,8 +16,11 @@ module HammerCLIKatello
16
16
 
17
17
  def option_sources
18
18
  sources = super
19
- idx = sources.index { |s| s.class == HammerCLIForeman::OptionSources::IdParams }
20
- sources.insert(idx, ContentViewParamSource.new(self))
19
+ sources.find_by_name('IdResolution').insert_relative(
20
+ :after,
21
+ 'IdParams',
22
+ ContentViewParamSource.new(self)
23
+ )
21
24
  sources
22
25
  end
23
26
  end
@@ -12,7 +12,7 @@ module HammerCLIKatello
12
12
  option "--count", "COUNT", _("count of unused versions to keep"),
13
13
  default: 3, format: HammerCLI::Options::Normalizers::Number.new
14
14
 
15
- validate_options do
15
+ validate_options :before, 'IdResolution' do
16
16
  organization_options = [:option_organization_id, :option_organization_name, \
17
17
  :option_organization_label]
18
18
 
@@ -25,7 +25,7 @@ module HammerCLIKatello
25
25
 
26
26
  build_options
27
27
 
28
- class ContentViewIdParamSource
28
+ class ContentViewIdParamSource < HammerCLI::Options::Sources::Base
29
29
  def initialize(command)
30
30
  @command = command
31
31
  end
@@ -40,8 +40,11 @@ module HammerCLIKatello
40
40
 
41
41
  def option_sources
42
42
  sources = super
43
- idx = sources.index { |s| s.class == HammerCLIForeman::OptionSources::IdParams }
44
- sources.insert(idx, ContentViewIdParamSource.new(self))
43
+ sources.find_by_name('IdResolution').insert_relative(
44
+ :after,
45
+ 'IdParams',
46
+ ContentViewIdParamSource.new(self)
47
+ )
45
48
  sources
46
49
  end
47
50
 
@@ -185,7 +185,7 @@ module HammerCLIKatello
185
185
  :format => HammerCLI::Options::Normalizers::List.new
186
186
  )
187
187
 
188
- validate_options do
188
+ validate_options :before, 'IdResolution' do
189
189
  organization_options = [:option_organization_id, :option_organization_name]
190
190
 
191
191
  if option(:option_lifecycle_environment_ids).exist?
@@ -320,12 +320,13 @@ module HammerCLIKatello
320
320
  export_file = "#{export_prefix}.json"
321
321
  export_repos_tar = "#{export_prefix}-repos.tar"
322
322
  export_tar = "#{export_prefix}.tar"
323
+ export_dir = File.expand_path(options['option_export_dir'].to_s)
323
324
 
324
- Dir.mkdir("#{options['option_export_dir']}/#{export_prefix}")
325
+ Dir.mkdir("#{export_dir}/#{export_prefix}")
325
326
 
326
327
  if repositories
327
328
  Dir.chdir(PUBLISHED_REPOS_DIR) do
328
- repo_tar = "#{options['option_export_dir']}/#{export_prefix}/#{export_repos_tar}"
329
+ repo_tar = "#{export_dir}/#{export_prefix}/#{export_repos_tar}"
329
330
  repo_dirs = []
330
331
 
331
332
  repositories.each do |repo|
@@ -336,29 +337,29 @@ module HammerCLIKatello
336
337
  end
337
338
  end
338
339
 
339
- Dir.chdir("#{options['option_export_dir']}/#{export_prefix}") do
340
+ Dir.chdir("#{export_dir}/#{export_prefix}") do
340
341
  File.open(export_file, 'w') do |file|
341
342
  file.write(JSON.pretty_generate(json))
342
343
  end
343
344
  end
344
345
 
345
- Dir.chdir(options['option_export_dir']) do
346
+ Dir.chdir(export_dir) do
346
347
  `tar cf #{export_tar} #{export_prefix}`
347
348
  FileUtils.rm_rf(export_prefix)
348
349
  end
349
350
  end
350
351
 
351
352
  def check_repo_download_policy(repositories)
352
- on_demand = repositories.select do |repo|
353
- show(:repositories, 'id' => repo['library_instance_id'])['download_policy'] == 'on_demand'
353
+ non_immediate = repositories.select do |repo|
354
+ show(:repositories, 'id' => repo['library_instance_id'])['download_policy'] != 'immediate'
354
355
  end
355
- return true if on_demand.empty?
356
+ return true if non_immediate.empty?
356
357
 
357
- on_demand_names = repositories.collect { |repo| repo['name'] }
358
+ non_immediate_names = repositories.collect { |repo| repo['name'] }
358
359
  msg = <<~MSG
359
360
  All exported repositories must be set to an immediate download policy and re-synced.
360
361
  The following repositories need action:
361
- #{on_demand_names.join('\n')}
362
+ #{non_immediate_names.join(', ')}
362
363
  MSG
363
364
  raise _(msg)
364
365
  end
@@ -1,3 +1,5 @@
1
+ require 'hammer_cli_katello/erratum_info_command'
2
+
1
3
  module HammerCLIKatello
2
4
  class ErratumCommand < HammerCLIKatello::Command
3
5
  resource :errata
@@ -14,7 +16,7 @@ module HammerCLIKatello
14
16
  field :title, _("Title")
15
17
  end
16
18
 
17
- validate_options do
19
+ validate_options :before, 'IdResolution' do
18
20
  organization_options = [:option_organization_id, :option_organization_name, \
19
21
  :option_organization_label]
20
22
 
@@ -28,20 +30,8 @@ module HammerCLIKatello
28
30
  end
29
31
  end
30
32
 
31
- class InfoCommand < HammerCLIKatello::InfoCommand
32
- output do
33
- field :id, _("ID")
34
- field :errata_id, _("Errata ID")
35
- field :title, _("Title")
36
- field :type, _("Type")
37
- field :severity, _("Severity")
38
- field :issued, _("Issued")
39
- field :updated, _("Updated")
40
- field :description, _("Description")
41
- field :summary, _("Summary")
42
- field :solution, _("Solution")
43
- end
44
-
33
+ class InfoCommand < HammerCLIKatello::ErratumInfoCommand
34
+ resource :errata
45
35
  build_options
46
36
  end
47
37
 
@@ -0,0 +1,26 @@
1
+ module HammerCLIKatello
2
+ class ErratumInfoCommand < HammerCLIKatello::InfoCommand
3
+ command_name "info"
4
+
5
+ output do
6
+ field :title, _("Title")
7
+ field :version, _("Version")
8
+ field :description, _("Description")
9
+ field :status, _("Status")
10
+ field :id, _("ID")
11
+ field :errata_id, _("Errata ID")
12
+ field :reboot_suggested, _("Reboot Suggested")
13
+ field :updated, _("Updated")
14
+ field :issued, _("Issued")
15
+ field :release, _("Release")
16
+ field :solution, _("Solution")
17
+ field :packages, _("Packages"), Fields::List, :hide_blank => true
18
+
19
+ collection :module_streams, _("Module Streams"), :hide_blank => true do
20
+ field :name, _("Name")
21
+ field :stream, _("Stream")
22
+ field :packages, _("Packages"), Fields::List
23
+ end
24
+ end
25
+ end
26
+ end
@@ -13,7 +13,7 @@ module HammerCLIKatello
13
13
  field :path, _("Path")
14
14
  end
15
15
 
16
- validate_options do
16
+ validate_options :before, 'IdResolution' do
17
17
  organization_options = [:option_organization_id, :option_organization_name,
18
18
  :option_organization_label]
19
19
  if any(:option_product_name, :option_content_view_name).exist?
@@ -35,7 +35,7 @@ module HammerCLIKatello
35
35
  field :checksum, _("Checksum")
36
36
  end
37
37
 
38
- validate_options do
38
+ validate_options :before, 'IdResolution' do
39
39
  organization_options = [:option_organization_id, :option_organization_name,
40
40
  :option_organization_label]
41
41
  product_options = [:option_product_id, :option_product_name]
@@ -64,7 +64,7 @@ module HammerCLIKatello
64
64
  success_message _("Filter created.")
65
65
  failure_message _("Could not create the filter")
66
66
 
67
- validate_options do
67
+ validate_options :before, 'IdResolution' do
68
68
  organization_options = [:option_organization_id, :option_organization_name, \
69
69
  :option_organization_label]
70
70
  product_options = [:option_product_id, :option_product_name]
@@ -76,6 +76,10 @@ module HammerCLIKatello
76
76
  create_search_options_without_katello_api(options, api.resource(:compute_resources), mode)
77
77
  end
78
78
 
79
+ def create_compute_profiles_search_options(options, mode = nil)
80
+ create_search_options_without_katello_api(options, api.resource(:compute_profiles), mode)
81
+ end
82
+
79
83
  def create_images_search_options(options, mode = nil)
80
84
  create_search_options_without_katello_api(options, api.resource(:images), mode)
81
85
  end
@@ -73,7 +73,7 @@ module HammerCLIKatello
73
73
  option "--name", "HOST_COLLECTION_NAME", _("Host Collection Name"),
74
74
  :attribute_name => :option_host_collection_name
75
75
 
76
- validate_options do
76
+ validate_options :before, 'IdResolution' do
77
77
  host_collection_options = [:option_host_collection_id, :option_host_collection_name]
78
78
  any(*host_collection_options).required
79
79
  end
@@ -1,3 +1,5 @@
1
+ require 'hammer_cli_katello/erratum_info_command'
2
+
1
3
  module HammerCLIKatello
2
4
  class HostErrata < HammerCLIKatello::Command
3
5
  desc "Manage errata on your hosts"
@@ -27,25 +29,8 @@ module HammerCLIKatello
27
29
  build_options
28
30
  end
29
31
 
30
- class InfoCommand < HammerCLIKatello::InfoCommand
32
+ class InfoCommand < HammerCLIKatello::ErratumInfoCommand
31
33
  resource :host_errata, :show
32
- command_name "info"
33
-
34
- output do
35
- field :title, _("Title")
36
- field :version, _("Version")
37
- field :description, _("Description")
38
- field :status, _("Status")
39
- field :id, _("ID")
40
- field :errata_id, _("Errata ID")
41
- field :reboot_suggested, _("Reboot Suggested")
42
- field :updated, _("Updated")
43
- field :issued, _("Issued")
44
- field :release, _("Release")
45
- field :solution, _("Solution")
46
- field :packages, _("Packages"), Fields::List
47
- end
48
-
49
34
  build_options
50
35
  end
51
36
 
@@ -13,7 +13,7 @@ module HammerCLIKatello
13
13
  base.option '--query-organization-label', 'ORGANIZATION_LABEL',
14
14
  _('Organization label to search by'), attribute_name: :option_organization_label
15
15
 
16
- base.validate_options do
16
+ base.validate_options :before, 'IdResolution' do
17
17
  organization_options = [
18
18
  :option_organization_id, :option_organization_name, :option_organization_label
19
19
  ]
@@ -18,7 +18,7 @@ module HammerCLIKatello
18
18
  child_options = IdNameOptionsValidator.build_child_options(record_name)
19
19
  parent_options = IdNameOptionsValidator.build_parent_options(parent)
20
20
 
21
- validate_options do
21
+ validate_options :before, 'IdResolution' do
22
22
  any(*child_options).required if required
23
23
 
24
24
  if (name_option = child_options.detect { |opt| opt.end_with?('_name') }) &&
@@ -9,7 +9,7 @@ module HammerCLIKatello
9
9
  "PRIOR",
10
10
  _("Name of the prior environment")
11
11
  )
12
- base.validate_options do
12
+ base.validate_options :before, 'IdResolution' do
13
13
  any(:option_prior, :option_prior_id).required
14
14
  end
15
15
  end
@@ -1,6 +1,6 @@
1
1
  module HammerCLIKatello
2
2
  module LifecycleEnvironmentNameResolvable
3
- class LifecycleEnvironmentParamSource
3
+ class LifecycleEnvironmentParamSource < HammerCLI::Options::Sources::Base
4
4
  def initialize(command)
5
5
  @command = command
6
6
  end
@@ -16,8 +16,11 @@ module HammerCLIKatello
16
16
 
17
17
  def option_sources
18
18
  sources = super
19
- idx = sources.index { |s| s.class == HammerCLIForeman::OptionSources::IdParams }
20
- sources.insert(idx, LifecycleEnvironmentParamSource.new(self))
19
+ sources.find_by_name('IdResolution').insert_relative(
20
+ :after,
21
+ 'IdParams',
22
+ LifecycleEnvironmentParamSource.new(self)
23
+ )
21
24
  sources
22
25
  end
23
26
  end