hammer_cli_katello 0.24.4 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/lib/hammer_cli_katello.rb +11 -15
  3. data/lib/hammer_cli_katello/activation_key.rb +5 -5
  4. data/lib/hammer_cli_katello/capsule.rb +2 -3
  5. data/lib/hammer_cli_katello/command_extensions/lifecycle_environment.rb +10 -7
  6. data/lib/hammer_cli_katello/command_extensions/lifecycle_environments.rb +11 -8
  7. data/lib/hammer_cli_katello/content_credential.rb +20 -19
  8. data/lib/hammer_cli_katello/content_export.rb +1 -0
  9. data/lib/hammer_cli_katello/content_export_helper.rb +1 -1
  10. data/lib/hammer_cli_katello/content_import.rb +16 -1
  11. data/lib/hammer_cli_katello/content_view.rb +16 -31
  12. data/lib/hammer_cli_katello/content_view_version.rb +4 -273
  13. data/lib/hammer_cli_katello/deb_package.rb +3 -3
  14. data/lib/hammer_cli_katello/docker.rb +13 -0
  15. data/lib/hammer_cli_katello/docker_manifest.rb +53 -0
  16. data/lib/hammer_cli_katello/docker_tag.rb +40 -0
  17. data/lib/hammer_cli_katello/erratum.rb +1 -1
  18. data/lib/hammer_cli_katello/erratum_info_command.rb +1 -1
  19. data/lib/hammer_cli_katello/file.rb +3 -3
  20. data/lib/hammer_cli_katello/filter.rb +2 -2
  21. data/lib/hammer_cli_katello/foreman_search_options_creators.rb +0 -12
  22. data/lib/hammer_cli_katello/host_collection.rb +2 -2
  23. data/lib/hammer_cli_katello/host_collection_erratum.rb +10 -0
  24. data/lib/hammer_cli_katello/host_collection_package.rb +30 -0
  25. data/lib/hammer_cli_katello/host_collection_package_group.rb +30 -0
  26. data/lib/hammer_cli_katello/host_deb.rb +1 -1
  27. data/lib/hammer_cli_katello/host_errata.rb +9 -1
  28. data/lib/hammer_cli_katello/host_extensions.rb +5 -5
  29. data/lib/hammer_cli_katello/host_package.rb +33 -1
  30. data/lib/hammer_cli_katello/host_package_group.rb +16 -0
  31. data/lib/hammer_cli_katello/hostgroup_extensions.rb +4 -4
  32. data/lib/hammer_cli_katello/id_resolver.rb +3 -6
  33. data/lib/hammer_cli_katello/lifecycle_environment.rb +2 -2
  34. data/lib/hammer_cli_katello/module_stream.rb +8 -8
  35. data/lib/hammer_cli_katello/organization.rb +10 -0
  36. data/lib/hammer_cli_katello/organization_options.rb +8 -6
  37. data/lib/hammer_cli_katello/ostree_branch.rb +2 -2
  38. data/lib/hammer_cli_katello/package.rb +5 -5
  39. data/lib/hammer_cli_katello/package_group.rb +4 -4
  40. data/lib/hammer_cli_katello/ping.rb +13 -19
  41. data/lib/hammer_cli_katello/product.rb +3 -3
  42. data/lib/hammer_cli_katello/product_content.rb +2 -2
  43. data/lib/hammer_cli_katello/repository.rb +27 -37
  44. data/lib/hammer_cli_katello/repository_set.rb +4 -4
  45. data/lib/hammer_cli_katello/simple_content_access.rb +42 -0
  46. data/lib/hammer_cli_katello/srpm.rb +2 -2
  47. data/lib/hammer_cli_katello/subscription.rb +2 -3
  48. data/lib/hammer_cli_katello/sync_plan.rb +2 -2
  49. data/lib/hammer_cli_katello/version.rb +1 -1
  50. data/locale/hammer-cli-katello.pot +0 -25
  51. data/test/data/3.18/foreman_api.json +1 -1
  52. data/test/data/3.19/foreman_api.json +1 -0
  53. data/test/data/4.0/foreman_api.json +1 -0
  54. data/test/data/4.1/foreman_api.json +1 -0
  55. data/test/functional/activation_key/subscriptions_test.rb +5 -2
  56. data/test/functional/capsule/content/info_test.rb +1 -2
  57. data/test/functional/content_credentials/create_test.rb +32 -0
  58. data/test/functional/{repository → content_credentials}/data/test_cert.json +0 -0
  59. data/test/functional/content_credentials/list_test.rb +6 -8
  60. data/test/functional/content_export/complete/version_test.rb +35 -0
  61. data/test/functional/content_export/list_test.rb +9 -9
  62. data/test/functional/content_import/list_test.rb +65 -0
  63. data/test/functional/content_import/version_test.rb +6 -6
  64. data/test/functional/content_view/list_test.rb +0 -2
  65. data/test/functional/content_view/publish_test.rb +0 -21
  66. data/test/functional/content_view/version/promote_test.rb +1 -2
  67. data/test/functional/content_view/version/republish_repositories_test.rb +1 -2
  68. data/test/functional/host/errata/apply_test.rb +0 -2
  69. data/test/functional/host/errata/recalculate_test.rb +0 -2
  70. data/test/functional/organization/info_test.rb +22 -0
  71. data/test/functional/ping_test.rb +52 -15
  72. data/test/functional/repository/create_test.rb +0 -30
  73. data/test/functional/repository/info_test.rb +4 -4
  74. data/test/functional/repository/list_test.rb +0 -2
  75. data/test/functional/simple_content_access/disable_test.rb +48 -0
  76. data/test/functional/simple_content_access/enable_test.rb +46 -0
  77. data/test/test_helper.rb +1 -1
  78. metadata +24 -52
  79. data/lib/hammer_cli_katello/content_view_puppet_module.rb +0 -60
  80. data/lib/hammer_cli_katello/cv_import_export_helper.rb +0 -166
  81. data/lib/hammer_cli_katello/gpg_key.rb +0 -67
  82. data/lib/hammer_cli_katello/puppet_module.rb +0 -59
  83. data/test/functional/content_view/puppet_module/add_test.rb +0 -24
  84. data/test/functional/content_view/puppet_module/remove_test.rb +0 -54
  85. data/test/functional/content_view/version/default_export_test.rb +0 -40
  86. data/test/functional/content_view/version/export_test.rb +0 -136
  87. data/test/functional/content_view/version/import_test.rb +0 -318
  88. data/test/functional/gpg_test.rb +0 -39
  89. data/test/functional/repository/data/test_ca.json +0 -43
  90. data/test/functional/repository/data/test_key.json +0 -43
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1b1afcbfac0dd2680c3e26164a1068e6993bc276d9599441747ddd58f637f7d1
4
- data.tar.gz: 4f7971c7d6e6145e800f055302d2420e0f37b1832044a0664c00c8061193376b
3
+ metadata.gz: d8787337433eea048dbc889beeb9d09dd0264d9f22838851544f08230e4fdb01
4
+ data.tar.gz: 280fbe62f124439debe0bcb7e19cf13f041857801d06eaf0ad2e162cdc53b36b
5
5
  SHA512:
6
- metadata.gz: 91adf0f28b5056ca429c5449e02556635d6e1217279f53cf7551c3f7fab0309a57f002a620e7cf88384936919970f7aabffddf23613953adbd3727359351bcc0
7
- data.tar.gz: 6049debd76cb92fcb3309438d7c79d976e5b5f252689d5578268f91196a421fb8d9d8a30ca782a489ed60a7692b556849521a1ef3c93a376f208148dd3aac517
6
+ metadata.gz: 611b6017e7bb314e31dcfa9138f37c9171a6e118e87b9174664bfe4f0569bc6b77b5b1e5cb2682ede8716c1f62aab4b9b046e6aad8e518a5dec83d0d2ddb4402
7
+ data.tar.gz: 61acf6ec874572401e818494534a264476b4300efead8781fe64f22ddbd350b33eed22eb764558fc80e5e8e3517c4df43bd24613dc84800dc7f094a333f091f2
@@ -30,7 +30,6 @@ module HammerCLIKatello
30
30
  require 'hammer_cli_katello/id_name_options_validator'
31
31
  require 'hammer_cli_katello/local_helper'
32
32
  require 'hammer_cli_katello/apipie_helper'
33
- require 'hammer_cli_katello/cv_import_export_helper'
34
33
  require 'hammer_cli_katello/content_export_helper'
35
34
 
36
35
  # commands
@@ -44,15 +43,6 @@ module HammerCLIKatello
44
43
  'hammer_cli_katello/organization'
45
44
  )
46
45
 
47
- HammerCLI::MainCommand.lazy_subcommand("gpg",
48
- _("Manipulate GPG Key actions on the server"),
49
- 'HammerCLIKatello::GpgKeyCommand',
50
- 'hammer_cli_katello/gpg_key',
51
- :warning =>
52
- _('The gpg sub-command is deprecated and will be removed in one of the future versions.' \
53
- ' Please use the content-credentials command instead.')
54
- )
55
-
56
46
  HammerCLI::MainCommand.lazy_subcommand("content-credentials",
57
47
  _("Manipulate content credentials on the server"),
58
48
  'HammerCLIKatello::ContentCredentialCommand',
@@ -70,11 +60,6 @@ module HammerCLIKatello
70
60
  'hammer_cli_katello/product'
71
61
  )
72
62
 
73
- HammerCLI::MainCommand.lazy_subcommand("puppet-module", _("View Puppet Module details"),
74
- 'HammerCLIKatello::PuppetModule',
75
- 'hammer_cli_katello/puppet_module'
76
- )
77
-
78
63
  HammerCLI::MainCommand.lazy_subcommand("repository", _("Manipulate repositories"),
79
64
  'HammerCLIKatello::Repository',
80
65
  'hammer_cli_katello/repository'
@@ -164,6 +149,17 @@ module HammerCLIKatello
164
149
  'hammer_cli_katello/srpm'
165
150
  )
166
151
 
152
+ HammerCLI::MainCommand.lazy_subcommand("simple-content-access",
153
+ _("Simple content access commands"),
154
+ 'HammerCLIKatello::SimpleContentAccess',
155
+ 'hammer_cli_katello/simple_content_access'
156
+ )
157
+
158
+ HammerCLI::MainCommand.lazy_subcommand("docker", _("Manipulate docker content"),
159
+ 'HammerCLIKatello::DockerCommand',
160
+ 'hammer_cli_katello/docker'
161
+ )
162
+
167
163
  # subcommands to hammer_cli_foreman commands
168
164
  require 'hammer_cli_katello/host'
169
165
  require 'hammer_cli_katello/hostgroup'
@@ -11,7 +11,7 @@ module HammerCLIKatello
11
11
  action :index
12
12
 
13
13
  output do
14
- field :id, _("ID")
14
+ field :id, _("Id")
15
15
  field :name, _("Name")
16
16
  field :format_consumed, _("Host Limit")
17
17
  from :environment do
@@ -53,7 +53,7 @@ module HammerCLIKatello
53
53
 
54
54
  output do
55
55
  field :name, _("Name")
56
- field :id, _("ID")
56
+ field :id, _("Id")
57
57
  field :description, _("Description")
58
58
  field :format_limit, _("Host Limit")
59
59
  field :auto_attach, _("Auto Attach")
@@ -67,7 +67,7 @@ module HammerCLIKatello
67
67
  end
68
68
 
69
69
  collection :host_collections, _("Host Collections") do
70
- field :id, _("ID")
70
+ field :id, _("Id")
71
71
  field :name, _("Name")
72
72
  end
73
73
 
@@ -150,7 +150,7 @@ module HammerCLIKatello
150
150
  command_name "subscriptions"
151
151
 
152
152
  output do
153
- field :id, _("ID")
153
+ field :id, _("Id")
154
154
  field :product_name, _("Name")
155
155
  field :format_consumed, _("Attached")
156
156
  field :quantity_attached, _("Quantity")
@@ -230,7 +230,7 @@ module HammerCLIKatello
230
230
  command_name "host-collections"
231
231
 
232
232
  output do
233
- field :id, _("ID")
233
+ field :id, _("Id")
234
234
  field :name, _("Name")
235
235
  end
236
236
 
@@ -13,7 +13,7 @@ module HammerCLIKatello
13
13
  command_name 'lifecycle-environments'
14
14
 
15
15
  output do
16
- field :id, _("ID")
16
+ field :id, _("Id")
17
17
  field :name, _("Name")
18
18
  from :organization do
19
19
  field :name, _("Organization")
@@ -28,7 +28,7 @@ module HammerCLIKatello
28
28
  command_name 'available-lifecycle-environments'
29
29
 
30
30
  output do
31
- field :id, _("ID")
31
+ field :id, _("Id")
32
32
  field :name, _("Name")
33
33
  from :organization do
34
34
  field :name, _("Organization")
@@ -167,7 +167,6 @@ module HammerCLIKatello
167
167
  field :packages, _('Packages')
168
168
  field :package_groups, _('Package groups')
169
169
  field :errata, _('Errata')
170
- field :puppet_modules, _('Puppet modules')
171
170
  end
172
171
  end
173
172
  end
@@ -2,13 +2,16 @@ module HammerCLIKatello
2
2
  module CommandExtensions
3
3
  class LifecycleEnvironment < HammerCLI::CommandExtensions
4
4
  # Remove when support of --environment options is ended.
5
- option '--environment', 'ENVIRONMENT_NAME', _('Lifecycle environment name to search by'),
6
- attribute_name: :option_environment_name,
7
- deprecated: { '--environment' => _('Use --lifecycle-environment instead') }
8
- option '--environment-id', 'ENVIRONMENT_ID', _(''),
9
- format: HammerCLI::Options::Normalizers::Number.new,
10
- attribute_name: :option_environment_id,
11
- deprecated: { '--environment-id' => _('Use --lifecycle-environment-id instead') }
5
+ option_family(
6
+ deprecated: { '--environment' => _("Use %s instead") % '--lifecycle-environment',
7
+ '--environment-id' => _("Use %s instead") % '--lifecycle-environment-id'}
8
+ ) do
9
+ child '--environment', 'ENVIRONMENT_NAME', _('Lifecycle environment name to search by'),
10
+ attribute_name: :option_environment_name
11
+ parent '--environment-id', 'ENVIRONMENT_ID', _(''),
12
+ format: HammerCLI::Options::Normalizers::Number.new,
13
+ attribute_name: :option_environment_id
14
+ end
12
15
 
13
16
  option_sources do |sources, command|
14
17
  sources.find_by_name('IdResolution').insert_relative(
@@ -2,14 +2,17 @@ module HammerCLIKatello
2
2
  module CommandExtensions
3
3
  class LifecycleEnvironments < HammerCLI::CommandExtensions
4
4
  # Remove when support of --environments options is ended.
5
- option '--environments', 'ENVIRONMENT_NAMES', _(''),
6
- format: HammerCLI::Options::Normalizers::List.new,
7
- attribute_name: :option_environment_names,
8
- deprecated: { '--environments' => _('Use --lifecycle-environments instead') }
9
- option '--environment-ids', 'ENVIRONMENT_IDS', _(''),
10
- format: HammerCLI::Options::Normalizers::List.new,
11
- attribute_name: :option_environment_ids,
12
- deprecated: { '--environment-ids' => _('Use --lifecycle-environment-ids instead') }
5
+ option_family(
6
+ format: HammerCLI::Options::Normalizers::List.new,
7
+ deprecation: _("Use %s instead") % '--lifecycle-environment[s|-ids]',
8
+ deprecated: { '--environments' => _("Use %s instead") % '--lifecycle-environments',
9
+ '--environment-ids' => _("Use %s instead") % '--lifecycle-environment-ids'}
10
+ ) do
11
+ parent '--environment-ids', 'ENVIRONMENT_IDS', _(''),
12
+ attribute_name: :option_environment_ids
13
+ child '--environments', 'ENVIRONMENT_NAMES', _(''),
14
+ attribute_name: :option_environment_names
15
+ end
13
16
 
14
17
  option_sources do |sources, command|
15
18
  sources.find_by_name('IdResolution').insert_relative(
@@ -4,8 +4,9 @@ module HammerCLIKatello
4
4
 
5
5
  class ListCommand < HammerCLIKatello::ListCommand
6
6
  output do
7
- field :id, _("ID")
8
- field :name, _("Name")
7
+ field :id, _('Id')
8
+ field :name, _('Name')
9
+ field :content_type, _('Content Type')
9
10
  end
10
11
 
11
12
  build_options
@@ -13,51 +14,51 @@ module HammerCLIKatello
13
14
 
14
15
  class InfoCommand < HammerCLIKatello::InfoCommand
15
16
  output do
16
- field :id, _("ID")
17
- field :name, _("Name")
17
+ field :id, _('Id')
18
+ field :name, _('Name')
18
19
  from :organization do
19
- field :name, _("Organization")
20
+ field :name, _('Organization')
20
21
  end
21
22
 
22
- collection :repositories, "Repositories" do
23
- field :id, _("ID")
24
- field :name, _("Name")
25
- field :content_type, _("Content Type")
23
+ collection :repositories, 'Repositories' do
24
+ field :id, _('Id')
25
+ field :name, _('Name')
26
+ field :content_type, _('Content Type')
26
27
  from :product do
27
- field :name, _("Product")
28
+ field :name, _('Product')
28
29
  end
29
30
  end
30
31
 
31
- field :content, _("Content"), Fields::LongText
32
+ field :content, _('Content'), Fields::LongText
32
33
  end
33
34
 
34
35
  build_options
35
36
  end
36
37
 
37
38
  class CreateCommand < HammerCLIKatello::CreateCommand
38
- success_message _("Content credential created.")
39
- failure_message _("Could not create GPG key")
39
+ success_message _('Content Credential created.')
40
+ failure_message _('Could not create Content Credential')
40
41
 
41
42
  build_options :without => [:content]
42
- option "--key", "GPG_KEY_FILE", _("GPG Key file"),
43
+ option '--path', 'KEY_FILE', _('Key file'),
43
44
  :attribute_name => :option_content,
44
45
  :required => true,
45
46
  :format => HammerCLI::Options::Normalizers::File.new
46
47
  end
47
48
 
48
49
  class UpdateCommand < HammerCLIKatello::UpdateCommand
49
- success_message _("GPG Key updated.")
50
- failure_message _("Could not update GPG Key")
50
+ success_message _('Content Credential updated.')
51
+ failure_message _('Could not update Content Credential')
51
52
 
52
53
  build_options :without => [:content]
53
- option "--key", "GPG_KEY_FILE", _("GPG Key file"),
54
+ option '--path', 'KEY_FILE', _('Key file'),
54
55
  :attribute_name => :option_content,
55
56
  :format => HammerCLI::Options::Normalizers::File.new
56
57
  end
57
58
 
58
59
  class DeleteCommand < HammerCLIKatello::DeleteCommand
59
- success_message _("GPG Key deleted.")
60
- failure_message _("Could not delete the GPG Key")
60
+ success_message _('Content Credential deleted.')
61
+ failure_message _('Could not delete the Content Credential')
61
62
 
62
63
  build_options
63
64
  end
@@ -50,6 +50,7 @@ module HammerCLIKatello
50
50
  field :id, _('ID')
51
51
  field :destination_server, _('Destination Server')
52
52
  field :path, _('Path')
53
+ field :type, _('Type')
53
54
  field :content_view_version, _('Content View Version')
54
55
  field :content_view_version_id, _('Content View Version ID')
55
56
  field :created_at, _('Created at')
@@ -40,7 +40,7 @@ module HammerCLIKatello
40
40
  end
41
41
 
42
42
  def fetch_export_history(export_history_id)
43
- resource.call(:index, :id => export_history_id)["results"].first if export_history_id
43
+ index(:content_exports, :id => export_history_id).first if export_history_id
44
44
  end
45
45
 
46
46
  def fetch_export_history_from_task(task)
@@ -13,7 +13,7 @@ module HammerCLIKatello
13
13
  :required => false
14
14
 
15
15
  base.build_options do |o|
16
- o.expand(:all).including(:content_views, :organizations).except(:metadata)
16
+ o.expand(:all).including(:organizations).except(:metadata)
17
17
  end
18
18
 
19
19
  base.validate_options do
@@ -58,6 +58,21 @@ module HammerCLIKatello
58
58
  include ContentImportCommon
59
59
  end
60
60
 
61
+ class ListCommand < HammerCLIKatello::ListCommand
62
+ desc "View content view import histories"
63
+ output do
64
+ field :id, _('ID')
65
+ field :path, _('Path')
66
+ field :type, _('Type')
67
+ field :content_view_version, _('Content View Version')
68
+ field :content_view_version_id, _('Content View Version ID')
69
+ field :created_at, _('Created at')
70
+ field :updated_at, _('Updated at'), Fields::Field, :hide_blank => true
71
+ end
72
+
73
+ build_options
74
+ end
75
+
61
76
  autoload_subcommands
62
77
  end
63
78
  end
@@ -1,4 +1,3 @@
1
- require 'hammer_cli_katello/content_view_puppet_module'
2
1
  require 'hammer_cli_katello/content_view_purge'
3
2
  require 'hammer_cli_katello/filter'
4
3
  require 'hammer_cli_katello/content_view_version'
@@ -29,13 +28,12 @@ module HammerCLIKatello
29
28
  include OrganizationOptions
30
29
 
31
30
  output do
32
- field :id, _("ID")
31
+ field :id, _("Id")
33
32
  field :name, _("Name")
34
33
  field :label, _("Label")
35
34
  field :composite, _("Composite")
36
35
  field :description, _("Description")
37
36
  field :content_host_count, _("Content Host Count")
38
- field :force_puppet_environment, _("Force Puppet")
39
37
  field :solve_dependencies, _("Solve Dependencies")
40
38
 
41
39
  from :organization do
@@ -43,43 +41,36 @@ module HammerCLIKatello
43
41
  end
44
42
 
45
43
  collection :_yum_repositories, _("Yum Repositories") do
46
- field :id, _("ID")
44
+ field :id, _("Id")
47
45
  field :name, _("Name")
48
46
  field :label, _("Label")
49
47
  end
50
48
 
51
49
  collection :_docker_repositories, _("Container Image Repositories") do
52
- field :id, _("ID")
50
+ field :id, _("Id")
53
51
  field :name, _("Name")
54
52
  field :label, _("Label")
55
53
  end
56
54
 
57
55
  collection :_ostree_repositories, _("OSTree Repositories") do
58
- field :id, _("ID")
56
+ field :id, _("Id")
59
57
  field :name, _("Name")
60
58
  field :label, _("Label")
61
59
  end
62
60
 
63
- collection :puppet_modules, _("Puppet Modules") do
64
- field :id, _("ID")
65
- field :uuid, _("UUID"), Fields::Field, :hide_blank => true
66
- field :name, _("Name")
67
- field :author, _("Author")
68
- end
69
-
70
61
  collection :environments, _("Lifecycle Environments") do
71
- field :id, _("ID")
62
+ field :id, _("Id")
72
63
  field :name, _("Name")
73
64
  end
74
65
 
75
66
  collection :versions, _("Versions") do
76
- field :id, _("ID")
67
+ field :id, _("Id")
77
68
  field :version, _("Version")
78
69
  field :published, _("Published"), Fields::Date
79
70
  end
80
71
 
81
72
  collection :components, _("Components") do
82
- field :id, _("ID")
73
+ field :id, _("Id")
83
74
  field :name, _("Name")
84
75
  end
85
76
 
@@ -246,13 +237,6 @@ module HammerCLIKatello
246
237
  action :remove
247
238
  command_name "remove"
248
239
 
249
- option ["--content-view-version-ids"], "VERSION_IDS",
250
- _("Version ids to remove"),
251
- :format => HammerCLI::Options::Normalizers::List.new
252
- option ["--lifecycle-environment-ids"], "LIFECYCLE_ENVIRONMENT_IDS",
253
- _("Environment ids to remove"),
254
- :format => HammerCLI::Options::Normalizers::List.new
255
-
256
240
  def option_sources
257
241
  sources = super
258
242
  sources.find_by_name('IdResolution').insert_relative(
@@ -285,10 +269,15 @@ module HammerCLIKatello
285
269
  command_name 'add-version'
286
270
  desc _('Add a content view version to a composite view')
287
271
 
288
- option "--content-view-id", "CONTENT_VIEW_ID",
289
- _("Content view numeric identifier to search by"),
290
- attribute_name: :option_content_view_id,
291
- format: HammerCLI::Options::Normalizers::Number.new
272
+ option_family do
273
+ parent "--content-view-id", "CONTENT_VIEW_ID",
274
+ _("Content view id to search by"),
275
+ attribute_name: :option_content_view_id,
276
+ format: HammerCLI::Options::Normalizers::Number.new
277
+ child "--content-view", "CONTENT_VIEW_NAME",
278
+ _("Content view name to search by"),
279
+ attribute_name: :option_content_view_name
280
+ end
292
281
 
293
282
  validate_options :before, 'IdResolution' do
294
283
  if option(:option_content_view_version_version).exist?
@@ -358,10 +347,6 @@ module HammerCLIKatello
358
347
 
359
348
  autoload_subcommands
360
349
 
361
- subcommand 'puppet-module',
362
- HammerCLIKatello::ContentViewPuppetModule.desc,
363
- HammerCLIKatello::ContentViewPuppetModule
364
-
365
350
  subcommand HammerCLIKatello::Filter.command_name,
366
351
  HammerCLIKatello::Filter.desc,
367
352
  HammerCLIKatello::Filter
@@ -10,7 +10,7 @@ module HammerCLIKatello
10
10
  include LifecycleEnvironmentNameMapping
11
11
 
12
12
  output do
13
- field :id, _("ID")
13
+ field :id, _("Id")
14
14
  field :name, _("Name")
15
15
  field :version, _("Version")
16
16
  field :description, _("Description")
@@ -35,7 +35,7 @@ module HammerCLIKatello
35
35
  resource :content_view_versions, :show
36
36
 
37
37
  output do
38
- field :id, _("ID")
38
+ field :id, _("Id")
39
39
  field :name, _("Name")
40
40
  field :version, _("Version")
41
41
  field :description, _("Description")
@@ -47,23 +47,16 @@ module HammerCLIKatello
47
47
  end
48
48
 
49
49
  collection :environments, _("Lifecycle Environments") do
50
- field :id, _("ID")
50
+ field :id, _("Id")
51
51
  field :name, _("Name")
52
52
  field :label, _("Label")
53
53
  end
54
54
 
55
55
  collection :repositories, _("Repositories") do
56
- field :id, _("ID")
56
+ field :id, _("Id")
57
57
  field :name, _("Name")
58
58
  field :label, _("Label")
59
59
  end
60
-
61
- collection :puppet_modules, _("Puppet Modules") do
62
- field :id, _("ID")
63
- field :name, _("Name")
64
- field :author, _("Author")
65
- field :version, _("Version")
66
- end
67
60
  end
68
61
 
69
62
  build_options do |o|
@@ -278,268 +271,6 @@ module HammerCLIKatello
278
271
  end
279
272
  end
280
273
 
281
- class ExportDefaultCommand < HammerCLIForeman::Command
282
- include HammerCLIKatello::LocalHelper
283
- include HammerCLIKatello::ApipieHelper
284
-
285
- PUBLISHED_REPOS_DIR = "/var/lib/pulp/published/yum/https/repos/".freeze
286
-
287
- desc _('Export the library default content view')
288
-
289
- command_name "export-default"
290
-
291
- option '--export-dir', 'EXPORT_DIR', _("Directory to put content view version export into.")
292
-
293
- validate_options do
294
- option(:option_export_dir).required
295
- end
296
-
297
- build_options
298
-
299
- def execute
300
- export_dir = options['option_export_dir']
301
-
302
- Dir.mkdir(export_dir) unless Dir.exist?(export_dir)
303
- result = Kernel.system("rsync -aL #{PUBLISHED_REPOS_DIR} #{export_dir}")
304
- if result == true
305
- output.print_message _("Default content view export is available at #{export_dir}")
306
- HammerCLI::EX_OK
307
- else
308
- output.print_error _("Could not export the default content view at #{export_dir}")
309
- HammerCLI::EX_CANTCREAT
310
- end
311
- end
312
- end
313
-
314
- class LegacyExportCommand < HammerCLIKatello::SingleResourceCommand
315
- include HammerCLIForemanTasks::Async
316
- include LifecycleEnvironmentNameMapping
317
- desc _('Export a content view (legacy method)')
318
-
319
- action :export
320
- command_name "export-legacy"
321
-
322
- success_message _("Content view is being exported in task %{id}.")
323
- failure_message _("Could not export the content view")
324
-
325
- build_options do |o|
326
- o.expand(:all).including(:environments, :content_views, :organizations)
327
- end
328
-
329
- extend_with(HammerCLIKatello::CommandExtensions::LifecycleEnvironment.new)
330
- end
331
-
332
- class ExportCommand < HammerCLIForeman::Command
333
- include HammerCLIKatello::LocalHelper
334
- include HammerCLIKatello::ApipieHelper
335
- include HammerCLIKatello::CVImportExportHelper
336
-
337
- PUBLISHED_REPOS_DIR = "/var/lib/pulp/published/yum/https/repos/".freeze
338
-
339
- desc _('Export a content view version')
340
-
341
- command_name "export"
342
-
343
- success_message _("Content view export is available in %{directory}.")
344
- failure_message _("Could not export the content view")
345
-
346
- option "--id", "ID", _("Content View Version numeric identifier")
347
- option '--export-dir', 'EXPORT_DIR', _("Directory to put content view version export into.")
348
-
349
- validate_options do
350
- option(:option_export_dir).required
351
- option(:option_id).required
352
- end
353
-
354
- build_options
355
-
356
- def execute
357
- cvv = show(:content_view_versions, 'id' => options['option_id'])
358
- cv = show(:content_views, 'id' => cvv['content_view_id'])
359
-
360
- composite = cv["composite"]
361
-
362
- export_json_options = { :cvv => cvv }
363
-
364
- if composite
365
- components = cv['components']
366
- export_json_options[:component_cvvs] = components.collect do |component|
367
- component['name']
368
- end
369
- export_json_options[:repositories] = []
370
- else
371
- repositories = fetch_exportable_cvv_repositories(cvv)
372
- collect_packages(repositories)
373
-
374
- export_json_options[:repositories] = repositories
375
- end
376
-
377
- json = export_json(export_json_options)
378
- if repositories&.any? || cv['composite']
379
- create_tar(cv, cvv, repositories, json)
380
- else
381
- msg = <<~MSG
382
- Ensure the content view version '#{cvv['name']}' has at least one repository.
383
- MSG
384
- raise _(msg)
385
- end
386
- return HammerCLI::EX_OK
387
- end
388
-
389
- def create_tar(cv, cvv, repositories, json)
390
- export_prefix = "export-#{cv['label']}-#{cvv['major']}.#{cvv['minor']}"
391
- export_file = "#{export_prefix}.json"
392
- export_repos_tar = "#{export_prefix}-repos.tar"
393
- export_tar = "#{export_prefix}.tar"
394
- export_dir = File.expand_path(options['option_export_dir'].to_s)
395
-
396
- Dir.mkdir("#{export_dir}/#{export_prefix}")
397
-
398
- if repositories&.any?
399
-
400
- Dir.chdir(PUBLISHED_REPOS_DIR) do
401
- repo_tar = "#{export_dir}/#{export_prefix}/#{export_repos_tar}"
402
- repo_dirs = []
403
-
404
- repositories.each do |repo|
405
- repo_dirs.push(repo['relative_path'])
406
- end
407
-
408
- `tar cvfh #{repo_tar} #{repo_dirs.join(" ")}`
409
- end
410
- end
411
-
412
- Dir.chdir("#{export_dir}/#{export_prefix}") do
413
- File.open(export_file, 'w') do |file|
414
- file.write(JSON.pretty_generate(json))
415
- end
416
- end
417
-
418
- Dir.chdir(export_dir) do
419
- `tar cf #{export_tar} #{export_prefix}`
420
- FileUtils.rm_rf(export_prefix)
421
- end
422
- end
423
- end
424
-
425
- class ImportCommand < HammerCLIForeman::Command
426
- include HammerCLIForemanTasks::Async
427
- include HammerCLIKatello::LocalHelper
428
- include HammerCLIKatello::ApipieHelper
429
- include HammerCLIKatello::CVImportExportHelper
430
-
431
- attr_accessor :export_tar_dir, :export_tar_file, :export_tar_prefix
432
-
433
- desc _('Import a content view version')
434
-
435
- command_name "import"
436
-
437
- success_message _("Content view imported.")
438
- failure_message _("Could not import the content view")
439
-
440
- option "--organization-id", "ORGANIZATION_ID", _("Organization numeric identifier")
441
- option(
442
- '--export-tar', 'EXPORT_TAR',
443
- _("Location of export tar on disk")
444
- )
445
-
446
- validate_options do
447
- option(:option_export_tar).required
448
- option(:option_organization_id).required
449
- end
450
-
451
- build_options
452
-
453
- # rubocop:disable Metrics/AbcSize
454
- def execute
455
- unless File.exist?(options['option_export_tar'])
456
- raise _("Export tar #{options['option_export_tar']} does not exist.")
457
- end
458
-
459
- import_tar_params = obtain_export_params(options['option_export_tar'])
460
- untar_export(import_tar_params)
461
-
462
- export_json = read_json(import_tar_params)
463
- cv = content_view(export_json['name'], options['option_organization_id'])
464
- major = export_json['major'].to_s
465
- minor = export_json['minor'].to_s
466
- import_checks(export_json, cv, major, minor)
467
-
468
- if export_json['composite_components']
469
- composite_version_ids = export_json['composite_components'].map do |component|
470
- find_local_component_id(component)
471
- end
472
- update(:content_views, 'id' => cv['id'], 'component_ids' => composite_version_ids)
473
- publish(cv['id'], export_json['major'], export_json['minor'])
474
- else
475
- sync_repositories(export_json['repositories'], options['option_organization_id'],
476
- import_tar_params)
477
-
478
- unless cv['default']
479
- publish(
480
- cv['id'], export_json['major'],
481
- export_json['minor'], repos_units(export_json['repositories'])
482
- )
483
- end
484
- end
485
- return HammerCLI::EX_OK
486
- end
487
- # rubocop:enable Metrics/AbcSize
488
-
489
- def sync_repositories(repositories, organization_id, options)
490
- export_tar_dir = options[:dirname]
491
- export_tar_prefix = options[:prefix]
492
-
493
- repositories.each do |repo|
494
- library_repos = index(
495
- :repositories,
496
- 'organization_id' => organization_id,
497
- 'library' => true,
498
- 'label' => repo['label']
499
- )
500
-
501
- library_repo = library_repos.select do |candidate_repo|
502
- candidate_repo['label'] == repo['label']
503
- end
504
-
505
- library_repo = library_repo.first
506
-
507
- if library_repo.nil?
508
- msg = _("Unable to sync repositories, no library repository found for %s")
509
- raise msg % repo['label']
510
- end
511
-
512
- synchronize(
513
- library_repo['id'],
514
- "file://#{export_tar_dir}/#{export_tar_prefix}/#{repo['relative_path']}"
515
- )
516
- end
517
- end
518
-
519
- def repos_units(repositories)
520
- repositories.collect do |repo|
521
- {
522
- 'label' => repo['label'],
523
- 'rpm_filenames' => repo['rpm_filenames']
524
- }
525
- end
526
- end
527
-
528
- def content_view(name, organization_id)
529
- index(:content_views, 'name' => name, 'organization_id' => organization_id).first
530
- end
531
-
532
- def synchronize(id, source_url)
533
- task_progress(call(:sync, :repositories, 'id' => id, 'source_url' => source_url))
534
- end
535
-
536
- def publish(id, major, minor, repos_units = nil)
537
- params = {'id' => id, 'major' => major, 'minor' => minor }
538
- params['repos_units'] = repos_units if repos_units
539
- task_progress(call(:publish, :content_views, params))
540
- end
541
- end
542
-
543
274
  autoload_subcommands
544
275
  end
545
276
  end