foreman_rh_cloud 7.0.48 → 8.0.46

Sign up to get free protection for your applications and to get access to all the features.
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