foreman_rh_cloud 7.0.48 → 8.0.46

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a6230453f17922c1abfb42067a23893ddce8d7951daec3a9ed575222896af39f
4
- data.tar.gz: 4bd74461b9141c4b8b0440b1476567dce3321c86265107baefc2443b816d4100
3
+ metadata.gz: 8db662f6cd6809ba5dd5b183ec76330b4a1d4eb6db931136c8e34dcdf53c796c
4
+ data.tar.gz: e410219ca7fcbd0555d157f05123cc7c7618b29531157de42a3e3413d9d96eb4
5
5
  SHA512:
6
- metadata.gz: c788d3f66902d5f016cd453b529c4fcb2c62a937946289c4a0b11acccc51737526cfa3c8525bdcb163bfb89c90d1a05b3c47f81dfd4a3ee49cd7fc42d6e5a74d
7
- data.tar.gz: f0ed65721bce3577344404649db99c21a56b153bd3e5bc2dc484c0e0029875b39a16ed4ab46dab508e34faca28678a3fd0f0634913d824be1bb04934b4fe098c
6
+ metadata.gz: 601501b2ec41be00150bbc9797ad9fe7c93a92aea619ca1781ef3df88224e3f6fb04b2c16e2c2e974832ef67926794108d3c8f2c7654d52056e25a218887cd55
7
+ data.tar.gz: 6a7ca4b57eb655c5d4c3a880f0deac4af3f86c6a4b71ddd4ff02b7adc4aa9bf5c0cb2a70731f5472ce763b841a75f755835e0674d489c6b5d51759ee9d1c85f3
@@ -113,7 +113,7 @@ module ForemanInventoryUpload
113
113
  bash_hostname = `uname -n`.chomp
114
114
  foreman_hostname = ForemanRhCloud.foreman_host&.name
115
115
  if bash_hostname == foreman_hostname
116
- fqdn(ForemanRhCloud.foreman_host)
116
+ fqdn(foreman_hostname)
117
117
  elsif Setting[:obfuscate_inventory_hostnames]
118
118
  obfuscate_fqdn(bash_hostname)
119
119
  else
@@ -45,11 +45,9 @@ module ForemanInventoryUpload
45
45
  end
46
46
 
47
47
  def content_data
48
- [
49
- ['lifecycle_environment', @host.lifecycle_environment&.name],
50
- ['content_view', @host.content_view&.name],
51
- ] +
52
- (@host.activation_keys || []).map { |item| ['activation_key', item.name] }
48
+ (@host.lifecycle_environments.uniq || []).map { |item| ['lifecycle_environment', item.name] } +
49
+ (@host.activation_keys || []).map { |item| ['activation_key', item.name] } +
50
+ (@host.content_views || []).map { |item| ['content_view', item.name] }
53
51
  end
54
52
 
55
53
  def satellite_server_data
@@ -1,3 +1,3 @@
1
1
  module ForemanRhCloud
2
- VERSION = '7.0.48'.freeze
2
+ VERSION = '8.0.46'.freeze
3
3
  end
@@ -43,17 +43,7 @@ module InsightsCloud
43
43
  end
44
44
 
45
45
  def done?(current_status = invocation_status)
46
- ActiveModel::Type::Boolean.new.cast(current_status[:task_state][:task_done_reported])
47
- end
48
-
49
- def job_finished?
50
- job_invocation.finished?
51
- end
52
-
53
- def all_hosts_finished?(current_status)
54
- current_status[:hosts_state].values.all? do |status|
55
- ActiveModel::Type::Boolean.new.cast(status['report_done'] == true)
56
- end
46
+ job_invocation.finished? || current_status.map { |_host_id, task_status| task_status['report_done'] }.all?
57
47
  end
58
48
 
59
49
  # noop, we don't want to do anything when the polling task starts
@@ -105,11 +95,7 @@ module InsightsCloud
105
95
  end
106
96
 
107
97
  def host_status(host)
108
- external_task&.dig('invocation_status', :hosts_state, host)
109
- end
110
-
111
- def task_done_state
112
- ActiveModel::Type::Boolean.new.cast(external_task&.dig('invocation_status', :task_state, :task_done_reported))
98
+ external_task&.dig('invocation_status', host)
113
99
  end
114
100
 
115
101
  def sequence(host)
@@ -125,15 +111,13 @@ module InsightsCloud
125
111
  end
126
112
 
127
113
  def invocation_status
128
- hosts_state = Hash[job_invocation.targeting.hosts.map do |host|
114
+ Hash[job_invocation.targeting.hosts.map do |host|
129
115
  next unless host.insights&.uuid
130
116
  [
131
117
  host.insights.uuid,
132
118
  task_status(job_invocation.sub_task_for_host(host), host.insights.uuid),
133
119
  ]
134
120
  end.compact]
135
-
136
- {task_state: {task_done_reported: task_done_state}, hosts_state: hosts_state}
137
121
  end
138
122
 
139
123
  def task_status(host_task, host_name)
@@ -144,7 +128,7 @@ module InsightsCloud
144
128
  {
145
129
  'state' => host_task.state,
146
130
  'output' => host_task.main_action.live_output.map { |line| line['output'] }.join("\n"),
147
- 'exit_status' => ActiveModel::Type::Integer.new.cast(host_task.main_action.exit_status),
131
+ 'exit_status' => host_task.main_action.exit_status,
148
132
  'sequence' => sequence(host_name),
149
133
  'report_done' => host_done?(host_name),
150
134
  }
@@ -154,9 +138,9 @@ module InsightsCloud
154
138
  generator = InsightsCloud::Generators::PlaybookProgressGenerator.new(correlation_id)
155
139
  all_hosts_success = true
156
140
 
157
- invocation_status[:hosts_state].each do |host_name, status|
141
+ invocation_status.each do |host_name, status|
158
142
  # skip host if the host already reported that it's finished
159
- next if ActiveModel::Type::Boolean.new.cast(status['report_done'])
143
+ next if status['report_done']
160
144
 
161
145
  unless status['state'] == 'unknown'
162
146
  sequence = status['sequence']
@@ -170,11 +154,7 @@ module InsightsCloud
170
154
  all_hosts_success &&= status['exit_status'] == 0
171
155
  end
172
156
  end
173
-
174
- if (job_finished? || all_hosts_finished?(invocation_status))
175
- generator.job_finished_message(all_hosts_success)
176
- invocation_status[:task_state][:task_done_reported] = true
177
- end
157
+ generator.job_finished_message(all_hosts_success) if done?(invocation_status)
178
158
 
179
159
  send_report(generator.generate)
180
160
  end
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "foreman_rh_cloud",
3
- "version": "7.0.48",
3
+ "version": "8.0.46",
4
4
  "description": "Inventory Upload =============",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -110,7 +110,7 @@ module InsightsCloud::Api
110
110
  User.current = User.find_by(login: 'secret_admin')
111
111
 
112
112
  @env = FactoryBot.create(:katello_k_t_environment)
113
- cv = @env.content_views << FactoryBot.create(:katello_content_view, organization: @env.organization)
113
+ @env2 = FactoryBot.create(:katello_k_t_environment, organization: @env.organization)
114
114
 
115
115
  @host = FactoryBot.create(
116
116
  :host,
@@ -118,8 +118,16 @@ module InsightsCloud::Api
118
118
  :with_content,
119
119
  :with_hostgroup,
120
120
  :with_parameter,
121
- content_view: cv.first,
122
- lifecycle_environment: @env,
121
+ content_view_environments: [
122
+ FactoryBot.create(
123
+ :katello_content_view_environment,
124
+ content_view: FactoryBot.create(:katello_content_view, organization: @env.organization),
125
+ lifecycle_environment: @env),
126
+ FactoryBot.create(
127
+ :katello_content_view_environment,
128
+ content_view: FactoryBot.create(:katello_content_view, organization: @env.organization),
129
+ lifecycle_environment: @env2),
130
+ ],
123
131
  organization: @env.organization
124
132
  )
125
133
 
@@ -33,6 +33,13 @@ FactoryBot.define do
33
33
  end
34
34
  end
35
35
 
36
+ FactoryBot.define do
37
+ factory :katello_content_view_environment, :class => Katello::ContentViewEnvironment do
38
+ sequence(:name) { |n| "name#{n}" }
39
+ sequence(:label) { |n| "label#{n}" }
40
+ end
41
+ end
42
+
36
43
  FactoryBot.define do
37
44
  factory :katello_k_t_environment, :aliases => [:katello_environment], :class => Katello::KTEnvironment do
38
45
  sequence(:name) { |n| "Environment#{n}" }
@@ -93,6 +100,7 @@ FactoryBot.modify do
93
100
  content_view { nil }
94
101
  lifecycle_environment { nil }
95
102
  content_source { nil }
103
+ content_view_environments { [] }
96
104
  end
97
105
 
98
106
  trait :with_content do
@@ -100,9 +108,14 @@ FactoryBot.modify do
100
108
 
101
109
  after(:build) do |host, evaluator|
102
110
  if host.content_facet
103
- host.content_facet.content_view = evaluator.content_view if evaluator.content_view
104
- host.content_facet.lifecycle_environment = evaluator.lifecycle_environment if evaluator.lifecycle_environment
111
+ if evaluator.content_view && evaluator.lifecycle_environment
112
+ host.content_facet.assign_single_environment(
113
+ content_view_id: evaluator.content_view.id,
114
+ lifecycle_environment_id: evaluator.lifecycle_environment.id
115
+ )
116
+ end
105
117
  host.content_facet.content_source = evaluator.content_source if evaluator.content_source
118
+ host.content_facet.content_view_environments = evaluator.content_view_environments unless evaluator.content_view_environments.empty?
106
119
  end
107
120
  end
108
121
  end
@@ -29,11 +29,7 @@ class ConnectorPlaybookExecutionReporterTaskTest < ActiveSupport::TestCase
29
29
  end
30
30
 
31
31
  test 'It reports finish playbook messages' do
32
- host1_task = @job_invocation.sub_task_for_host(Host.where(name: 'host1').first)
33
- host1_task.state = 'stopped'
34
- host1_task.save!
35
-
36
- TestConnectorPlaybookExecutionReporterTask.any_instance.stubs(:job_finished?).returns(true)
32
+ TestConnectorPlaybookExecutionReporterTask.any_instance.stubs(:done?).returns(true)
37
33
 
38
34
  actual = ForemanTasks.sync_task(TestConnectorPlaybookExecutionReporterTask, @job_invocation)
39
35
 
@@ -43,13 +39,6 @@ class ConnectorPlaybookExecutionReporterTaskTest < ActiveSupport::TestCase
43
39
  assert_not_nil actual_report
44
40
  actual_jsonl = read_jsonl(actual_report)
45
41
 
46
- assert_equal true, actual.output['task']['invocation_status']['task_state']['task_done_reported']
47
- assert_equal 0, actual.output['task']['invocation_status']['hosts_state']['TEST_UUID1']['exit_status']
48
- assert_equal 0, actual.output['task']['invocation_status']['hosts_state']['TEST_UUID2']['exit_status']
49
-
50
- assert_equal true, @job_invocation.finished?
51
- assert_equal 'stopped', @job_invocation.sub_task_for_host(Host.where(name: 'host1').first)['state']
52
-
53
42
  assert_not_nil actual_report_finished = actual_jsonl.find { |l| l['type'] == 'playbook_run_completed' }
54
43
  assert_equal 'TEST_CORRELATION', actual_report_finished['correlation_id']
55
44
  assert_equal 'success', actual_report_finished['status']
@@ -60,127 +49,57 @@ class ConnectorPlaybookExecutionReporterTaskTest < ActiveSupport::TestCase
60
49
  end
61
50
 
62
51
  test 'It reports single progress message for done host' do
63
- class ArrangeTestHost < InsightsCloud::Async::ConnectorPlaybookExecutionReporterTask
64
- def send_report(report)
65
- host1_task = @job_invocation.sub_task_for_host(Host.where(name: 'host1').first)
66
- host1_task.state = 'stopped'
67
- host1_task.save!
68
-
69
- output[:saved_reports] = (output[:saved_reports] || []) << report
70
- end
71
- end
72
-
73
- ArrangeTestHost.instance_variable_set(:@connector_feature_id, nil)
74
- host1_task = @job_invocation.sub_task_for_host(Host.where(name: 'host1').first)
75
- host1_task.state = 'running'
76
- host1_task.save!
77
-
78
- ArrangeTestHost.any_instance.stubs(:job_finished?).returns(false, true)
52
+ TestConnectorPlaybookExecutionReporterTask.any_instance.stubs(:done?).returns(false, true)
79
53
 
80
- actual = ForemanTasks.sync_task(ArrangeTestHost, @job_invocation)
81
-
82
- actual_report1 = actual.output[:saved_reports].first.to_s
83
- actual_report2 = actual.output[:saved_reports].second.to_s
84
-
85
- assert_equal 2, actual.output[:saved_reports].size
86
- assert_not_nil actual_report1
87
- assert_not_nil actual_report2
88
-
89
- actual_json1 = read_jsonl(actual_report1)
90
- actual_json2 = read_jsonl(actual_report2)
91
-
92
- assert_equal true, actual.output['task']['invocation_status']['task_state']['task_done_reported']
93
- assert_equal 0, actual.output['task']['invocation_status']['hosts_state']['TEST_UUID1']['exit_status']
94
-
95
- assert_equal 'stopped', @job_invocation.sub_task_for_host(Host.where(name: 'host1').first)['state']
96
-
97
- assert_not_nil actual_report_updated = actual_json1.find { |l| l['type'] == 'playbook_run_update' && l['host'] == 'TEST_UUID1' }
98
- assert_equal 'TEST_CORRELATION', actual_report_updated['correlation_id']
99
- assert_equal 'TEST_UUID1', actual_report_updated['host']
100
- assert_equal 0, actual_report_updated['sequence']
101
- assert_equal 6, actual_report_updated.size
54
+ actual = ForemanTasks.sync_task(TestConnectorPlaybookExecutionReporterTask, @job_invocation)
102
55
 
103
- assert_not_nil actual_report_updated = actual_json2.find { |l| l['type'] == 'playbook_run_update' && l['host'] == 'TEST_UUID1' }
104
- assert_equal 'TEST_CORRELATION', actual_report_updated['correlation_id']
105
- assert_equal 'TEST_UUID1', actual_report_updated['host']
106
- assert_equal 1, actual_report_updated['sequence']
107
- assert_equal 6, actual_report_updated.size
56
+ actual_report = actual.output[:saved_reports].first.to_s
108
57
 
109
- assert_not_nil actual_host_finished = actual_json2.find { |l| l['type'] == 'playbook_run_finished' && l['host'] == 'TEST_UUID1' }
110
- assert_equal 'TEST_CORRELATION', actual_host_finished['correlation_id']
111
- assert_equal 'TEST_UUID1', actual_host_finished['host']
112
- assert_equal 'success', actual_host_finished['status']
113
- assert_equal 7, actual_host_finished.size
58
+ assert_equal 1, actual.output[:saved_reports].size
59
+ assert_not_nil actual_report
60
+ actual_jsonl = read_jsonl(actual_report)
114
61
 
115
- assert_not_nil actual_report_finished = actual_json2.find { |l| l['type'] == 'playbook_run_completed' }
116
- assert_equal 'TEST_CORRELATION', actual_report_finished['correlation_id']
117
- assert_equal 'success', actual_report_finished['status']
118
- assert_equal 4, actual_report_finished.size
62
+ actual_host_updates = actual_jsonl
63
+ .select { |l| l['type'] == 'playbook_run_update' && l['host'] == @host1.insights.uuid }
64
+ assert_equal 1, actual_host_updates.size
65
+ assert_equal 0, actual_host_updates.first['sequence']
119
66
  end
120
67
 
121
68
  test 'It reports two progress messages for in progress host' do
122
- class ArrangeTestHostTwo < InsightsCloud::Async::ConnectorPlaybookExecutionReporterTask
123
- def send_report(report)
124
- iteration_number = output[:iteration_number].to_i
125
-
126
- if iteration_number == 1
127
- host1_task = job_invocation.sub_task_for_host(Host.where(name: 'host1').first)
128
- host1_task.state = 'stopped'
129
- host1_task.save!
130
- end
131
-
132
- output[:iteration_number] = iteration_number + 1
133
- output[:saved_reports] = (output[:saved_reports] || []) << report
134
- end
135
- end
69
+ TestConnectorPlaybookExecutionReporterTask.any_instance.stubs(:done?).returns(false, false, true)
136
70
 
137
- ArrangeTestHostTwo.instance_variable_set(:@connector_feature_id, nil)
138
- host1_task = @job_invocation.sub_task_for_host(Host.where(name: 'host1').first)
71
+ host1_task = @job_invocation.template_invocations.joins(:host).where(hosts: {name: @host1.name}).first.run_host_job_task
139
72
  host1_task.state = 'running'
140
73
  host1_task.save!
141
74
 
142
- ArrangeTestHostTwo.any_instance.stubs(:job_finished?).returns(false, false, true)
143
-
144
- actual = ForemanTasks.sync_task(ArrangeTestHostTwo, @job_invocation)
145
-
146
- actual_report1 = actual.output[:saved_reports].first.to_s
147
- actual_report2 = actual.output[:saved_reports].second.to_s
148
- actual_report3 = actual.output[:saved_reports].third.to_s
75
+ actual = ForemanTasks.sync_task(TestConnectorPlaybookExecutionReporterTask, @job_invocation)
149
76
 
150
- assert_equal 3, actual.output[:saved_reports].size
151
- assert_not_nil actual_report1
152
- assert_not_nil actual_report2
153
- assert_not_nil actual_report3
77
+ assert_equal 2, actual.output[:saved_reports].size
154
78
 
155
- actual_json1 = read_jsonl(actual_report1)
156
- actual_json2 = read_jsonl(actual_report2)
157
- actual_json3 = read_jsonl(actual_report3)
79
+ first_report = actual.output[:saved_reports].first.to_s
80
+ actual_jsonl = read_jsonl(first_report)
158
81
 
159
- assert_equal true, actual.output['task']['invocation_status']['task_state']['task_done_reported']
160
- assert_equal 0, actual.output['task']['invocation_status']['hosts_state']['TEST_UUID1']['exit_status']
82
+ actual_host_updates = actual_jsonl
83
+ .select { |l| l['type'] == 'playbook_run_update' && l['host'] == @host1.insights.uuid }
84
+ assert_equal 1, actual_host_updates.size
85
+ assert_equal 0, actual_host_updates.first['sequence']
161
86
 
162
- assert_not_nil actual_report_updated = actual_json1.find { |l| l['type'] == 'playbook_run_update' && l['host'] == 'TEST_UUID1' }
163
- assert_equal 'TEST_CORRELATION', actual_report_updated['correlation_id']
164
- assert_equal 'TEST_UUID1', actual_report_updated['host']
165
- assert_equal 0, actual_report_updated['sequence']
166
- assert_equal 6, actual_report_updated.size
87
+ actual_host_updates = actual_jsonl
88
+ .select { |l| l['type'] == 'playbook_run_update' && l['host'] == @host2.insights.uuid }
89
+ assert_equal 1, actual_host_updates.size
90
+ assert_equal 0, actual_host_updates.first['sequence']
167
91
 
168
- assert_not_nil actual_report_updated = actual_json2.find { |l| l['type'] == 'playbook_run_update' && l['host'] == 'TEST_UUID1' }
169
- assert_equal 'TEST_CORRELATION', actual_report_updated['correlation_id']
170
- assert_equal 'TEST_UUID1', actual_report_updated['host']
171
- assert_equal 1, actual_report_updated['sequence']
172
- assert_equal 6, actual_report_updated.size
92
+ second_report = actual.output[:saved_reports].last.to_s
93
+ actual_jsonl = read_jsonl(second_report)
173
94
 
174
- assert_not_nil actual_host_finished = actual_json3.find { |l| l['type'] == 'playbook_run_finished' && l['host'] == 'TEST_UUID1' }
175
- assert_equal 'TEST_CORRELATION', actual_host_finished['correlation_id']
176
- assert_equal 'TEST_UUID1', actual_host_finished['host']
177
- assert_equal 'success', actual_host_finished['status']
178
- assert_equal 7, actual_host_finished.size
95
+ actual_host_updates = actual_jsonl
96
+ .select { |l| l['type'] == 'playbook_run_update' && l['host'] == @host1.insights.uuid }
97
+ assert_equal 1, actual_host_updates.size
98
+ assert_equal 1, actual_host_updates.first['sequence']
179
99
 
180
- assert_not_nil actual_report_finished = actual_json3.find { |l| l['type'] == 'playbook_run_completed' }
181
- assert_equal 'TEST_CORRELATION', actual_report_finished['correlation_id']
182
- assert_equal 'success', actual_report_finished['status']
183
- assert_equal 4, actual_report_finished.size
100
+ actual_host_updates = actual_jsonl
101
+ .select { |l| l['type'] == 'playbook_run_update' && l['host'] == @host2.insights.uuid }
102
+ assert_equal 0, actual_host_updates.size
184
103
  end
185
104
 
186
105
  private
@@ -245,12 +164,10 @@ class ConnectorPlaybookExecutionReporterTaskTest < ActiveSupport::TestCase
245
164
  :value => '1'
246
165
  )
247
166
 
248
- @host1 = FactoryBot.create(:host, :with_insights_hits)
249
- @host1.name = 'host1' # overriding name since there is an issue with Factorybot and setting the name correctly, same for 2nd host
167
+ @host1 = FactoryBot.create(:host, :with_insights_hits, name: 'host1')
250
168
  @host1.insights.uuid = 'TEST_UUID1'
251
169
  @host1.insights.save!
252
- @host2 = FactoryBot.create(:host, :with_insights_hits)
253
- @host2.name = 'host2'
170
+ @host2 = FactoryBot.create(:host, :with_insights_hits, name: 'host2')
254
171
  @host2.insights.uuid = 'TEST_UUID2'
255
172
  @host2.insights.save!
256
173
 
@@ -273,7 +190,7 @@ class ConnectorPlaybookExecutionReporterTaskTest < ActiveSupport::TestCase
273
190
  { 'timestamp' => (Time.now - (5 - i)).to_f, 'output' => "#{i}\n" }
274
191
  end
275
192
  Support::DummyDynflowAction.any_instance.stubs(:live_output).returns(fake_output)
276
- Support::DummyDynflowAction.any_instance.stubs(:exit_status).returns("0")
193
+ Support::DummyDynflowAction.any_instance.stubs(:exit_status).returns(0)
277
194
 
278
195
  job_invocation
279
196
  end
@@ -8,6 +8,12 @@ FactoryBot.definition_file_paths << File.join(File.dirname(__FILE__), 'factories
8
8
  # FactoryBot.definition_file_paths << "#{Katello::Engine.root}/test/factories"
9
9
  FactoryBot.reload
10
10
 
11
+ begin
12
+ require 'pry-rescue/minitest'
13
+ rescue LoadError
14
+ # if the extension is not loaded - please continue, no harm done.
15
+ end
16
+
11
17
  module FolderIsolation
12
18
  extend ActiveSupport::Concern
13
19
 
@@ -30,7 +30,7 @@ class SliceGeneratorTest < ActiveSupport::TestCase
30
30
  subscription: FactoryBot.create(:katello_subscription, organization_id: env.organization.id)
31
31
  )
32
32
  @host.interfaces.first.identifier = 'test_nic1'
33
- @host.save!
33
+ @host.interfaces.first.save!
34
34
 
35
35
  ForemanInventoryUpload::Generators::Queries.instance_variable_set(:@fact_names, nil)
36
36
  end
@@ -300,6 +300,11 @@ class SliceGeneratorTest < ActiveSupport::TestCase
300
300
 
301
301
  test 'generates a report with satellite facts' do
302
302
  hostgroup = FactoryBot.create(:hostgroup, name: 'Special"name')
303
+ # Don't try to update CP in tests
304
+ Katello::Resources::Candlepin::Consumer.stubs(:update)
305
+ # Don't try update facts for the host
306
+ Katello::Host::SubscriptionFacet.stubs(:update_facts)
307
+
303
308
  @host.hostgroup = hostgroup
304
309
  @host.save!
305
310
 
@@ -326,7 +331,7 @@ class SliceGeneratorTest < ActiveSupport::TestCase
326
331
  actual_host = actual['hosts'].first
327
332
  assert_tag('satellite-id', actual_host, 'satellite_instance_id')
328
333
  assert_tag(@host.organization_id.to_s, actual_host, 'organization_id')
329
- assert_tag(@host.content_view.name, actual_host, 'content_view')
334
+ assert_tag(@host.content_views.first.name, actual_host, 'content_view')
330
335
  assert_tag(@host.location.name, actual_host, 'location')
331
336
  assert_tag(@host.organization.name, actual_host, 'organization')
332
337
  assert_tag(@host.hostgroup.name, actual_host, 'hostgroup')
@@ -348,13 +353,13 @@ class SliceGeneratorTest < ActiveSupport::TestCase
348
353
  :host,
349
354
  :with_subscription,
350
355
  :with_content,
351
- content_view: @host.content_view,
352
- lifecycle_environment: @host.lifecycle_environment,
356
+ content_view: @host.content_views.first,
357
+ lifecycle_environment: @host.lifecycle_environments.first,
353
358
  organization: @host.organization
354
359
  )
355
360
 
356
361
  @host.subscription_facet.hypervisor_host = hypervisor_host
357
- @host.save!
362
+ @host.subscription_facet.save!
358
363
 
359
364
  batch = Host.where(id: @host.id).in_batches.first
360
365
  generator = create_generator(batch)
@@ -497,8 +502,8 @@ class SliceGeneratorTest < ActiveSupport::TestCase
497
502
  :host,
498
503
  :with_subscription,
499
504
  :with_content,
500
- content_view: @host.content_view,
501
- lifecycle_environment: @host.lifecycle_environment,
505
+ content_view: @host.content_views.first,
506
+ lifecycle_environment: @host.lifecycle_environments.first,
502
507
  organization: new_org
503
508
  )
504
509
 
@@ -644,8 +649,8 @@ class SliceGeneratorTest < ActiveSupport::TestCase
644
649
  :host,
645
650
  :with_subscription,
646
651
  :with_content,
647
- content_view: @host.content_view,
648
- lifecycle_environment: @host.lifecycle_environment,
652
+ content_view: @host.content_views.first,
653
+ lifecycle_environment: @host.lifecycle_environments.first,
649
654
  organization: @host.organization,
650
655
  installed_packages: [installed_package]
651
656
  )
@@ -7,7 +7,7 @@ class TagsGeneratorTest < ActiveSupport::TestCase
7
7
  User.current = User.find_by(login: 'secret_admin')
8
8
 
9
9
  env = FactoryBot.create(:katello_k_t_environment)
10
- cv = env.content_views << FactoryBot.create(:katello_content_view, organization: env.organization)
10
+ env2 = FactoryBot.create(:katello_k_t_environment, organization: env.organization)
11
11
 
12
12
  @location1 = FactoryBot.create(:location)
13
13
  @location2 = FactoryBot.create(:location, parent: @location1)
@@ -20,15 +20,27 @@ class TagsGeneratorTest < ActiveSupport::TestCase
20
20
  :redhat,
21
21
  :with_subscription,
22
22
  :with_content,
23
- content_view: cv.first,
24
- lifecycle_environment: env,
25
23
  organization: env.organization,
26
24
  location: @location2,
27
- hostgroup: @hostgroup2
25
+ hostgroup: @hostgroup2,
26
+ content_view_environments: [
27
+ FactoryBot.create(
28
+ :katello_content_view_environment,
29
+ content_view: FactoryBot.create(:katello_content_view, organization: env.organization),
30
+ lifecycle_environment: env),
31
+ FactoryBot.create(
32
+ :katello_content_view_environment,
33
+ content_view: FactoryBot.create(:katello_content_view, organization: env.organization),
34
+ lifecycle_environment: env2),
35
+ ]
28
36
  )
29
37
 
30
38
  @host.organization.pools << FactoryBot.create(:katello_pool, account_number: '1234', cp_id: 1)
31
39
  @host.interfaces.first.identifier = 'test_nic1'
40
+ # Don't try to update CP in tests
41
+ Katello::Resources::Candlepin::Consumer.stubs(:update)
42
+ # Don't try update facts for the host
43
+ Katello::Host::SubscriptionFacet.stubs(:update_facts)
32
44
  @host.save!
33
45
  end
34
46
 
@@ -46,8 +58,10 @@ class TagsGeneratorTest < ActiveSupport::TestCase
46
58
  assert_nil actual['host collection']
47
59
 
48
60
  assert_equal @host.organization.name, actual['organization'].first.last
49
- assert_equal @host.lifecycle_environment.name, actual['lifecycle_environment'].first.last
50
- assert_equal @host.content_view.name, actual['content_view'].first.last
61
+ assert_equal @host.lifecycle_environments.pluck(:name).min, actual['lifecycle_environment'].map(&:second).min
62
+ assert_equal @host.lifecycle_environments.pluck(:name).max, actual['lifecycle_environment'].map(&:second).max
63
+ assert_equal @host.content_views.pluck(:name).min, actual['content_view'].map(&:second).min
64
+ assert_equal @host.content_views.pluck(:name).max, actual['content_view'].map(&:second).max
51
65
  assert_equal Foreman.instance_id, actual['satellite_instance_id'].first.last
52
66
  assert_equal @host.organization_id.to_s, actual['organization_id'].first.last
53
67
  end
@@ -55,7 +69,7 @@ class TagsGeneratorTest < ActiveSupport::TestCase
55
69
  test 'filters tags with empty values' do
56
70
  generator = create_generator
57
71
 
58
- @host.stubs(:content_view)
72
+ @host.stubs(:content_views).returns([])
59
73
 
60
74
  actual = generator.generate.group_by { |key, value| key }
61
75
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_rh_cloud
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.0.48
4
+ version: 8.0.46
5
5
  platform: ruby
6
6
  authors:
7
7
  - Foreman Red Hat Cloud team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-04 00:00:00.000000000 Z
11
+ date: 2023-06-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: katello