foreman_rh_cloud 2.0.12 → 3.0.15

Sign up to get free protection for your applications and to get access to all the features.
Files changed (227) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +13 -0
  3. data/app/controllers/foreman_inventory_upload/accounts_controller.rb +2 -0
  4. data/app/controllers/foreman_inventory_upload/uploads_controller.rb +29 -0
  5. data/app/controllers/insights_cloud/hits_controller.rb +24 -0
  6. data/app/controllers/insights_cloud/settings_controller.rb +8 -0
  7. data/app/helpers/foreman_inventory_upload_host_helper.rb +2 -10
  8. data/app/models/concerns/rh_cloud_host.rb +4 -1
  9. data/app/models/insights_hit.rb +6 -2
  10. data/app/models/setting/rh_cloud.rb +8 -4
  11. data/app/overrides/hosts_list.rb +1 -1
  12. data/app/overrides/layouts/base/styles.html.erb.deface +2 -0
  13. data/app/services/foreman_rh_cloud/cloud_auth.rb +28 -0
  14. data/app/services/foreman_rh_cloud/cloud_connector.rb +59 -0
  15. data/app/views/hosts/_insights_tab.html.erb +1 -7
  16. data/app/views/layouts/foreman_rh_cloud/application.html.erb +0 -5
  17. data/config/Gemfile.lock.gh_test +830 -0
  18. data/config/database.yml.example +17 -0
  19. data/config/package-lock.json.gh_test +35653 -0
  20. data/config/routes.rb +14 -3
  21. data/db/migrate/20201007115752_add_hits_count_to_insights_facets_table.foreman_rh_cloud.rb +5 -0
  22. data/db/migrate/20201007121540_setup_hits_count_cache.foreman_rh_cloud.rb +10 -0
  23. data/lib/foreman_inventory_upload.rb +1 -1
  24. data/lib/foreman_inventory_upload/generators/archived_report.rb +1 -1
  25. data/lib/foreman_inventory_upload/generators/fact_helpers.rb +35 -0
  26. data/lib/foreman_inventory_upload/generators/json_stream.rb +7 -2
  27. data/lib/foreman_inventory_upload/generators/queries.rb +2 -0
  28. data/lib/foreman_inventory_upload/generators/slice.rb +27 -25
  29. data/lib/foreman_rh_cloud.rb +2 -1
  30. data/lib/foreman_rh_cloud/engine.rb +19 -7
  31. data/lib/foreman_rh_cloud/version.rb +1 -1
  32. data/lib/insights_cloud/async/insights_full_sync.rb +4 -25
  33. data/lib/inventory_sync/async/inventory_full_sync.rb +2 -23
  34. data/lib/tasks/rh_cloud_inventory.rake +23 -0
  35. data/package.json +19 -18
  36. data/test/unit/fact_helpers_test.rb +22 -0
  37. data/test/unit/insights_facet_test.rb +7 -0
  38. data/test/unit/slice_generator_test.rb +142 -2
  39. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountList.fixtures.js +14 -1
  40. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountList.js +3 -2
  41. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountListActions.js +23 -19
  42. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountListReducer.js +16 -0
  43. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountListSelectors.js +6 -0
  44. data/webpack/ForemanInventoryUpload/Components/AccountList/Components/ListItem/ListItem.js +33 -15
  45. data/webpack/ForemanInventoryUpload/Components/AccountList/Components/ListItem/__tests__/__snapshots__/ListItem.test.js.snap +43 -43
  46. data/webpack/ForemanInventoryUpload/Components/AccountList/Components/ListItemStatus/ListItemStatus.js +6 -7
  47. data/webpack/ForemanInventoryUpload/Components/AccountList/Components/ListItemStatus/ListItemStatusHelper.js +5 -4
  48. data/webpack/ForemanInventoryUpload/Components/AccountList/Components/ListItemStatus/__tests__/__snapshots__/ListItemStatus.test.js.snap +19 -34
  49. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListActions.test.js +9 -2
  50. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListReducer.test.js +12 -8
  51. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListSelectors.test.js +9 -0
  52. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountList.test.js.snap +3 -3
  53. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountListActions.test.js.snap +19 -0
  54. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountListReducer.test.js.snap +11 -0
  55. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountListSelectors.test.js.snap +6 -0
  56. data/webpack/ForemanInventoryUpload/Components/AccountList/accountList.scss +28 -5
  57. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcher.fixtures.js +2 -0
  58. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcher.js +7 -10
  59. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcherActions.js +11 -12
  60. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcherConstants.js +0 -1
  61. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/AutoUploadSwitcherActions.test.js +14 -4
  62. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/__snapshots__/AutoUploadSwitcher.test.js.snap +5 -28
  63. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/__snapshots__/AutoUploadSwitcherActions.test.js.snap +17 -0
  64. data/webpack/ForemanInventoryUpload/Components/Dashboard/DashboardActions.js +1 -1
  65. data/webpack/ForemanInventoryUpload/Components/Dashboard/__tests__/DashboardActions.test.js +2 -2
  66. data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/ExcludePackagesSwitcher.fixtures.js +1 -0
  67. data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/ExcludePackagesSwitcher.js +27 -0
  68. data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/ExcludePackagesSwitcherActions.js +29 -0
  69. data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/ExcludePackagesSwitcherConstants.js +1 -0
  70. data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/__tests__/ExcludePackagesSwitcher.test.js +13 -0
  71. data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/__tests__/ExcludePackagesSwitcherActions.test.js +21 -0
  72. data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/__tests__/__snapshots__/ExcludePackagesSwitcher.test.js.snap +15 -0
  73. data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/__tests__/__snapshots__/ExcludePackagesSwitcherActions.test.js.snap +31 -0
  74. data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/__tests__/__snapshots__/integration.test.js.snap +46 -0
  75. data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/__tests__/integration.test.js +36 -0
  76. data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/index.js +20 -0
  77. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcher.fixtures.js +2 -1
  78. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcher.js +6 -8
  79. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcherActions.js +11 -12
  80. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcherConstants.js +0 -2
  81. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/__tests__/HostObfuscationSwitcherActions.test.js +14 -4
  82. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/__tests__/__snapshots__/HostObfuscationSwitcher.test.js.snap +5 -28
  83. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/__tests__/__snapshots__/HostObfuscationSwitcherActions.test.js.snap +18 -1
  84. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/InventoryFilterReducer.js +6 -3
  85. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/__tests__/__snapshots__/integration.test.js.snap +5 -0
  86. data/webpack/ForemanInventoryUpload/Components/InventorySettings/InventorySettings.js +6 -2
  87. data/webpack/ForemanInventoryUpload/Components/InventorySettings/{inventorySettings.scss → InventorySettings.scss} +2 -5
  88. data/webpack/ForemanInventoryUpload/Components/InventorySettings/__tests__/__snapshots__/InventorySettings.test.js.snap +3 -1
  89. data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/IpsObfuscationSwitcher.fixtures.js +1 -0
  90. data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/IpsObfuscationSwitcher.js +27 -0
  91. data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/IpsObfuscationSwitcherActions.js +29 -0
  92. data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/IpsObfuscationSwitcherConstants.js +1 -0
  93. data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/__tests__/IpsObfuscationSwitcher.test.js +13 -0
  94. data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/__tests__/IpsObfuscationSwitcherActions.test.js +21 -0
  95. data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/__tests__/__snapshots__/IpsObfuscationSwitcher.test.js.snap +15 -0
  96. data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/__tests__/__snapshots__/IpsObfuscationSwitcherActions.test.js.snap +31 -0
  97. data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/index.js +20 -0
  98. data/webpack/ForemanInventoryUpload/Components/PageHeader/PageHeader.js +10 -18
  99. data/webpack/ForemanInventoryUpload/Components/PageHeader/PageHeader.scss +19 -0
  100. data/webpack/ForemanInventoryUpload/Components/PageHeader/PageTitle.js +53 -0
  101. data/webpack/ForemanInventoryUpload/Components/PageHeader/{components/DocsButton/__tests__/DocsButton.test.js → __tests__/PageTitle.test.js} +3 -3
  102. data/webpack/ForemanInventoryUpload/Components/PageHeader/__tests__/__snapshots__/PageHeader.test.js.snap +12 -38
  103. data/webpack/ForemanInventoryUpload/Components/PageHeader/__tests__/__snapshots__/PageTitle.test.js.snap +43 -0
  104. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/CloudConnectorButton/CloudConnectorActions.js +27 -0
  105. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/CloudConnectorButton/CloudConnectorButton.js +51 -0
  106. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/CloudConnectorButton/CloudConnectorConstants.js +6 -0
  107. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/CloudConnectorButton/CloudConnectorSelectors.js +14 -0
  108. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/CloudConnectorButton/__tests__/CloudConnectorActions.test.js +9 -0
  109. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/CloudConnectorButton/__tests__/CloudConnectorButton.test.js +22 -0
  110. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/CloudConnectorButton/__tests__/__snapshots__/CloudConnectorActions.test.js.snap +11 -0
  111. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/CloudConnectorButton/__tests__/__snapshots__/CloudConnectorButton.test.js.snap +48 -0
  112. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/CloudConnectorButton/index.js +27 -0
  113. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/SyncButton.js +13 -9
  114. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/SyncButtonActions.js +10 -12
  115. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/SyncButtonConstants.js +1 -1
  116. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/SyncButtonReducer.js +2 -2
  117. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/__tests__/SyncButtonActions.test.js +20 -2
  118. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/__tests__/SyncButtonReducer.test.js +1 -8
  119. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/__tests__/__snapshots__/SyncButton.test.js.snap +7 -9
  120. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/__tests__/__snapshots__/SyncButtonActions.test.js.snap +62 -0
  121. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/__tests__/__snapshots__/SyncButtonReducer.test.js.snap +0 -7
  122. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/components/Modal.js +2 -2
  123. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/ToolbarButtons/ToolbarButtons.js +2 -4
  124. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/ToolbarButtons/__tests__/__snapshots__/ToolbarButtons.test.js.snap +1 -2
  125. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/ToolbarButtons/toolbarButtons.scss +1 -2
  126. data/webpack/ForemanInventoryUpload/Components/TabHeader/TabHeader.js +6 -1
  127. data/webpack/ForemanInventoryUpload/Components/Terminal/Terminal.js +2 -4
  128. data/webpack/ForemanInventoryUpload/Components/Terminal/terminal.scss +1 -0
  129. data/webpack/ForemanInventoryUpload/ForemanInventoryConstants.js +2 -2
  130. data/webpack/ForemanInventoryUpload/ForemanInventoryHelpers.js +8 -0
  131. data/webpack/ForemanInventoryUpload/ForemanInventoryUpload.js +8 -14
  132. data/webpack/ForemanInventoryUpload/SubscriptionsPageExtension/InventoryAutoUpload/InventoryAutoUpload.js +92 -0
  133. data/webpack/ForemanInventoryUpload/SubscriptionsPageExtension/InventoryAutoUpload/__tests__/InventoryAutoUpload.test.js +17 -0
  134. data/webpack/ForemanInventoryUpload/SubscriptionsPageExtension/InventoryAutoUpload/__tests__/__snapshots__/InventoryAutoUpload.test.js.snap +106 -0
  135. data/webpack/ForemanInventoryUpload/SubscriptionsPageExtension/InventoryAutoUpload/components/AdvancedSettings/AdvancedSettings.js +60 -0
  136. data/webpack/ForemanInventoryUpload/SubscriptionsPageExtension/InventoryAutoUpload/components/AdvancedSettings/index.js +28 -0
  137. data/webpack/ForemanInventoryUpload/SubscriptionsPageExtension/InventoryAutoUpload/index.js +22 -0
  138. data/webpack/ForemanInventoryUpload/__tests__/__snapshots__/ForemanInventoryUpload.test.js.snap +7 -10
  139. data/webpack/ForemanRhCloudFills.js +23 -0
  140. data/webpack/ForemanRhCloudPages.js +25 -1
  141. data/webpack/ForemanRhCloudReducers.js +10 -1
  142. data/webpack/InsightsCloudSync/Components/InsightsHeader/InsightsHeader.scss +4 -0
  143. data/webpack/InsightsCloudSync/Components/InsightsHeader/index.js +16 -0
  144. data/webpack/InsightsCloudSync/Components/InsightsSettings/InsightsSettingsActions.js +18 -21
  145. data/webpack/InsightsCloudSync/Components/InsightsSettings/InsightsSettingsConstants.js +0 -6
  146. data/webpack/InsightsCloudSync/Components/InsightsSettings/InsightsSettingsReducer.js +0 -4
  147. data/webpack/InsightsCloudSync/Components/InsightsSettings/__tests__/InsightsSettingsActions.test.js +18 -2
  148. data/webpack/InsightsCloudSync/Components/InsightsSettings/__tests__/InsightsSettingsReducer.test.js +1 -24
  149. data/webpack/InsightsCloudSync/Components/InsightsSettings/__tests__/__snapshots__/InsightsSettingsActions.test.js.snap +38 -4
  150. data/webpack/InsightsCloudSync/Components/InsightsSettings/__tests__/__snapshots__/InsightsSettingsReducer.test.js.snap +0 -14
  151. data/webpack/InsightsCloudSync/Components/InsightsSettings/insightsSettings.scss +1 -0
  152. data/webpack/InsightsCloudSync/Components/InsightsTable/InsightsTable.js +121 -0
  153. data/webpack/InsightsCloudSync/Components/InsightsTable/InsightsTableActions.js +129 -0
  154. data/webpack/InsightsCloudSync/Components/InsightsTable/InsightsTableConstants.js +55 -0
  155. data/webpack/InsightsCloudSync/Components/InsightsTable/InsightsTableHelpers.js +31 -0
  156. data/webpack/InsightsCloudSync/Components/InsightsTable/InsightsTableReducer.js +28 -0
  157. data/webpack/InsightsCloudSync/Components/InsightsTable/InsightsTableSelectors.js +74 -0
  158. data/webpack/InsightsCloudSync/Components/InsightsTable/SelectAllAlert.js +65 -0
  159. data/webpack/InsightsCloudSync/Components/InsightsTable/__tests__/InsightsTable.test.js +13 -0
  160. data/webpack/InsightsCloudSync/Components/InsightsTable/__tests__/InsightsTableSelectors.test.js +58 -0
  161. data/webpack/InsightsCloudSync/Components/InsightsTable/__tests__/__snapshots__/InsightsTable.test.js.snap +168 -0
  162. data/webpack/InsightsCloudSync/Components/InsightsTable/__tests__/__snapshots__/InsightsTableSelectors.test.js.snap +88 -0
  163. data/webpack/InsightsCloudSync/Components/InsightsTable/__tests__/fixtures.js +104 -0
  164. data/webpack/InsightsCloudSync/Components/InsightsTable/components/EmptyState.js +53 -0
  165. data/webpack/InsightsCloudSync/Components/InsightsTable/index.js +45 -0
  166. data/webpack/InsightsCloudSync/Components/InsightsTable/table.scss +1 -0
  167. data/webpack/InsightsCloudSync/Components/NoTokenEmptyState.js +79 -0
  168. data/webpack/InsightsCloudSync/Components/__tests__/InsightsHeader.test.js +10 -0
  169. data/webpack/InsightsCloudSync/Components/__tests__/NoTokenEmptyState.test.js +19 -0
  170. data/webpack/InsightsCloudSync/Components/__tests__/__snapshots__/InsightsHeader.test.js.snap +13 -0
  171. data/webpack/InsightsCloudSync/Components/__tests__/__snapshots__/NoTokenEmptyState.test.js.snap +214 -0
  172. data/webpack/InsightsCloudSync/InsightsCloudSync.js +45 -46
  173. data/webpack/InsightsCloudSync/InsightsCloudSync.test.js +10 -4
  174. data/webpack/InsightsCloudSync/InsightsCloudSyncActions.js +11 -12
  175. data/webpack/InsightsCloudSync/InsightsCloudSyncConstants.js +14 -2
  176. data/webpack/InsightsCloudSync/InsightsCloudSyncHelpers.js +7 -0
  177. data/webpack/InsightsCloudSync/InsightsCloudSyncReducers.js +2 -0
  178. data/webpack/InsightsCloudSync/__snapshots__/InsightsCloudSync.test.js.snap +45 -62
  179. data/webpack/InsightsCloudSync/index.js +11 -3
  180. data/webpack/InsightsHostDetailsTab/InsightsTab.js +13 -13
  181. data/webpack/InsightsHostDetailsTab/InsightsTab.scss +2 -2
  182. data/webpack/InsightsHostDetailsTab/InsightsTabActions.js +10 -9
  183. data/webpack/InsightsHostDetailsTab/InsightsTabConstants.js +0 -1
  184. data/webpack/InsightsHostDetailsTab/InsightsTabReducer.js +2 -9
  185. data/webpack/InsightsHostDetailsTab/__tests__/InsightsTab.fixtures.js +12 -14
  186. data/webpack/InsightsHostDetailsTab/__tests__/InsightsTabActions.test.js +9 -3
  187. data/webpack/InsightsHostDetailsTab/__tests__/InsightsTabReducer.test.js +0 -9
  188. data/webpack/InsightsHostDetailsTab/__tests__/__snapshots__/InsightsTab.test.js.snap +26 -22
  189. data/webpack/InsightsHostDetailsTab/__tests__/__snapshots__/InsightsTabActions.test.js.snap +38 -2
  190. data/webpack/InsightsHostDetailsTab/__tests__/__snapshots__/InsightsTabReducer.test.js.snap +10 -19
  191. data/webpack/InsightsHostDetailsTab/__tests__/__snapshots__/InsightsTabSelectors.test.js.snap +10 -12
  192. data/webpack/__mocks__/foremanReact/Root/Context/ForemanContext.js +1 -0
  193. data/webpack/__mocks__/foremanReact/common/MountingService.js +1 -0
  194. data/webpack/__mocks__/foremanReact/constants.js +19 -0
  195. data/webpack/__mocks__/foremanReact/redux/API/APISelectors.js +24 -0
  196. data/webpack/__mocks__/foremanReact/redux/API/index.js +11 -0
  197. data/webpack/__mocks__/foremanReact/routes/RouterSelector.js +2 -0
  198. data/webpack/__mocks__/foremanReact/routes/common/PageLayout/PageLayout.js +10 -0
  199. data/webpack/common/Switcher/HelpLabel.js +30 -0
  200. data/webpack/common/Switcher/SwitcherPF4.js +36 -0
  201. data/webpack/common/Switcher/SwitcherPF4.scss +10 -0
  202. data/webpack/common/Switcher/__tests__/HelpLabel.test.js +13 -0
  203. data/webpack/common/Switcher/__tests__/SwitcherPF4.test.js +14 -0
  204. data/webpack/common/Switcher/__tests__/__snapshots__/HelpLabel.test.js.snap +20 -0
  205. data/webpack/common/Switcher/__tests__/__snapshots__/SwitcherPF4.test.js.snap +22 -0
  206. data/webpack/common/Switcher/index.js +79 -0
  207. data/webpack/global_index.js +7 -0
  208. data/webpack/index.js +4 -14
  209. metadata +116 -22
  210. data/app/controllers/foreman_rh_cloud/react_controller.rb +0 -11
  211. data/app/views/foreman_rh_cloud/react/insights_cloud.html.erb +0 -6
  212. data/app/views/foreman_rh_cloud/react/inventory_upload.html.erb +0 -1
  213. data/webpack/ForemanInventoryUpload/Components/AccountList/Components/ListItem/listItem.scss +0 -0
  214. data/webpack/ForemanInventoryUpload/Components/AccountList/Components/ListItemStatus/listItemStatus.scss +0 -16
  215. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/autoUploadSwitcher.scss +0 -3
  216. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/hostObfuscationSwitcher.scss +0 -0
  217. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/DocsButton/DocsButton.js +0 -18
  218. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/DocsButton/__tests__/__snapshots__/DocsButton.test.js.snap +0 -21
  219. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/DocsButton/index.js +0 -1
  220. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/HistoryButton/HistoryButton.js +0 -19
  221. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/HistoryButton/__tests__/HistoryButton.test.js +0 -12
  222. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/HistoryButton/__tests__/__snapshots__/HistoryButton.test.js.snap +0 -22
  223. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/HistoryButton/index.js +0 -1
  224. data/webpack/ForemanInventoryUpload/Components/PageHeader/pageHeader.scss +0 -3
  225. data/webpack/ForemanInventoryUpload/SubscriptionsPageExtension/SubscriptionsPageExtensionActions.js +0 -34
  226. data/webpack/__mocks__/foremanReact/API.js +0 -7
  227. data/webpack/subscriptions_extension_index.js +0 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 32e82a148a80e18485bbcc80e69715ad4cbda072aaf6e011e18030212461aa4e
4
- data.tar.gz: 9294a0e1779a60bfa568c0413f9f3c84ab464a563cb36060798637b97f2adcff
3
+ metadata.gz: 677c042a9d55631df79a60651ca098544507487b346ca82645fbf3496f784a9d
4
+ data.tar.gz: e7b272141151275e15583433d7014d46b97af88d215da7aff3ce068792887373
5
5
  SHA512:
6
- metadata.gz: 5652f82aaf2127c5eba23bc81e92959a665993ea329a8462c4078b946f840cf06f9c6f385b18cfce494be83df376ed9d697f15691929b297133994edab745569
7
- data.tar.gz: 71fcfbb4dff6cb22e1078c732c42a0ffe99ec14e865ec88a9668c53fc9f91919661a1d406cc34b45cbd59c8bf058803d3ec3b5aa23b1127cf759c708fc3c3bc2
6
+ metadata.gz: 30697a4e16332a59135af135387de01398c1d992cb83139a49c20b0708b91b4f780009b1899727079e67b07eb43d5e3c85076f4b5f34a4c1184013b53b262a4a
7
+ data.tar.gz: d1600cfbfc51b6026d672d0f8a38a3523dffc0cd8eba082afdf32d7faf6c4496c07becceac6fbd3489dc341cd0d4a670e5e79260068b54891987112063a691b6
data/README.md CHANGED
@@ -19,10 +19,23 @@ In UI: Configure -> Inventory Upload -> Restart
19
19
 
20
20
  From command-line:
21
21
 
22
+ # generate and upload report for all organizations
23
+ /usr/sbin/foreman-rake rh_cloud_inventory:report:generate_upload
24
+
25
+ # generate and upload report for specific organization
26
+ export organization_id=1
27
+ /usr/sbin/foreman-rake rh_cloud_inventory:report:generate_upload
28
+
29
+ # generate report for specific organization (don't upload)
22
30
  export organization_id=1
23
31
  export target=/var/lib/foreman/red_hat_inventory/generated_reports/
24
32
  /usr/sbin/foreman-rake rh_cloud_inventory:report:generate
25
33
 
34
+ # upload previously generated report (needs to be named 'report_for_#{organization_id}.tar.gz')
35
+ export organization_id=1
36
+ export target=/var/lib/foreman/red_hat_inventory/generated_reports/
37
+ /usr/sbin/foreman-rake rh_cloud_inventory:report:upload
38
+
26
39
  #### Fetch hosts remediation data
27
40
 
28
41
  In UI: Configure -> Insights -> Sync now
@@ -23,7 +23,9 @@ module ForemanInventoryUpload
23
23
  render json: {
24
24
  autoUploadEnabled: Setting[:allow_auto_inventory_upload],
25
25
  hostObfuscationEnabled: Setting[:obfuscate_inventory_hostnames],
26
+ ipsObfuscationEnabled: Setting[:obfuscate_inventory_ips],
26
27
  cloudToken: Setting[:rh_cloud_token],
28
+ excludePackages: Setting[:exclude_installed_packages],
27
29
  accounts: accounts,
28
30
  }, status: :ok
29
31
  end
@@ -24,6 +24,17 @@ module ForemanInventoryUpload
24
24
  )
25
25
  end
26
26
 
27
+ def enable_cloud_connector
28
+ cloud_connector = ForemanRhCloud::CloudConnector.new
29
+ render json: cloud_connector.install.to_json
30
+ end
31
+
32
+ def cloud_connector_status
33
+ cloud_connector = ForemanRhCloud::CloudConnector.new
34
+ task_id = cloud_connector.latest_job&.task_id
35
+ render json: ForemanTasks::Task.where(:id => task_id).first
36
+ end
37
+
27
38
  def auto_upload
28
39
  Setting[:allow_auto_inventory_upload] = auto_upload_params
29
40
  render_setting(:autoUploadEnabled, :allow_auto_inventory_upload)
@@ -46,6 +57,24 @@ module ForemanInventoryUpload
46
57
  ActiveModel::Type::Boolean.new.cast(params.require(:value))
47
58
  end
48
59
 
60
+ def installed_packages_inclusion
61
+ Setting[:exclude_installed_packages] = host_obfuscation_params
62
+ render_setting(:excludePackages, :exclude_installed_packages)
63
+ end
64
+
65
+ def installed_packages_inclusion_params
66
+ ActiveModel::Type::Boolean.new.cast(params.require(:value))
67
+ end
68
+
69
+ def ips_obfuscation
70
+ Setting[:obfuscate_inventory_ips] = ips_obfuscation_params
71
+ render_setting(:ipsObfuscationEnabled, :obfuscate_inventory_ips)
72
+ end
73
+
74
+ def ips_obfuscation_params
75
+ ActiveModel::Type::Boolean.new.cast(params.require(:value))
76
+ end
77
+
49
78
  private
50
79
 
51
80
  def render_setting(node_name, setting)
@@ -1,6 +1,18 @@
1
1
  module InsightsCloud
2
2
  class HitsController < ::ApplicationController
3
+ include Foreman::Controller::AutoCompleteSearch
4
+
3
5
  def index
6
+ hits = resource_base_search_and_page.preload(:host)
7
+
8
+ render json: {
9
+ hasToken: Setting[:rh_cloud_token].length > 1,
10
+ hits: hits.map { |hit| hit.attributes.merge(hostname: hit.host&.name) },
11
+ itemCount: hits.count,
12
+ }, status: :ok
13
+ end
14
+
15
+ def show
4
16
  host = Host.where(id: host_id_param).first
5
17
 
6
18
  render json: {
@@ -8,6 +20,18 @@ module InsightsCloud
8
20
  }, status: :ok
9
21
  end
10
22
 
23
+ def model_of_controller
24
+ ::InsightsHit
25
+ end
26
+
27
+ def resource_class
28
+ ::InsightsHit
29
+ end
30
+
31
+ def controller_permission
32
+ :insights_hits
33
+ end
34
+
11
35
  private
12
36
 
13
37
  def host_id_param
@@ -9,6 +9,14 @@ module InsightsCloud
9
9
  render_setting(:insightsSyncEnabled, :allow_auto_insights_sync)
10
10
  end
11
11
 
12
+ def save_token_and_sync
13
+ token = Setting::RhCloud.find_by_name("rh_cloud_token")
14
+ token.value = params.require(:value)
15
+ token.save!
16
+ InsightsCloud::Async::InsightsFullSync.perform_now
17
+ redirect_to(:controller => "hits", :action => 'index')
18
+ end
19
+
12
20
  private
13
21
 
14
22
  def render_setting(node_name, setting)
@@ -5,16 +5,8 @@ module ForemanInventoryUploadHostHelper
5
5
 
6
6
  def hits_counts_cell(host)
7
7
  host_hits = hits_counts[host.id]
8
- content = n_('One recommendation', '%{hits} recommendations', host_hits) % { hits: host_hits } if host_hits
9
- tag.td class: ['hidden-xs', 'ellipsis'] do
10
- if host_hits
11
- link_to(
12
- content,
13
- InsightsCloud::WebUi.system_url(InsightsCloud::WebUi::ADVISOR, host.insights.uuid),
14
- :rel => 'external noopener noreferrer',
15
- :target => '_blank'
16
- )
17
- end
8
+ tag.td class: ['hidden-xs', 'ellipsis', 'text-center'] do
9
+ link_to(host_hits, "#{host_path(host)}#insights") if host_hits
18
10
  end
19
11
  end
20
12
  end
@@ -6,7 +6,10 @@ module RhCloudHost
6
6
  :inventory_upload_facts,
7
7
  -> { where(fact_name_id: ForemanInventoryUpload::Generators::Queries.fact_names.values) },
8
8
  class_name: 'FactValue',
9
- :foreign_key => :host_id
9
+ foreign_key: :host_id
10
10
  )
11
+
12
+ has_many :insights_hits, through: :insights, source: :hits
13
+ scoped_search :relation => :insights, :on => :hits_count, :only_explicit => true, :rename => :insights_recommendations_count
11
14
  end
12
15
  end
@@ -1,6 +1,10 @@
1
1
  class InsightsHit < ApplicationRecord
2
- has_one :host
2
+ include ::Authorizable
3
+ belongs_to :host
3
4
  # since the facet is one-to-one association with a host, we can connect
4
5
  # through host_id column on both this model and facet.
5
- has_one :insights_facet, foreign_key: 'host_id', primary_key: 'host_id'
6
+ belongs_to :insights_facet, foreign_key: 'host_id', primary_key: 'host_id', counter_cache: :hits_count
7
+ scoped_search on: :title, complete_value: true
8
+ scoped_search on: :total_risk, complete_value: :true
9
+ scoped_search relation: :host, on: :name, rename: :hostname, complete_value: true
6
10
  end
@@ -1,12 +1,16 @@
1
1
  class Setting::RhCloud < Setting
2
+ ::Setting::BLANK_ATTRS.concat %w{rh_cloud_token}
3
+
2
4
  def self.default_settings
3
5
  return unless ActiveRecord::Base.connection.table_exists?('settings')
4
6
  return unless super
5
7
  [
6
- set('allow_auto_inventory_upload', N_('Allow automatic upload of the host inventory to the Red Hat cloud'), false),
7
- set('allow_auto_insights_sync', N_('Allow recommendations synchronization from Red Hat cloud'), false),
8
- set('obfuscate_inventory_hostnames', N_('Obfuscate host names sent to Red Hat cloud'), false),
9
- set('rh_cloud_token', N_('Authentication token to Red Hat cloud services. Used to authenticate requests to cloud APIs'), 'DEFAULT', N_('Red Hat Cloud token'), nil, encrypted: true),
8
+ set('allow_auto_inventory_upload', N_('Allow automatic upload of the host inventory to the Red Hat cloud'), false, N_('Allow automatic inventory uploads')),
9
+ set('allow_auto_insights_sync', N_('Allow recommendations synchronization from Red Hat cloud'), false, N_('Allow recommendations synchronization')),
10
+ set('obfuscate_inventory_hostnames', N_('Obfuscate host names sent to Red Hat cloud'), false, N_('Obfuscate host names')),
11
+ set('obfuscate_inventory_ips', N_('Obfuscate ip addresses sent to Red Hat cloud'), false, N_('Obfuscate IPs')),
12
+ set('rh_cloud_token', N_('Authentication token to Red Hat cloud services. Used to authenticate requests to cloud APIs'), nil, N_('Red Hat Cloud token'), nil, encrypted: true),
13
+ set('exclude_installed_packages', N_('Exclude installed packages from Red Hat cloud inventory report'), false, N_("Don't upload installed packages")),
10
14
  ]
11
15
  end
12
16
 
@@ -2,7 +2,7 @@ Deface::Override.new(
2
2
  virtual_path: 'hosts/_list',
3
3
  name: 'insights_hits_header',
4
4
  insert_before: 'thead tr th.hidden-xs:first-of-type',
5
- text: '<th class="hidden-xs" width="10%"><%= _("Insights")%></th>'
5
+ text: '<th class="hidden-xs ellipsis" width="12%"><%= sort :insights_recommendations_count, :as => _("Recommendations")%></th>'
6
6
  )
7
7
 
8
8
  Deface::Override.new(
@@ -0,0 +1,2 @@
1
+ <!-- insert_top 'head' -->
2
+ <%= css_tags_for([:foreman_rh_cloud]).first %>
@@ -0,0 +1,28 @@
1
+ module ForemanRhCloud
2
+ module CloudAuth
3
+ extend ActiveSupport::Concern
4
+
5
+ def rh_credentials
6
+ @rh_credentials ||= query_refresh_token
7
+ end
8
+
9
+ def query_refresh_token
10
+ token_response = RestClient::Request.execute(
11
+ method: :post,
12
+ url: ForemanRhCloud.authentication_url,
13
+ verify_ssl: ForemanRhCloud.verify_ssl_method,
14
+ proxy: ForemanRhCloud.transformed_http_proxy_string(logger: logger),
15
+ payload: {
16
+ grant_type: 'refresh_token',
17
+ client_id: 'rhsm-api',
18
+ refresh_token: Setting[:rh_cloud_token],
19
+ }
20
+ )
21
+
22
+ JSON.parse(token_response)['access_token']
23
+ rescue RestClient::ExceptionWithResponse => e
24
+ Foreman::Logging.exception('Unable to authenticate using rh_cloud_token setting', e)
25
+ raise ::Foreman::WrappedException.new(e, N_('Unable to authenticate using rh_cloud_token setting'))
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,59 @@
1
+ require 'securerandom'
2
+
3
+ module ForemanRhCloud
4
+ class CloudConnector
5
+ CLOUD_CONNECTOR_USER = 'cloud_connector_user'.freeze
6
+ CLOUD_CONNECTOR_TOKEN_NAME = 'Cloud connector access token'.freeze
7
+ CLOUD_CONNECTOR_FEATURE = 'ansible_configure_cloud_connector'.freeze
8
+
9
+ def install
10
+ user = service_user
11
+ token_value = personal_access_token(user)
12
+
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
+ composer.job_invocation
20
+ end
21
+
22
+ def latest_job
23
+ feature_id = RemoteExecutionFeature.find_by_label(CLOUD_CONNECTOR_FEATURE).id
24
+ JobInvocation.where(:remote_execution_feature_id => feature_id).includes(:task).reorder('foreman_tasks_tasks.started_at DESC').first
25
+ end
26
+
27
+ def personal_access_token(user)
28
+ access_token = PersonalAccessToken.find_by_name(CLOUD_CONNECTOR_TOKEN_NAME)
29
+
30
+ access_token&.destroy! # destroy the old token if exists
31
+
32
+ personal_access_token = PersonalAccessToken.new(:name => CLOUD_CONNECTOR_TOKEN_NAME, :user => user)
33
+ token_value = personal_access_token.generate_token
34
+ personal_access_token.save!
35
+
36
+ token_value
37
+ end
38
+
39
+ def service_user
40
+ user = User.find_by_login(CLOUD_CONNECTOR_USER)
41
+
42
+ if user.nil?
43
+ user = User.create!(
44
+ :login => CLOUD_CONNECTOR_USER,
45
+ :password => SecureRandom.base64(255),
46
+ :description => "This is a service user used by cloud connector to talk to the Satellite API",
47
+ :auth_source => AuthSourceInternal.first,
48
+ :admin => true
49
+ )
50
+ end
51
+
52
+ user
53
+ end
54
+
55
+ def foreman_host
56
+ ::Host.friendly.find(::SmartProxy.default_capsule.name)
57
+ end
58
+ end
59
+ end
@@ -6,10 +6,4 @@
6
6
  <%= webpacked_plugins_css_for :'foreman_rh_cloud' %>
7
7
  <% end %>
8
8
 
9
- <div id="host_details_insights_react_container"></div>
10
- <%= mount_react_component(
11
- 'InsightsHostDetailsTab',
12
- '#host_details_insights_react_container',
13
- { hostID: host.id }.to_json,
14
- flatten_data: true
15
- ) %>
9
+ <%= react_component('InsightsHostDetailsTab', { hostID: host.id }) %>
@@ -2,15 +2,10 @@
2
2
  <%= webpacked_plugins_js_for :'foreman_rh_cloud' %>
3
3
  <% end %>
4
4
 
5
- <% content_for(:stylesheets) do %>
6
- <%= webpacked_plugins_css_for :'foreman_rh_cloud' %>
7
- <% end %>
8
-
9
5
  <% content_for(:content) do %>
10
6
  <%= notifications %>
11
7
  <div id="organization-id" data-id="<%= Organization.current.id if Organization.current %>" ></div>
12
8
  <div id="user-id" data-id="<%= User.current.id if User.current %>" ></div>
13
- <div id="ForemanRhCloudReactRoot"></div>
14
9
  <%= yield %>
15
10
  <% end %>
16
11
  <%= render file: "layouts/base" %>
@@ -0,0 +1,830 @@
1
+ PATH
2
+ remote: ../foreman_rh_cloud
3
+ specs:
4
+ foreman_rh_cloud (3.0.14)
5
+ katello
6
+ redhat_access
7
+
8
+ PATH
9
+ remote: ../katello
10
+ specs:
11
+ katello (3.18.0.rc1)
12
+ activerecord-import
13
+ anemone
14
+ angular-rails-templates (~> 1.1.0)
15
+ apipie-rails (>= 0.5.14)
16
+ deface (>= 1.0.2, < 2.0.0)
17
+ dynflow (>= 1.2.0)
18
+ foreman-tasks (>= 0.14.1)
19
+ foreman_remote_execution (>= 3.0)
20
+ fx (< 1.0)
21
+ gettext_i18n_rails
22
+ json
23
+ oauth
24
+ pg
25
+ pulp_2to3_migration_client (>= 0.3.0, < 0.6.0, != 0.4.0)
26
+ pulp_ansible_client (>= 0.2, < 0.5)
27
+ pulp_certguard_client (< 2.0)
28
+ pulp_container_client (>= 2.0.0, < 2.2.0)
29
+ pulp_deb_client (>= 2.6.0, < 2.8.0)
30
+ pulp_file_client (>= 1.2.0, < 1.4.0)
31
+ pulp_rpm_client (>= 3.6.2, < 3.8.0)
32
+ pulpcore_client (>= 3.6.0, < 3.8.0)
33
+ rabl
34
+ rails
35
+ rest-client
36
+ runcible (>= 2.13.0, < 3.0.0)
37
+ scoped_search (>= 4.1.9)
38
+ stomp
39
+
40
+ GEM
41
+ remote: https://rubygems.org/
42
+ specs:
43
+ actioncable (6.0.3.4)
44
+ actionpack (= 6.0.3.4)
45
+ nio4r (~> 2.0)
46
+ websocket-driver (>= 0.6.1)
47
+ actionmailbox (6.0.3.4)
48
+ actionpack (= 6.0.3.4)
49
+ activejob (= 6.0.3.4)
50
+ activerecord (= 6.0.3.4)
51
+ activestorage (= 6.0.3.4)
52
+ activesupport (= 6.0.3.4)
53
+ mail (>= 2.7.1)
54
+ actionmailer (6.0.3.4)
55
+ actionpack (= 6.0.3.4)
56
+ actionview (= 6.0.3.4)
57
+ activejob (= 6.0.3.4)
58
+ mail (~> 2.5, >= 2.5.4)
59
+ rails-dom-testing (~> 2.0)
60
+ actionpack (6.0.3.4)
61
+ actionview (= 6.0.3.4)
62
+ activesupport (= 6.0.3.4)
63
+ rack (~> 2.0, >= 2.0.8)
64
+ rack-test (>= 0.6.3)
65
+ rails-dom-testing (~> 2.0)
66
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
67
+ actiontext (6.0.3.4)
68
+ actionpack (= 6.0.3.4)
69
+ activerecord (= 6.0.3.4)
70
+ activestorage (= 6.0.3.4)
71
+ activesupport (= 6.0.3.4)
72
+ nokogiri (>= 1.8.5)
73
+ actionview (6.0.3.4)
74
+ activesupport (= 6.0.3.4)
75
+ builder (~> 3.1)
76
+ erubi (~> 1.4)
77
+ rails-dom-testing (~> 2.0)
78
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
79
+ activejob (6.0.3.4)
80
+ activesupport (= 6.0.3.4)
81
+ globalid (>= 0.3.6)
82
+ activemodel (6.0.3.4)
83
+ activesupport (= 6.0.3.4)
84
+ activerecord (6.0.3.4)
85
+ activemodel (= 6.0.3.4)
86
+ activesupport (= 6.0.3.4)
87
+ activerecord-import (1.0.7)
88
+ activerecord (>= 3.2)
89
+ activerecord-nulldb-adapter (0.5.1)
90
+ activerecord (>= 5.2.0)
91
+ activerecord-session_store (1.1.3)
92
+ actionpack (>= 4.0)
93
+ activerecord (>= 4.0)
94
+ multi_json (~> 1.11, >= 1.11.2)
95
+ rack (>= 1.5.2, < 3)
96
+ railties (>= 4.0)
97
+ activestorage (6.0.3.4)
98
+ actionpack (= 6.0.3.4)
99
+ activejob (= 6.0.3.4)
100
+ activerecord (= 6.0.3.4)
101
+ marcel (~> 0.3.1)
102
+ activesupport (6.0.3.4)
103
+ concurrent-ruby (~> 1.0, >= 1.0.2)
104
+ i18n (>= 0.7, < 2)
105
+ minitest (~> 5.1)
106
+ tzinfo (~> 1.1)
107
+ zeitwerk (~> 2.2, >= 2.2.2)
108
+ addressable (2.7.0)
109
+ public_suffix (>= 2.0.2, < 5.0)
110
+ algebrick (0.7.5)
111
+ amazing_print (1.2.2)
112
+ ancestry (3.2.1)
113
+ activerecord (>= 4.2.0)
114
+ anemone (0.7.2)
115
+ nokogiri (>= 1.3.0)
116
+ robotex (>= 1.0.0)
117
+ angular-rails-templates (1.1.0)
118
+ railties (>= 4.2, < 7)
119
+ sprockets (>= 3.0, < 5)
120
+ tilt
121
+ ansi (1.5.0)
122
+ apipie-dsl (2.3.0)
123
+ apipie-params (0.0.5)
124
+ apipie-rails (0.5.18)
125
+ rails (>= 4.1)
126
+ as_deprecation_tracker (1.5.0)
127
+ activesupport (>= 4.2)
128
+ railties (>= 4.2)
129
+ ast (2.4.1)
130
+ audited (4.9.0)
131
+ activerecord (>= 4.2, < 6.1)
132
+ autoprefixer-rails (10.0.3.0)
133
+ execjs
134
+ bcrypt (3.1.16)
135
+ benchmark-ips (2.8.3)
136
+ binding_of_caller (0.8.0)
137
+ debug_inspector (>= 0.0.1)
138
+ bootsnap (1.5.1)
139
+ msgpack (~> 1.0)
140
+ bootstrap-sass (3.4.1)
141
+ autoprefixer-rails (>= 5.2.1)
142
+ sassc (>= 2.0.0)
143
+ builder (3.2.4)
144
+ bullet (6.1.0)
145
+ activesupport (>= 3.0.0)
146
+ uniform_notifier (~> 1.11)
147
+ byebug (11.1.3)
148
+ capybara (3.32.0)
149
+ addressable
150
+ mini_mime (>= 0.1.3)
151
+ nokogiri (~> 1.8)
152
+ rack (>= 1.6.0)
153
+ rack-test (>= 0.6.3)
154
+ regexp_parser (~> 1.5)
155
+ xpath (~> 3.2)
156
+ childprocess (3.0.0)
157
+ ci_reporter (2.0.0)
158
+ builder (>= 2.1.2)
159
+ ci_reporter_minitest (1.0.0)
160
+ ci_reporter (~> 2.0)
161
+ minitest (~> 5.0)
162
+ coderay (1.1.3)
163
+ coffee-rails (5.0.0)
164
+ coffee-script (>= 2.2.0)
165
+ railties (>= 5.2.0)
166
+ coffee-script (2.4.1)
167
+ coffee-script-source
168
+ execjs
169
+ coffee-script-source (1.12.2)
170
+ concurrent-ruby (1.1.7)
171
+ concurrent-ruby-edge (0.6.0)
172
+ concurrent-ruby (~> 1.1.6)
173
+ connection_pool (2.2.3)
174
+ crack (0.4.4)
175
+ crass (1.0.6)
176
+ css_parser (1.7.1)
177
+ addressable
178
+ daemons (1.3.1)
179
+ database_cleaner (1.8.5)
180
+ deacon (1.0.0)
181
+ debug_inspector (0.0.3)
182
+ declarative (0.0.20)
183
+ declarative-option (0.1.0)
184
+ deep_cloneable (3.0.0)
185
+ activerecord (>= 3.1.0, < 7)
186
+ deface (1.5.3)
187
+ nokogiri (>= 1.6)
188
+ polyglot
189
+ rails (>= 4.1)
190
+ rainbow (>= 2.1.0)
191
+ docile (1.3.2)
192
+ domain_name (0.5.20190701)
193
+ unf (>= 0.0.5, < 1.0.0)
194
+ dynflow (1.4.7)
195
+ algebrick (~> 0.7.0)
196
+ apipie-params
197
+ concurrent-ruby (~> 1.1.3)
198
+ concurrent-ruby-edge (~> 0.6.0)
199
+ multi_json
200
+ sequel (>= 4.0.0)
201
+ erubi (1.10.0)
202
+ excon (0.78.0)
203
+ execjs (2.7.0)
204
+ facter (4.0.46)
205
+ hocon (~> 1.3)
206
+ thor (>= 1.0.1, < 2.0)
207
+ factory_bot (5.2.0)
208
+ activesupport (>= 4.2.0)
209
+ factory_bot_rails (5.2.0)
210
+ factory_bot (~> 5.2.0)
211
+ railties (>= 4.2.0)
212
+ faraday (1.1.0)
213
+ multipart-post (>= 1.2, < 3)
214
+ ruby2_keywords
215
+ fast_gettext (1.8.0)
216
+ ffi (1.13.1)
217
+ fog-aws (3.7.0)
218
+ fog-core (~> 2.1)
219
+ fog-json (~> 1.1)
220
+ fog-xml (~> 0.1)
221
+ ipaddress (~> 0.8)
222
+ fog-core (2.1.0)
223
+ builder
224
+ excon (~> 0.58)
225
+ formatador (~> 0.2)
226
+ mime-types
227
+ fog-google (1.11.0)
228
+ fog-core (<= 2.1.0)
229
+ fog-json (~> 1.2)
230
+ fog-xml (~> 0.1.0)
231
+ google-api-client (>= 0.32, < 0.34)
232
+ google-cloud-env (~> 1.2)
233
+ fog-json (1.2.0)
234
+ fog-core
235
+ multi_json (~> 1.10)
236
+ fog-libvirt (0.7.0)
237
+ fog-core (>= 1.27.4)
238
+ fog-json
239
+ fog-xml (~> 0.1.1)
240
+ json
241
+ ruby-libvirt (>= 0.7.0)
242
+ fog-openstack (1.0.11)
243
+ fog-core (~> 2.1)
244
+ fog-json (>= 1.0)
245
+ ipaddress (>= 0.8)
246
+ fog-ovirt (1.2.5)
247
+ fog-core
248
+ fog-json
249
+ fog-xml
250
+ ovirt-engine-sdk (>= 4.1.3)
251
+ rbovirt (~> 0.1.5)
252
+ fog-vsphere (3.4.0)
253
+ fog-core
254
+ rbvmomi (>= 1.9, < 3)
255
+ fog-xml (0.1.3)
256
+ fog-core
257
+ nokogiri (>= 1.5.11, < 2.0.0)
258
+ font-awesome-sass (4.6.2)
259
+ sass (>= 3.2)
260
+ foreman (0.87.2)
261
+ foreman-tasks (3.0.2)
262
+ dynflow (>= 1.2.3)
263
+ foreman-tasks-core
264
+ get_process_mem
265
+ parse-cron (~> 0.1.4)
266
+ sinatra
267
+ foreman-tasks-core (0.3.4)
268
+ dynflow (>= 1.2.0)
269
+ foreman_remote_execution (4.2.1)
270
+ deface
271
+ dynflow (>= 1.0.2, < 2.0.0)
272
+ foreman-tasks (>= 0.15.1)
273
+ foreman_remote_execution_core
274
+ foreman_remote_execution_core (1.4.0)
275
+ foreman-tasks-core (>= 0.3.1)
276
+ net-ssh
277
+ formatador (0.2.5)
278
+ friendly_id (5.3.0)
279
+ activerecord (>= 4.0.0)
280
+ fx (0.6.0)
281
+ activerecord (>= 4.0.0)
282
+ railties (>= 4.0.0)
283
+ get_process_mem (0.2.7)
284
+ ffi (~> 1.0)
285
+ gettext (3.3.6)
286
+ locale (>= 2.0.5)
287
+ text (>= 1.3.0)
288
+ gettext_i18n_rails (1.8.1)
289
+ fast_gettext (>= 0.9.0)
290
+ gettext_i18n_rails_js (1.3.0)
291
+ gettext (>= 3.0.2)
292
+ gettext_i18n_rails (>= 0.7.1)
293
+ po_to_json (>= 1.0.0)
294
+ rails (>= 3.2.0)
295
+ gitlab-sidekiq-fetcher (0.6.1)
296
+ sidekiq (>= 5, < 6.1)
297
+ globalid (0.4.2)
298
+ activesupport (>= 4.2.0)
299
+ google-api-client (0.33.2)
300
+ addressable (~> 2.5, >= 2.5.1)
301
+ googleauth (~> 0.9)
302
+ httpclient (>= 2.8.1, < 3.0)
303
+ mini_mime (~> 1.0)
304
+ representable (~> 3.0)
305
+ retriable (>= 2.0, < 4.0)
306
+ signet (~> 0.12)
307
+ google-cloud-env (1.4.0)
308
+ faraday (>= 0.17.3, < 2.0)
309
+ googleauth (0.14.0)
310
+ faraday (>= 0.17.3, < 2.0)
311
+ jwt (>= 1.4, < 3.0)
312
+ memoist (~> 0.16)
313
+ multi_json (~> 1.11)
314
+ os (>= 0.9, < 2.0)
315
+ signet (~> 0.14)
316
+ graphiql-rails (1.7.0)
317
+ railties
318
+ sprockets-rails
319
+ graphql (1.8.18)
320
+ graphql-batch (0.4.3)
321
+ graphql (>= 1.3, < 2)
322
+ promise.rb (~> 0.7.2)
323
+ hashdiff (1.0.1)
324
+ hocon (1.3.1)
325
+ http-accept (1.7.0)
326
+ http-cookie (1.0.3)
327
+ domain_name (~> 0.5)
328
+ httpclient (2.8.3)
329
+ i18n (1.8.5)
330
+ concurrent-ruby (~> 1.0)
331
+ immigrant (0.3.6)
332
+ activerecord (>= 3.0)
333
+ ipaddress (0.8.3)
334
+ jaro_winkler (1.5.4)
335
+ journald-logger (3.0.1)
336
+ journald-native (~> 1.0)
337
+ journald-native (1.0.12)
338
+ jquery-ui-rails (6.0.1)
339
+ railties (>= 3.2.16)
340
+ json (2.3.1)
341
+ jwt (2.2.2)
342
+ launchy (2.5.0)
343
+ addressable (~> 2.7)
344
+ ldap_fluff (0.4.7)
345
+ activesupport
346
+ net-ldap (>= 0.3.1)
347
+ little-plugger (1.1.4)
348
+ locale (2.1.3)
349
+ logging (2.3.0)
350
+ little-plugger (~> 1.1)
351
+ multi_json (~> 1.14)
352
+ logging-journald (2.1.0)
353
+ journald-logger (~> 3.0)
354
+ logging
355
+ loofah (2.8.0)
356
+ crass (~> 1.0.2)
357
+ nokogiri (>= 1.5.9)
358
+ mail (2.7.1)
359
+ mini_mime (>= 0.1.1)
360
+ marcel (0.3.3)
361
+ mimemagic (~> 0.3.2)
362
+ maruku (0.7.3)
363
+ memoist (0.16.2)
364
+ method_source (1.0.0)
365
+ mime-types (3.3.1)
366
+ mime-types-data (~> 3.2015)
367
+ mime-types-data (3.2020.1104)
368
+ mimemagic (0.3.5)
369
+ mini_mime (1.0.2)
370
+ mini_portile2 (2.4.0)
371
+ minitest (5.10.3)
372
+ minitest-reporters (1.4.2)
373
+ ansi
374
+ builder
375
+ minitest (>= 5.0)
376
+ ruby-progressbar
377
+ minitest-retry (0.2.1)
378
+ minitest (>= 5.0)
379
+ minitest-spec-rails (6.0.3)
380
+ minitest (>= 5.0)
381
+ railties (>= 4.1)
382
+ minitest-tags (0.0.5)
383
+ mocha (1.11.2)
384
+ msgpack (1.3.3)
385
+ multi_json (1.15.0)
386
+ multipart-post (2.1.1)
387
+ mustermann (1.1.1)
388
+ ruby2_keywords (~> 0.0.1)
389
+ net-ldap (0.17.0)
390
+ net-ping (2.0.8)
391
+ net-scp (3.0.0)
392
+ net-ssh (>= 2.6.5, < 7.0.0)
393
+ net-ssh (4.2.0)
394
+ netrc (0.11.0)
395
+ nio4r (2.5.4)
396
+ nokogiri (1.10.10)
397
+ mini_portile2 (~> 2.4.0)
398
+ oauth (0.5.4)
399
+ optimist (3.0.1)
400
+ os (1.1.1)
401
+ ovirt-engine-sdk (4.4.0)
402
+ json (>= 1, < 3)
403
+ paint (2.2.0)
404
+ parallel (1.20.1)
405
+ parallel_tests (3.4.0)
406
+ parallel
407
+ parse-cron (0.1.4)
408
+ parser (2.7.2.0)
409
+ ast (~> 2.4.1)
410
+ patternfly-sass (3.59.5)
411
+ bootstrap-sass (~> 3.4.0)
412
+ font-awesome-sass (~> 4.6.2)
413
+ sassc (> 2.0.1, < 3.0)
414
+ pg (1.2.3)
415
+ po_to_json (1.0.1)
416
+ json (>= 1.6.0)
417
+ polyglot (0.3.5)
418
+ prometheus-client (1.0.0)
419
+ promise.rb (0.7.4)
420
+ pry (0.13.1)
421
+ coderay (~> 1.1)
422
+ method_source (~> 1.0)
423
+ pry-byebug (3.9.0)
424
+ byebug (~> 11.0)
425
+ pry (~> 0.13.0)
426
+ pry-doc (1.1.0)
427
+ pry (~> 0.11)
428
+ yard (~> 0.9.11)
429
+ pry-rails (0.3.9)
430
+ pry (>= 0.10.4)
431
+ pry-remote (0.1.8)
432
+ pry (~> 0.9)
433
+ slop (~> 3.0)
434
+ pry-stack_explorer (0.5.1)
435
+ binding_of_caller (~> 0.7)
436
+ pry (~> 0.13)
437
+ public_suffix (4.0.6)
438
+ pulp_2to3_migration_client (0.5.1)
439
+ faraday (>= 0.14.0)
440
+ json (~> 2.1, >= 2.1.0)
441
+ pulp_ansible_client (0.4.3)
442
+ faraday (>= 0.14.0)
443
+ json (~> 2.1, >= 2.1.0)
444
+ pulp_certguard_client (1.0.3)
445
+ faraday (>= 0.14.0)
446
+ json (~> 2.1, >= 2.1.0)
447
+ pulp_container_client (2.1.0)
448
+ faraday (>= 0.14.0)
449
+ json (~> 2.1, >= 2.1.0)
450
+ pulp_deb_client (2.7.0)
451
+ faraday (>= 0.14.0)
452
+ json (~> 2.1, >= 2.1.0)
453
+ pulp_file_client (1.3.0)
454
+ faraday (>= 0.14.0)
455
+ json (~> 2.1, >= 2.1.0)
456
+ pulp_rpm_client (3.7.0)
457
+ faraday (>= 0.14.0)
458
+ json (~> 2.1, >= 2.1.0)
459
+ pulpcore_client (3.7.3)
460
+ faraday (>= 0.14.0)
461
+ json (~> 2.1, >= 2.1.0)
462
+ puma (4.3.7)
463
+ nio4r (~> 2.0)
464
+ puma-plugin-systemd (0.1.5)
465
+ json
466
+ puma (>= 3.6, < 5)
467
+ rabl (0.14.3)
468
+ activesupport (>= 2.3.14)
469
+ rack (2.2.3)
470
+ rack-cors (1.0.6)
471
+ rack (>= 1.6.0)
472
+ rack-jsonp (1.3.1)
473
+ rack
474
+ rack-openid (1.4.2)
475
+ rack (>= 1.1.0)
476
+ ruby-openid (>= 2.1.8)
477
+ rack-protection (2.1.0)
478
+ rack
479
+ rack-test (1.1.0)
480
+ rack (>= 1.0, < 3)
481
+ rails (6.0.3.4)
482
+ actioncable (= 6.0.3.4)
483
+ actionmailbox (= 6.0.3.4)
484
+ actionmailer (= 6.0.3.4)
485
+ actionpack (= 6.0.3.4)
486
+ actiontext (= 6.0.3.4)
487
+ actionview (= 6.0.3.4)
488
+ activejob (= 6.0.3.4)
489
+ activemodel (= 6.0.3.4)
490
+ activerecord (= 6.0.3.4)
491
+ activestorage (= 6.0.3.4)
492
+ activesupport (= 6.0.3.4)
493
+ bundler (>= 1.3.0)
494
+ railties (= 6.0.3.4)
495
+ sprockets-rails (>= 2.0.0)
496
+ rails-controller-testing (1.0.5)
497
+ actionpack (>= 5.0.1.rc1)
498
+ actionview (>= 5.0.1.rc1)
499
+ activesupport (>= 5.0.1.rc1)
500
+ rails-dom-testing (2.0.3)
501
+ activesupport (>= 4.2.0)
502
+ nokogiri (>= 1.6)
503
+ rails-html-sanitizer (1.3.0)
504
+ loofah (~> 2.3)
505
+ rails-i18n (6.0.0)
506
+ i18n (>= 0.7, < 2)
507
+ railties (>= 6.0.0, < 7)
508
+ railties (6.0.3.4)
509
+ actionpack (= 6.0.3.4)
510
+ activesupport (= 6.0.3.4)
511
+ method_source
512
+ rake (>= 0.8.7)
513
+ thor (>= 0.20.3, < 2.0)
514
+ rainbow (3.0.0)
515
+ rake (13.0.1)
516
+ rb-fsevent (0.10.4)
517
+ rb-inotify (0.10.1)
518
+ ffi (~> 1.0)
519
+ rbovirt (0.1.7)
520
+ nokogiri
521
+ rest-client (> 1.7.0)
522
+ rbvmomi (2.4.1)
523
+ builder (~> 3.0)
524
+ json (>= 1.8)
525
+ nokogiri (~> 1.5)
526
+ optimist (~> 3.0)
527
+ rdoc (6.2.1)
528
+ record_tag_helper (1.0.1)
529
+ actionview (>= 5)
530
+ redhat_access (2.2.18)
531
+ angular-rails-templates (>= 0.0.4)
532
+ foreman-tasks
533
+ katello
534
+ redhat_access_lib (>= 1.1.5)
535
+ redhat_access_lib (1.1.5)
536
+ rest-client (>= 1.6.3)
537
+ redis (4.1.4)
538
+ regexp_parser (1.8.2)
539
+ representable (3.0.4)
540
+ declarative (< 0.1.0)
541
+ declarative-option (< 0.2.0)
542
+ uber (< 0.2.0)
543
+ responders (3.0.1)
544
+ actionpack (>= 5.0)
545
+ railties (>= 5.0)
546
+ rest-client (2.1.0)
547
+ http-accept (>= 1.7.0, < 2.0)
548
+ http-cookie (>= 1.0.2, < 2.0)
549
+ mime-types (>= 1.16, < 4.0)
550
+ netrc (~> 0.8)
551
+ retriable (3.1.2)
552
+ rexml (3.2.4)
553
+ rfauxfactory (0.1.5)
554
+ roadie (4.0.0)
555
+ css_parser (~> 1.4)
556
+ nokogiri (~> 1.8)
557
+ roadie-rails (2.1.1)
558
+ railties (>= 5.1, < 6.1)
559
+ roadie (>= 3.1, < 5.0)
560
+ robotex (1.0.0)
561
+ robottelo_reporter (0.1.1)
562
+ builder (>= 2.1.2)
563
+ rubocop (0.80.1)
564
+ jaro_winkler (~> 1.5.1)
565
+ parallel (~> 1.10)
566
+ parser (>= 2.7.0.1)
567
+ rainbow (>= 2.2.2, < 4.0)
568
+ rexml
569
+ ruby-progressbar (~> 1.7)
570
+ unicode-display_width (>= 1.4.0, < 1.7)
571
+ rubocop-checkstyle_formatter (0.4.0)
572
+ rubocop (>= 0.35.1)
573
+ rubocop-minitest (0.7.0)
574
+ rubocop (>= 0.74)
575
+ rubocop-performance (1.5.2)
576
+ rubocop (>= 0.71.0)
577
+ rubocop-rails (2.4.2)
578
+ rack (>= 1.1)
579
+ rubocop (>= 0.72.0)
580
+ ruby-libvirt (0.7.1)
581
+ ruby-openid (2.9.2)
582
+ ruby-progressbar (1.10.1)
583
+ ruby2_keywords (0.0.2)
584
+ ruby2ruby (2.4.4)
585
+ ruby_parser (~> 3.1)
586
+ sexp_processor (~> 4.6)
587
+ ruby_parser (3.15.0)
588
+ sexp_processor (~> 4.9)
589
+ rubyzip (2.3.0)
590
+ runcible (2.13.1)
591
+ activesupport (>= 3.0.10)
592
+ i18n (>= 0.5.0)
593
+ json
594
+ oauth
595
+ rest-client (>= 1.6.1, < 3.0.0)
596
+ safemode (1.3.6)
597
+ ruby2ruby (>= 2.4.0)
598
+ ruby_parser (>= 3.10.1)
599
+ sexp_processor (>= 4.10.0)
600
+ sass (3.7.4)
601
+ sass-listen (~> 4.0.0)
602
+ sass-listen (4.0.0)
603
+ rb-fsevent (~> 0.9, >= 0.9.4)
604
+ rb-inotify (~> 0.9, >= 0.9.7)
605
+ sass-rails (6.0.0)
606
+ sassc-rails (~> 2.1, >= 2.1.1)
607
+ sassc (2.4.0)
608
+ ffi (~> 1.9)
609
+ sassc-rails (2.1.2)
610
+ railties (>= 4.0.0)
611
+ sassc (>= 2.0)
612
+ sprockets (> 3.0)
613
+ sprockets-rails
614
+ tilt
615
+ scoped_search (4.1.9)
616
+ activerecord (>= 4.2.0)
617
+ sd_notify (0.1.0)
618
+ secure_headers (6.3.1)
619
+ selenium-webdriver (3.142.7)
620
+ childprocess (>= 0.5, < 4.0)
621
+ rubyzip (>= 1.2.2)
622
+ sequel (5.39.0)
623
+ sexp_processor (4.15.1)
624
+ shoulda-context (1.2.2)
625
+ shoulda-matchers (4.3.0)
626
+ activesupport (>= 4.2.0)
627
+ show_me_the_cookies (5.0.1)
628
+ capybara (>= 2, < 4)
629
+ sidekiq (5.2.9)
630
+ connection_pool (~> 2.2, >= 2.2.2)
631
+ rack (~> 2.0)
632
+ rack-protection (>= 1.5.0)
633
+ redis (>= 3.3.5, < 4.2)
634
+ signet (0.14.0)
635
+ addressable (~> 2.3)
636
+ faraday (>= 0.17.3, < 2.0)
637
+ jwt (>= 1.5, < 3.0)
638
+ multi_json (~> 1.10)
639
+ simplecov (0.20.0)
640
+ docile (~> 1.1)
641
+ simplecov-html (~> 0.11)
642
+ simplecov_json_formatter (~> 0.1)
643
+ simplecov-html (0.12.3)
644
+ simplecov-rcov (0.2.3)
645
+ simplecov (>= 0.4.1)
646
+ simplecov_json_formatter (0.1.2)
647
+ sinatra (2.1.0)
648
+ mustermann (~> 1.0)
649
+ rack (~> 2.2)
650
+ rack-protection (= 2.1.0)
651
+ tilt (~> 2.0)
652
+ single_test (0.6.0)
653
+ rake
654
+ slop (3.6.0)
655
+ spring (2.1.1)
656
+ sprockets (4.0.2)
657
+ concurrent-ruby (~> 1.0)
658
+ rack (> 1, < 3)
659
+ sprockets-rails (3.2.2)
660
+ actionpack (>= 4.0)
661
+ activesupport (>= 4.0)
662
+ sprockets (>= 3.0.0)
663
+ sshkey (1.9.0)
664
+ statsd-instrument (2.9.2)
665
+ stomp (1.4.10)
666
+ text (1.3.1)
667
+ thor (1.0.1)
668
+ thread_safe (0.3.6)
669
+ tilt (2.0.10)
670
+ tzinfo (1.2.8)
671
+ thread_safe (~> 0.1)
672
+ uber (0.1.0)
673
+ uglifier (4.2.0)
674
+ execjs (>= 0.3.0, < 3)
675
+ unf (0.1.4)
676
+ unf_ext
677
+ unf_ext (0.0.7.7)
678
+ unicode-display_width (1.6.1)
679
+ uniform_notifier (1.13.0)
680
+ validates_lengths_from_database (0.8.0)
681
+ activerecord (>= 4)
682
+ vcr (3.0.3)
683
+ webmock (3.10.0)
684
+ addressable (>= 2.3.6)
685
+ crack (>= 0.3.2)
686
+ hashdiff (>= 0.4.0, < 2.0.0)
687
+ webpack-rails (0.9.11)
688
+ railties (>= 3.2.0)
689
+ websocket-driver (0.7.3)
690
+ websocket-extensions (>= 0.1.0)
691
+ websocket-extensions (0.1.5)
692
+ will_paginate (3.3.0)
693
+ wirb (2.2.1)
694
+ paint (>= 0.9, < 3.0)
695
+ xpath (3.2.0)
696
+ nokogiri (~> 1.8)
697
+ yard (0.9.25)
698
+ zeitwerk (2.4.2)
699
+
700
+ PLATFORMS
701
+ ruby
702
+
703
+ DEPENDENCIES
704
+ activerecord-nulldb-adapter
705
+ activerecord-session_store (>= 1.1.0, < 2)
706
+ amazing_print (~> 1.1)
707
+ ancestry (>= 3.0.7, < 4, != 3.2.0)
708
+ apipie-dsl (>= 2.2.6)
709
+ apipie-rails (>= 0.5.17, < 0.6.0)
710
+ as_deprecation_tracker (~> 1.4)
711
+ audited (>= 4.9.0, < 5)
712
+ bcrypt (~> 3.1)
713
+ benchmark-ips (>= 2.8.2)
714
+ bootsnap
715
+ bullet (>= 6.1.0)
716
+ capybara (~> 3.0, < 3.32.1)
717
+ ci_reporter_minitest
718
+ coffee-rails (~> 5.0.0)
719
+ daemons
720
+ database_cleaner (~> 1.3)
721
+ deacon (~> 1.0)
722
+ deep_cloneable (>= 3, < 4)
723
+ dynflow (>= 1.4.4, < 2.0.0)
724
+ execjs (>= 1.4.0, < 3.0)
725
+ facter
726
+ factory_bot_rails (~> 5.0)
727
+ fast_gettext (~> 1.4)
728
+ fog-aws (>= 3.6.2, < 4)
729
+ fog-core (= 2.1.0)
730
+ fog-google (~> 1.11.0)
731
+ fog-libvirt (>= 0.7.0)
732
+ fog-openstack (>= 1.0.8, < 2.0.0)
733
+ fog-ovirt (~> 1.2.5)
734
+ fog-vsphere (>= 3.3.1, < 4.0)
735
+ foreman
736
+ foreman_rh_cloud!
737
+ friendly_id (>= 5.3.0, < 5.4)
738
+ get_process_mem
739
+ gettext (>= 3.2.1, < 4.0.0)
740
+ gettext_i18n_rails (~> 1.8)
741
+ gettext_i18n_rails_js (~> 1.0)
742
+ gitlab-sidekiq-fetcher
743
+ graphiql-rails (~> 1.7)
744
+ graphql (~> 1.8.0)
745
+ graphql-batch
746
+ i18n (~> 1.1)
747
+ immigrant (~> 0.1)
748
+ jquery-ui-rails (~> 6.0)
749
+ jwt (~> 2.2.1)
750
+ katello!
751
+ launchy (~> 2.4)
752
+ ldap_fluff (>= 0.4.7, < 1.0)
753
+ logging (>= 1.8.0, < 3.0.0)
754
+ logging-journald (~> 2.0)
755
+ mail (~> 2.7)
756
+ maruku (~> 0.7)
757
+ minitest (~> 5.1, < 5.11)
758
+ minitest-reporters
759
+ minitest-retry (~> 0.0)
760
+ minitest-spec-rails (~> 6.0)
761
+ minitest-tags
762
+ mocha (~> 1.11)
763
+ net-ldap (>= 0.16.0)
764
+ net-ping
765
+ net-scp
766
+ net-ssh (= 4.2.0)
767
+ oauth (>= 0.5.4, < 1)
768
+ parallel_tests
769
+ patternfly-sass (~> 3.59.4)
770
+ pg (>= 0.18, < 2.0)
771
+ prometheus-client (~> 1.0)
772
+ pry
773
+ pry-byebug
774
+ pry-doc
775
+ pry-rails
776
+ pry-remote
777
+ pry-stack_explorer
778
+ puma (< 5.0)
779
+ puma-plugin-systemd
780
+ rabl (~> 0.14.2)
781
+ rack-cors (~> 1.0.2)
782
+ rack-jsonp
783
+ rack-openid (~> 1.3)
784
+ rails (~> 6.0.3.1)
785
+ rails-controller-testing (~> 1.0)
786
+ rails-i18n (~> 6.0)
787
+ rainbow (>= 2.2.1)
788
+ rbvmomi (~> 2.0)
789
+ rdoc
790
+ record_tag_helper (~> 1.0)
791
+ redis (~> 4.0)
792
+ responders (~> 3.0)
793
+ rest-client (>= 2.0.0, < 3)
794
+ rfauxfactory (~> 0.1, >= 0.1.5)
795
+ roadie-rails (~> 2.0)
796
+ robottelo_reporter (~> 0.1)
797
+ rubocop (~> 0.80.0)
798
+ rubocop-checkstyle_formatter (~> 0.2)
799
+ rubocop-minitest (~> 0.7.0)
800
+ rubocop-performance (~> 1.5.2)
801
+ rubocop-rails (~> 2.4.2)
802
+ ruby-libvirt (~> 0.5)
803
+ safemode (>= 1.3.5, < 2)
804
+ sass-rails (~> 6.0)
805
+ scoped_search (>= 4.1.8, < 5)
806
+ sd_notify (~> 0.1)
807
+ secure_headers (~> 6.3)
808
+ selenium-webdriver
809
+ shoulda-context (~> 1.2)
810
+ shoulda-matchers (>= 4.0, < 4.4)
811
+ show_me_the_cookies (~> 5.0)
812
+ sidekiq (~> 5.0)
813
+ simplecov
814
+ simplecov-rcov
815
+ single_test (~> 0.6)
816
+ spring (>= 1.0, < 3)
817
+ sprockets (~> 4.0)
818
+ sprockets-rails (~> 3.0)
819
+ sshkey (~> 1.9)
820
+ statsd-instrument (< 3)
821
+ uglifier (>= 1.0.3)
822
+ validates_lengths_from_database (~> 0.5)
823
+ vcr (< 4.0.0)
824
+ webmock
825
+ webpack-rails (~> 0.9.8)
826
+ will_paginate (>= 3.1.7, < 4)
827
+ wirb (>= 1.0, < 3.0)
828
+
829
+ BUNDLED WITH
830
+ 1.17.3