foreman_rh_cloud 3.0.33 → 4.0.21.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/foreman_inventory_upload/reports_controller.rb +1 -3
  3. data/app/controllers/foreman_inventory_upload/tasks_controller.rb +13 -5
  4. data/app/controllers/foreman_inventory_upload/uploads_controller.rb +4 -4
  5. data/app/controllers/insights_cloud/api/machine_telemetries_controller.rb +7 -29
  6. data/app/controllers/insights_cloud/hits_controller.rb +3 -7
  7. data/app/models/insights_client_report_status.rb +22 -11
  8. data/app/services/foreman_rh_cloud/cloud_auth.rb +0 -16
  9. data/app/services/foreman_rh_cloud/cloud_request_forwarder.rb +17 -27
  10. data/app/services/foreman_rh_cloud/remediations_retriever.rb +4 -6
  11. data/app/subscribers/foreman_rh_cloud/insights_subscriber.rb +9 -0
  12. data/config/Gemfile.lock.gh_test +95 -93
  13. data/config/database.yml.example +2 -2
  14. data/config/routes.rb +1 -20
  15. data/lib/foreman_inventory_upload/generators/fact_helpers.rb +1 -22
  16. data/lib/foreman_inventory_upload/generators/queries.rb +0 -1
  17. data/lib/foreman_inventory_upload/generators/slice.rb +5 -6
  18. data/lib/foreman_inventory_upload/generators/tags.rb +2 -11
  19. data/lib/foreman_inventory_upload.rb +1 -9
  20. data/lib/foreman_rh_cloud/engine.rb +10 -17
  21. data/lib/foreman_rh_cloud/version.rb +1 -1
  22. data/lib/foreman_rh_cloud.rb +1 -12
  23. data/lib/insights_cloud/async/insights_full_sync.rb +14 -9
  24. data/lib/insights_cloud/async/insights_resolutions_sync.rb +6 -13
  25. data/lib/insights_cloud/async/insights_rules_sync.rb +9 -13
  26. data/lib/inventory_sync/async/host_result.rb +5 -4
  27. data/lib/inventory_sync/async/inventory_full_sync.rb +10 -21
  28. data/lib/inventory_sync/async/inventory_hosts_sync.rb +3 -18
  29. data/lib/inventory_sync/async/inventory_scheduled_sync.rb +0 -12
  30. data/lib/inventory_sync/async/query_inventory_job.rb +5 -6
  31. data/lib/tasks/insights.rake +0 -15
  32. data/lib/tasks/rh_cloud_inventory.rake +1 -8
  33. data/package.json +3 -3
  34. data/test/controllers/insights_cloud/api/machine_telemetries_controller_test.rb +0 -41
  35. data/test/factories/inventory_upload_factories.rb +1 -1
  36. data/test/jobs/insights_full_sync_test.rb +0 -1
  37. data/test/jobs/insights_resolutions_sync_test.rb +1 -11
  38. data/test/jobs/insights_rules_sync_test.rb +0 -1
  39. data/test/jobs/inventory_full_sync_test.rb +2 -38
  40. data/test/models/insights_client_report_status_test.rb +72 -70
  41. data/test/test_plugin_helper.rb +0 -55
  42. data/test/unit/fact_helpers_test.rb +2 -2
  43. data/test/unit/services/foreman_rh_cloud/cloud_request_forwarder_test.rb +3 -21
  44. data/test/unit/services/foreman_rh_cloud/template_renderer_helper_test.rb +0 -1
  45. data/test/unit/slice_generator_test.rb +27 -70
  46. data/test/unit/tags_generator_test.rb +0 -56
  47. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/PageDescription/PageDescription.js +0 -11
  48. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/PageDescription/__tests__/__snapshots__/PageDescription.test.js.snap +0 -11
  49. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/SyncButtonActions.js +63 -28
  50. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/__tests__/__snapshots__/integrations.test.js.snap +3 -2
  51. data/webpack/InsightsCloudSync/Components/InsightsTable/InsightsTableActions.js +19 -19
  52. data/webpack/InsightsCloudSync/Components/InsightsTable/__tests__/__snapshots__/InsightsTableActions.test.js.snap +14 -14
  53. data/webpack/InsightsCloudSync/Components/RemediationModal/RemediateButton.js +0 -1
  54. data/webpack/InsightsCloudSync/Components/RemediationModal/RemediationModal.scss +0 -14
  55. data/webpack/InsightsCloudSync/Components/__tests__/__snapshots__/NoTokenEmptyState.test.js.snap +13 -20
  56. data/webpack/InsightsCloudSync/InsightsCloudSync.js +1 -4
  57. data/webpack/InsightsCloudSync/InsightsCloudSyncActions.js +20 -44
  58. data/webpack/InsightsCloudSync/InsightsCloudSyncConstants.js +0 -2
  59. data/webpack/InsightsCloudSync/__snapshots__/InsightsCloudSync.test.js.snap +2 -2
  60. data/webpack/InsightsCloudSync/__tests__/__snapshots__/InsightsCloudSyncActions.test.js.snap +7 -11
  61. metadata +4 -32
  62. data/app/controllers/api/v2/rh_cloud/inventory_controller.rb +0 -50
  63. data/app/controllers/concerns/inventory_upload/report_actions.rb +0 -26
  64. data/app/controllers/concerns/inventory_upload/task_actions.rb +0 -25
  65. data/app/helpers/foreman_insights_deprecations_helper.rb +0 -9
  66. data/app/helpers/foreman_insights_host_helper.rb +0 -19
  67. data/app/overrides/old_plugin_deprecation.rb +0 -20
  68. data/app/services/foreman_rh_cloud/cloud_request.rb +0 -14
  69. data/app/services/foreman_rh_cloud/insights_status_cleaner.rb +0 -17
  70. data/config/package-lock.json.plugin +0 -32774
  71. data/db/migrate/20210720000001_remove_old_insights_statuses.foreman_rh_cloud.rb +0 -6
  72. data/lib/insights_cloud/async/insights_client_status_aging.rb +0 -23
  73. data/lib/inventory_sync/async/inventory_self_host_sync.rb +0 -39
  74. data/test/controllers/inventory_upload/api/inventory_controller_test.rb +0 -53
  75. data/test/jobs/insights_client_status_aging_test.rb +0 -33
  76. data/test/jobs/inventory_hosts_sync_test.rb +0 -283
  77. data/test/jobs/inventory_scheduled_sync_test.rb +0 -22
  78. data/test/jobs/inventory_self_host_sync_test.rb +0 -104
  79. data/test/unit/foreman_rh_cloud_self_host_test.rb +0 -28
  80. data/test/unit/services/foreman_rh_cloud/insights_status_cleaner_test.rb +0 -31
  81. data/webpack/common/ForemanTasks/ForemanTasksActions.js +0 -64
  82. data/webpack/common/ForemanTasks/ForemanTasksHelpers.js +0 -7
  83. data/webpack/common/ForemanTasks/index.js +0 -1
@@ -6,11 +6,6 @@ module InsightsCloud
6
6
  include ::ForemanRhCloud::CloudAuth
7
7
 
8
8
  def plan
9
- unless cloud_auth_available?
10
- logger.debug('Cloud authentication is not available, skipping insights sync')
11
- return
12
- end
13
-
14
9
  sequence do
15
10
  # This can be turned off when we enable automatic status syncs
16
11
  # This step will query cloud inventory to retrieve inventory uuids for each host
@@ -55,18 +50,28 @@ module InsightsCloud
55
50
  end
56
51
 
57
52
  def query_insights_hits
58
- hits_response = execute_cloud_request(
53
+ hits_response = RestClient::Request.execute(
59
54
  method: :get,
60
- url: InsightsCloud.hits_export_url
55
+ url: InsightsCloud.hits_export_url,
56
+ verify_ssl: ForemanRhCloud.verify_ssl_method,
57
+ proxy: ForemanRhCloud.transformed_http_proxy_string(logger: logger),
58
+ headers: {
59
+ Authorization: "Bearer #{rh_credentials}",
60
+ }
61
61
  )
62
62
 
63
63
  JSON.parse(hits_response)
64
64
  end
65
65
 
66
66
  def query_insights_rules
67
- rules_response = execute_cloud_request(
67
+ rules_response = RestClient::Request.execute(
68
68
  method: :get,
69
- url: InsightsCloud.rules_url
69
+ url: InsightsCloud.rules_url,
70
+ verify_ssl: ForemanRhCloud.verify_ssl_method,
71
+ proxy: ForemanRhCloud.transformed_http_proxy_string(logger: logger),
72
+ headers: {
73
+ Authorization: "Bearer #{rh_credentials}",
74
+ }
70
75
  )
71
76
 
72
77
  JSON.parse(rules_response)
@@ -7,21 +7,11 @@ module InsightsCloud
7
7
 
8
8
  RULE_ID_REGEX = /[^:]*:(?<id>.*)/
9
9
 
10
- def plan
11
- unless cloud_auth_available?
12
- logger.debug('Cloud authentication is not available, skipping resolutions sync')
13
- return
14
- end
15
-
16
- plan_self
17
- end
18
-
19
10
  def run
20
11
  InsightsResolution.transaction do
21
12
  InsightsResolution.delete_all
22
- rule_ids = relevant_rules
23
- api_response = query_insights_resolutions(rule_ids) unless rule_ids.empty?
24
- write_resolutions(api_response) if api_response
13
+ api_response = query_insights_resolutions(relevant_rules)
14
+ write_resolutions(api_response)
25
15
  end
26
16
  end
27
17
 
@@ -32,11 +22,14 @@ module InsightsCloud
32
22
  private
33
23
 
34
24
  def query_insights_resolutions(rule_ids)
35
- resolutions_response = execute_cloud_request(
25
+ resolutions_response = RestClient::Request.execute(
36
26
  method: :post,
37
27
  url: InsightsCloud.resolutions_url,
28
+ verify_ssl: ForemanRhCloud.verify_ssl_method,
29
+ proxy: ForemanRhCloud.transformed_http_proxy_string(logger: logger),
38
30
  headers: {
39
31
  content_type: :json,
32
+ Authorization: "Bearer #{rh_credentials}",
40
33
  },
41
34
  payload: {
42
35
  issues: rule_ids,
@@ -6,17 +6,8 @@ module InsightsCloud
6
6
  include ::ForemanRhCloud::CloudAuth
7
7
 
8
8
  def plan
9
- unless cloud_auth_available?
10
- logger.debug('Cloud authentication is not available, skipping rules sync')
11
- return
12
- end
13
-
14
- # since the tasks are not connected, we need to force sequence execution here
15
- # to make sure we don't run resolutions until we synced all our rules
16
- sequence do
17
- plan_self
18
- plan_resolutions
19
- end
9
+ plan_self
10
+ plan_resolutions
20
11
  end
21
12
 
22
13
  def plan_resolutions
@@ -46,9 +37,14 @@ module InsightsCloud
46
37
  private
47
38
 
48
39
  def query_insights_rules(offset)
49
- rules_response = execute_cloud_request(
40
+ rules_response = RestClient::Request.execute(
50
41
  method: :get,
51
- url: InsightsCloud.rules_url(offset: offset)
42
+ url: InsightsCloud.rules_url(offset: offset),
43
+ verify_ssl: ForemanRhCloud.verify_ssl_method,
44
+ proxy: ForemanRhCloud.transformed_http_proxy_string(logger: logger),
45
+ headers: {
46
+ Authorization: "Bearer #{rh_credentials}",
47
+ }
52
48
  )
53
49
 
54
50
  JSON.parse(rules_response)
@@ -1,8 +1,6 @@
1
1
  module InventorySync
2
2
  module Async
3
3
  class HostResult
4
- attr_reader :uuid_by_fqdn
5
-
6
4
  def initialize(result)
7
5
  @total = result['total']
8
6
  @count = result['count']
@@ -10,23 +8,26 @@ module InventorySync
10
8
  @per_page = result['per_page']
11
9
  @sub_ids = result["results"].map { |host| host['subscription_manager_id'] }
12
10
  @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']] }]
14
11
  end
15
12
 
16
13
  def status_hashes
17
14
  @sub_ids.map do |sub_id|
18
15
  host_id = host_id(sub_id)
19
16
  if host_id
17
+ touched << host_id
20
18
  {
21
19
  host_id: host_id,
22
20
  status: InventorySync::InventoryStatus::SYNC,
23
21
  reported_at: DateTime.current,
24
- type: InventorySync::InventoryStatus.name,
25
22
  }
26
23
  end
27
24
  end.compact
28
25
  end
29
26
 
27
+ def touched
28
+ @touched ||= []
29
+ end
30
+
30
31
  def host_id(sub_id)
31
32
  hosts[sub_id]
32
33
  end
@@ -5,16 +5,15 @@ module InventorySync
5
5
  set_callback :step, :around, :update_statuses_batch
6
6
 
7
7
  def plan(organization)
8
- unless cloud_auth_available?
9
- logger.debug('Cloud authentication is not available, skipping inventory hosts sync')
10
- return
11
- end
12
-
13
8
  plan_self(organization_id: organization.id)
14
9
  end
15
10
 
16
11
  def setup_statuses
17
- @subscribed_hosts_ids = Set.new(affected_host_ids)
12
+ @subscribed_hosts_ids = Set.new(
13
+ ForemanInventoryUpload::Generators::Queries.for_slice(
14
+ Host.unscoped.where(organization: input[:organization_id])
15
+ ).pluck(:id)
16
+ )
18
17
 
19
18
  InventorySync::InventoryStatus.transaction do
20
19
  InventorySync::InventoryStatus.where(host_id: @subscribed_hosts_ids).delete_all
@@ -25,24 +24,20 @@ module InventorySync
25
24
 
26
25
  logger.debug("Synced hosts amount: #{host_statuses[:sync]}")
27
26
  logger.debug("Disconnected hosts amount: #{host_statuses[:disconnect]}")
28
- output[:host_statuses] = host_statuses
29
27
  end
30
28
 
31
29
  def update_statuses_batch
32
30
  results = yield
33
31
 
34
- existing_hosts = results.status_hashes.select { |hash| @subscribed_hosts_ids.include?(hash[:host_id]) }
35
-
36
- update_hosts_status(existing_hosts)
37
- host_statuses[:sync] += existing_hosts.size
32
+ update_hosts_status(results.status_hashes, results.touched)
33
+ host_statuses[:sync] += results.touched.size
38
34
  end
39
35
 
40
36
  private
41
37
 
42
- def update_hosts_status(status_hashes)
38
+ def update_hosts_status(status_hashes, touched)
43
39
  InventorySync::InventoryStatus.create(status_hashes)
44
- updated_ids = status_hashes.map { |hash| hash[:host_id] }
45
- @subscribed_hosts_ids.subtract(updated_ids)
40
+ @subscribed_hosts_ids.subtract(touched)
46
41
  end
47
42
 
48
43
  def add_missing_hosts_statuses(hosts_ids)
@@ -58,17 +53,11 @@ module InventorySync
58
53
  end
59
54
 
60
55
  def host_statuses
61
- @host_statuses ||= {
56
+ output[:host_statuses] ||= {
62
57
  sync: 0,
63
58
  disconnect: 0,
64
59
  }
65
60
  end
66
-
67
- def affected_host_ids
68
- ForemanInventoryUpload::Generators::Queries.for_slice(
69
- Host.unscoped.where(organization: input[:organization_id])
70
- ).pluck(:id)
71
- end
72
61
  end
73
62
  end
74
63
  end
@@ -4,17 +4,6 @@ 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
- unless cloud_auth_available?
9
- logger.debug('Cloud authentication is not available, skipping inventory hosts sync')
10
- return
11
- end
12
-
13
- # by default the tasks will be executed concurrently
14
- plan_self
15
- plan_self_host_sync
16
- end
17
-
18
7
  def setup_facet_transaction
19
8
  InsightsFacet.transaction do
20
9
  yield
@@ -31,18 +20,14 @@ module InventorySync
31
20
  private
32
21
 
33
22
  def add_missing_insights_facets(uuids_hash)
34
- all_facets = uuids_hash.map do |host_id, uuid|
23
+ existing_facets = InsightsFacet.where(host_id: uuids_hash.keys).pluck(:host_id)
24
+ missing_facets = uuids_hash.except(*existing_facets).map do |host_id, uuid|
35
25
  {
36
26
  host_id: host_id,
37
27
  uuid: uuid,
38
28
  }
39
29
  end
40
-
41
- InsightsFacet.upsert_all(all_facets, unique_by: :host_id) unless all_facets.empty?
42
- end
43
-
44
- def plan_self_host_sync
45
- plan_action InventorySync::Async::InventorySelfHostSync
30
+ InsightsFacet.create(missing_facets)
46
31
  end
47
32
  end
48
33
  end
@@ -4,14 +4,6 @@ module InventorySync
4
4
  include ::Actions::RecurringAction
5
5
 
6
6
  def plan
7
- unless Setting[:allow_auto_inventory_upload]
8
- logger.debug(
9
- 'The scheduled process is disabled due to the "allow_auto_inventory_upload"
10
- setting being set to false.'
11
- )
12
- return
13
- end
14
-
15
7
  Organization.unscoped.each do |org|
16
8
  plan_org_sync(org)
17
9
  end
@@ -20,10 +12,6 @@ module InventorySync
20
12
  def plan_org_sync(org)
21
13
  plan_action InventoryFullSync, org
22
14
  end
23
-
24
- def logger
25
- action_logger
26
- end
27
15
  end
28
16
  end
29
17
  end
@@ -29,10 +29,13 @@ module InventorySync
29
29
  private
30
30
 
31
31
  def query_inventory(page = 1)
32
- hosts_inventory_response = execute_cloud_request(
32
+ hosts_inventory_response = RestClient::Request.execute(
33
33
  method: :get,
34
- url: request_url,
34
+ url: ForemanInventoryUpload.inventory_export_url,
35
+ verify_ssl: ForemanRhCloud.verify_ssl_method,
36
+ proxy: ForemanRhCloud.transformed_http_proxy_string(logger: logger),
35
37
  headers: {
38
+ Authorization: "Bearer #{rh_credentials}",
36
39
  params: {
37
40
  per_page: 100,
38
41
  page: page,
@@ -46,10 +49,6 @@ module InventorySync
46
49
  def logger
47
50
  action_logger
48
51
  end
49
-
50
- def request_url
51
- ForemanInventoryUpload.inventory_export_url
52
- end
53
52
  end
54
53
  end
55
54
  end
@@ -4,19 +4,4 @@ namespace :rh_cloud_insights do
4
4
  ForemanTasks.sync_task(InsightsCloud::Async::InsightsFullSync)
5
5
  puts "Synchronized Insights hosts hits data"
6
6
  end
7
-
8
- desc "Remove insights client report statuses by searching on host criteria"
9
- task clean_statuses: [:environment] do
10
- hosts_search = ENV['SEARCH']
11
-
12
- if hosts_search.empty?
13
- puts 'Must specify SEARCH= criteria for hosts search'
14
- next
15
- end
16
-
17
- cleaner = ForemanRhCloud::InsightsStatusCleaner.new
18
- deleted_count = cleaner.clean(hosts_search)
19
-
20
- puts "Deleted #{deleted_count} insights statuses"
21
- end
22
7
  end
@@ -23,15 +23,8 @@ namespace :rh_cloud_inventory do
23
23
  organizations = [ENV['organization_id']]
24
24
  base_folder = ENV['target'] || Dir.pwd
25
25
 
26
- unless File.writable?(base_folder)
27
- puts "#{base_folder} is not writable by the current process"
28
- base_folder = Dir.mktmpdir
29
- puts "Using #{base_folder} for the output"
30
- end
31
-
32
- if portal_user.empty? && organizations.empty?
26
+ unless portal_user || organizations.empty?
33
27
  puts "Must specify either portal_user or organization_id"
34
- return
35
28
  end
36
29
 
37
30
  User.as_anonymous_admin do
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "foreman_rh_cloud",
3
- "version": "3.0.33",
3
+ "version": "4.0.21.1",
4
4
  "description": "Inventory Upload =============",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -26,6 +26,7 @@
26
26
  },
27
27
  "devDependencies": {
28
28
  "@babel/core": "~7.7.0",
29
+ "@redhat-cloud-services/frontend-components": "^2.5.0",
29
30
  "@theforeman/builder": "~4.14.0",
30
31
  "@theforeman/stories": "~4.14.0",
31
32
  "@theforeman/test": "~4.14.0",
@@ -42,7 +43,6 @@
42
43
  },
43
44
  "dependencies": {
44
45
  "jed": "~1.1.1",
45
- "react-intl": "~2.8.0",
46
- "@redhat-cloud-services/frontend-components": "^2.5.0"
46
+ "react-intl": "~2.8.0"
47
47
  }
48
48
  }
@@ -3,8 +3,6 @@ require 'test_plugin_helper'
3
3
  module InsightsCloud::Api
4
4
  class MachineTelemetriesControllerTest < ActionController::TestCase
5
5
  context '#forward_request' do
6
- include MockCerts
7
-
8
6
  setup do
9
7
  @body = 'Cloud response body'
10
8
  @http_req = RestClient::Request.new(:method => 'GET', :url => 'http://test.theforeman.org')
@@ -13,10 +11,6 @@ module InsightsCloud::Api
13
11
  host = FactoryBot.create(:host, :with_subscription, :organization => org)
14
12
  User.current = ::Katello::CpConsumerUser.new(:uuid => host.subscription_facet.uuid, :login => host.subscription_facet.uuid)
15
13
  InsightsCloud::Api::MachineTelemetriesController.any_instance.stubs(:upstream_owner).returns({ 'uuid' => 'abcdefg' })
16
-
17
- setup_certs_expectation do
18
- InsightsCloud::Api::MachineTelemetriesController.any_instance.stubs(:candlepin_id_cert)
19
- end
20
14
  end
21
15
 
22
16
  test "should respond with response from cloud" do
@@ -36,7 +30,6 @@ module InsightsCloud::Api
36
30
  ::ForemanRhCloud::CloudRequestForwarder.any_instance.expects(:execute_cloud_request).with do |opts|
37
31
  opts[:headers][:content_type] == 'application/json'
38
32
  end.returns(res)
39
- InsightsCloud::Api::MachineTelemetriesController.any_instance.expects(:cp_owner_id).returns('123')
40
33
 
41
34
  post :forward_request, as: :json, params: { "path" => "static/v1/test", "machine_telemetry" => {"foo" => "bar"} }
42
35
  assert_equal @body, @response.body
@@ -56,29 +49,6 @@ module InsightsCloud::Api
56
49
  assert_equal x_rh_insights_request_id, @response.headers['x_rh_insights_request_id']
57
50
  end
58
51
 
59
- test "should set etag header to response from cloud" do
60
- etag = '12345'
61
- req = RestClient::Request.new(:method => 'GET', :url => 'http://test.theforeman.org', :headers => { "If-None-Match": etag})
62
- net_http_resp = Net::HTTPResponse.new(1.0, 200, "OK")
63
- net_http_resp[Rack::ETAG] = etag
64
- res = RestClient::Response.create(@body, net_http_resp, req)
65
- ::ForemanRhCloud::CloudRequestForwarder.any_instance.stubs(:forward_request).returns(res)
66
-
67
- get :forward_request, params: { "path" => "static/v1/release/insights-core.egg" }
68
- assert_equal etag, @response.headers[Rack::ETAG]
69
- end
70
-
71
- test "should set content type header to response from cloud" do
72
- req = RestClient::Request.new(:method => 'GET', :url => 'http://test.theforeman.org')
73
- net_http_resp = Net::HTTPResponse.new(1.0, 200, "OK")
74
- net_http_resp['Content-Type'] = 'application/zip'
75
- res = RestClient::Response.create(@body, net_http_resp, req)
76
- ::ForemanRhCloud::CloudRequestForwarder.any_instance.stubs(:forward_request).returns(res)
77
-
78
- get :forward_request, params: { "path" => "static/v1/release/insights-core.egg" }
79
- assert_equal net_http_resp['Content-Type'], @response.headers['Content-Type']
80
- end
81
-
82
52
  test "should handle failed authentication to cloud" do
83
53
  net_http_resp = Net::HTTPResponse.new(1.0, 401, "Unauthorized")
84
54
  res = RestClient::Response.create(@body, net_http_resp, @http_req)
@@ -88,17 +58,6 @@ module InsightsCloud::Api
88
58
  assert_equal 502, @response.status
89
59
  assert_equal 'Authentication to the Insights Service failed.', JSON.parse(@response.body)['message']
90
60
  end
91
-
92
- test "should forward errors to the client" do
93
- net_http_resp = Net::HTTPResponse.new(1.0, 500, "TEST_RESPONSE")
94
- res = RestClient::Response.create(@body, net_http_resp, @http_req)
95
- ::ForemanRhCloud::CloudRequestForwarder.any_instance.stubs(:execute_cloud_request).raises(RestClient::InternalServerError.new(res))
96
-
97
- get :forward_request, params: { "path" => "platform/module-update-router/v1/channel" }
98
- assert_equal 500, @response.status
99
- assert_equal 'Cloud request failed', JSON.parse(@response.body)['message']
100
- assert_match /#{@body}/, JSON.parse(@response.body)['response']
101
- end
102
61
  end
103
62
 
104
63
  context '#branch_info' do
@@ -49,7 +49,7 @@ end
49
49
 
50
50
  FactoryBot.define do
51
51
  factory :katello_subscription_facets, :aliases => [:subscription_facet], :class => ::Katello::Host::SubscriptionFacet do
52
- sequence(:uuid) { |n| "00000000-%<n>04d-%<r>04d-0000-000000000000" % {n: n, r: rand(500)} }
52
+ sequence(:uuid) { |n| "uuid-#{n}-#{rand(500)}" }
53
53
  facts { { 'memory.memtotal' => "12 GB" } }
54
54
  end
55
55
  end
@@ -7,7 +7,6 @@ class InsightsFullSyncTest < ActiveSupport::TestCase
7
7
  setup do
8
8
  InsightsCloud::Async::InsightsFullSync.any_instance.stubs(:plan_rules_sync)
9
9
  InsightsCloud::Async::InsightsFullSync.any_instance.stubs(:plan_notifications)
10
- FactoryBot.create(:setting, name: 'rh_cloud_token', value: 'MOCK_TOKEN')
11
10
 
12
11
  uuid1 = 'accdf444-5628-451d-bf3e-cf909ad72756'
13
12
  @host1 = FactoryBot.create(:host, :managed, name: 'host1')
@@ -1,4 +1,4 @@
1
- require 'test_plugin_helper'
1
+ require 'test_helper'
2
2
  require 'foreman_tasks/test_helpers'
3
3
 
4
4
  class InsightsResolutionsSyncTest < ActiveSupport::TestCase
@@ -63,7 +63,6 @@ class InsightsResolutionsSyncTest < ActiveSupport::TestCase
63
63
  }
64
64
 
65
65
  @rule = FactoryBot.create(:insights_rule, rule_id: 'network_tcp_connection_hang|NETWORK_TCP_CONNECTION_HANG_WARN')
66
- FactoryBot.create(:setting, name: 'rh_cloud_token', value: 'MOCK_TOKEN')
67
66
  end
68
67
 
69
68
  test 'Resolutions data is replaced with data from cloud' do
@@ -75,13 +74,4 @@ class InsightsResolutionsSyncTest < ActiveSupport::TestCase
75
74
  assert_equal 5, InsightsResolution.all.count
76
75
  assert_equal 2, @rule.resolutions.count
77
76
  end
78
-
79
- test 'Skips pinging the cloud if no rule ids were found' do
80
- InsightsCloud::Async::InsightsResolutionsSync.any_instance.expects(:query_insights_resolutions).never
81
- InsightsRule.all.delete_all
82
-
83
- ForemanTasks.sync_task(InsightsCloud::Async::InsightsResolutionsSync)
84
-
85
- assert_equal 0, InsightsResolution.all.count
86
- end
87
77
  end
@@ -112,7 +112,6 @@ class InsightsRulesSyncTest < ActiveSupport::TestCase
112
112
  @hit = FactoryBot.create(:insights_hit, host_id: @host.id)
113
113
 
114
114
  InsightsCloud::Async::InsightsRulesSync.any_instance.stubs(:plan_resolutions)
115
- FactoryBot.create(:setting, name: 'rh_cloud_token', value: 'MOCK_TOKEN')
116
115
  end
117
116
 
118
117
  test 'Hits data is replaced with data from cloud' do
@@ -37,18 +37,6 @@ class InventoryFullSyncTest < ActiveSupport::TestCase
37
37
  @host2.subscription_facet.pools << pool
38
38
  @host2_inventory_id = '4536bf5c-ff03-4154-a8c9-32ff4b40e40c'
39
39
 
40
- # this host would pass our plugin queries, so it could be uploaded to the cloud.
41
- @host3 = FactoryBot.create(
42
- :host,
43
- :with_subscription,
44
- :with_content,
45
- content_view: cv.first,
46
- lifecycle_environment: env,
47
- organization: env.organization
48
- )
49
-
50
- @host3.subscription_facet.pools << pool
51
-
52
40
  ForemanInventoryUpload::Generators::Queries.instance_variable_set(:@fact_names, nil)
53
41
 
54
42
  inventory_json = <<-INVENTORY_JSON
@@ -163,7 +151,7 @@ class InventoryFullSyncTest < ActiveSupport::TestCase
163
151
  {
164
152
  "insights_id": "b533848e-465f-4f1a-9b2b-b71cb2d5239d",
165
153
  "rhel_machine_id": null,
166
- "subscription_manager_id": "#{@host3.subscription_facet.uuid}",
154
+ "subscription_manager_id": "d29bde40-348e-437c-8acf-8fa98320fc1b",
167
155
  "satellite_id": "d29bde40-348e-437c-8acf-8fa98320fc1b",
168
156
  "bios_uuid": "3cd5d972-cfb5-451a-8314-fd2f56629d7c",
169
157
  "ip_addresses": [
@@ -171,7 +159,7 @@ class InventoryFullSyncTest < ActiveSupport::TestCase
171
159
  "fd6e:2298:736e::857",
172
160
  "fd6e:2298:736e:0:2c66:6101:9cc6:2b23"
173
161
  ],
174
- "fqdn": "#{@host3.fqdn}",
162
+ "fqdn": "rhel8-demo.oss-lab.net",
175
163
  "mac_addresses": [
176
164
  "6e:66:a6:fe:fc:07",
177
165
  "00:00:00:00:00:00"
@@ -254,7 +242,6 @@ class InventoryFullSyncTest < ActiveSupport::TestCase
254
242
  end
255
243
 
256
244
  test 'Host status should be SYNC for inventory hosts' do
257
- FactoryBot.create(:setting, name: 'rh_cloud_token', value: 'TEST TOKEN')
258
245
  InventorySync::Async::InventoryFullSync.any_instance.expects(:query_inventory).returns(@inventory)
259
246
 
260
247
  ForemanTasks.sync_task(InventorySync::Async::InventoryFullSync, @host2.organization)
@@ -266,7 +253,6 @@ class InventoryFullSyncTest < ActiveSupport::TestCase
266
253
  end
267
254
 
268
255
  test 'Host status should be DISCONNECT for hosts that are not returned from cloud' do
269
- FactoryBot.create(:setting, name: 'rh_cloud_token', value: 'TEST TOKEN')
270
256
  InventorySync::Async::InventoryFullSync.any_instance.expects(:query_inventory).returns(@inventory)
271
257
  FactoryBot.create(:fact_value, fact_name: fact_names['virt::uuid'], value: '1234', host: @host2)
272
258
 
@@ -275,26 +261,4 @@ class InventoryFullSyncTest < ActiveSupport::TestCase
275
261
 
276
262
  assert_equal InventorySync::InventoryStatus::DISCONNECT, InventorySync::InventoryStatus.where(host_id: @host1.id).first.status
277
263
  end
278
-
279
- test 'Task should be aborted if token is not present' do
280
- FactoryBot.create(:setting, name: 'rh_cloud_token', value: '')
281
-
282
- InventorySync::Async::InventoryFullSync.any_instance.expects(:plan_self).never
283
-
284
- ForemanTasks.sync_task(InventorySync::Async::InventoryFullSync, @host1.organization)
285
- end
286
-
287
- test 'Should skip hosts that are not returned in query' do
288
- assert_nil InventorySync::InventoryStatus.where(host_id: @host3.id).first
289
-
290
- FactoryBot.create(:setting, name: 'rh_cloud_token', value: 'TEST TOKEN')
291
- InventorySync::Async::InventoryFullSync.any_instance.expects(:query_inventory).returns(@inventory)
292
- InventorySync::Async::InventoryFullSync.any_instance.expects(:affected_host_ids).returns([@host1.id, @host2.id])
293
- FactoryBot.create(:fact_value, fact_name: fact_names['virt::uuid'], value: '1234', host: @host2)
294
-
295
- ForemanTasks.sync_task(InventorySync::Async::InventoryFullSync, @host1.organization)
296
- @host2.reload
297
-
298
- assert_nil InventorySync::InventoryStatus.where(host_id: @host3.id).first
299
- end
300
264
  end