hammer_cli_katello 1.0.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/lib/hammer_cli_katello.rb +5 -1
  3. data/lib/hammer_cli_katello/content_import.rb +16 -1
  4. data/lib/hammer_cli_katello/content_view_version.rb +0 -273
  5. data/lib/hammer_cli_katello/docker.rb +13 -0
  6. data/lib/hammer_cli_katello/docker_manifest.rb +53 -0
  7. data/lib/hammer_cli_katello/docker_tag.rb +40 -0
  8. data/lib/hammer_cli_katello/host_collection.rb +6 -0
  9. data/lib/hammer_cli_katello/host_collection_erratum.rb +10 -0
  10. data/lib/hammer_cli_katello/host_collection_package.rb +30 -0
  11. data/lib/hammer_cli_katello/host_collection_package_group.rb +30 -0
  12. data/lib/hammer_cli_katello/host_errata.rb +9 -1
  13. data/lib/hammer_cli_katello/host_package.rb +32 -0
  14. data/lib/hammer_cli_katello/host_package_group.rb +16 -0
  15. data/lib/hammer_cli_katello/id_resolver.rb +3 -1
  16. data/lib/hammer_cli_katello/organization.rb +10 -0
  17. data/lib/hammer_cli_katello/ping.rb +13 -5
  18. data/lib/hammer_cli_katello/repository.rb +21 -27
  19. data/lib/hammer_cli_katello/simple_content_access.rb +2 -0
  20. data/lib/hammer_cli_katello/version.rb +1 -1
  21. data/locale/hammer-cli-katello.pot +0 -25
  22. data/test/data/4.0/foreman_api.json +1 -1
  23. data/test/data/4.1/foreman_api.json +1 -0
  24. data/test/functional/activation_key/subscriptions_test.rb +5 -2
  25. data/test/functional/content_export/complete/version_test.rb +35 -0
  26. data/test/functional/content_import/list_test.rb +65 -0
  27. data/test/functional/content_import/version_test.rb +6 -6
  28. data/test/functional/host_collection/create_test.rb +11 -0
  29. data/test/functional/organization/info_test.rb +22 -0
  30. data/test/functional/ping_test.rb +52 -13
  31. data/test/test_helper.rb +1 -1
  32. metadata +15 -45
  33. data/lib/hammer_cli_katello/cv_import_export_helper.rb +0 -187
  34. data/test/functional/content_view/version/cv_import_export_helper_test.rb +0 -20
  35. data/test/functional/content_view/version/default_export_test.rb +0 -40
  36. data/test/functional/content_view/version/export_test.rb +0 -148
  37. data/test/functional/content_view/version/import_test.rb +0 -346
  38. data/test/functional/repository/export_test.rb +0 -121
@@ -1,187 +0,0 @@
1
- # rubocop:disable Metrics/ModuleLength
2
- module HammerCLIKatello
3
- module CVImportExportHelper
4
- PUBLISHED_REPOS_DIR = "/var/lib/pulp/published/yum/https/repos/".freeze
5
-
6
- def fetch_exportable_cvv_repositories(cvv)
7
- immediate = []
8
- non_immediate_names = []
9
-
10
- cvv['repositories'].each do |repo|
11
- next unless repo['content_type'] == 'yum'
12
-
13
- api_repo = show(:repositories, 'id' => repo['id'], :full_result => true)
14
-
15
- download_policy = if api_repo['library_instance_id']
16
- library = show(:repositories, 'id' => api_repo['library_instance_id'])
17
- library['download_policy']
18
- else
19
- api_repo['download_policy']
20
- end
21
-
22
- if download_policy == 'immediate'
23
- immediate << api_repo
24
- else
25
- non_immediate_names << api_repo['name']
26
- end
27
- end
28
-
29
- warn_repo_download_policy(non_immediate_names)
30
-
31
- return immediate
32
- end
33
-
34
- def find_local_component_id(component_from_export)
35
- *name, version = component_from_export.split(' ')
36
- name = name.join(' ')
37
- existing_component_cv = content_view(name, options['option_organization_id'])
38
- found_composite_version = existing_component_cv['versions'].select do |v|
39
- v['version'] == version
40
- end
41
- if found_composite_version.empty?
42
- raise _("Unable to find CV version %{cvv} on system. Please ensure it " \
43
- "is already imported." % {'cvv' => component_from_export})
44
- end
45
- found_composite_version.first['id']
46
- end
47
-
48
- def warn_repo_download_policy(repository_names)
49
- return if repository_names.empty?
50
-
51
- msg = <<~MSG
52
- The following repositories could not be exported due to the download policy
53
- not being set to 'immediate':
54
- #{repository_names.join(', ')}
55
- MSG
56
- print_message msg
57
- end
58
-
59
- def collect_packages(repositories)
60
- repositories.each do |repo|
61
- per_page = 50
62
- repo['packages'] = []
63
- repo['errata'] = []
64
- repo_packages = repo['content_counts']['rpm']
65
- errata_count = repo['content_counts']['erratum']
66
- pkg_pages = (repo_packages / per_page.to_f).ceil
67
- errata_pages = (errata_count / per_page.to_f).ceil
68
- (1..pkg_pages).each do |page|
69
- repo['packages'] += index(:packages, 'repository_id' => repo['id'],
70
- :page => page, :per_page => 50)
71
- end
72
- (1..errata_pages).each do |page|
73
- repo['errata'] += index(:errata, 'repository_id' => repo['id'],
74
- :page => page, :per_page => 50)
75
- end
76
- end
77
- end
78
-
79
- def import_checks(cv, import_cv, major, minor)
80
- version = "#{major}.#{minor}".to_f
81
-
82
- if import_cv.nil?
83
- raise _("The Content View #{cv['name']} is not present on this server,"\
84
- " please create the Content View and try the import again.")
85
- end
86
-
87
- unless import_cv['default']
88
- if import_cv['latest_version'].to_f >= version
89
- raise _("The latest version (#{import_cv['latest_version']}) of"\
90
- " the Content View '#{cv['name']}'"\
91
- " is greater or equal to the version you are trying to import (#{version})")
92
- end
93
- end
94
-
95
- unless import_cv['repository_ids'].nil?
96
- repositories = import_cv['repository_ids'].collect do |repo_id|
97
- show(:repositories, 'id' => repo_id)
98
- end
99
- repositories.each do |repo|
100
- if repo['mirror_on_sync'] == true
101
- raise _("The Repository '#{repo['name']}' is set with Mirror-on-Sync to YES."\
102
- " Please change Mirror-on-Sync to NO and try the import again.")
103
- end
104
- end
105
- end
106
- end
107
-
108
- def untar_export(options)
109
- export_tar_file = options[:filename]
110
- export_tar_dir = options[:dirname]
111
- export_tar_prefix = options[:prefix]
112
-
113
- Dir.chdir(export_tar_dir) do
114
- `tar -xf #{export_tar_file}`
115
- end
116
-
117
- Dir.chdir("#{export_tar_dir}/#{export_tar_prefix}") do
118
- if File.exist?(export_tar_file.gsub('.tar', '-repos.tar'))
119
- `tar -xf #{export_tar_file.gsub('.tar', '-repos.tar')}`
120
- end
121
- end
122
- end
123
-
124
- def obtain_export_params(option_export_tar)
125
- export_tar_file = File.basename(option_export_tar)
126
- {:filename => export_tar_file,
127
- :dirname => File.dirname(option_export_tar),
128
- :prefix => export_tar_file.gsub('.tar', '')}
129
- end
130
-
131
- def read_json(options)
132
- export_tar_file = options[:filename]
133
- export_tar_dir = options[:dirname]
134
- export_tar_prefix = options[:prefix]
135
-
136
- json_file = export_tar_file.gsub('tar', 'json')
137
- json_file = "#{export_tar_dir}/#{export_tar_prefix}/#{json_file}"
138
- json_file = File.read(json_file)
139
- JSON.parse(json_file)
140
- end
141
-
142
- def export_json(export_json_options)
143
- content_view_version = export_json_options[:cvv]
144
- repositories = export_json_options[:repositories]
145
- json = {
146
- "name" => content_view_version['content_view']['name'],
147
- "major" => content_view_version['major'],
148
- "minor" => content_view_version['minor']
149
- }
150
- json["composite_components"] = export_json_options[:component_cvvs]
151
- json["repositories"] = repositories.collect do |repo|
152
- {
153
- "id" => repo['id'],
154
- "label" => repo['label'],
155
- "content_type" => repo['content_type'],
156
- "backend_identifier" => repo['backend_identifier'],
157
- "relative_path" => repo['relative_path'],
158
- "on_disk_path" => "#{PUBLISHED_REPOS_DIR}/#{repo['relative_path']}",
159
- "rpm_filenames" => repo['packages'].collect { |package| package['filename'] },
160
- "errata_ids" => repo['errata'].collect { |errata| errata['errata_id'] }
161
- }
162
- end
163
- json
164
- end
165
-
166
- def fail_msg_import
167
- _("This command is not supported with Pulp 3. Use `hammer content-import` instead.")
168
- end
169
-
170
- def fail_msg_export
171
- _("This command is not supported with Pulp 3. Use `hammer content-export` instead.")
172
- end
173
-
174
- def validate_pulp3_not_enabled(failure_message)
175
- pulp3_enabled = HammerCLIForeman
176
- .foreman_api_connection
177
- .resource(:content_exports)
178
- .call(:api_status)['api_usable']
179
- if pulp3_enabled
180
- raise failure_message
181
- end
182
- rescue NoMethodError
183
- # if the api endpoint isn't there, the validation passes
184
- true
185
- end
186
- end
187
- end
@@ -1,20 +0,0 @@
1
- require_relative '../../test_helper'
2
- describe 'CVImportExportHelper' do
3
- describe 'validate_pulp3_not_enabled' do
4
- include HammerCLIKatello::CVImportExportHelper
5
- it 'returns true when the api endpoint does not return a value' do
6
- api_expects(:content_exports, :api_status)
7
- assert_equal true, validate_pulp3_not_enabled('fail_msg')
8
- end
9
-
10
- it 'raises error when the api reports Pulp 3 is enabled' do
11
- api_expects(:content_exports, :api_status).returns('api_usable' => true)
12
- assert_raises(RuntimeError, 'fail msg') { validate_pulp3_not_enabled('fail msg') }
13
- end
14
-
15
- it 'returns nil when the api reports Pulp 3 is not enabled' do
16
- api_expects(:content_exports, :api_status).returns('api_usable' => false)
17
- assert_equal nil, validate_pulp3_not_enabled('fail_msg')
18
- end
19
- end
20
- end
@@ -1,40 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '../../test_helper')
2
-
3
- describe 'content-view version export' do
4
- include ForemanTaskHelpers
5
-
6
- before do
7
- @cmd = %w(content-view version export-default)
8
- end
9
-
10
- it "performs export with bad SELinux" do
11
- params = [
12
- '--export-dir=/tmp/default'
13
- ]
14
-
15
- File.expects(:exist?).with('/usr/share/foreman').returns(true)
16
- File.stubs(:exist?).with('/var/log/hammer/hammer.log._copy_').returns(false)
17
-
18
- Dir.expects(:mkdir).with('/tmp/default').returns(0)
19
- Kernel.expects(:system).with("rsync -aL /var/lib/pulp/published/yum/https/repos/ /tmp/default")
20
-
21
- result = run_cmd(@cmd + params)
22
- assert_equal(HammerCLI::EX_CANTCREAT, result.exit_code)
23
- end
24
-
25
- it "performs export" do
26
- params = [
27
- '--export-dir=/tmp/default'
28
- ]
29
-
30
- File.expects(:exist?).with('/usr/share/foreman').returns(true)
31
- File.stubs(:exist?).with('/var/log/hammer/hammer.log._copy_').returns(false)
32
-
33
- Dir.expects(:exist?).with('/tmp/default').returns(0)
34
- Kernel.expects(:system).with("rsync -aL /var/lib/pulp/published/yum/https/repos/ /tmp/default")
35
- .returns(true)
36
-
37
- result = run_cmd(@cmd + params)
38
- assert_equal(HammerCLI::EX_OK, result.exit_code)
39
- end
40
- end
@@ -1,148 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '../../test_helper')
2
-
3
- describe 'content-view version export' do
4
- include ForemanTaskHelpers
5
-
6
- before do
7
- @cmd = %w(content-view version export)
8
- end
9
-
10
- it "performs export" do
11
- HammerCLIKatello::ContentViewVersion::ExportCommand
12
- .any_instance
13
- .expects(:validate_pulp3_not_enabled)
14
- .returns(true)
15
- params = [
16
- '--id=5',
17
- '--export-dir=/tmp/exports'
18
- ]
19
-
20
- ex = api_expects(:content_view_versions, :show)
21
- ex.returns(
22
- 'id' => '5',
23
- 'repositories' => [{'id' => '2', 'content_type' => 'yum'}],
24
- 'major' => 1,
25
- 'minor' => 0,
26
- 'content_view' => {'name' => 'cv'},
27
- 'content_view_id' => 4321
28
- )
29
-
30
- ex = api_expects(:content_views, :show)
31
- ex.returns(
32
- 'id' => '4321',
33
- 'composite' => false,
34
- 'label' => 'cv'
35
- )
36
-
37
- ex = api_expects(:repositories, :show).with_params('id' => '2')
38
- ex.returns(
39
- 'id' => '2',
40
- 'label' => 'Test_Repo',
41
- 'content_type' => 'yum',
42
- 'download_policy' => 'immediate',
43
- 'backend_identifier' => 'Default_Organization-Library-Test_Repo',
44
- 'relative_path' => 'Default_Organization/Library/Test_Repo',
45
- 'library_instance_id' => '1',
46
- 'content_counts' => {
47
- 'rpm' => 1,
48
- 'erratum' => 1
49
- }
50
- )
51
-
52
- api_expects(:repositories, :show).with_params('id' => '1').returns(
53
- 'id' => '1',
54
- 'download_policy' => 'immediate'
55
- )
56
- api_expects(:packages, :index).returns('results' => [])
57
- api_expects(:errata, :index).returns('results' => [])
58
-
59
- File.expects(:exist?).with('/usr/share/foreman').returns(true)
60
- File.stubs(:exist?).with('/var/log/hammer/hammer.log._copy_').returns(false)
61
-
62
- Dir.expects(:chdir).with("/var/lib/pulp/published/yum/https/repos/").returns(true)
63
- Dir.expects(:mkdir).with('/tmp/exports/export-cv-1.0').returns(0)
64
- Dir.expects(:chdir).with('/tmp/exports').returns(0)
65
- Dir.expects(:chdir).with('/tmp/exports/export-cv-1.0').returns(0)
66
-
67
- result = run_cmd(@cmd + params)
68
- assert_equal(HammerCLI::EX_OK, result.exit_code)
69
- end
70
-
71
- it "performs composite export" do
72
- HammerCLIKatello::ContentViewVersion::ExportCommand
73
- .any_instance
74
- .expects(:validate_pulp3_not_enabled)
75
- .returns(true)
76
- params = [
77
- '--id=999',
78
- '--export-dir=/tmp/exports'
79
- ]
80
-
81
- ex = api_expects(:content_view_versions, :show)
82
- ex.returns(
83
- 'id' => '999',
84
- 'repositories' => [{'id' => '2'}],
85
- 'major' => 1,
86
- 'minor' => 0,
87
- 'content_view' => {'name' => 'cv'},
88
- 'content_view_id' => 4321
89
- )
90
-
91
- ex = api_expects(:content_views, :show)
92
- ex.returns(
93
- 'id' => '4321',
94
- 'composite' => true,
95
- 'components' => [{ 'name' => "injera 95.5" }, {'name' => 'carrot wot 87.0'}],
96
- 'label' => 'cv'
97
- )
98
-
99
- File.expects(:exist?).with('/usr/share/foreman').returns(true)
100
- File.stubs(:exist?).with('/var/log/hammer/hammer.log._copy_').returns(false)
101
-
102
- Dir.expects(:chdir).with("/var/lib/pulp/published/yum/https/repos/").never
103
- Dir.expects(:mkdir).with('/tmp/exports/export-cv-1.0').returns(0)
104
- Dir.expects(:chdir).with('/tmp/exports').returns(0)
105
- Dir.expects(:chdir).with('/tmp/exports/export-cv-1.0').returns(0)
106
-
107
- result = run_cmd(@cmd + params)
108
- assert_equal(HammerCLI::EX_OK, result.exit_code)
109
- end
110
-
111
- it "fails export if content view version has no repository" do
112
- HammerCLIKatello::ContentViewVersion::ExportCommand
113
- .any_instance
114
- .expects(:validate_pulp3_not_enabled)
115
- .returns(true)
116
- params = [
117
- '--id=5',
118
- '--export-dir=/tmp/exports'
119
- ]
120
-
121
- ex = api_expects(:content_view_versions, :show)
122
- ex.returns(
123
- 'id' => '5',
124
- 'name' => 'Test_version',
125
- 'repositories' => [],
126
- 'major' => 1,
127
- 'minor' => 0,
128
- 'content_view' => {'name' => 'cv'},
129
- 'content_view_id' => 4321,
130
- 'puppet_modules' => []
131
- )
132
-
133
- ex = api_expects(:content_views, :show)
134
- ex.returns(
135
- 'id' => '4321',
136
- 'composite' => false
137
- )
138
-
139
- File.expects(:exist?).with('/usr/share/foreman').returns(true)
140
- File.stubs(:exist?).with('/var/log/hammer/hammer.log._copy_').returns(false)
141
-
142
- result = run_cmd(@cmd + params)
143
- assert_equal(result.err, "Could not export the content view:\n"\
144
- " Error: Ensure the content view version 'Test_version'"\
145
- " has at least one repository.\n")
146
- assert_equal(HammerCLI::EX_SOFTWARE, result.exit_code)
147
- end
148
- end
@@ -1,346 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '../../test_helper')
2
-
3
- describe 'content-view version import' do
4
- include ForemanTaskHelpers
5
-
6
- before do
7
- @cmd = %w(content-view version import)
8
- end
9
-
10
- it "performs import" do
11
- HammerCLIKatello::ContentViewVersion::ImportCommand
12
- .any_instance
13
- .expects(:validate_pulp3_not_enabled)
14
- .returns(true)
15
- params = [
16
- '--export-tar=/tmp/exports/export-2.tar',
17
- '--organization-id=1'
18
- ]
19
-
20
- File.expects(:exist?).with('/usr/share/foreman').returns(true)
21
- File.stubs(:exist?).with('/var/log/hammer/hammer.log._copy_').returns(false)
22
-
23
- File.expects(:exist?).with("/tmp/exports/export-2.tar").returns(true)
24
- Dir.expects(:chdir).with('/tmp/exports').returns(0)
25
- Dir.expects(:chdir).with('/tmp/exports/export-2').returns(0)
26
- File.expects(:read).with("/tmp/exports/export-2/export-2.json").returns(
27
- JSON.dump(
28
- 'name' => 'Foo View',
29
- 'major' => '5',
30
- 'minor' => '0',
31
- 'repositories' => [{
32
- 'label' => 'foo',
33
- 'rpm_filenames' => ['foo-1.0-1.el7']
34
- }]
35
- )
36
- )
37
-
38
- ex = api_expects(:content_views, :index)
39
- ex = ex.with_params('name' => 'Foo View', 'organization_id' => '1')
40
- ex.returns(
41
- 'results' => [{
42
- 'id' => '5',
43
- 'repositories' => [{'id' => '2', 'label' => 'foo'}],
44
- 'content_view' => {'name' => 'cv'}
45
- }]
46
- )
47
-
48
- ex = api_expects(:repositories, :index)
49
- ex = ex.with_params('organization_id' => '1', 'library' => true)
50
- ex.returns(
51
- 'results' => [{
52
- 'id' => '2',
53
- 'label' => 'foo'
54
- }]
55
- )
56
-
57
- ex = api_expects(:repositories, :sync)
58
- ex = ex.with_params('id' => '2', 'source_url' => "file:///tmp/exports/export-2/")
59
- ex.returns('id' => '2', 'state' => 'planned')
60
-
61
- expect_foreman_task('3')
62
-
63
- ex = api_expects(:content_views, :publish)
64
- ex = ex.with_params(
65
- 'id' => '5',
66
- 'major' => '5',
67
- 'minor' => '0',
68
- 'repos_units' => [{
69
- 'label' => 'foo',
70
- 'rpm_filenames' => ['foo-1.0-1.el7']
71
- }]
72
- )
73
- ex.returns('id' => '2', 'state' => 'planned')
74
-
75
- expect_foreman_task('3')
76
-
77
- result = run_cmd(@cmd + params)
78
- assert_equal(HammerCLI::EX_OK, result.exit_code)
79
- end
80
-
81
- it "performs composite import" do
82
- HammerCLIKatello::ContentViewVersion::ImportCommand
83
- .any_instance
84
- .expects(:validate_pulp3_not_enabled)
85
- .returns(true)
86
- params = [
87
- '--export-tar=/tmp/exports/export-999.tar',
88
- '--organization-id=1'
89
- ]
90
-
91
- File.expects(:exist?).with('/usr/share/foreman').returns(true)
92
- File.stubs(:exist?).with('/var/log/hammer/hammer.log._copy_').returns(false)
93
-
94
- File.expects(:exist?).with("/tmp/exports/export-999.tar").returns(true)
95
- Dir.expects(:chdir).with('/tmp/exports').returns(0)
96
- Dir.expects(:chdir).with('/tmp/exports/export-999').returns(0)
97
- File.expects(:read).with("/tmp/exports/export-999/export-999.json").returns(
98
- JSON.dump(
99
- 'name' => 'Foo Composite View',
100
- 'major' => '10',
101
- 'minor' => '0',
102
- 'composite_components' => ["berbere 55.32"]
103
- )
104
- )
105
-
106
- ex = api_expects(:content_views, :index)
107
- ex = ex.with_params('name' => 'berbere', 'organization_id' => '1')
108
- ex.returns(
109
- 'results' => [{'versions' => [{'version' => '10.0', 'id' => '654'},
110
- {'version' => '55.32', 'id' => '876'}]
111
- }]
112
- )
113
-
114
- ex = api_expects(:content_views, :index)
115
- ex = ex.with_params('name' => 'Foo Composite View', 'organization_id' => '1')
116
- ex.returns(
117
- 'results' => [{
118
- 'id' => '5',
119
- 'repositories' => [{'id' => '2', 'label' => 'foo'}],
120
- 'content_view' => {'name' => 'cv'}
121
- }]
122
- )
123
-
124
- ex = api_expects(:content_views, :update)
125
- ex = ex.with_params(
126
- 'id' => '5',
127
- 'component_ids' => ['876']
128
- )
129
- ex.returns('id' => '5', 'state' => 'planned')
130
-
131
- ex = api_expects(:content_views, :publish)
132
- ex = ex.with_params(
133
- 'id' => '5',
134
- 'major' => '10',
135
- 'minor' => '0'
136
- )
137
- ex.returns('id' => '2', 'state' => 'planned')
138
-
139
- expect_foreman_task('3')
140
-
141
- result = run_cmd(@cmd + params)
142
- assert_equal(HammerCLI::EX_OK, result.exit_code)
143
- end
144
-
145
- it "performs composite import, component not found" do
146
- HammerCLIKatello::ContentViewVersion::ImportCommand
147
- .any_instance
148
- .expects(:validate_pulp3_not_enabled)
149
- .returns(true)
150
- params = [
151
- '--export-tar=/tmp/exports/export-999.tar',
152
- '--organization-id=1'
153
- ]
154
-
155
- File.expects(:exist?).with('/usr/share/foreman').returns(true)
156
- File.stubs(:exist?).with('/var/log/hammer/hammer.log._copy_').returns(false)
157
-
158
- File.expects(:exist?).with("/tmp/exports/export-999.tar").returns(true)
159
- Dir.expects(:chdir).with('/tmp/exports').returns(0)
160
- Dir.expects(:chdir).with('/tmp/exports/export-999').returns(0)
161
- File.expects(:read).with("/tmp/exports/export-999/export-999.json").returns(
162
- JSON.dump(
163
- 'name' => 'Foo Composite View',
164
- 'major' => '10',
165
- 'minor' => '0',
166
- 'composite_components' => ["berbere 55.32", "unicorn 99.99"]
167
- )
168
- )
169
-
170
- ex = api_expects(:content_views, :index)
171
- ex = ex.with_params('name' => 'berbere', 'organization_id' => '1')
172
- ex.returns(
173
- 'results' => [{'versions' => [{'version' => '10.0', 'id' => '654'},
174
- {'version' => '55.32', 'id' => '876'}]
175
- }]
176
- )
177
-
178
- ex = api_expects(:content_views, :index)
179
- ex = ex.with_params('name' => 'unicorn', 'organization_id' => '1')
180
- ex.returns(
181
- 'results' => []
182
- )
183
-
184
- ex = api_expects(:content_views, :index)
185
- ex = ex.with_params('name' => 'Foo Composite View', 'organization_id' => '1')
186
- ex.returns(
187
- 'results' => [{
188
- 'id' => '5',
189
- 'repositories' => [{'id' => '2', 'label' => 'foo'}],
190
- 'content_view' => {'name' => 'cv'}
191
- }]
192
- )
193
-
194
- result = run_cmd(@cmd + params)
195
- assert_equal(HammerCLI::EX_SOFTWARE, result.exit_code)
196
- end
197
-
198
- it "fails import if cv has not been created" do
199
- HammerCLIKatello::ContentViewVersion::ImportCommand
200
- .any_instance
201
- .expects(:validate_pulp3_not_enabled)
202
- .returns(true)
203
- params = [
204
- '--export-tar=/tmp/exports/export-2.tar',
205
- '--organization-id=1'
206
- ]
207
-
208
- File.expects(:exist?).with('/usr/share/foreman').returns(true)
209
- File.stubs(:exist?).with('/var/log/hammer/hammer.log._copy_').returns(false)
210
-
211
- File.expects(:exist?).with("/tmp/exports/export-2.tar").returns(true)
212
- Dir.expects(:chdir).with('/tmp/exports').returns(0)
213
- Dir.expects(:chdir).with('/tmp/exports/export-2').returns(0)
214
- File.expects(:read).with("/tmp/exports/export-2/export-2.json").returns(
215
- JSON.dump(
216
- 'name' => 'Foo View'
217
- )
218
- )
219
-
220
- ex = api_expects(:content_views, :index)
221
- ex = ex.with_params('name' => 'Foo View', 'organization_id' => '1')
222
- ex.returns([])
223
-
224
- result = run_cmd(@cmd + params)
225
- assert_equal(HammerCLI::EX_SOFTWARE, result.exit_code)
226
- end
227
-
228
- it "fails import if repo is set to mirror-on-sync" do
229
- HammerCLIKatello::ContentViewVersion::ImportCommand
230
- .any_instance
231
- .expects(:validate_pulp3_not_enabled)
232
- .returns(true)
233
- params = [
234
- '--export-tar=/tmp/exports/export-2.tar',
235
- '--organization-id=1'
236
- ]
237
-
238
- File.expects(:exist?).with('/usr/share/foreman').returns(true)
239
- File.stubs(:exist?).with('/var/log/hammer/hammer.log._copy_').returns(false)
240
-
241
- File.expects(:exist?).with("/tmp/exports/export-2.tar").returns(true)
242
- Dir.expects(:chdir).with('/tmp/exports').returns(0)
243
- Dir.expects(:chdir).with('/tmp/exports/export-2').returns(0)
244
- File.expects(:read).with("/tmp/exports/export-2/export-2.json").returns(
245
- JSON.dump(
246
- 'name' => 'Foo View',
247
- 'major' => '2',
248
- 'minor' => '1'
249
- )
250
- )
251
-
252
- ex = api_expects(:content_views, :index)
253
- ex = ex.with_params('name' => 'Foo View', 'organization_id' => '1')
254
- ex.returns(
255
- 'results' => [{
256
- 'id' => '5',
257
- 'repositories' => [{'id' => '2', 'label' => 'foo', 'mirror_on_sync' => 'true'}],
258
- 'content_view' => {'name' => 'cv'}
259
- }]
260
- )
261
-
262
- result = run_cmd(@cmd + params)
263
- assert_equal(result.exit_code, 70)
264
- end
265
-
266
- it "fails import if cv version already exists" do
267
- HammerCLIKatello::ContentViewVersion::ImportCommand
268
- .any_instance
269
- .expects(:validate_pulp3_not_enabled)
270
- .returns(true)
271
- params = [
272
- '--export-tar=/tmp/exports/export-2.tar',
273
- '--organization-id=1'
274
- ]
275
-
276
- File.expects(:exist?).with('/usr/share/foreman').returns(true)
277
- File.stubs(:exist?).with('/var/log/hammer/hammer.log._copy_').returns(false)
278
-
279
- File.expects(:exist?).with("/tmp/exports/export-2.tar").returns(true)
280
- Dir.expects(:chdir).with('/tmp/exports').returns(0)
281
- Dir.expects(:chdir).with('/tmp/exports/export-2').returns(0)
282
- File.expects(:read).with("/tmp/exports/export-2/export-2.json").returns(
283
- JSON.dump(
284
- 'name' => 'Foo View',
285
- 'major' => '2',
286
- 'minor' => '1'
287
- )
288
- )
289
-
290
- ex = api_expects(:content_views, :index)
291
- ex = ex.with_params('name' => 'Foo View', 'organization_id' => '1')
292
- ex.returns(
293
- 'results' => [{
294
- 'id' => '5',
295
- 'content_view' => {'name' => 'cv'},
296
- 'versions' => [{'version' => '2.1', 'id' => '654'}]
297
- }]
298
- )
299
-
300
- result = run_cmd(@cmd + params)
301
- assert_equal(result.exit_code, 70)
302
- end
303
-
304
- it "fails import if any repository does not exist" do
305
- HammerCLIKatello::ContentViewVersion::ImportCommand
306
- .any_instance
307
- .expects(:validate_pulp3_not_enabled)
308
- .returns(true)
309
- params = [
310
- '--export-tar=/tmp/exports/export-2.tar',
311
- '--organization-id=1'
312
- ]
313
-
314
- File.expects(:exist?).with('/usr/share/foreman').returns(true)
315
- File.stubs(:exist?).with('/var/log/hammer/hammer.log._copy_').returns(false)
316
-
317
- File.expects(:exist?).with("/tmp/exports/export-2.tar").returns(true)
318
- Dir.expects(:chdir).with('/tmp/exports').returns(0)
319
- Dir.expects(:chdir).with('/tmp/exports/export-2').returns(0)
320
- File.expects(:read).with("/tmp/exports/export-2/export-2.json").returns(
321
- JSON.dump(
322
- 'name' => 'Foo View',
323
- 'repositories' => ['label' => 'foo'],
324
- 'major' => '2',
325
- 'minor' => '1'
326
- )
327
- )
328
-
329
- ex = api_expects(:content_views, :index)
330
- ex = ex.with_params('name' => 'Foo View', 'organization_id' => '1')
331
- ex.returns(
332
- 'results' => [{
333
- 'id' => '5',
334
- 'repositories' => [{'id' => '2', 'label' => 'foo'}],
335
- 'content_view' => {'name' => 'cv'}
336
- }]
337
- )
338
-
339
- ex = api_expects(:repositories, :index)
340
- ex = ex.with_params('organization_id' => '1', 'library' => true)
341
- ex.returns([])
342
-
343
- result = run_cmd(@cmd + params)
344
- assert_equal(HammerCLI::EX_SOFTWARE, result.exit_code)
345
- end
346
- end