foreman_rh_cloud 3.0.17 → 3.0.18

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 (144) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/foreman_inventory_upload/accounts_controller.rb +3 -15
  3. data/app/controllers/foreman_inventory_upload/uploads_controller.rb +0 -48
  4. data/app/controllers/foreman_inventory_upload/uploads_settings_controller.rb +26 -0
  5. data/app/controllers/insights_cloud/hits_controller.rb +1 -1
  6. data/app/services/foreman_rh_cloud/branch_info.rb +3 -14
  7. data/app/services/foreman_rh_cloud/cloud_connector.rb +12 -7
  8. data/app/services/foreman_rh_cloud/cloud_request_forwarder.rb +31 -19
  9. data/config/routes.rb +2 -5
  10. data/db/migrate/20210307000001_add_unique_to_insights_facet.foreman_rh_cloud.rb +11 -0
  11. data/lib/foreman_inventory_upload.rb +2 -1
  12. data/lib/foreman_inventory_upload/generators/json_stream.rb +1 -1
  13. data/lib/foreman_inventory_upload/generators/slice.rb +14 -21
  14. data/lib/foreman_inventory_upload/generators/tags.rb +59 -0
  15. data/lib/foreman_rh_cloud.rb +4 -0
  16. data/lib/foreman_rh_cloud/version.rb +1 -1
  17. data/package.json +1 -1
  18. data/test/controllers/accounts_controller_test.rb +1 -5
  19. data/test/controllers/uploads_controller_test.rb +0 -13
  20. data/test/controllers/uploads_settings_controller_test.rb +31 -0
  21. data/test/test_plugin_helper.rb +13 -0
  22. data/test/unit/services/foreman_rh_cloud/branch_info_test.rb +5 -5
  23. data/test/unit/services/foreman_rh_cloud/cloud_request_forwarder_test.rb +39 -4
  24. data/test/unit/slice_generator_test.rb +7 -2
  25. data/test/unit/tags_generator_test.rb +60 -0
  26. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountList.fixtures.js +4 -19
  27. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountList.js +7 -7
  28. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountListHelper.js +6 -6
  29. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountListReducer.js +0 -34
  30. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountListSelectors.js +0 -14
  31. data/webpack/ForemanInventoryUpload/Components/AccountList/Components/EmptyResults/emptyResults.scss +6 -4
  32. data/webpack/ForemanInventoryUpload/Components/AccountList/Components/EmptyState/emptyState.scss +6 -4
  33. data/webpack/ForemanInventoryUpload/Components/AccountList/Components/ErrorState/errorState.scss +14 -12
  34. data/webpack/ForemanInventoryUpload/Components/AccountList/Components/ListItem/ListItem.fixtures.js +10 -1
  35. data/webpack/ForemanInventoryUpload/Components/AccountList/Components/ListItem/ListItem.js +7 -7
  36. data/webpack/ForemanInventoryUpload/Components/AccountList/Components/ListItem/__tests__/__snapshots__/ListItem.test.js.snap +12 -9
  37. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListHelper.test.js +3 -3
  38. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListReducer.test.js +0 -30
  39. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListSelectors.test.js +1 -23
  40. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountList.test.js.snap +6 -6
  41. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountListActions.test.js.snap +3 -8
  42. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountListReducer.test.js.snap +3 -35
  43. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountListSelectors.test.js.snap +6 -18
  44. data/webpack/ForemanInventoryUpload/Components/AccountList/accountList.scss +24 -22
  45. data/webpack/ForemanInventoryUpload/Components/Dashboard/Dashboard.fixtures.js +1 -1
  46. data/webpack/ForemanInventoryUpload/Components/Dashboard/Dashboard.js +1 -1
  47. data/webpack/ForemanInventoryUpload/Components/FileDownload/FileDownload.js +2 -1
  48. data/webpack/ForemanInventoryUpload/Components/FileDownload/fileDownload.scss +4 -2
  49. data/webpack/ForemanInventoryUpload/Components/FullScreenModal/FullScreenModal.js +2 -1
  50. data/webpack/ForemanInventoryUpload/Components/FullScreenModal/fullScreenModal.scss +16 -14
  51. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/Components/ClearButton/ClearButton.js +2 -1
  52. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/InventoryFilter.fixtures.js +1 -1
  53. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/InventoryFilter.js +2 -1
  54. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/InventoryFilterReducer.js +3 -11
  55. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/__tests__/InventoryFilter.test.js +1 -1
  56. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/__tests__/InventoryFilterReducer.test.js +3 -3
  57. data/webpack/ForemanInventoryUpload/Components/InventorySettings/AdvancedSetting/AdvancedSettingActions.js +7 -0
  58. data/webpack/ForemanInventoryUpload/Components/InventorySettings/AdvancedSetting/AdvancedSettingsConstants.js +26 -0
  59. data/webpack/ForemanInventoryUpload/Components/InventorySettings/AdvancedSetting/__tests__/AdvancedSettingActions.test.js +9 -0
  60. data/webpack/ForemanInventoryUpload/Components/InventorySettings/AdvancedSetting/__tests__/__snapshots__/AdvancedSettingActions.test.js.snap +18 -0
  61. data/webpack/ForemanInventoryUpload/Components/InventorySettings/AdvancedSetting/index.js +29 -0
  62. data/webpack/ForemanInventoryUpload/Components/InventorySettings/InventorySettings.js +7 -8
  63. data/webpack/ForemanInventoryUpload/Components/InventorySettings/InventorySettings.scss +15 -9
  64. data/webpack/ForemanInventoryUpload/Components/InventorySettings/InventorySettingsActions.js +23 -0
  65. data/webpack/ForemanInventoryUpload/Components/InventorySettings/InventorySettingsConstants.js +9 -0
  66. data/webpack/ForemanInventoryUpload/Components/InventorySettings/InventorySettingsSelectors.js +19 -0
  67. data/webpack/ForemanInventoryUpload/Components/InventorySettings/__tests__/InventorySettingsActions.test.js +14 -0
  68. data/webpack/ForemanInventoryUpload/Components/InventorySettings/__tests__/__snapshots__/InventorySettings.test.js.snap +16 -4
  69. data/webpack/ForemanInventoryUpload/Components/InventorySettings/__tests__/__snapshots__/InventorySettingsActions.test.js.snap +26 -0
  70. data/webpack/ForemanInventoryUpload/Components/InventorySettings/index.js +16 -1
  71. data/webpack/ForemanInventoryUpload/Components/NavContainer/NavContainer.fixtures.js +1 -1
  72. data/webpack/ForemanInventoryUpload/Components/NavContainer/navContainer.scss +7 -5
  73. data/webpack/ForemanInventoryUpload/Components/PageHeader/PageHeader.scss +1 -1
  74. data/webpack/ForemanInventoryUpload/Components/PageHeader/__tests__/__snapshots__/PageHeader.test.js.snap +1 -1
  75. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SettingsWarning/index.js +1 -1
  76. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/__tests__/SyncButton.test.js +1 -1
  77. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/components/Modal.js +1 -1
  78. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/components/modal.scss +1 -1
  79. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/index.js +1 -1
  80. data/webpack/ForemanInventoryUpload/Components/ReportGenerate/ReportGenerate.fixtures.js +1 -1
  81. data/webpack/ForemanInventoryUpload/Components/ReportGenerate/ReportGenerate.js +1 -1
  82. data/webpack/ForemanInventoryUpload/Components/ReportUpload/ReportUpload.fixtures.js +1 -1
  83. data/webpack/ForemanInventoryUpload/Components/ReportUpload/ReportUpload.js +1 -1
  84. data/webpack/ForemanInventoryUpload/Components/ScheduledRun/index.js +1 -1
  85. data/webpack/ForemanInventoryUpload/Components/ScheduledRun/scheduledRun.scss +8 -6
  86. data/webpack/ForemanInventoryUpload/Components/StatusChart/statusChart.scss +9 -7
  87. data/webpack/ForemanInventoryUpload/Components/TabBody/tabBody.scss +4 -2
  88. data/webpack/ForemanInventoryUpload/Components/TabContainer/tabContainer.scss +7 -5
  89. data/webpack/ForemanInventoryUpload/Components/TabHeader/TabHeader.js +2 -1
  90. data/webpack/ForemanInventoryUpload/Components/TabHeader/tabHeader.scss +15 -13
  91. data/webpack/ForemanInventoryUpload/Components/Terminal/terminal.scss +27 -25
  92. data/webpack/ForemanInventoryUpload/ForemanInventoryUpload.js +1 -1
  93. data/webpack/ForemanInventoryUpload/SubscriptionsPageExtension/InventoryAutoUpload/InventoryAutoUpload.js +13 -8
  94. data/webpack/ForemanInventoryUpload/SubscriptionsPageExtension/InventoryAutoUpload/__tests__/InventoryAutoUpload.test.js +3 -3
  95. data/webpack/ForemanInventoryUpload/SubscriptionsPageExtension/InventoryAutoUpload/components/AdvancedSettings/AdvancedSettings.js +21 -9
  96. data/webpack/ForemanInventoryUpload/SubscriptionsPageExtension/InventoryAutoUpload/components/AdvancedSettings/index.js +3 -8
  97. data/webpack/ForemanInventoryUpload/SubscriptionsPageExtension/InventoryAutoUpload/index.js +6 -4
  98. data/webpack/ForemanInventoryUpload/__tests__/__snapshots__/ForemanInventoryUpload.test.js.snap +1 -1
  99. data/webpack/InsightsCloudSync/Components/InsightsSettings/__tests__/InsightsSettings.test.js +1 -1
  100. data/webpack/InsightsCloudSync/Components/InsightsSyncSwitcher/__tests__/InsightsSyncSwitcher.test.js +1 -1
  101. data/webpack/InsightsCloudSync/Components/InsightsTable/__tests__/fixtures.js +1 -1
  102. data/webpack/InsightsCloudSync/InsightsCloudSync.test.js +1 -1
  103. data/webpack/InsightsHostDetailsTab/InsightsTab.js +2 -1
  104. data/webpack/__mocks__/foremanReact/redux/API/APISelectors.js +1 -1
  105. data/webpack/common/Switcher/SwitcherPF4.scss +1 -1
  106. metadata +55 -56
  107. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcher.fixtures.js +0 -3
  108. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcher.js +0 -29
  109. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcherActions.js +0 -29
  110. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcherConstants.js +0 -1
  111. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/AutoUploadSwitcher.test.js +0 -14
  112. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/AutoUploadSwitcherActions.test.js +0 -24
  113. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/__snapshots__/AutoUploadSwitcher.test.js.snap +0 -15
  114. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/__snapshots__/AutoUploadSwitcherActions.test.js.snap +0 -31
  115. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/index.js +0 -17
  116. data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/ExcludePackagesSwitcher.fixtures.js +0 -1
  117. data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/ExcludePackagesSwitcher.js +0 -27
  118. data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/ExcludePackagesSwitcherActions.js +0 -29
  119. data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/ExcludePackagesSwitcherConstants.js +0 -1
  120. data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/__tests__/ExcludePackagesSwitcher.test.js +0 -13
  121. data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/__tests__/ExcludePackagesSwitcherActions.test.js +0 -21
  122. data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/__tests__/__snapshots__/ExcludePackagesSwitcher.test.js.snap +0 -15
  123. data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/__tests__/__snapshots__/ExcludePackagesSwitcherActions.test.js.snap +0 -31
  124. data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/__tests__/__snapshots__/integration.test.js.snap +0 -46
  125. data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/__tests__/integration.test.js +0 -36
  126. data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/index.js +0 -20
  127. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcher.fixtures.js +0 -2
  128. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcher.js +0 -27
  129. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcherActions.js +0 -29
  130. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcherConstants.js +0 -1
  131. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/__tests__/HostObfuscationSwitcher.test.js +0 -14
  132. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/__tests__/HostObfuscationSwitcherActions.test.js +0 -24
  133. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/__tests__/__snapshots__/HostObfuscationSwitcher.test.js.snap +0 -15
  134. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/__tests__/__snapshots__/HostObfuscationSwitcherActions.test.js.snap +0 -31
  135. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/index.js +0 -20
  136. data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/IpsObfuscationSwitcher.fixtures.js +0 -1
  137. data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/IpsObfuscationSwitcher.js +0 -27
  138. data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/IpsObfuscationSwitcherActions.js +0 -29
  139. data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/IpsObfuscationSwitcherConstants.js +0 -1
  140. data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/__tests__/IpsObfuscationSwitcher.test.js +0 -13
  141. data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/__tests__/IpsObfuscationSwitcherActions.test.js +0 -21
  142. data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/__tests__/__snapshots__/IpsObfuscationSwitcher.test.js.snap +0 -15
  143. data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/__tests__/__snapshots__/IpsObfuscationSwitcherActions.test.js.snap +0 -31
  144. data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/index.js +0 -20
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: de4c573e51011ac6fd99707859fa86d659454b7f30183494ab5e240e773bec0a
4
- data.tar.gz: f0510f09adf430834e01b9732a9cf6faedff0b18471e7b90fbca8a47fe867a13
3
+ metadata.gz: 50f4cac8e85d4aa6a6f5311e0276277ee3de729dfe29954d2fb8e907c2996e65
4
+ data.tar.gz: 96a40dac10cabdcf362add97a29d841a88a16d96a9cfb2a59c10eab0a64b8b5d
5
5
  SHA512:
6
- metadata.gz: a5ef31993d25982136027082f9fb3d382133378627afd0f5da6eeb5eb24a971aa36cdb7f8995347b017ab438124219113e6b326a52f1821e0ccbdb0a6e402f52
7
- data.tar.gz: e5da37635a059fadc6e6c62464aec98f75e803fddb1f8b1ca9b23ad27e42cffdb006bdd4ae5e59d10317d8599f6629ff8f4e08065a15947aff7f93133ec49e8a
6
+ metadata.gz: 9dee0e2da14903584e433cf39e5f21c0e6e913ee54a6c579d929dee1db8163d60990502d7404285d7df8fed49f2b2910e923d47adc529dbda0c5f9aada23174b
7
+ data.tar.gz: 9c468f95609d7d844ae0b0c1b8bbe697c4b43e55529a6dfc5030b74089b05c2d0fae0843e415cb98bec95dacd45c056d25b2130c8df141238059552303a62573
@@ -10,36 +10,24 @@ module ForemanInventoryUpload
10
10
  upload_report_status = status_for(id, ForemanInventoryUpload::Async::UploadReportJob)
11
11
 
12
12
  [
13
- id,
13
+ label,
14
14
  {
15
15
  generate_report_status: generate_report_status,
16
16
  upload_report_status: upload_report_status,
17
- label: label,
17
+ id: id,
18
18
  },
19
19
  ]
20
20
  end
21
21
  ]
22
22
 
23
23
  render json: {
24
- autoUploadEnabled: Setting[:allow_auto_inventory_upload],
25
- hostObfuscationEnabled: Setting[:obfuscate_inventory_hostnames],
26
- ipsObfuscationEnabled: Setting[:obfuscate_inventory_ips],
27
- cloudToken: !Setting[:rh_cloud_token].empty?,
28
- excludePackages: Setting[:exclude_installed_packages],
29
24
  accounts: accounts,
30
- CloudConnectorStatus: cloud_connector_status,
25
+ CloudConnectorStatus: ForemanInventoryUpload::UploadsSettingsController.cloud_connector_status,
31
26
  }, status: :ok
32
27
  end
33
28
 
34
29
  private
35
30
 
36
- def cloud_connector_status
37
- cloud_connector = ForemanRhCloud::CloudConnector.new
38
- job = cloud_connector&.latest_job
39
- return nil unless job
40
- { id: job.id, task: ForemanTasks::Task.where(:id => job.task_id).first }
41
- end
42
-
43
31
  def status_for(label, job_class)
44
32
  label = job_class.output_label(label)
45
33
  ForemanInventoryUpload::Async::ProgressOutput.get(label)&.status
@@ -21,53 +21,5 @@ module ForemanInventoryUpload
21
21
  cloud_connector = ForemanRhCloud::CloudConnector.new
22
22
  render json: cloud_connector.install.to_json
23
23
  end
24
-
25
- def auto_upload
26
- Setting[:allow_auto_inventory_upload] = auto_upload_params
27
- render_setting(:autoUploadEnabled, :allow_auto_inventory_upload)
28
- end
29
-
30
- def show_auto_upload
31
- render_setting(:autoUploadEnabled, :allow_auto_inventory_upload)
32
- end
33
-
34
- def auto_upload_params
35
- ActiveModel::Type::Boolean.new.cast(params.require(:value))
36
- end
37
-
38
- def host_obfuscation
39
- Setting[:obfuscate_inventory_hostnames] = host_obfuscation_params
40
- render_setting(:hostObfuscationEnabled, :obfuscate_inventory_hostnames)
41
- end
42
-
43
- def host_obfuscation_params
44
- ActiveModel::Type::Boolean.new.cast(params.require(:value))
45
- end
46
-
47
- def installed_packages_inclusion
48
- Setting[:exclude_installed_packages] = host_obfuscation_params
49
- render_setting(:excludePackages, :exclude_installed_packages)
50
- end
51
-
52
- def installed_packages_inclusion_params
53
- ActiveModel::Type::Boolean.new.cast(params.require(:value))
54
- end
55
-
56
- def ips_obfuscation
57
- Setting[:obfuscate_inventory_ips] = ips_obfuscation_params
58
- render_setting(:ipsObfuscationEnabled, :obfuscate_inventory_ips)
59
- end
60
-
61
- def ips_obfuscation_params
62
- ActiveModel::Type::Boolean.new.cast(params.require(:value))
63
- end
64
-
65
- private
66
-
67
- def render_setting(node_name, setting)
68
- render json: {
69
- node_name => Setting[setting],
70
- }
71
- end
72
24
  end
73
25
  end
@@ -0,0 +1,26 @@
1
+ module ForemanInventoryUpload
2
+ class UploadsSettingsController < ::ApplicationController
3
+ def index
4
+ render json: {
5
+ autoUploadEnabled: Setting[:allow_auto_inventory_upload],
6
+ hostObfuscationEnabled: Setting[:obfuscate_inventory_hostnames],
7
+ ipsObfuscationEnabled: Setting[:obfuscate_inventory_ips],
8
+ excludePackagesEnabled: Setting[:exclude_installed_packages],
9
+ CloudConnectorStatus: ForemanInventoryUpload::UploadsSettingsController.cloud_connector_status,
10
+ cloudToken: !Setting[:rh_cloud_token].empty?,
11
+ }, status: :ok
12
+ end
13
+
14
+ def set_advanced_setting
15
+ Setting[params.require(:setting)] = ActiveModel::Type::Boolean.new.cast(params.require(:value))
16
+ index
17
+ end
18
+
19
+ def self.cloud_connector_status
20
+ cloud_connector = ForemanRhCloud::CloudConnector.new
21
+ job = cloud_connector&.latest_job
22
+ return nil unless job
23
+ { id: job.id, task: ForemanTasks::Task.where(:id => job.task_id).first }
24
+ end
25
+ end
26
+ end
@@ -3,7 +3,7 @@ module InsightsCloud
3
3
  include Foreman::Controller::AutoCompleteSearch
4
4
 
5
5
  def index
6
- hits = resource_base_search_and_page.preload(:host, :rule)
6
+ hits = resource_base_search_and_page.where(host: Host.authorized).preload(:host, :rule)
7
7
 
8
8
  render json: {
9
9
  hasToken: !Setting[:rh_cloud_token].empty?,
@@ -38,20 +38,9 @@ module ForemanRhCloud
38
38
  end
39
39
 
40
40
  def host_labels(host)
41
- labels = [new_label('Organization', host.organization.name, 'Satellite')]
42
- labels += labels_from_items(host.location.title.split('/'), 'Satellite', ->(item) { 'Location' }) if host.location
43
- labels += labels_from_items(host.hostgroup.title.split('/'), 'Satellite', ->(item) { 'Host Group' }) if host.hostgroup
44
- labels += labels_from_items(host.host_collections, 'Satellite', ->(item) { 'Host Collection' }, :name)
45
-
46
- if Setting[:include_parameter_tags]
47
- labels += labels_from_items(
48
- host.host_inherited_params_objects,
49
- 'SatelliteParameter',
50
- ->(item) { item.name },
51
- :value)
52
- end
53
-
54
- labels
41
+ tags_generator = ForemanInventoryUpload::Generators::Tags.new(host)
42
+ tags_generator.generate.map { |key, value| new_label(key, value, ForemanInventoryUpload::Generators::Slice::SATELLITE_NAMESPACE) } +
43
+ tags_generator.generate_parameters.map { |key, value| new_label(key, value, ForemanInventoryUpload::Generators::Slice::SATELLITE_PARAMS_NAMESPACE) }
55
44
  end
56
45
  end
57
46
  end
@@ -9,13 +9,18 @@ module ForemanRhCloud
9
9
  def install
10
10
  user = service_user
11
11
  token_value = personal_access_token(user)
12
+ target_host = foreman_host
13
+ composer = nil
14
+
15
+ Taxonomy.as_taxonomy(target_host.organization, target_host.location) do
16
+ composer = ::JobInvocationComposer.for_feature(
17
+ CLOUD_CONNECTOR_FEATURE,
18
+ [target_host.id],
19
+ {:satellite_user => service_user.login, :satellite_password => token_value}
20
+ )
21
+ composer.trigger!
22
+ end
12
23
 
13
- composer = ::JobInvocationComposer.for_feature(
14
- CLOUD_CONNECTOR_FEATURE,
15
- [foreman_host.id],
16
- {:satellite_user => service_user.login, :satellite_password => token_value}
17
- )
18
- composer.trigger!
19
24
  composer.job_invocation
20
25
  end
21
26
 
@@ -54,7 +59,7 @@ module ForemanRhCloud
54
59
  end
55
60
 
56
61
  def foreman_host
57
- ::Host.friendly.find(::SmartProxy.default_capsule.name)
62
+ ::Host.unscoped.friendly.find(::SmartProxy.default_capsule.name)
58
63
  end
59
64
  end
60
65
  end
@@ -29,25 +29,7 @@ module ForemanRhCloud
29
29
  user_agent: http_user_agent(original_request),
30
30
  },
31
31
  }
32
-
33
- if no_cert_paths.any? { |path| path.match original_request.path }
34
- base_params.merge(url: prepare_forward_cloud_url(ForemanRhCloud.base_url, original_request.path))
35
- else
36
- base_params.merge(
37
- url: prepare_forward_cloud_url(ForemanRhCloud.cert_base_url, original_request.path),
38
- ssl_client_cert: OpenSSL::X509::Certificate.new(certs[:cert]),
39
- ssl_client_key: OpenSSL::PKey::RSA.new(certs[:key])
40
- )
41
- end
42
- end
43
-
44
- def no_cert_paths
45
- [
46
- "/redhat_access/r/insights/v1/static/release/insights-core.egg",
47
- "/redhat_access/r/insights/v1/static/uploader.v2.json",
48
- "/redhat_access/r/insights/v1/static/uploader.v2.json.asc",
49
- "/redhat_access/r/insights/v1/static/core/insights-core.egg",
50
- ]
32
+ base_params.merge(path_params(original_request.path, certs))
51
33
  end
52
34
 
53
35
  def execute_cloud_request(request_opts)
@@ -76,6 +58,36 @@ module ForemanRhCloud
76
58
  forward_params
77
59
  end
78
60
 
61
+ def path_params(request_path, certs)
62
+ case request_path
63
+ when metadata_request?
64
+ {
65
+ url: ForemanRhCloud.base_url + request_path.sub('/redhat_access/r/insights', '/api'),
66
+ }
67
+ when platform_request?
68
+ {
69
+ url: ForemanRhCloud.cert_base_url + request_path.sub('/redhat_access/r/insights/platform', '/api'),
70
+ ssl_client_cert: OpenSSL::X509::Certificate.new(certs[:cert]),
71
+ ssl_client_key: OpenSSL::PKey::RSA.new(certs[:key]),
72
+ }
73
+ else # Legacy insights API
74
+ {
75
+ url: ForemanRhCloud.legacy_insights_url + request_path.sub('/redhat_access/r/insights', '/r/insights'),
76
+ ssl_client_cert: OpenSSL::X509::Certificate.new(certs[:cert]),
77
+ ssl_client_key: OpenSSL::PKey::RSA.new(certs[:key]),
78
+ ssl_ca_file: Class.new.include(RedhatAccess::Telemetry::LookUps).new.get_default_ssl_ca_file,
79
+ }
80
+ end
81
+ end
82
+
83
+ def metadata_request?
84
+ ->(request_path) { request_path.include? '/static' }
85
+ end
86
+
87
+ def platform_request?
88
+ ->(request_path) { request_path.include? '/platform' }
89
+ end
90
+
79
91
  def prepare_forward_cloud_url(base_url, request_path)
80
92
  cloud_path = request_path.sub('/redhat_access/r/insights/platform/', '')
81
93
  .sub('/redhat_access/r/insights/', '')
data/config/routes.rb CHANGED
@@ -5,11 +5,8 @@ Rails.application.routes.draw do
5
5
  get ':organization_id/uploads/last', to: 'uploads#last', constraints: { organization_id: %r{[^\/]+} }
6
6
  get ':organization_id/uploads/file', to: 'uploads#download_file', constraints: { organization_id: %r{[^\/]+} }
7
7
  get 'accounts', to: 'accounts#index'
8
- get 'auto_upload', to: 'uploads#show_auto_upload'
9
- post 'auto_upload', to: 'uploads#auto_upload'
10
- post 'host_obfuscation', to: 'uploads#host_obfuscation'
11
- post 'installed_packages_inclusion', to: 'uploads#installed_packages_inclusion'
12
- post 'ips_obfuscation', to: 'uploads#ips_obfuscation'
8
+ get 'settings', to: 'uploads_settings#index'
9
+ post 'setting', to: 'uploads_settings#set_advanced_setting'
13
10
 
14
11
  post 'cloud_connector', to: 'uploads#enable_cloud_connector'
15
12
 
@@ -0,0 +1,11 @@
1
+ class AddUniqueToInsightsFacet < ActiveRecord::Migration[5.2]
2
+ def change
3
+ # Remove duplicate records
4
+ InsightsFacet.where.not(id: InsightsFacet.select('max(id)').group(:host_id)).delete_all
5
+
6
+ # remove old index
7
+ remove_index :insights_facets, [:host_id]
8
+ # add unique constraint
9
+ add_index :insights_facets, [:host_id], unique: true
10
+ end
11
+ end
@@ -62,6 +62,7 @@ module ForemanInventoryUpload
62
62
  end
63
63
 
64
64
  def self.inventory_export_url
65
- ForemanRhCloud.base_url + '/api/inventory/v1/hosts'
65
+ tags = URI.encode("satellite/satellite_instance_id=#{Foreman.instance_id}")
66
+ ForemanRhCloud.base_url + "/api/inventory/v1/hosts?tags=#{tags}"
66
67
  end
67
68
  end
@@ -63,7 +63,7 @@ module ForemanInventoryUpload
63
63
  return value if value.is_a?(FalseClass)
64
64
  return value.to_json if value.is_a?(Hash)
65
65
 
66
- "\"#{value}\""
66
+ ActiveSupport::JSON.encode(value)
67
67
  end
68
68
  end
69
69
  end
@@ -4,6 +4,7 @@ module ForemanInventoryUpload
4
4
  include FactHelpers
5
5
 
6
6
  SATELLITE_NAMESPACE = 'satellite'
7
+ SATELLITE_PARAMS_NAMESPACE = 'satellite_parameter'
7
8
 
8
9
  attr_accessor :slice_id
9
10
  attr_reader :hosts_count
@@ -63,15 +64,19 @@ module ForemanInventoryUpload
63
64
  end
64
65
 
65
66
  @stream.array_field('tags', :last) do
66
- report_satellite_tag('satellite_instance_id', Foreman.instance_id) if Foreman.respond_to?(:instance_id)
67
- report_satellite_tag('lifecycle_environment', host.lifecycle_environment&.name)
68
- report_satellite_tag('content_view', host.content_view&.name)
69
- report_satellite_tag('activation_key', host.activation_keys) { |key| key.name }
70
- report_satellite_tag('host_collection', host.host_collections) { |collection| collection.name }
71
- report_satellite_tag('location', host.location.name)
72
- report_satellite_tag('organization', host.organization.name)
73
- report_satellite_tag('hostgroup', host.hostgroup&.name)
74
- report_satellite_tag('organization_id', host.organization_id.to_s, :last)
67
+ tags_generator = Tags.new(host)
68
+
69
+ host_params_tags = tags_generator.generate_parameters
70
+ host_params_tags.each do |key, value|
71
+ report_tag(SATELLITE_PARAMS_NAMESPACE, key, value)
72
+ end
73
+
74
+ tags = tags_generator.generate
75
+ last_index = tags.count - 1
76
+ tags.each_with_index do |pair, index|
77
+ key, value = pair
78
+ report_tag(SATELLITE_NAMESPACE, key, value, index == last_index)
79
+ end
75
80
  end
76
81
  end
77
82
  end
@@ -85,18 +90,6 @@ module ForemanInventoryUpload
85
90
  @stream.comma unless last
86
91
  end
87
92
 
88
- def report_satellite_tag(key, value, last = nil)
89
- return if value.nil?
90
-
91
- array_value = Array(value)
92
- last_index = array_value.count - 1
93
-
94
- array_value.each_with_index do |value, index|
95
- value = yield(value) if block_given?
96
- report_tag(SATELLITE_NAMESPACE, key, value, last && index == last_index)
97
- end
98
- end
99
-
100
93
  def report_system_profile(host, host_ips_cache)
101
94
  @stream.simple_field('number_of_cpus', fact_value(host, 'cpu::cpu(s)')) { |v| v.to_i }
102
95
  @stream.simple_field('number_of_sockets', fact_value(host, 'cpu::cpu_socket(s)')) { |v| v.to_i }
@@ -0,0 +1,59 @@
1
+ module ForemanInventoryUpload
2
+ module Generators
3
+ class Tags
4
+ def initialize(host)
5
+ @host = host
6
+ end
7
+
8
+ def generate
9
+ locations +
10
+ hostgroups +
11
+ host_collections +
12
+ organizations +
13
+ content_data +
14
+ satellite_server_data
15
+ end
16
+
17
+ def generate_parameters
18
+ return [] unless Setting[:include_parameter_tags]
19
+
20
+ (@host.host_inherited_params_objects || []).map { |item| [item.name, item.value] }
21
+ end
22
+
23
+ private
24
+
25
+ def locations
26
+ return [] unless @host.location
27
+ @host.location.title.split('/').map { |item| ['location', item] }.push(['location', @host.location.title])
28
+ end
29
+
30
+ def hostgroups
31
+ return [] unless @host.hostgroup
32
+ @host.hostgroup.title.split('/').map { |item| ['hostgroup', item] }.push(['hostgroup', @host.hostgroup.title])
33
+ end
34
+
35
+ def host_collections
36
+ (@host.host_collections || []).map { |item| ['host collection', item.name] }
37
+ end
38
+
39
+ def organizations
40
+ [['organization', @host.organization.name]]
41
+ end
42
+
43
+ def content_data
44
+ [
45
+ ['lifecycle_environment', @host.lifecycle_environment&.name],
46
+ ['content_view', @host.content_view&.name],
47
+ ] +
48
+ (@host.activation_keys || []).map { |item| ['activation_key', item.name] }
49
+ end
50
+
51
+ def satellite_server_data
52
+ [
53
+ ['satellite_instance_id', Foreman.instance_id],
54
+ ['organization_id', @host.organization_id.to_s],
55
+ ]
56
+ end
57
+ end
58
+ end
59
+ end
@@ -12,6 +12,10 @@ module ForemanRhCloud
12
12
  @cert_base_url ||= ENV['SATELLITE_CERT_RH_CLOUD_URL'] || 'https://cert.cloud.redhat.com'
13
13
  end
14
14
 
15
+ def self.legacy_insights_url
16
+ @legacy_insights_url ||= ENV['SATELLITE_LEGACY_INSIGHTS_URL'] || 'https://cert-api.access.redhat.com'
17
+ end
18
+
15
19
  def self.authentication_url
16
20
  # https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token
17
21
  @authentication_url ||= ENV['SATELLITE_RH_CLOUD_SSO_URL'] || 'https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token'