katello 4.2.2 → 4.3.0.rc1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of katello might be problematic. Click here for more details.

Files changed (495) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/katello/common/katello.common.js +0 -67
  3. data/app/assets/javascripts/katello/common/katello.js +0 -27
  4. data/app/assets/javascripts/katello/common/vendor.js +0 -1
  5. data/app/assets/stylesheets/katello/katello.scss +0 -1
  6. data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +10 -2
  7. data/app/controllers/katello/api/v2/api_controller.rb +35 -9
  8. data/app/controllers/katello/api/v2/capsule_content_controller.rb +16 -2
  9. data/app/controllers/katello/api/v2/content_view_components_controller.rb +22 -1
  10. data/app/controllers/katello/api/v2/content_view_filters_controller.rb +65 -1
  11. data/app/controllers/katello/api/v2/content_view_versions_controller.rb +5 -1
  12. data/app/controllers/katello/api/v2/content_views_controller.rb +13 -6
  13. data/app/controllers/katello/api/v2/debs_controller.rb +74 -1
  14. data/app/controllers/katello/api/v2/errata_controller.rb +13 -10
  15. data/app/controllers/katello/api/v2/file_units_controller.rb +1 -0
  16. data/app/controllers/katello/api/v2/generic_content_units_controller.rb +1 -1
  17. data/app/controllers/katello/api/v2/host_errata_controller.rb +46 -5
  18. data/app/controllers/katello/api/v2/host_tracer_controller.rb +2 -1
  19. data/app/controllers/katello/api/v2/module_streams_controller.rb +4 -0
  20. data/app/controllers/katello/api/v2/organizations_controller.rb +22 -7
  21. data/app/controllers/katello/api/v2/products_bulk_actions_controller.rb +1 -1
  22. data/app/controllers/katello/api/v2/repositories_controller.rb +36 -19
  23. data/app/controllers/katello/api/v2/subscriptions_controller.rb +0 -8
  24. data/app/controllers/katello/api/v2/upstream_subscriptions_controller.rb +5 -1
  25. data/app/controllers/katello/concerns/api/v2/bulk_extensions.rb +40 -0
  26. data/app/controllers/katello/concerns/api/v2/host_errata_extensions.rb +4 -31
  27. data/app/controllers/katello/concerns/api/v2/registration_controller_extensions.rb +1 -1
  28. data/app/controllers/katello/concerns/api/v2/repository_content_controller.rb +1 -1
  29. data/app/helpers/katello/concerns/smart_proxy_helper_extensions.rb +2 -6
  30. data/app/helpers/katello/katello_url_helper.rb +1 -1
  31. data/app/lib/actions/candlepin/abstract_async_task.rb +6 -3
  32. data/app/lib/actions/candlepin/async_hypervisors.rb +12 -8
  33. data/app/lib/actions/katello/applicability/hosts/bulk_generate.rb +10 -1
  34. data/app/lib/actions/katello/capsule_content/refresh_repos.rb +1 -1
  35. data/app/lib/actions/katello/capsule_content/sync_capsule.rb +2 -2
  36. data/app/lib/actions/katello/cdn_configuration/update.rb +38 -0
  37. data/app/lib/actions/katello/content_view/remove.rb +18 -7
  38. data/app/lib/actions/katello/content_view_version/destroy.rb +2 -2
  39. data/app/lib/actions/katello/content_view_version/republish_repositories.rb +1 -1
  40. data/app/lib/actions/katello/repository/clone_contents.rb +1 -2
  41. data/app/lib/actions/katello/repository/destroy.rb +21 -5
  42. data/app/lib/actions/katello/repository/fetch_pxe_files.rb +1 -1
  43. data/app/lib/actions/katello/repository/index_content.rb +19 -6
  44. data/app/lib/actions/katello/repository/multi_clone_contents.rb +1 -1
  45. data/app/lib/actions/katello/repository/sync.rb +3 -5
  46. data/app/lib/actions/katello/repository_set/scan_cdn.rb +0 -4
  47. data/app/lib/actions/middleware/record_smart_proxy_sync_history.rb +1 -1
  48. data/app/lib/actions/pulp/orphan_cleanup/remove_unneeded_repos.rb +1 -1
  49. data/app/lib/actions/pulp/repository/clear.rb +1 -1
  50. data/app/lib/actions/pulp3/abstract_async_task.rb +10 -1
  51. data/app/lib/actions/pulp3/capsule_content/generate_metadata.rb +4 -5
  52. data/app/lib/actions/pulp3/content_view_version/create_export_history.rb +1 -1
  53. data/app/lib/actions/pulp3/orchestration/repository/import_upload.rb +25 -42
  54. data/app/lib/actions/pulp3/orchestration/repository/upload_content.rb +3 -3
  55. data/app/lib/actions/pulp3/repository/commit_upload.rb +1 -1
  56. data/app/lib/actions/pulp3/repository/import_upload.rb +8 -4
  57. data/app/lib/actions/pulp3/repository/multi_copy_content.rb +1 -1
  58. data/app/lib/actions/pulp3/repository/multi_copy_units.rb +1 -1
  59. data/app/lib/actions/pulp3/repository/presenters/abstract_sync_presenter.rb +18 -0
  60. data/app/lib/actions/pulp3/repository/presenters/content_unit_presenter.rb +7 -2
  61. data/app/lib/actions/pulp3/repository/presenters/repair_presenter.rb +6 -1
  62. data/app/lib/actions/pulp3/repository/save_artifact.rb +14 -4
  63. data/app/lib/katello/errors.rb +2 -0
  64. data/app/lib/katello/resources/candlepin/consumer.rb +0 -20
  65. data/app/lib/katello/resources/candlepin/proxy.rb +8 -2
  66. data/app/lib/katello/resources/candlepin/upstream_consumer.rb +2 -0
  67. data/app/lib/katello/resources/cdn/katello_cdn.rb +68 -0
  68. data/app/lib/katello/resources/cdn.rb +61 -29
  69. data/app/lib/katello/resources/registry.rb +1 -1
  70. data/app/lib/katello/util/cdn_var_substitutor.rb +15 -9
  71. data/app/lib/katello/util/package.rb +22 -0
  72. data/app/lib/katello/util/path_with_substitutions.rb +12 -14
  73. data/app/models/katello/activation_key.rb +10 -0
  74. data/app/models/katello/ansible_collection.rb +1 -1
  75. data/app/models/katello/authorization/repository.rb +4 -4
  76. data/app/models/katello/candlepin/repository_mapper.rb +5 -1
  77. data/app/models/katello/cdn_configuration.rb +32 -0
  78. data/app/models/katello/concerns/content_facet_host_extensions.rb +40 -0
  79. data/app/models/katello/concerns/host_managed_extensions.rb +29 -3
  80. data/app/models/katello/concerns/hostgroup_extensions.rb +1 -1
  81. data/app/models/katello/concerns/organization_extensions.rb +3 -1
  82. data/app/models/katello/concerns/pulp_database_unit.rb +16 -6
  83. data/app/models/katello/concerns/remote_execution_provider_extensions.rb +9 -0
  84. data/app/models/katello/concerns/setting_extensions.rb +1 -1
  85. data/app/models/katello/concerns/smart_proxy_extensions.rb +9 -8
  86. data/app/models/katello/content_credential.rb +4 -0
  87. data/app/models/katello/content_facet_applicable_deb.rb +7 -0
  88. data/app/models/katello/content_view.rb +24 -1
  89. data/app/models/katello/content_view_component.rb +4 -0
  90. data/app/models/katello/content_view_erratum_filter.rb +2 -0
  91. data/app/models/katello/content_view_filter.rb +1 -1
  92. data/app/models/katello/content_view_package_filter_rule.rb +2 -1
  93. data/app/models/katello/content_view_version.rb +30 -1
  94. data/app/models/katello/deb.rb +71 -0
  95. data/app/models/katello/erratum.rb +13 -1
  96. data/app/models/katello/generic_content_unit.rb +3 -1
  97. data/app/models/katello/glue/pulp/repos.rb +2 -2
  98. data/app/models/katello/host/content_facet.rb +23 -2
  99. data/app/models/katello/host/subscription_facet.rb +1 -1
  100. data/app/models/katello/host_tracer.rb +21 -2
  101. data/app/models/katello/installed_deb.rb +1 -1
  102. data/app/models/katello/module_stream.rb +4 -0
  103. data/app/models/katello/ping.rb +20 -1
  104. data/app/models/katello/product.rb +7 -5
  105. data/app/models/katello/provider.rb +1 -24
  106. data/app/models/katello/repository.rb +33 -10
  107. data/app/models/katello/root_repository.rb +28 -14
  108. data/app/models/setting/content.rb +8 -13
  109. data/app/services/katello/applicability/applicable_content_helper.rb +20 -0
  110. data/app/services/katello/organization_creator.rb +12 -11
  111. data/app/services/katello/pulp3/api/ansible_collection.rb +0 -40
  112. data/app/services/katello/pulp3/api/apt.rb +0 -47
  113. data/app/services/katello/pulp3/api/content_guard.rb +1 -1
  114. data/app/services/katello/pulp3/api/core.rb +28 -23
  115. data/app/services/katello/pulp3/api/docker.rb +0 -50
  116. data/app/services/katello/pulp3/api/file.rb +0 -48
  117. data/app/services/katello/pulp3/api/generic.rb +1 -44
  118. data/app/services/katello/pulp3/api/yum.rb +4 -44
  119. data/app/services/katello/pulp3/erratum.rb +1 -9
  120. data/app/services/katello/pulp3/generic_content_unit.rb +8 -4
  121. data/app/services/katello/pulp3/repository/ansible_collection.rb +4 -0
  122. data/app/services/katello/pulp3/repository/apt.rb +3 -3
  123. data/app/services/katello/pulp3/repository/generic.rb +10 -65
  124. data/app/services/katello/pulp3/repository/yum.rb +10 -0
  125. data/app/services/katello/pulp3/repository.rb +51 -21
  126. data/app/services/katello/pulp3/repository_mirror.rb +18 -9
  127. data/app/services/katello/pulp3/rpm.rb +2 -32
  128. data/app/services/katello/pulp3/smart_proxy_mirror_repository.rb +7 -8
  129. data/app/services/katello/pulp3/smart_proxy_repository.rb +1 -1
  130. data/app/services/katello/registration_manager.rb +2 -0
  131. data/app/services/katello/repository_type.rb +103 -15
  132. data/app/services/katello/repository_type_manager.rb +14 -8
  133. data/app/services/katello/ui_notifications/subscriptions/manifest_expired_warning.rb +1 -1
  134. data/app/services/katello/upstream_connection_checker.rb +1 -0
  135. data/app/views/foreman/job_templates/resolve_traces.erb +25 -0
  136. data/app/views/foreman/job_templates/resolve_traces_-_katello_ansible_default.erb +28 -0
  137. data/app/views/katello/api/v2/capsule_content/sync_status.json.rabl +1 -1
  138. data/app/views/katello/api/v2/common/_metadata.json.rabl +1 -0
  139. data/app/views/katello/api/v2/content_facet/base.json.rabl +3 -1
  140. data/app/views/katello/api/v2/content_facet/show.json.rabl +2 -1
  141. data/app/views/katello/api/v2/content_view_components/show.json.rabl +4 -0
  142. data/app/views/katello/api/v2/content_view_versions/base.json.rabl +7 -0
  143. data/app/views/katello/api/v2/content_views/base.json.rabl +12 -8
  144. data/app/views/katello/api/v2/content_views/index.json.rabl +1 -0
  145. data/app/views/katello/api/v2/content_views/permissions.rabl +8 -0
  146. data/app/views/katello/api/v2/debs/base.json.rabl +5 -0
  147. data/app/views/katello/api/v2/errata/index.json.rabl +4 -0
  148. data/app/views/katello/api/v2/generic_content_units/base.json.rabl +2 -0
  149. data/app/views/katello/api/v2/generic_content_units/show.json.rabl +7 -0
  150. data/app/views/katello/api/v2/host_tracer/base.json.rabl +1 -0
  151. data/app/views/katello/api/v2/module_streams/index.json.rabl +4 -0
  152. data/app/views/katello/api/v2/organizations/cdn_configuration.rabl +1 -0
  153. data/app/views/katello/api/v2/organizations/show.json.rabl +7 -0
  154. data/app/views/katello/api/v2/repositories/base.json.rabl +10 -17
  155. data/app/views/overrides/activation_keys/_host_synced_content_select.html.erb +2 -6
  156. data/config/routes/api/v2.rb +13 -0
  157. data/config/routes/overrides.rb +2 -0
  158. data/config/routes.rb +14 -2
  159. data/db/migrate/20140110000001_update_environments_add_katello_id.rb +1 -3
  160. data/db/migrate/20140610154745_content_view_puppet_environment_id.rb +0 -35
  161. data/db/migrate/20190802112101_add_applicable_debs.rb +16 -0
  162. data/db/migrate/20210201163238_migrate_background_download_policy_to_migrate.rb +2 -2
  163. data/db/migrate/20210331180353_katello_pool_organization_id_not_nullable.rb +0 -2
  164. data/db/migrate/20210909140337_add_last_indexed_to_repos.rb +5 -0
  165. data/db/migrate/20210910190324_move_background_settings_to_immediate.rb +25 -0
  166. data/db/migrate/20211006161617_add_filename_to_katello_generic_content_units.rb +5 -0
  167. data/db/migrate/20211019192121_create_cdn_configuration.katello.rb +30 -0
  168. data/db/migrate/20211025181315_add_additional_metadata_to_katello_generic_content_units.rb +5 -0
  169. data/engines/bastion/README.md +15 -0
  170. data/engines/bastion/app/assets/javascripts/bastion/components/nutupane.factory.js +2 -2
  171. data/engines/bastion/config/routes.rb +2 -0
  172. data/engines/bastion/vendor/assets/javascripts/bastion/angular/angular.js +3 -3
  173. data/engines/bastion/vendor/assets/javascripts/bastion/angular-sanitize/angular-sanitize.js +1 -1
  174. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/bastion_katello.js +3 -0
  175. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/common/views/registration.html +1 -1
  176. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-debs-applicable.controller.js +44 -0
  177. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-debs.controller.js +1 -1
  178. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-debs-applicable.html +70 -0
  179. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-debs.html +1 -1
  180. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.routes.js +10 -0
  181. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-details.html +5 -0
  182. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +25 -9
  183. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-views.routes.js +2 -2
  184. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-versions.html +0 -9
  185. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/debs.controller.js +22 -2
  186. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/debs.routes.js +1 -1
  187. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/deb.controller.js +22 -2
  188. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/views/deb-content-views.html +1 -1
  189. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/views/deb-info.html +36 -4
  190. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/views/deb-repositories.html +1 -1
  191. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/views/deb.html +4 -4
  192. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/views/debs.html +31 -4
  193. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/generic-content/generic-content.factory.js +21 -0
  194. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/generic-content/generic-content.module.js +17 -0
  195. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/details/package.controller.js +4 -0
  196. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/details/views/package-info.html +3 -3
  197. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/product-repositories.controller.js +6 -2
  198. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +30 -2
  199. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.filter.js +1 -13
  200. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-manage-content.controller.js +32 -9
  201. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details.controller.js +15 -4
  202. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-details.html +32 -19
  203. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +28 -28
  204. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-generic-content.html +57 -0
  205. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +46 -4
  206. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +57 -27
  207. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repositories.module.js +1 -0
  208. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repositories.routes.js +16 -7
  209. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repository-types.service.js +30 -4
  210. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repository.factory.js +2 -1
  211. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/views/product-repositories.html +8 -0
  212. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/sync-plan-details-info.controller.js +6 -2
  213. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/views/sync-plan-info.html +1 -1
  214. data/engines/bastion_katello/lib/bastion_katello/engine.rb +1 -1
  215. data/lib/katello/engine.rb +0 -1
  216. data/lib/katello/permission_creator.rb +4 -3
  217. data/lib/katello/permissions/host_permissions.rb +1 -0
  218. data/lib/katello/permissions/organization_permissions.rb +2 -1
  219. data/lib/katello/plugin.rb +15 -11
  220. data/lib/katello/repository_types/ansible_collection.rb +13 -1
  221. data/lib/katello/repository_types/deb.rb +13 -0
  222. data/lib/katello/repository_types/docker.rb +13 -1
  223. data/lib/katello/repository_types/file.rb +13 -0
  224. data/lib/katello/repository_types/ostree.rb +48 -4
  225. data/lib/katello/repository_types/python.rb +26 -12
  226. data/lib/katello/repository_types/yum.rb +16 -1
  227. data/lib/katello/tasks/repository.rake +3 -12
  228. data/lib/katello/tasks/reset.rake +4 -5
  229. data/lib/katello/version.rb +1 -1
  230. data/package.json +3 -2
  231. data/webpack/__mocks__/react-intl/index.js +4 -0
  232. data/webpack/components/ActionableDetail.js +23 -3
  233. data/webpack/components/AddedStatusLabel.js +1 -1
  234. data/webpack/components/Bookmark/AddBookmarkModal.js +96 -0
  235. data/webpack/components/Bookmark/Bookmark.scss +28 -0
  236. data/webpack/components/Bookmark/BookmarkActions.js +24 -0
  237. data/webpack/components/Bookmark/BookmarkConstants.js +3 -0
  238. data/webpack/components/Bookmark/BookmarkSelectors.js +15 -0
  239. data/webpack/components/Bookmark/index.js +94 -0
  240. data/webpack/components/EditableSwitch.js +6 -1
  241. data/webpack/components/EditableTextInput/EditableTextInput.js +41 -13
  242. data/webpack/components/Errata/index.js +69 -0
  243. data/webpack/components/ErratumTypeLabel.js +31 -0
  244. data/webpack/components/Loading.js +5 -2
  245. data/webpack/components/RoutedTabs/__tests__/RoutedTabs.test.js +5 -11
  246. data/webpack/components/RoutedTabs/index.js +77 -2
  247. data/webpack/components/Search/Search.js +67 -80
  248. data/webpack/components/Search/__tests__/search.test.js +8 -26
  249. data/webpack/components/SelectAllCheckbox/SelectAllCheckbox.scss +3 -0
  250. data/webpack/components/SelectAllCheckbox/index.js +126 -0
  251. data/webpack/components/SelectableDropdown/SelectableDropdown.js +7 -2
  252. data/webpack/components/Table/EmptyStateMessage.js +38 -17
  253. data/webpack/components/Table/MainTable.js +49 -10
  254. data/webpack/components/Table/MainTable.scss +11 -0
  255. data/webpack/components/Table/PageControls.js +45 -0
  256. data/webpack/components/Table/TableHooks.js +230 -0
  257. data/webpack/components/Table/TableWrapper.js +221 -50
  258. data/webpack/components/Table/helpers.js +17 -0
  259. data/webpack/components/TypeAhead/TypeAhead.js +74 -58
  260. data/webpack/components/TypeAhead/pf4Search/TypeAheadInput.js +25 -10
  261. data/webpack/components/TypeAhead/pf4Search/TypeAheadInput.scss +9 -8
  262. data/webpack/components/TypeAhead/pf4Search/TypeAheadItems.js +2 -2
  263. data/webpack/components/TypeAhead/pf4Search/TypeAheadSearch.js +32 -22
  264. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard.js +101 -0
  265. data/webpack/components/extensions/HostDetails/Cards/__tests__/contentViewDetailsCard.test.js +53 -0
  266. data/webpack/components/extensions/HostDetails/HostErrata/HostErrataActions.js +47 -0
  267. data/webpack/components/extensions/HostDetails/HostErrata/HostErrataConstants.js +32 -0
  268. data/webpack/components/extensions/HostDetails/HostErrata/HostErrataSelectors.js +16 -0
  269. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/EmptyPage.js +19 -0
  270. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/SecondaryTabsRoutes.js +17 -0
  271. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/constants.js +7 -0
  272. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/helpers.js +3 -0
  273. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/index.js +40 -0
  274. data/webpack/components/extensions/HostDetails/Tabs/EnableTracerEmptyState.js +42 -0
  275. data/webpack/components/extensions/HostDetails/Tabs/EnableTracerModal.js +118 -0
  276. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab.js +347 -0
  277. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab.scss +16 -0
  278. data/webpack/components/extensions/HostDetails/Tabs/ErratumExpansionContents.js +60 -0
  279. data/webpack/components/extensions/HostDetails/Tabs/ErratumExpansionDetail.js +69 -0
  280. data/webpack/components/extensions/HostDetails/Tabs/HostTracesActions.js +19 -0
  281. data/webpack/components/extensions/HostDetails/Tabs/HostTracesConstants.js +2 -0
  282. data/webpack/components/extensions/HostDetails/Tabs/HostTracesSelectors.js +19 -0
  283. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionActions.js +56 -0
  284. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionConstants.js +5 -0
  285. data/webpack/components/extensions/HostDetails/Tabs/TracesTab.js +188 -0
  286. data/webpack/components/extensions/HostDetails/Tabs/TracesTab.scss +12 -0
  287. data/webpack/components/extensions/HostDetails/Tabs/__tests__/errata.fixtures.json +67 -0
  288. data/webpack/components/extensions/HostDetails/Tabs/__tests__/errataTab.test.js +785 -0
  289. data/webpack/components/extensions/HostDetails/Tabs/__tests__/resolveTraces.fixtures.json +35 -0
  290. data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracerEmptyTraceResults.fixtures.json +7 -0
  291. data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracerEnableJobInvocation.fixtures.json +35 -0
  292. data/webpack/components/extensions/HostDetails/Tabs/__tests__/traces.fixtures.json +44 -0
  293. data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracesTab.test.js +386 -0
  294. data/webpack/components/extensions/HostDetails/Tabs/customizedRexUrlHelpers.js +20 -0
  295. data/webpack/components/extensions/RegistrationCommands/fields/ActivationKeys.js +1 -1
  296. data/webpack/components/extensions/RegistrationCommands/index.js +1 -1
  297. data/webpack/components/pf3Table/components/Table.js +1 -1
  298. data/webpack/components/pf3Table/components/__snapshots__/Table.test.js.snap +3 -3
  299. data/webpack/containers/Application/Routes.js +3 -3
  300. data/webpack/containers/Application/config.js +21 -6
  301. data/webpack/containers/Application/overrides.scss +34 -3
  302. data/webpack/{fills_index.js → global_index.js} +11 -2
  303. data/webpack/global_test_setup.js +6 -1
  304. data/webpack/redux/actions/RedHatRepositories/helpers.js +4 -4
  305. data/webpack/scenes/AnsibleCollections/AnsibleCollectionsTableSchema.js +1 -1
  306. data/webpack/scenes/Content/ContentActions.js +31 -0
  307. data/webpack/scenes/Content/ContentConfig.js +138 -0
  308. data/webpack/scenes/Content/ContentConstants.js +7 -0
  309. data/webpack/scenes/Content/ContentPage.js +89 -0
  310. data/webpack/scenes/Content/ContentSelectors.js +43 -0
  311. data/webpack/scenes/Content/Details/ContentCounts.js +42 -0
  312. data/webpack/scenes/Content/Details/ContentDetails.js +66 -0
  313. data/webpack/scenes/Content/Details/ContentInfo.js +60 -0
  314. data/webpack/scenes/Content/Details/ContentRepositories.js +78 -0
  315. data/webpack/scenes/Content/Details/__tests__/ansibleCollectionDetails.fixtures.json +20 -0
  316. data/webpack/scenes/Content/Details/__tests__/ansibleCollectionRepositoryDetails.fixtures.json +71 -0
  317. data/webpack/scenes/Content/Details/__tests__/contentDetail.test.js +152 -0
  318. data/webpack/scenes/Content/Details/__tests__/pythonPackageDetails.fixtures.json +20 -0
  319. data/webpack/scenes/Content/Details/__tests__/pythonPackageRepositoryDetails.fixtures.json +71 -0
  320. data/webpack/scenes/Content/Details/index.js +4 -0
  321. data/webpack/scenes/Content/Table/ContentTable.js +90 -0
  322. data/webpack/scenes/Content/Table/index.js +3 -0
  323. data/webpack/scenes/Content/__tests__/ansibleCollections.fixtures.json +50 -0
  324. data/webpack/scenes/Content/__tests__/contentTable.test.js +89 -0
  325. data/webpack/scenes/Content/__tests__/contentTypes.fixtures.json +66 -0
  326. data/webpack/scenes/Content/__tests__/pythonPackages.fixtures.json +30 -0
  327. data/webpack/scenes/Content/index.js +4 -0
  328. data/webpack/scenes/ContentViews/ContentViewSelectors.js +5 -6
  329. data/webpack/scenes/ContentViews/ContentViewsActions.js +13 -8
  330. data/webpack/scenes/ContentViews/ContentViewsConstants.js +31 -4
  331. data/webpack/scenes/ContentViews/ContentViewsPage.js +4 -0
  332. data/webpack/scenes/ContentViews/Copy/CopyContentViewForm.js +19 -7
  333. data/webpack/scenes/ContentViews/Copy/CopyContentViewModal.js +7 -5
  334. data/webpack/scenes/ContentViews/Copy/__tests__/copyContentView.test.js +1 -1
  335. data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +7 -3
  336. data/webpack/scenes/ContentViews/Create/__tests__/createContentView.test.js +1 -2
  337. data/webpack/scenes/ContentViews/Delete/CVDeleteContext.js +4 -0
  338. data/webpack/scenes/ContentViews/Delete/ContentViewDeleteWizard.js +170 -0
  339. data/webpack/scenes/ContentViews/Delete/Steps/CVDeleteEnvironmentsSelection.js +108 -0
  340. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionFinish.js +69 -0
  341. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignActivationKeysForm.js +121 -0
  342. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignHostsForm.js +120 -0
  343. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReview.js +62 -0
  344. data/webpack/scenes/ContentViews/Delete/Steps/CVEnvironmentSelectionForm.scss +4 -0
  345. data/webpack/scenes/ContentViews/Delete/__tests__/CvData.fixtures.json +259 -0
  346. data/webpack/scenes/ContentViews/Delete/__tests__/affectedHosts.fixtures.json +155 -0
  347. data/webpack/scenes/ContentViews/Delete/__tests__/contentViewDelete.test.js +241 -0
  348. data/webpack/scenes/ContentViews/Delete/__tests__/cvDetails.fixtures.json +248 -0
  349. data/webpack/scenes/ContentViews/Delete/__tests__/cvVersionsData.fixtures.json +865 -0
  350. data/webpack/scenes/ContentViews/Delete/__tests__/envPathData.fixtures.json +424 -0
  351. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewAddModal.js +15 -7
  352. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewBulkAddModal.js +123 -0
  353. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentEnvironments.js +1 -1
  354. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentVersion.js +8 -5
  355. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +109 -51
  356. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.fixtures.json +21 -6
  357. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +80 -16
  358. data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +248 -3
  359. data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +141 -0
  360. data/webpack/scenes/ContentViews/Details/ContentViewDetails.js +36 -54
  361. data/webpack/scenes/ContentViews/Details/ContentViewInfo.js +20 -4
  362. data/webpack/scenes/ContentViews/Details/Filters/Add/CVFilterAddModal.js +63 -38
  363. data/webpack/scenes/ContentViews/Details/Filters/Add/__tests__/cvFilterAdd.test.js +3 -4
  364. data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositorySelection.js +65 -0
  365. data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositoryTable.js +260 -0
  366. data/webpack/scenes/ContentViews/Details/Filters/ArtifactsWithNoErrata.js +54 -0
  367. data/webpack/scenes/ContentViews/Details/Filters/CVContainerImageFilterContent.js +202 -0
  368. data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +291 -0
  369. data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +441 -0
  370. data/webpack/scenes/ContentViews/Details/Filters/CVFilterDetailType.js +62 -3
  371. data/webpack/scenes/ContentViews/Details/Filters/CVModuleStreamFilterContent.js +302 -0
  372. data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +186 -23
  373. data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +144 -19
  374. data/webpack/scenes/ContentViews/Details/Filters/ContentType.js +2 -0
  375. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetails.js +44 -13
  376. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetailsHeader.js +81 -17
  377. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +43 -43
  378. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/CVRpmMatchContentModal.js +96 -0
  379. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContent.fixtures.json +166 -0
  380. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContentModal.test.js +90 -0
  381. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContentSearch.fixtures.json +33 -0
  382. data/webpack/scenes/ContentViews/Details/Filters/Rules/ContainerTag/AddEditContainerTagRuleModal.js +91 -0
  383. data/webpack/scenes/ContentViews/Details/Filters/Rules/Package/AddEditPackageRuleModal.js +237 -0
  384. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVContainerImageFilterContent.fixtures.json +42 -0
  385. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVContainerImageFilterContent.test.js +265 -0
  386. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVRpmFilterContent.test.js +218 -11
  387. data/webpack/scenes/ContentViews/Details/Filters/__tests__/ContentViewPackageGroupFilter.test.js +517 -0
  388. data/webpack/scenes/ContentViews/Details/Filters/__tests__/allFilterErrata.fixtures.json +122 -0
  389. data/webpack/scenes/ContentViews/Details/Filters/__tests__/allFilterModulesStreams.fixtures.json +60 -0
  390. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewErrataByDateDetails.fixtures.json +359 -0
  391. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilterDetail.fixtures.json +88 -102
  392. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilterDetails.test.js +34 -9
  393. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.fixtures.json +148 -132
  394. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.test.js +25 -7
  395. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvAllRepos.fixtures.json +150 -0
  396. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataDateFilterContent.test.js +74 -0
  397. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataIDFilter.test.js +404 -0
  398. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErratumFilterDetails.fixtures.json +89 -0
  399. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvFilterDetailModuleAffectedRepos.fixtures.json +383 -0
  400. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvFilterDetailWithAffectedRepos.fixtures.json +375 -0
  401. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvFilterFixutre.fixture.json +282 -0
  402. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvModuleStreamFilter.test.js +392 -0
  403. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvModuleStreamFilterDetails.fixtures.json +97 -0
  404. data/webpack/scenes/ContentViews/Details/Filters/index.js +26 -0
  405. data/webpack/scenes/ContentViews/Details/Histories/ContentViewHistories.js +68 -79
  406. data/webpack/scenes/ContentViews/Details/Histories/__tests__/contentViewHistory.test.js +1 -2
  407. data/webpack/scenes/ContentViews/Details/Promote/ContentViewVersionPromote.js +163 -0
  408. data/webpack/scenes/ContentViews/Details/Promote/ContentViewVersionPromoteSelectors.js +16 -0
  409. data/webpack/scenes/ContentViews/Details/Repositories/ContentCounts.js +9 -1
  410. data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +88 -74
  411. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +8 -9
  412. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewDetailRepos.fixtures.json +3 -3
  413. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionContent.js +30 -9
  414. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionEnvironments.js +1 -1
  415. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionErrata.js +9 -5
  416. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionErrata.scss +2 -2
  417. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +132 -14
  418. data/webpack/scenes/ContentViews/Details/Versions/Delete/DeleteContext.js +4 -0
  419. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveCVVersionWizard.js +176 -0
  420. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVEnvironmentSelectionForm.js +127 -0
  421. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignActivationKeysForm.js +131 -0
  422. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignHostsForm.js +128 -0
  423. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionDeleteFinish.js +94 -0
  424. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionRemoveReview.js +67 -0
  425. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvAffectedActivationKeys.fixture.json +53 -0
  426. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvAffectedHosts.fixture.json +153 -0
  427. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvDropDownOptionsResponse.fixture.json +192 -0
  428. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemove.test.js +313 -0
  429. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemoveResponse.fixture.json +74 -0
  430. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/versionRemoveEnvPaths.fixtures.json +352 -0
  431. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/versionsResponseData.fixtures.json +583 -0
  432. data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedActivationKeys.js +96 -0
  433. data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedHosts.js +97 -0
  434. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailConfig.js +332 -0
  435. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.js +128 -0
  436. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.scss +44 -0
  437. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsHeader.js +66 -0
  438. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsTable.js +125 -0
  439. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionRepositoryCell.js +115 -0
  440. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionAnsibleCollections.fixtures.json +449 -0
  441. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionComponent.fixtures.json +753 -0
  442. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDebPackages.fixtures.json +58 -0
  443. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.fixtures.json +158 -0
  444. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.test.js +289 -0
  445. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetailsCounts.fixtures.json +73 -0
  446. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetailsEmpty.test.js +44 -0
  447. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDockerTags.fixtures.json +3024 -0
  448. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionErrata.fixtures.json +201 -0
  449. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionFiles.fixtures.json +22 -0
  450. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionModuleStreams.fixtures.json +196 -0
  451. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionRepositories.fixtures.json +1000 -0
  452. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionRpmPackageGroups.fixtures.json +44 -0
  453. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionRpmPackages.fixtures.json +394 -0
  454. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.fixtures.json +4 -4
  455. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +95 -26
  456. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersionsWithTask.fixtures.json +2 -2
  457. data/webpack/scenes/ContentViews/Details/Versions/index.js +25 -0
  458. data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetail.test.js +20 -16
  459. data/webpack/scenes/ContentViews/Publish/__tests__/publishContentView.test.js +3 -5
  460. data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +106 -64
  461. data/webpack/scenes/ContentViews/Table/tableDataGenerator.js +25 -4
  462. data/webpack/scenes/ContentViews/__tests__/basicContentViews.fixtures.js +1 -1
  463. data/webpack/scenes/ContentViews/__tests__/contentViewList.fixtures.json +4 -1
  464. data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +29 -36
  465. data/webpack/scenes/ContentViews/__tests__/mockDetails.fixtures.json +10 -0
  466. data/webpack/scenes/ContentViews/components/CVBreadCrumb.js +117 -0
  467. data/webpack/scenes/ContentViews/components/ContentViewsCounter.js +59 -0
  468. data/webpack/scenes/ContentViews/components/EnvironmentLabels.js +4 -3
  469. data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.js +30 -11
  470. data/webpack/scenes/ContentViews/components/TaskPresenter/TaskPresenter.js +1 -1
  471. data/webpack/scenes/ContentViews/expansions/DetailsExpansion.js +38 -1
  472. data/webpack/scenes/ContentViews/expansions/RelatedCompositeContentViewsModal.js +79 -0
  473. data/webpack/scenes/ContentViews/expansions/RelatedContentViewComponentsModal.js +107 -0
  474. data/webpack/scenes/ContentViews/expansions/__tests__/contentViewComponentsModal.test.js +59 -0
  475. data/webpack/scenes/ContentViews/expansions/__tests__/contentViewComponentsResponse.fixtures.json +116 -0
  476. data/webpack/scenes/ContentViews/expansions/__tests__/relatedCompositeCvs.fixtures.json +4 -0
  477. data/webpack/scenes/ContentViews/helpers.js +1 -0
  478. data/webpack/scenes/RedHatRepositories/components/RepositorySetRepository/RepositorySetRepository.js +1 -1
  479. data/webpack/scenes/RedHatRepositories/components/SearchBar.js +4 -3
  480. data/webpack/scenes/SmartProxy/SmartProxyContentTable.js +1 -1
  481. data/webpack/scenes/Subscriptions/SubscriptionsPage.js +17 -9
  482. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/__tests__/__snapshots__/SubscriptionsTable.test.js.snap +3 -3
  483. data/webpack/test-utils/nockWrapper.js +20 -3
  484. data/webpack/utils/helpers.js +16 -2
  485. data/webpack/utils/useDebounce.js +20 -0
  486. metadata +232 -54
  487. data/app/assets/javascripts/katello/widgets/tabs.js +0 -13
  488. data/app/assets/stylesheets/katello/widgets/tabs.scss +0 -69
  489. data/app/lib/actions/katello/provider/update.rb +0 -38
  490. data/webpack/components/RoutedTabs/RoutedTabs.js +0 -90
  491. data/webpack/components/Search/Search.test.js +0 -23
  492. data/webpack/components/Search/__snapshots__/Search.test.js.snap +0 -21
  493. data/webpack/components/extensions/HostDetails/Tabs/ContentTab.js +0 -42
  494. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewDetailRepos.test.js +0 -145
  495. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionPackages.js +0 -0
@@ -31,6 +31,8 @@ module Katello
31
31
  has_many :subscriptions, :class_name => "Katello::Subscription", :dependent => :destroy, :inverse_of => :organization
32
32
  has_many :pools, :class_name => "Katello::Pool", :dependent => :destroy, :inverse_of => :organization
33
33
  has_many :product_contents, :through => :products
34
+ has_many :repositories, :through => :products
35
+ has_one :cdn_configuration, :class_name => "Katello::CdnConfiguration", :dependent => :destroy, :inverse_of => :organization
34
36
 
35
37
  #older association
36
38
  has_many :org_tasks, :dependent => :destroy, :class_name => "Katello::TaskStatus", :inverse_of => :organization
@@ -132,7 +134,7 @@ module Katello
132
134
  end
133
135
 
134
136
  def redhat_repository_url
135
- redhat_provider.repository_url
137
+ cdn_configuration.url
136
138
  end
137
139
 
138
140
  def being_deleted?
@@ -150,10 +150,9 @@ module Katello
150
150
  service = service_class.new(model.pulp_id)
151
151
  service.backend_data = unit
152
152
  if repository&.generic?
153
- service.update_model(model, repository.repository_type, generic_content_type)
154
- else
155
- service.update_model(model)
153
+ service.update_model(model, generic_content_type)
156
154
  end
155
+ service.update_model(model)
157
156
  ids_to_associate << model.pulp_id
158
157
  end
159
158
  end
@@ -186,11 +185,12 @@ module Katello
186
185
  service = service_class.new(model.pulp_id)
187
186
  service.backend_data = unit
188
187
  model.repository_id = repository.id unless many_repository_associations
188
+
189
189
  if repository.generic?
190
- service.update_model(model, repository.repository_type, generic_content_type)
190
+ service.update_model(model, generic_content_type)
191
191
  elsif self == ::Katello::Erratum
192
192
  # Errata will change pulp_hrefs if the upstream repo updates them
193
- erratum_updated_ids << service.update_model(model, repository)
193
+ erratum_updated_ids << service.update_model(model)
194
194
  else
195
195
  service.update_model(model)
196
196
  end
@@ -203,6 +203,7 @@ module Katello
203
203
 
204
204
  def sync_repository_associations(repository, options = {})
205
205
  additive = options.fetch(:additive, false)
206
+ generic_content_type = options.fetch(:generic_content_type, nil)
206
207
  pulp_id_href_map = options.dig(:pulp_id_href_map) || {}
207
208
  pulp_ids = options.dig(:pulp_ids) || pulp_id_href_map.try(:keys)
208
209
  ids_for_repository = with_pulp_id(pulp_ids).pluck(:id, :pulp_id)
@@ -213,7 +214,16 @@ module Katello
213
214
  erratum_updated_ids = options.fetch(:erratum_updated_ids, []).flatten.compact
214
215
 
215
216
  existing_ids = self.repository_association_class.uncached do
216
- self.repository_association_class.where(:repository_id => repository).pluck(unit_id_field)
217
+ repo_assoc_units = self.repository_association_class.where(:repository_id => repository)
218
+
219
+ if generic_content_type
220
+ generic_unit_ids = Katello::GenericContentUnit
221
+ .where(id: repo_assoc_units.pluck(unit_id_field))
222
+ .where(content_type: generic_content_type).pluck(:id)
223
+ repo_assoc_units = repo_assoc_units.where(generic_content_unit_id: generic_unit_ids)
224
+ end
225
+
226
+ repo_assoc_units.pluck(unit_id_field)
217
227
  end
218
228
 
219
229
  new_ids = associated_ids - existing_ids
@@ -0,0 +1,9 @@
1
+ module Katello
2
+ module Concerns
3
+ module RemoteExecutionProviderExtensions
4
+ def alternative_names(host)
5
+ super.merge(:consumer_uuid => host.subscription_facet&.uuid)
6
+ end
7
+ end
8
+ end
9
+ end
@@ -4,7 +4,7 @@ module Katello
4
4
  extend ActiveSupport::Concern
5
5
 
6
6
  included do
7
- validates :value, inclusion: { in: ::Runcible::Models::YumImporter::DOWNLOAD_POLICIES },
7
+ validates :value, inclusion: { in: ::Katello::RootRepository::DOWNLOAD_POLICIES },
8
8
  if: ->(setting) { setting.name == 'default_download_policy' }
9
9
 
10
10
  after_save :recalculate_errata_status
@@ -1,6 +1,7 @@
1
1
  require 'proxy_api'
2
2
  require 'proxy_api/pulp'
3
3
  require 'proxy_api/pulp_node'
4
+ require 'proxy_api/container_gateway'
4
5
 
5
6
  module Katello
6
7
  module Concerns
@@ -21,7 +22,7 @@ module Katello
21
22
  CONTAINER_GATEWAY_FEATURE = "Container_Gateway".freeze
22
23
 
23
24
  DOWNLOAD_INHERIT = 'inherit'.freeze
24
- DOWNLOAD_POLICIES = ::Runcible::Models::YumImporter::DOWNLOAD_POLICIES + [DOWNLOAD_INHERIT]
25
+ DOWNLOAD_POLICIES = [::Katello::RootRepository::DOWNLOAD_ON_DEMAND, ::Katello::RootRepository::DOWNLOAD_IMMEDIATE, DOWNLOAD_INHERIT].freeze
25
26
 
26
27
  included do
27
28
  include ForemanTasks::Concerns::ActionSubject
@@ -128,7 +129,7 @@ module Katello
128
129
  auth_required: !unauthenticated_container_repositories.include?(repo.id) }
129
130
  end
130
131
  end
131
- ProxyAPI::ContainerGateway.new(url: self.url).repository_list({ repositories: repo_list })
132
+ ::ProxyAPI::ContainerGateway.new(url: self.url).repository_list({ repositories: repo_list })
132
133
  end
133
134
 
134
135
  def update_user_container_repo_mapping(users)
@@ -184,17 +185,17 @@ module Katello
184
185
  end
185
186
  end
186
187
 
187
- def pulp3_ssl_configuration(config, connection_adapter = Faraday.default_adapter)
188
- legacy_pulp_cert = !self.setting(PULP3_FEATURE, 'client_authentication')&.include?('client_certificate')
188
+ def pulp3_ssl_configuration(config)
189
+ legacy_pulp_cert = !self.setting(PULP3_FEATURE, 'client_authentication')&.include?('client_certificates')
189
190
 
190
- if connection_adapter == :excon
191
+ if Faraday.default_adapter == :excon
191
192
  config.ssl_client_cert = ::Cert::Certs.ssl_client_cert_filename(use_admin_as_cn_cert: legacy_pulp_cert)
192
193
  config.ssl_client_key = ::Cert::Certs.ssl_client_key_filename(use_admin_as_cn_cert: legacy_pulp_cert)
193
- elsif connection_adapter == :net_http
194
+ elsif Faraday.default_adapter == :net_http
194
195
  config.ssl_client_cert = ::Cert::Certs.ssl_client_cert(use_admin_as_cn_cert: legacy_pulp_cert)
195
196
  config.ssl_client_key = ::Cert::Certs.ssl_client_key(use_admin_as_cn_cert: legacy_pulp_cert)
196
197
  else
197
- fail "Unexpected connection_adapter #{Faraday.default_adapter}! Cannot continue, this is likely a bug."
198
+ fail "Unexpected faraday default_adapter #{Faraday.default_adapter}! Cannot continue, this is likely a bug."
198
199
  end
199
200
  end
200
201
 
@@ -348,7 +349,7 @@ module Katello
348
349
  end
349
350
 
350
351
  def set_default_download_policy
351
- self.download_policy ||= ::Setting[:default_proxy_download_policy] || ::Runcible::Models::YumImporter::DOWNLOAD_ON_DEMAND
352
+ self.download_policy ||= ::Setting[:default_proxy_download_policy] || ::Katello::RootRepository::DOWNLOAD_ON_DEMAND
352
353
  end
353
354
 
354
355
  def associate_lifecycle_environments
@@ -13,6 +13,10 @@ module Katello
13
13
  has_many :repositories, :through => :root_repositories
14
14
 
15
15
  has_many :products, :class_name => "Katello::Product", :inverse_of => :gpg_key, :dependent => :nullify, :foreign_key => 'gpg_key_id'
16
+
17
+ has_many :ssl_ca_cdn_configurations, :class_name => "Katello::CdnConfiguration", :foreign_key => 'ssl_ca_credential_id',
18
+ :inverse_of => :ssl_ca_credential, :dependent => :nullify
19
+
16
20
  has_many :ssl_ca_products, :class_name => "Katello::Product", :foreign_key => "ssl_ca_cert_id",
17
21
  :inverse_of => :ssl_ca_cert, :dependent => :nullify
18
22
  has_many :ssl_client_products, :class_name => "Katello::Product", :foreign_key => "ssl_client_cert_id",
@@ -0,0 +1,7 @@
1
+ module Katello
2
+ class ContentFacetApplicableDeb < Katello::Model
3
+ # Do not use active record callbacks in this join model. Direct INSERTs and DELETEs are done
4
+ belongs_to :content_facet, :inverse_of => :content_facet_applicable_debs, :class_name => 'Katello::Host::ContentFacet'
5
+ belongs_to :deb, :inverse_of => :content_facet_applicable_debs, :class_name => 'Katello::Deb'
6
+ end
7
+ end
@@ -108,7 +108,7 @@ module Katello
108
108
  end
109
109
 
110
110
  def self.in_organization(org)
111
- where(organization_id: org.id)
111
+ where(organization_id: org.id) unless org.nil?
112
112
  end
113
113
 
114
114
  def to_s
@@ -641,6 +641,29 @@ module Katello
641
641
  repositories.on_demand
642
642
  end
643
643
 
644
+ def related_cv_count
645
+ if composite
646
+ content_view_components.length
647
+ else
648
+ component_composites.length
649
+ end
650
+ end
651
+
652
+ def related_composite_cvs
653
+ content_views = []
654
+ component_composites.each do |cv|
655
+ cv_id = cv.composite_content_view_id
656
+ cv_name = ContentView.find(cv_id).name
657
+ content_views.push(
658
+ {
659
+ id: cv_id,
660
+ name: cv_name
661
+ }
662
+ )
663
+ end
664
+ content_views
665
+ end
666
+
644
667
  protected
645
668
 
646
669
  def remove_repository(repository)
@@ -31,6 +31,10 @@ module Katello
31
31
  end
32
32
  end
33
33
 
34
+ def component_content_view_versions
35
+ self.content_view&.versions
36
+ end
37
+
34
38
  private
35
39
 
36
40
  def ensure_valid_content_view
@@ -27,6 +27,8 @@ module Katello
27
27
  end
28
28
 
29
29
  def content_unit_pulp_ids(repo)
30
+ return [] if erratum_rules.blank?
31
+
30
32
  if filter_by_id?
31
33
  errata_ids = erratum_rules.map(&:errata_id)
32
34
  errata_pulp_ids = errata_package_pulp_ids_from_errata_ids(repo, errata_ids)
@@ -35,7 +35,7 @@ module Katello
35
35
  Erratum::CONTENT_TYPE.to_sym => "Katello::ContentViewErratumFilter",
36
36
  DOCKER.to_sym => "Katello::ContentViewDockerFilter",
37
37
  MODULE_STREAM.to_sym => "Katello::ContentViewModuleStreamFilter"}
38
- scoped_search :on => :inclusion, :rename => :inclusion_type, :complete_value => {:include => true, :exclude => :false}
38
+ scoped_search :on => :inclusion, :rename => :inclusion_type, :complete_value => {include: "true", exclude: "false"}
39
39
 
40
40
  def self.yum(include_module_streams = true)
41
41
  types = [::Katello::ContentViewPackageGroupFilter.name,
@@ -20,7 +20,8 @@ module Katello
20
20
  :version => self.version,
21
21
  :content_view_filter_id => self.content_view_filter_id,
22
22
  :min_version => self.min_version,
23
- :max_version => self.max_version)
23
+ :max_version => self.max_version,
24
+ :architecture => self.architecture)
24
25
  other = other.where.not(:id => self.id) if self.id
25
26
  if other.exists?
26
27
  errors.add(:base, "This package filter rule already exists.")
@@ -1,4 +1,5 @@
1
1
  module Katello
2
+ # rubocop:disable Metrics/ClassLength
2
3
  class ContentViewVersion < Katello::Model
3
4
  include Authorization::ContentViewVersion
4
5
  include ForemanTasks::Concerns::ActionSubject
@@ -61,6 +62,10 @@ module Katello
61
62
  where("#{Katello::ContentViewVersion.table_name}.id in (#{sql})")
62
63
  end
63
64
 
65
+ scope :with_repositories, ->(repositories) do
66
+ joins(:repositories).includes(:content_view).merge(repositories).distinct
67
+ end
68
+
64
69
  scoped_search :on => :content_view_id, :only_explicit => true, :validator => ScopedSearch::Validators::INTEGER
65
70
  scoped_search :on => :major, :rename => :version, :complete_value => true, :ext_method => :find_by_version
66
71
  serialize :content_counts
@@ -102,6 +107,10 @@ module Katello
102
107
  name
103
108
  end
104
109
 
110
+ def ansible_collections
111
+ AnsibleCollection.in_repositories(archived_repos)
112
+ end
113
+
105
114
  delegate :organization, to: :content_view
106
115
 
107
116
  def active_history
@@ -121,13 +130,17 @@ module Katello
121
130
  end
122
131
 
123
132
  def description
124
- history.publish.successful.first.try(:notes)
133
+ history.publish.first.try(:notes)
125
134
  end
126
135
 
127
136
  def default_content_view?
128
137
  default?
129
138
  end
130
139
 
140
+ def latest?
141
+ content_view.latest_version_id == self.id
142
+ end
143
+
131
144
  def in_composite?
132
145
  composite_content_views.any?
133
146
  end
@@ -263,6 +276,14 @@ module Katello
263
276
  Katello::Deb.in_repositories(self.repositories.archived)
264
277
  end
265
278
 
279
+ def library_debs
280
+ Katello::Deb.in_repositories(library_repos)
281
+ end
282
+
283
+ def available_debs
284
+ library_packages.where.not(:id => debs)
285
+ end
286
+
266
287
  def errata(errata_type = nil)
267
288
  errata = Erratum.in_repositories(archived_repos)
268
289
  errata = errata.of_type(errata_type) if errata_type
@@ -323,6 +344,14 @@ module Katello
323
344
  save!
324
345
  end
325
346
 
347
+ def repository_type_counts_map
348
+ counts = {}
349
+ Katello::RepositoryTypeManager.enabled_repository_types.keys.each do |repo_type|
350
+ counts["#{repo_type}_repository_count"] = archived_repos.with_type(repo_type).count
351
+ end
352
+ counts
353
+ end
354
+
326
355
  def content_counts_map
327
356
  # if its empty, calculate it on demand
328
357
  update_content_counts! if content_counts.blank?
@@ -3,6 +3,13 @@ module Katello
3
3
  include Concerns::PulpDatabaseUnit
4
4
 
5
5
  CONTENT_TYPE = Pulp::Deb::CONTENT_TYPE
6
+
7
+ has_many :repository_debs, :class_name => "Katello::RepositoryDeb", :dependent => :destroy, :inverse_of => :deb
8
+ has_many :repositories, :through => :repository_debs, :class_name => "Katello::Repository"
9
+ has_many :content_facet_applicable_debs, :class_name => "Katello::ContentFacetApplicableDeb",
10
+ :dependent => :destroy, :inverse_of => :deb
11
+ has_many :content_facets, :through => :content_facet_applicable_debs, :class_name => "Katello::Host::ContentFacet"
12
+
6
13
  scoped_search :on => :name, :complete_value => true
7
14
  scoped_search :on => :version, :complete_value => true
8
15
  scoped_search :on => :architecture, :complete_value => true
@@ -15,6 +22,14 @@ module Katello
15
22
  order(:name).order(:version).order(:architecture)
16
23
  end
17
24
 
25
+ def self.repository_association_class
26
+ RepositoryDeb
27
+ end
28
+
29
+ def self.content_facet_association_class
30
+ ContentFacetApplicableDeb
31
+ end
32
+
18
33
  def self.search_version_range(min = nil, max = nil)
19
34
  query = self.all
20
35
  query = Katello::Util::PackageFilter.new(query, min, Katello::Util::PackageFilter::GREATER_THAN).results if min
@@ -29,5 +44,61 @@ module Katello
29
44
  def self.total_for_repositories(repos)
30
45
  self.in_repositories(repos).count
31
46
  end
47
+
48
+ # the format apt needs to identify the packet with version and architecture
49
+ def nav
50
+ "#{self.name}:#{self.architecture}=#{self.version}"
51
+ end
52
+
53
+ # the more natural format ;-)
54
+ def nva
55
+ "#{self.name}_#{self.version}_#{self.architecture}"
56
+ end
57
+
58
+ def self.split_nav(value)
59
+ v = /^(?<name>[^:\s]+)(:(?<architecture>[^=\s]*))?(=(?<version>.*))?$/.match(value)&.named_captures
60
+ if v
61
+ [ v['name'], v['architecture'], v['version'] ]
62
+ end
63
+ end
64
+
65
+ def hosts_applicable(org_id = nil)
66
+ if org_id.present?
67
+ self.content_facets.joins(:host).where("#{::Host.table_name}.organization_id" => org_id)
68
+ else
69
+ self.content_facets.joins(:host)
70
+ end
71
+ end
72
+
73
+ def hosts_available(org_id = nil)
74
+ self.hosts_applicable(org_id).joins("INNER JOIN #{Katello::RepositoryDeb.table_name} on \
75
+ #{Katello::RepositoryDeb.table_name}.deb_id = #{self.id}").joins(:content_facet_repositories).
76
+ where("#{Katello::ContentFacetRepository.table_name}.repository_id = #{Katello::RepositoryDeb.table_name}.repository_id").uniq
77
+ end
78
+
79
+ def self.installable_for_hosts(hosts = nil)
80
+ debs = Katello::Deb.joins(:repositories,
81
+ "INNER JOIN #{Katello::InstalledDeb.table_name} ON #{Katello::InstalledDeb.table_name}.name = #{self.table_name}.name",
82
+ "INNER JOIN #{Katello::HostInstalledDeb.table_name} ON #{Katello::HostInstalledDeb.table_name}.installed_deb_id = #{Katello::InstalledDeb.table_name}.id")
83
+ .where("deb_version_cmp(#{self.table_name}.version, #{Katello::InstalledDeb.table_name}.version) > 0")
84
+ unless hosts.nil?
85
+ facet_repos = Katello::ContentFacetRepository.joins(:content_facet => :host).select(:repository_id)
86
+ hosts = ::Host.where(id: hosts) if hosts.is_a?(Array)
87
+ facet_repos = facet_repos.merge(hosts).reorder(nil)
88
+
89
+ debs = debs.where("#{Katello::HostInstalledDeb.table_name}.host_id": hosts.pluck(:id))
90
+ .where("#{Katello::RepositoryDeb.table_name}.repository_id" => facet_repos)
91
+ end
92
+ debs.distinct
93
+ end
94
+
95
+ def self.applicable_to_hosts(hosts)
96
+ self.joins(:content_facets).
97
+ where("#{Katello::Host::ContentFacet.table_name}.host_id" => hosts).distinct
98
+ end
99
+
100
+ def self.latest(_relation)
101
+ fail 'NotImplemented'
102
+ end
32
103
  end
33
104
  end
@@ -5,8 +5,15 @@ module Katello
5
5
  SECURITY = ["security"].freeze
6
6
  BUGZILLA = ["bugfix", "recommended"].freeze
7
7
  ENHANCEMENT = ["enhancement", "optional"].freeze
8
-
9
8
  TYPES = [SECURITY, BUGZILLA, ENHANCEMENT].flatten.freeze
9
+
10
+ NONE = "None".freeze
11
+ LOW = "Low".freeze
12
+ MODERATE = "Moderate".freeze
13
+ IMPORTANT = "Important".freeze
14
+ CRITICAL = "Critical".freeze
15
+ SEVERITIES = [NONE, LOW, MODERATE, IMPORTANT, CRITICAL].freeze
16
+
10
17
  CONTENT_TYPE = "erratum".freeze
11
18
  BACKEND_IDENTIFIER_FIELD = "erratum_pulp3_href".freeze
12
19
 
@@ -20,6 +27,7 @@ module Katello
20
27
  scoped_search :on => :errata_id, :only_explicit => true
21
28
  scoped_search :on => :errata_id, :rename => :id, :complete_value => true, :only_explicit => true
22
29
  scoped_search :on => :title
30
+ scoped_search :on => :title, :rename => :synopsis, :complete_value => true, :only_explicit => true
23
31
  scoped_search :on => :severity, :complete_value => true
24
32
  scoped_search :on => :errata_type, :only_explicit => true
25
33
  scoped_search :on => :errata_type, :rename => :type, :complete_value => true
@@ -170,6 +178,10 @@ module Katello
170
178
  { :conditions => conditions }
171
179
  end
172
180
 
181
+ def content_view_filters
182
+ Katello::ContentViewErratumFilterRule.where(errata_id: self.errata_id).eager_load(:filter).map(&:filter)
183
+ end
184
+
173
185
  apipie :class, desc: "A class representing #{model_name.human} object" do
174
186
  name 'Erratum'
175
187
  refs 'Erratum'
@@ -5,8 +5,10 @@ module Katello
5
5
 
6
6
  CONTENT_TYPE = 'generic'.freeze
7
7
 
8
- scoped_search :on => :name, :complete_value => true
9
8
  scoped_search :on => :id, :complete_value => true
9
+ scoped_search :on => :name, :complete_value => true
10
+ scoped_search :on => :version, :complete_value => true
11
+ scoped_search :on => :filename, :complete_value => true
10
12
 
11
13
  def self.default_sort
12
14
  order(:name)
@@ -42,7 +42,7 @@ module Katello
42
42
  def sync_status
43
43
  all_repos = repos(self.library, nil, false)
44
44
  task = last_repo_sync_task
45
- last_synced_repo = task ? all_repos.find { |repo| task.locks.where(:resource_type => ::Katello::Repository.name).pluck(:resource_id).map(&:to_s).include?(repo.id.to_s) } : nil
45
+ last_synced_repo = task ? all_repos.find { |repo| task.links.where(:resource_type => ::Katello::Repository.name).pluck(:resource_id).map(&:to_s).include?(repo.id.to_s) } : nil
46
46
  ::Katello::SyncStatusPresenter.new(last_synced_repo, task).sync_progress
47
47
  end
48
48
 
@@ -124,7 +124,7 @@ module Katello
124
124
  content_url.dup
125
125
  else
126
126
  path = content_url.sub(%r{^/}, '')
127
- repo_url = self.provider.repository_url&.sub(%r{/$}, '')
127
+ repo_url = cdn_configuration.url.sub(%r{/$}, '')
128
128
  "#{repo_url}/#{path}"
129
129
  end
130
130
  end
@@ -20,6 +20,9 @@ module Katello
20
20
  has_many :content_facet_repositories, :class_name => "Katello::ContentFacetRepository", :dependent => :destroy, :inverse_of => :content_facet
21
21
  has_many :bound_repositories, :through => :content_facet_repositories, :class_name => "Katello::Repository", :source => :repository
22
22
 
23
+ has_many :content_facet_applicable_debs, :class_name => "Katello::ContentFacetApplicableDeb", :dependent => :delete_all, :inverse_of => :content_facet
24
+ has_many :applicable_debs, :through => :content_facet_applicable_debs, :class_name => "Katello::Deb", :source => :deb
25
+
23
26
  has_many :content_facet_applicable_rpms, :class_name => "Katello::ContentFacetApplicableRpm", :dependent => :delete_all, :inverse_of => :content_facet
24
27
  has_many :applicable_rpms, :through => :content_facet_applicable_rpms, :class_name => "Katello::Rpm", :source => :rpm
25
28
 
@@ -65,6 +68,10 @@ module Katello
65
68
  Erratum.installable_for_content_facet(self, env, content_view)
66
69
  end
67
70
 
71
+ def installable_debs(env = nil, content_view = nil)
72
+ Deb.installable_for_content_facet(self, env, content_view)
73
+ end
74
+
68
75
  def installable_rpms(env = nil, content_view = nil)
69
76
  Rpm.installable_for_content_facet(self, env, content_view)
70
77
  end
@@ -95,6 +102,7 @@ module Katello
95
102
  repo.library_instance_id.nil? ? repo.id : repo.library_instance_id
96
103
  end
97
104
 
105
+ ::Katello::Applicability::ApplicableContentHelper.new(self, ::Katello::Deb, bound_repos).calculate_and_import
98
106
  ::Katello::Applicability::ApplicableContentHelper.new(self, ::Katello::Rpm, bound_repos).calculate_and_import
99
107
  ::Katello::Applicability::ApplicableContentHelper.new(self, ::Katello::Erratum, bound_repos).calculate_and_import
100
108
  ::Katello::Applicability::ApplicableContentHelper.new(self, ::Katello::ModuleStream, bound_repos).calculate_and_import
@@ -105,6 +113,7 @@ module Katello
105
113
  def import_applicability(partial = false)
106
114
  import_module_stream_applicability(partial)
107
115
  import_errata_applicability(partial)
116
+ import_deb_applicability(partial)
108
117
  import_rpm_applicability(partial)
109
118
  update_applicability_counts
110
119
  end
@@ -114,6 +123,8 @@ module Katello
114
123
  :installable_security_errata_count => self.installable_errata.security.count,
115
124
  :installable_bugfix_errata_count => self.installable_errata.bugfix.count,
116
125
  :installable_enhancement_errata_count => self.installable_errata.enhancement.count,
126
+ :applicable_deb_count => self.content_facet_applicable_debs.count,
127
+ :upgradable_deb_count => self.installable_debs.count,
117
128
  :applicable_rpm_count => self.content_facet_applicable_rpms.count,
118
129
  :upgradable_rpm_count => self.installable_rpms.count,
119
130
  :applicable_module_stream_count => self.content_facet_applicable_module_streams.count,
@@ -122,6 +133,10 @@ module Katello
122
133
  self.save!(:validate => false)
123
134
  end
124
135
 
136
+ def import_deb_applicability(partial)
137
+ ApplicableContentHelper.new(Deb, self).import(partial)
138
+ end
139
+
125
140
  def import_rpm_applicability(partial)
126
141
  ApplicableContentHelper.new(Rpm, self).import(partial)
127
142
  end
@@ -180,6 +195,10 @@ module Katello
180
195
  joins_installable_relation(Katello::Erratum, Katello::ContentFacetErratum)
181
196
  end
182
197
 
198
+ def self.joins_installable_debs
199
+ joins_installable_relation(Katello::Deb, Katello::ContentFacetApplicableDeb)
200
+ end
201
+
183
202
  def self.joins_installable_rpms
184
203
  joins_installable_relation(Katello::Rpm, Katello::ContentFacetApplicableRpm)
185
204
  end
@@ -243,6 +262,8 @@ module Katello
243
262
  property :uuid, String, desc: 'Returns UUID of the facet'
244
263
  property :applicable_module_stream_count, Integer, desc: 'Returns applicable Module Stream count'
245
264
  property :upgradable_module_stream_count, Integer, desc: 'Returns upgradable Module Stream count'
265
+ property :applicable_deb_count, Integer, desc: 'Returns applicable DEB count'
266
+ property :upgradable_deb_count, Integer, desc: 'Returns upgradable DEB count'
246
267
  property :applicable_rpm_count, Integer, desc: 'Returns applicable RPM count'
247
268
  property :upgradable_rpm_count, Integer, desc: 'Returns upgradable RPM count'
248
269
  property :content_source, 'SmartProxy', desc: 'Returns Smart Proxy object as the content source'
@@ -254,9 +275,9 @@ module Katello
254
275
  prop_group :katello_idname_props, Katello::Model, meta: { resource: 'lifecycle_environment' }
255
276
  end
256
277
  class Jail < ::Safemode::Jail
257
- allow :applicable_module_stream_count, :applicable_rpm_count, :content_source, :content_source_id, :content_source_name, :content_view_id,
278
+ allow :applicable_deb_count, :applicable_module_stream_count, :applicable_rpm_count, :content_source, :content_source_id, :content_source_name, :content_view_id,
258
279
  :content_view_name, :errata_counts, :id, :kickstart_repository, :kickstart_repository_id, :kickstart_repository_name,
259
- :lifecycle_environment_id, :lifecycle_environment_name, :upgradable_module_stream_count, :upgradable_rpm_count, :uuid
280
+ :lifecycle_environment_id, :lifecycle_environment_name, :upgradable_deb_count, :upgradable_module_stream_count, :upgradable_rpm_count, :uuid
260
281
  end
261
282
  end
262
283
  end
@@ -57,7 +57,7 @@ module Katello
57
57
  self.dmi_uuid = consumer_params['facts']['dmi.system.uuid']
58
58
  end
59
59
 
60
- self.autoheal = consumer_params['autoheal'] unless consumer_params['autoheal'].blank?
60
+ self.autoheal = consumer_params['autoheal'] unless consumer_params['autoheal'].nil?
61
61
  self.service_level = consumer_params['serviceLevel'] unless consumer_params['serviceLevel'].nil?
62
62
  self.registered_at = consumer_params['created'] unless consumer_params['created'].blank?
63
63
  self.last_checkin = consumer_params['lastCheckin'] unless consumer_params['lastCheckin'].blank?
@@ -10,11 +10,30 @@ module Katello
10
10
  validates :app_type, :length => {:maximum => 255}, :presence => true
11
11
 
12
12
  scoped_search :on => :application, :complete_value => true
13
- scoped_search :on => :app_type
14
- scoped_search :on => :helper
13
+ scoped_search :on => :app_type, :complete_value => true
14
+ scoped_search :on => :helper, :complete_value => true
15
15
 
16
16
  def reboot_required?
17
17
  self.app_type == 'static'
18
18
  end
19
+
20
+ def restart_command
21
+ case self.app_type
22
+ when 'static'
23
+ 'reboot'
24
+ when 'session'
25
+ nil
26
+ else
27
+ self.helper
28
+ end
29
+ end
30
+
31
+ def self.helpers_for(traces)
32
+ if traces.any?(&:reboot_required?)
33
+ ['reboot']
34
+ else
35
+ traces.map(&:restart_command).compact.uniq
36
+ end
37
+ end
19
38
  end
20
39
  end
@@ -1,7 +1,7 @@
1
1
  module Katello
2
2
  class InstalledDeb < Katello::Model
3
- has_many :hosts, :through => :host_installed_debs, :class_name => "::Host"
4
3
  has_many :host_installed_debs, :class_name => "Katello::HostInstalledDeb", :dependent => :destroy, :inverse_of => :installed_deb
4
+ has_many :hosts, :through => :host_installed_debs, :class_name => "::Host"
5
5
 
6
6
  scoped_search :on => :name, :complete_value => true
7
7
  scoped_search :on => :version
@@ -71,6 +71,10 @@ module Katello
71
71
  {:name => name, :stream => stream, :version => version, :context => context, :arch => arch}.compact
72
72
  end
73
73
 
74
+ def content_view_filters
75
+ Katello::ContentViewModuleStreamFilterRule.where(module_stream_id: self.id).eager_load(:filter).map(&:filter)
76
+ end
77
+
74
78
  def self.find_by_host_name(_key, operator, value)
75
79
  conditions = sanitize_sql_for_conditions(["#{::Host::Managed.table_name}.name #{operator} ?", value_to_sql(operator, value)])
76
80
  hosts = ::Host::Managed.authorized("view_hosts").where(conditions).select(:id)