foreman_rh_cloud 3.0.23 → 4.0.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. checksums.yaml +4 -4
  2. data/app/models/insights_client_report_status.rb +4 -0
  3. data/app/services/foreman_rh_cloud/cloud_request_forwarder.rb +0 -8
  4. data/config/package-lock.json.plugin +1785 -3628
  5. data/lib/foreman_inventory_upload.rb +9 -1
  6. data/lib/foreman_inventory_upload/generators/queries.rb +1 -0
  7. data/lib/foreman_inventory_upload/generators/slice.rb +1 -0
  8. data/lib/foreman_rh_cloud/engine.rb +14 -9
  9. data/lib/foreman_rh_cloud/version.rb +1 -1
  10. data/lib/insights_cloud/async/insights_client_status_aging.rb +17 -0
  11. data/lib/inventory_sync/async/host_result.rb +4 -0
  12. data/lib/inventory_sync/async/inventory_hosts_sync.rb +10 -0
  13. data/lib/inventory_sync/async/inventory_self_host_sync.rb +30 -0
  14. data/lib/inventory_sync/async/query_inventory_job.rb +5 -1
  15. data/package.json +1 -1
  16. data/test/controllers/insights_cloud/api/machine_telemetries_controller_test.rb +41 -0
  17. data/test/jobs/insights_client_status_aging_test.rb +33 -0
  18. data/test/jobs/inventory_hosts_sync_test.rb +2 -0
  19. data/test/jobs/inventory_self_host_sync_test.rb +103 -0
  20. data/test/test_plugin_helper.rb +0 -1
  21. data/test/unit/services/foreman_rh_cloud/cloud_request_forwarder_test.rb +3 -3
  22. data/test/unit/slice_generator_test.rb +15 -0
  23. data/webpack/InsightsCloudSync/Components/InsightsTable/__tests__/__snapshots__/InsightsTable.test.js.snap +0 -2
  24. data/webpack/InsightsCloudSync/Components/RemediationModal/RemediateButton.js +0 -1
  25. data/webpack/InsightsCloudSync/Components/__tests__/__snapshots__/NoTokenEmptyState.test.js.snap +13 -20
  26. data/webpack/InsightsCloudSync/__snapshots__/InsightsCloudSync.test.js.snap +2 -2
  27. metadata +8 -2
@@ -70,8 +70,16 @@ module ForemanInventoryUpload
70
70
  folder
71
71
  end
72
72
 
73
+ def self.inventory_base_url
74
+ ForemanRhCloud.base_url + "/api/inventory/v1/hosts"
75
+ end
76
+
73
77
  def self.inventory_export_url
74
78
  tags = URI.encode("satellite/satellite_instance_id=#{Foreman.instance_id}")
75
- ForemanRhCloud.base_url + "/api/inventory/v1/hosts?tags=#{tags}"
79
+ inventory_base_url + "?tags=#{tags}"
80
+ end
81
+
82
+ def self.inventory_self_url
83
+ inventory_base_url + "?hostname_or_id=#{ForemanRhCloud.foreman_host.fqdn}"
76
84
  end
77
85
  end
@@ -27,6 +27,7 @@ module ForemanInventoryUpload
27
27
  'insights_client::obfuscate_ip_enabled',
28
28
  'insights_client::hostname',
29
29
  'insights_client::ips',
30
+ 'insights_id',
30
31
  ]).pluck(:name, :id)
31
32
  ]
32
33
  end
@@ -49,6 +49,7 @@ module ForemanInventoryUpload
49
49
  @stream.simple_field('satellite_id', uuid_value!(host.subscription_facet&.uuid))
50
50
  @stream.simple_field('bios_uuid', bios_uuid(host))
51
51
  @stream.simple_field('vm_uuid', uuid_value(fact_value(host, 'virt::uuid')))
52
+ @stream.simple_field('insights_id', uuid_value(fact_value(host, 'insights_id')))
52
53
  report_ip_addresses(host, host_ips_cache)
53
54
  report_mac_addresses(host)
54
55
  @stream.object_field('system_profile') do
@@ -6,6 +6,18 @@ module ForemanRhCloud
6
6
  class Engine < ::Rails::Engine
7
7
  engine_name 'foreman_rh_cloud'
8
8
 
9
+ def self.register_scheduled_task(task_class, cronline)
10
+ return if ForemanTasks::RecurringLogic.joins(:tasks)
11
+ .merge(ForemanTasks::Task.where(label: task_class.name))
12
+ .exists?
13
+
14
+ User.as_anonymous_admin do
15
+ recurring_logic = ForemanTasks::RecurringLogic.new_from_cronline(cronline)
16
+ recurring_logic.save!
17
+ recurring_logic.start(task_class)
18
+ end
19
+ end
20
+
9
21
  initializer 'foreman_rh_cloud.load_default_settings', :before => :load_config_initializers do
10
22
  require_dependency File.expand_path('../../app/models/setting/rh_cloud.rb', __dir__)
11
23
  end
@@ -138,15 +150,8 @@ module ForemanRhCloud
138
150
  # skip object creation when admin user is not present, for example in test DB
139
151
  if User.unscoped.find_by_login(User::ANONYMOUS_ADMIN).present?
140
152
  ::ForemanTasks.dynflow.config.on_init(false) do |world|
141
- unless ForemanTasks::RecurringLogic.joins(:tasks).merge(
142
- ForemanTasks::Task.where(label: 'InventorySync::Async::InventoryScheduledSync')
143
- ).exists?
144
- User.as_anonymous_admin do
145
- recurring_logic = ForemanTasks::RecurringLogic.new_from_cronline("0 0 * * *")
146
- recurring_logic.save!
147
- recurring_logic.start(InventorySync::Async::InventoryScheduledSync)
148
- end
149
- end
153
+ ForemanRhCloud::Engine.register_scheduled_task(InventorySync::Async::InventoryScheduledSync, '0 0 * * *')
154
+ ForemanRhCloud::Engine.register_scheduled_task(InsightsCloud::Async::InsightsClientStatusAging, '0 0 * * *')
150
155
  end
151
156
  end
152
157
  end
@@ -1,3 +1,3 @@
1
1
  module ForemanRhCloud
2
- VERSION = '3.0.23'.freeze
2
+ VERSION = '4.0.24'.freeze
3
3
  end
@@ -0,0 +1,17 @@
1
+ module InsightsCloud
2
+ module Async
3
+ class InsightsClientStatusAging < ::Actions::EntryAction
4
+ include ::Actions::RecurringAction
5
+
6
+ def run
7
+ # update all stale records to "not reporting" counterpart
8
+ InsightsClientReportStatus.stale.reporting.update_all(status: InsightsClientReportStatus::NO_REPORT)
9
+ InsightsClientReportStatus.stale.not_managed_with_data.update_all(status: InsightsClientReportStatus::NOT_MANAGED)
10
+ end
11
+
12
+ def logger
13
+ action_logger
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,6 +1,8 @@
1
1
  module InventorySync
2
2
  module Async
3
3
  class HostResult
4
+ attr_reader :uuid_by_fqdn
5
+
4
6
  def initialize(result)
5
7
  @total = result['total']
6
8
  @count = result['count']
@@ -8,6 +10,7 @@ module InventorySync
8
10
  @per_page = result['per_page']
9
11
  @sub_ids = result["results"].map { |host| host['subscription_manager_id'] }
10
12
  @uuid_by_sub_id = Hash[result["results"].map { |host| [host['subscription_manager_id'], host['id']] }]
13
+ @uuid_by_fqdn = Hash[result["results"].map { |host| [host['fqdn'].downcase, host['id']] }]
11
14
  end
12
15
 
13
16
  def status_hashes
@@ -19,6 +22,7 @@ module InventorySync
19
22
  host_id: host_id,
20
23
  status: InventorySync::InventoryStatus::SYNC,
21
24
  reported_at: DateTime.current,
25
+ type: InventorySync::InventoryStatus.name,
22
26
  }
23
27
  end
24
28
  end.compact
@@ -4,6 +4,12 @@ module InventorySync
4
4
  set_callback :iteration, :around, :setup_facet_transaction
5
5
  set_callback :step, :around, :create_facets
6
6
 
7
+ def plan
8
+ # by default the tasks will be executed concurrently
9
+ plan_self
10
+ plan_self_host_sync
11
+ end
12
+
7
13
  def setup_facet_transaction
8
14
  InsightsFacet.transaction do
9
15
  yield
@@ -33,6 +39,10 @@ module InventorySync
33
39
  InsightsFacet.where(host_id: host_id).update_all(uuid: uuids_hash[host_id])
34
40
  end
35
41
  end
42
+
43
+ def plan_self_host_sync
44
+ plan_action InventorySync::Async::InventorySelfHostSync
45
+ end
36
46
  end
37
47
  end
38
48
  end
@@ -0,0 +1,30 @@
1
+ module InventorySync
2
+ module Async
3
+ class InventorySelfHostSync < QueryInventoryJob
4
+ set_callback :step, :around, :create_facets
5
+
6
+ def create_facets
7
+ # get the results from the event
8
+ results = yield
9
+
10
+ add_missing_insights_facet(results.uuid_by_fqdn) unless results.uuid_by_fqdn.empty?
11
+ results
12
+ end
13
+
14
+ private
15
+
16
+ def add_missing_insights_facet(uuids_hash)
17
+ facet = InsightsFacet.find_or_create_by(host_id: ForemanRhCloud.foreman_host.id) do |facet|
18
+ facet.uuid = uuids_hash.values.first
19
+ end
20
+
21
+ # fix empty uuid in case the facet already exists
22
+ facet.update(uuid: uuids_hash.values.first) unless facet.uuid
23
+ end
24
+
25
+ def request_url
26
+ ForemanInventoryUpload.inventory_self_url
27
+ end
28
+ end
29
+ end
30
+ end
@@ -31,7 +31,7 @@ module InventorySync
31
31
  def query_inventory(page = 1)
32
32
  hosts_inventory_response = execute_cloud_request(
33
33
  method: :get,
34
- url: ForemanInventoryUpload.inventory_export_url,
34
+ url: request_url,
35
35
  headers: {
36
36
  params: {
37
37
  per_page: 100,
@@ -46,6 +46,10 @@ module InventorySync
46
46
  def logger
47
47
  action_logger
48
48
  end
49
+
50
+ def request_url
51
+ ForemanInventoryUpload.inventory_export_url
52
+ end
49
53
  end
50
54
  end
51
55
  end
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "foreman_rh_cloud",
3
- "version": "3.0.23",
3
+ "version": "4.0.24",
4
4
  "description": "Inventory Upload =============",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -11,6 +11,39 @@ module InsightsCloud::Api
11
11
  host = FactoryBot.create(:host, :with_subscription, :organization => org)
12
12
  User.current = ::Katello::CpConsumerUser.new(:uuid => host.subscription_facet.uuid, :login => host.subscription_facet.uuid)
13
13
  InsightsCloud::Api::MachineTelemetriesController.any_instance.stubs(:upstream_owner).returns({ 'uuid' => 'abcdefg' })
14
+
15
+ @cert1 = "-----BEGIN CERTIFICATE-----\r\n" +
16
+ "MIIFdDCCA1ygAwIBAgIJAM5Uqykb3EAtMA0GCSqGSIb3DQEBCwUAME8xCzAJBgNV\r\n" +
17
+ "BAYTAklMMREwDwYDVQQIDAhUZWwgQXZpdjEUMBIGA1UECgwLVGhlIEZvcmVtYW4x\r\n" +
18
+ "FzAVBgNVBAMMDnRoZWZvcmVtYW4ub3JnMB4XDTE4MDMyNDEyMzYyOFoXDTI4MDMy\r\n" +
19
+ "MTEyMzYyOFowTzELMAkGA1UEBhMCSUwxETAPBgNVBAgMCFRlbCBBdml2MRQwEgYD\r\n" +
20
+ "VQQKDAtUaGUgRm9yZW1hbjEXMBUGA1UEAwwOdGhlZm9yZW1hbi5vcmcwggIiMA0G\r\n" +
21
+ "CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDF04/s4h+BgHPG1HDZ/sDlYq925pkc\r\n" +
22
+ "RTVAfnE2EXDAmZ6W4Q9ueDY65MHe3ZWO5Dg72kNSP2sK9kRI7Dk5CAFOgyw1rH8t\r\n" +
23
+ "Hd1+0xp/lv6e4SvSYghxIL68vFe0ftKkm1usqejBM5ZTgKr7JCI+XSIN36F65Kde\r\n" +
24
+ "c+vxwBnayuhP04r9/aaE/709SXML4eRVYW8I3qFy9FPtUOm+bY8U2PIv5fHayqbG\r\n" +
25
+ "cL/4t3+MCtMhHJsLzdBXya+1P5t+HcKjUNlmwoUF961YAktVuEFloGd0RMRlqF3/\r\n" +
26
+ "itU3QNlXgA5QBIciE5VPr/PiqgMC3zgd5avjF4OribZ+N9AATLiQMW78il5wSfcc\r\n" +
27
+ "kQjU9ChOLrzku455vQ8KE4bc0qvpCWGfUah6MvL9JB+TQkRl/8kxl0b9ZinIvJDH\r\n" +
28
+ "ynVMb4cB/TDEjrjOfzn9mWLH0ZJqjmc2bER/G12WQxOaYLxdVwRStD3Yh6PtiFWu\r\n" +
29
+ "sXOk19UOTVkeuvGFVtvzLfEwQ1lDEo7+VBQz8FG/HBu2Hpq3IwCFrHuicikwjQJk\r\n" +
30
+ "nfturgD0rBOKEc1qWNZRCvovYOLL6ihvv5Orujsx5ZCHOAtnVNxkvIlFt2RS45LF\r\n" +
31
+ "MtPJyhAc6SjitllfUEirxprsbmeSZqrIfzcGaEhgOSnyik1WMv6bYiqPfBg8Fzjh\r\n" +
32
+ "vOCbtiDNPmvgOwIDAQABo1MwUTAdBgNVHQ4EFgQUtkAgQopsTtG9zSG3MgW2IxHD\r\n" +
33
+ "MDwwHwYDVR0jBBgwFoAUtkAgQopsTtG9zSG3MgW2IxHDMDwwDwYDVR0TAQH/BAUw\r\n" +
34
+ "AwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAJq7iN+ZroRBweNhvUobxs75bLIV6tNn1\r\n" +
35
+ "MdNHDRA+hezwf+gxHZhFyaAHfTpst2/9leK5Qe5Zd6gZLr3E5/8ppQuRod72H39B\r\n" +
36
+ "vxMlG5zxDss0WMo3vZeKZbTY6QhXi/lY2IZ6OGV4feSvCsYxn27GTjjrRUSLFeHH\r\n" +
37
+ "JVemCwCDMavaE3+OIY4v2P4FcG+MjUvfOB9ahI24TWL7YgrsNVmJjCILq+EeUj0t\r\n" +
38
+ "Gde1SXVyLkqt7PoxHRJAE0BCEMJSnjxaVB329acJgeehBUxjj4CCPqtDxtbz9HEH\r\n" +
39
+ "mOKfNdaKpFor+DUeEKUWVGnr9U9xOaC+Ws+oX7MIEUCDM7p2ob4JwcjnFs1jZgHh\r\n" +
40
+ "Hwig+i7doTlc701PvKWO96fuNHK3B3/jTb1fVvSZ49O/RvY1VWODdUdxWmXGHNh3\r\n" +
41
+ "LoR8tSPEb46lC2DXGaIQumqQt8PnBG+vL1qkQa1SGTV7dJ8TTbxbv0S+sS+igkk9\r\n" +
42
+ "zsIEK8Ea3Ep935cXximz0faAAKHSA+It+xHLAyDtqy2KaAEBgGsBuuWlUfK6TaP3\r\n" +
43
+ "Gwdjct3y4yYUO45lUsUfHqX8vk/4ttW5zYeDiW+HArJz+9VUXNbEdury4kGuHgBj\r\n" +
44
+ "xHD4Bsul65+hHZ9QywKU26F1A6TLkYpQ2rk/Dx9LGICM4m4IlHjWJPFsQdtkyOor\r\n" +
45
+ "osxMtcaZZ1E=\r\n" +
46
+ "-----END CERTIFICATE-----"
14
47
  end
15
48
 
16
49
  test "should respond with response from cloud" do
@@ -30,6 +63,14 @@ module InsightsCloud::Api
30
63
  ::ForemanRhCloud::CloudRequestForwarder.any_instance.expects(:execute_cloud_request).with do |opts|
31
64
  opts[:headers][:content_type] == 'application/json'
32
65
  end.returns(res)
66
+ InsightsCloud::Api::MachineTelemetriesController.any_instance.expects(:candlepin_id_cert)
67
+ .returns(
68
+ {
69
+ cert: @cert1,
70
+ key: OpenSSL::PKey::RSA.new(1024).to_pem,
71
+ }
72
+ )
73
+ InsightsCloud::Api::MachineTelemetriesController.any_instance.expects(:cp_owner_id).returns('123')
33
74
 
34
75
  post :forward_request, as: :json, params: { "path" => "static/v1/test", "machine_telemetry" => {"foo" => "bar"} }
35
76
  assert_equal @body, @response.body
@@ -0,0 +1,33 @@
1
+ require 'test_plugin_helper'
2
+ require 'foreman_tasks/test_helpers'
3
+
4
+ class InsightsClientStatusAgingTest < ActiveSupport::TestCase
5
+ include ForemanTasks::TestHelpers::WithInThreadExecutor
6
+
7
+ setup do
8
+ User.current = User.find_by(login: 'secret_admin')
9
+
10
+ @host1 = FactoryBot.create(:host)
11
+ @host2 = FactoryBot.create(:host)
12
+ @host3 = FactoryBot.create(:host)
13
+ @host4 = FactoryBot.create(:host)
14
+
15
+ @hosts = [@host1, @host2, @host3, @host4]
16
+ end
17
+
18
+ test 'stale statuses should change' do
19
+ InsightsClientReportStatus.find_or_initialize_by(host_id: @host1.id).update(status: InsightsClientReportStatus::REPORTING, reported_at: Time.now - InsightsClientReportStatus::REPORT_INTERVAL - 1.day)
20
+ InsightsClientReportStatus.find_or_initialize_by(host_id: @host2.id).update(status: InsightsClientReportStatus::NO_REPORT, reported_at: Time.now - InsightsClientReportStatus::REPORT_INTERVAL - 1.day)
21
+ InsightsClientReportStatus.find_or_initialize_by(host_id: @host3.id).update(status: InsightsClientReportStatus::NOT_MANAGED, reported_at: Time.now - InsightsClientReportStatus::REPORT_INTERVAL - 1.day)
22
+ InsightsClientReportStatus.find_or_initialize_by(host_id: @host4.id).update(status: InsightsClientReportStatus::NOT_MANAGED_WITH_DATA, reported_at: Time.now - InsightsClientReportStatus::REPORT_INTERVAL - 1.day)
23
+
24
+ ForemanTasks.sync_task(InsightsCloud::Async::InsightsClientStatusAging)
25
+
26
+ @hosts.each(&:reload)
27
+
28
+ assert_equal InsightsClientReportStatus::NO_REPORT, @host1.get_status(InsightsClientReportStatus).status
29
+ assert_equal InsightsClientReportStatus::NO_REPORT, @host2.get_status(InsightsClientReportStatus).status
30
+ assert_equal InsightsClientReportStatus::NOT_MANAGED, @host3.get_status(InsightsClientReportStatus).status
31
+ assert_equal InsightsClientReportStatus::NOT_MANAGED, @host4.get_status(InsightsClientReportStatus).status
32
+ end
33
+ end
@@ -243,6 +243,7 @@ class InventoryHostsSyncTest < ActiveSupport::TestCase
243
243
 
244
244
  test 'Inventory should sync UUID for existing Insights Facets' do
245
245
  InventorySync::Async::InventoryHostsSync.any_instance.expects(:query_inventory).returns(@inventory)
246
+ InventorySync::Async::InventoryHostsSync.any_instance.expects(:plan_self_host_sync)
246
247
 
247
248
  @host2.build_insights.save
248
249
 
@@ -255,6 +256,7 @@ class InventoryHostsSyncTest < ActiveSupport::TestCase
255
256
 
256
257
  test 'Inventory should sync UUID for new Insights Facets' do
257
258
  InventorySync::Async::InventoryHostsSync.any_instance.expects(:query_inventory).returns(@inventory)
259
+ InventorySync::Async::InventoryHostsSync.any_instance.expects(:plan_self_host_sync)
258
260
 
259
261
  ForemanTasks.sync_task(InventorySync::Async::InventoryHostsSync)
260
262
 
@@ -0,0 +1,103 @@
1
+ require 'test_plugin_helper'
2
+ require 'foreman_tasks/test_helpers'
3
+
4
+ class InventorySelfHostSyncTest < ActiveSupport::TestCase
5
+ include ForemanTasks::TestHelpers::WithInThreadExecutor
6
+
7
+ setup do
8
+ User.current = User.find_by(login: 'secret_admin')
9
+
10
+ # this host would pass our plugin queries, so it could be uploaded to the cloud.
11
+ @host1 = FactoryBot.create(:host)
12
+ @host1_inventory_id = '3255d080-e6c1-44e2-8d72-b044b9a38d8f'
13
+
14
+ ForemanInventoryUpload::Generators::Queries.instance_variable_set(:@fact_names, nil)
15
+
16
+ ForemanRhCloud.stubs(:foreman_host).returns(@host1)
17
+
18
+ inventory_json = <<-INVENTORY_JSON
19
+ {
20
+ "total": 1,
21
+ "count": 1,
22
+ "page": 1,
23
+ "per_page": 1,
24
+ "results": [
25
+ {
26
+ "insights_id": "e0dc5144-d78e-43ed-97be-a7a21d1b6946",
27
+ "rhel_machine_id": null,
28
+ "subscription_manager_id": "0f97ee19-6862-4900-aea4-f121c8754776",
29
+ "satellite_id": "0f97ee19-6862-4900-aea4-f121c8754776",
30
+ "bios_uuid": "6a0b199a-8225-4ade-ae44-3b18cfc84a01",
31
+ "ip_addresses": [
32
+ "192.168.122.136"
33
+ ],
34
+ "fqdn": "#{@host1.fqdn}",
35
+ "mac_addresses": [
36
+ "52:54:00:02:d1:2a",
37
+ "00:00:00:00:00:00"
38
+ ],
39
+ "external_id": null,
40
+ "id": "#{@host1_inventory_id}",
41
+ "account": "1460290",
42
+ "display_name": "insights-rh8.example.com",
43
+ "ansible_host": null,
44
+ "facts": [
45
+ {
46
+ "namespace": "satellite",
47
+ "facts": {
48
+ "virtual_host_name": "virt-who-nobody.home-1",
49
+ "satellite_instance_id": "fc4d0cb0-a0b0-421e-b096-b028319b8e47",
50
+ "is_simple_content_access": false,
51
+ "distribution_version": "8.3",
52
+ "satellite_version": "6.8.4",
53
+ "organization_id": 1,
54
+ "is_hostname_obfuscated": false,
55
+ "virtual_host_uuid": "a90e6294-4766-420a-8dc0-3ec5b96d60ec"
56
+ }
57
+ },
58
+ {
59
+ "namespace": "yupana",
60
+ "facts": {
61
+ "report_platform_id": "d37afa50-08ce-4efb-a0e5-759c2a016661",
62
+ "report_slice_id": "5bf791d7-5e30-4a3c-929a-11dd9fa6eb72",
63
+ "source": "Satellite",
64
+ "yupana_host_id": "78c62486-0ac4-406c-a4c0-3a1f81112a2d",
65
+ "account": "1460290"
66
+ }
67
+ }
68
+ ],
69
+ "reporter": "puptoo",
70
+ "stale_timestamp": "2021-03-19T06:05:12.092136+00:00",
71
+ "stale_warning_timestamp": "2021-03-26T06:05:12.092136+00:00",
72
+ "culled_timestamp": "2021-04-02T06:05:12.092136+00:00",
73
+ "created": "2021-02-08T13:22:50.555671+00:00",
74
+ "updated": "2021-03-18T01:05:12.131847+00:00"
75
+ }
76
+ ]
77
+ }
78
+ INVENTORY_JSON
79
+ @inventory = JSON.parse(inventory_json)
80
+ end
81
+
82
+ test 'Inventory should sync UUID for existing Insights Facets' do
83
+ InventorySync::Async::InventorySelfHostSync.any_instance.expects(:query_inventory).returns(@inventory)
84
+
85
+ @host1.build_insights.save
86
+
87
+ ForemanTasks.sync_task(InventorySync::Async::InventorySelfHostSync)
88
+
89
+ @host1.reload
90
+
91
+ assert_equal @host1_inventory_id, @host1.insights.uuid
92
+ end
93
+
94
+ test 'Inventory should sync UUID for new Insights Facets' do
95
+ InventorySync::Async::InventorySelfHostSync.any_instance.expects(:query_inventory).returns(@inventory)
96
+
97
+ ForemanTasks.sync_task(InventorySync::Async::InventorySelfHostSync)
98
+
99
+ @host1.reload
100
+
101
+ assert_equal @host1_inventory_id, @host1.insights.uuid
102
+ end
103
+ end
@@ -35,7 +35,6 @@ module KatelloLocationFix
35
35
  FactoryBot.create(:setting, name: 'default_location_subscribed_hosts')
36
36
  FactoryBot.create(:setting, name: 'default_location_puppet_content')
37
37
  Setting[:default_location_subscribed_hosts] = Location.first.title
38
- Setting[:default_location_puppet_content] = Location.first.title
39
38
  end
40
39
  end
41
40
  end
@@ -42,9 +42,9 @@ class CloudRequestForwarderTest < ActiveSupport::TestCase
42
42
  test 'should prepare correct cloud url' do
43
43
  paths = {
44
44
  "/redhat_access/r/insights/platform/module-update-router/v1/channel?module=insights-core" => "https://cert.cloud.redhat.com/api/module-update-router/v1/channel?module=insights-core",
45
- "/redhat_access/r/insights/v1/static/release/insights-core.egg" => "https://cloud.redhat.com/api/v1/static/release/insights-core.egg",
46
- "/redhat_access/r/insights/v1/static/uploader.v2.json" => "https://cloud.redhat.com/api/v1/static/uploader.v2.json",
47
- "/redhat_access/r/insights/v1/static/uploader.v2.json.asc" => "https://cloud.redhat.com/api/v1/static/uploader.v2.json.asc",
45
+ "/redhat_access/r/insights/v1/static/release/insights-core.egg" => "https://cert-api.access.redhat.com/r/insights/v1/static/release/insights-core.egg",
46
+ "/redhat_access/r/insights/v1/static/uploader.v2.json" => "https://cert-api.access.redhat.com/r/insights/v1/static/uploader.v2.json",
47
+ "/redhat_access/r/insights/v1/static/uploader.v2.json.asc" => "https://cert-api.access.redhat.com/r/insights/v1/static/uploader.v2.json.asc",
48
48
  "/redhat_access/r/insights/platform/inventory/v1/hosts" => "https://cert.cloud.redhat.com/api/inventory/v1/hosts",
49
49
  "/redhat_access/r/insights/platform/ingress/v1/upload" => "https://cert.cloud.redhat.com/api/ingress/v1/upload",
50
50
  "/redhat_access/r/insights/uploads/67200803-132b-474b-a6f9-37be74185df4" => "https://cert-api.access.redhat.com/r/insights/uploads/67200803-132b-474b-a6f9-37be74185df4",
@@ -53,6 +53,7 @@ class SliceGeneratorTest < ActiveSupport::TestCase
53
53
  'insights_client::hostname',
54
54
  'insights_client::obfuscate_ip_enabled',
55
55
  'insights_client::ips',
56
+ 'insights_id',
56
57
  ]
57
58
  end
58
59
 
@@ -657,6 +658,20 @@ class SliceGeneratorTest < ActiveSupport::TestCase
657
658
  assert_not_nil actual_host['bios_uuid']
658
659
  end
659
660
 
661
+ test 'passes valid insights_id field' do
662
+ FactoryBot.create(:fact_value, fact_name: fact_names['insights_id'], value: 'D30B0B42-7824-2635-C62D-491394DE43F7', host: @host)
663
+
664
+ batch = Host.where(id: @host.id).in_batches.first
665
+ generator = create_generator(batch)
666
+
667
+ json_str = generator.render
668
+ actual = JSON.parse(json_str.join("\n"))
669
+
670
+ assert_equal '00000000-0000-0000-0000-000000000000', actual['report_slice_id']
671
+ assert_not_nil(actual_host = actual['hosts'].first)
672
+ assert_not_nil actual_host['insights_id']
673
+ end
674
+
660
675
  private
661
676
 
662
677
  def create_generator(batch, name = '00000000-0000-0000-0000-000000000000')