katello 4.4.0.2 → 4.5.0.rc2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (502) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/katello/hosts/activation_key_edit.js +9 -2
  3. data/app/controllers/katello/api/registry/registry_proxies_controller.rb +3 -0
  4. data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +5 -1
  5. data/app/controllers/katello/api/v2/alternate_content_sources_bulk_actions_controller.rb +44 -0
  6. data/app/controllers/katello/api/v2/alternate_content_sources_controller.rb +121 -0
  7. data/app/controllers/katello/api/v2/content_export_incrementals_controller.rb +39 -3
  8. data/app/controllers/katello/api/v2/content_exports_controller.rb +19 -0
  9. data/app/controllers/katello/api/v2/content_imports_controller.rb +13 -16
  10. data/app/controllers/katello/api/v2/content_view_components_controller.rb +1 -1
  11. data/app/controllers/katello/api/v2/content_view_repositories_controller.rb +1 -1
  12. data/app/controllers/katello/api/v2/content_view_versions_controller.rb +0 -12
  13. data/app/controllers/katello/api/v2/content_views_controller.rb +13 -0
  14. data/app/controllers/katello/api/v2/environments_controller.rb +1 -1
  15. data/app/controllers/katello/api/v2/errata_controller.rb +3 -1
  16. data/app/controllers/katello/api/v2/host_module_streams_controller.rb +8 -2
  17. data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +25 -3
  18. data/app/controllers/katello/api/v2/module_streams_controller.rb +3 -1
  19. data/app/controllers/katello/api/v2/organizations_controller.rb +4 -2
  20. data/app/controllers/katello/api/v2/package_groups_controller.rb +3 -1
  21. data/app/controllers/katello/api/v2/repositories_bulk_actions_controller.rb +1 -1
  22. data/app/controllers/katello/api/v2/repositories_controller.rb +1 -1
  23. data/app/controllers/katello/api/v2/repository_sets_controller.rb +40 -7
  24. data/app/controllers/katello/api/v2/subscriptions_controller.rb +2 -2
  25. data/app/controllers/katello/concerns/api/v2/hosts_controller_extensions.rb +1 -1
  26. data/app/helpers/katello/concerns/smart_proxy_helper_extensions.rb +4 -0
  27. data/app/helpers/katello/hosts_and_hostgroups_helper.rb +21 -3
  28. data/app/lib/actions/katello/alternate_content_source/create.rb +24 -0
  29. data/app/lib/actions/katello/alternate_content_source/destroy.rb +27 -0
  30. data/app/lib/actions/katello/alternate_content_source/refresh.rb +27 -0
  31. data/app/lib/actions/katello/alternate_content_source/update.rb +41 -0
  32. data/app/lib/actions/katello/cdn_configuration/update.rb +3 -3
  33. data/app/lib/actions/katello/content_view/destroy.rb +2 -1
  34. data/app/lib/actions/katello/content_view/incremental_updates.rb +7 -3
  35. data/app/lib/actions/katello/content_view/publish.rb +8 -10
  36. data/app/lib/actions/katello/content_view_version/auto_create_products.rb +4 -4
  37. data/app/lib/actions/katello/content_view_version/auto_create_redhat_repositories.rb +6 -4
  38. data/app/lib/actions/katello/content_view_version/auto_create_repositories.rb +6 -4
  39. data/app/lib/actions/katello/content_view_version/import.rb +25 -22
  40. data/app/lib/actions/katello/content_view_version/import_library.rb +0 -1
  41. data/app/lib/actions/katello/content_view_version/import_repository.rb +21 -0
  42. data/app/lib/actions/katello/content_view_version/incremental_update.rb +85 -93
  43. data/app/lib/actions/katello/content_view_version/reset_content_view_repositories_from_metadata.rb +2 -2
  44. data/app/lib/actions/katello/organization/manifest_refresh.rb +1 -1
  45. data/app/lib/actions/katello/product/content_create.rb +10 -8
  46. data/app/lib/actions/katello/repository/destroy.rb +36 -12
  47. data/app/lib/actions/katello/repository_set/disable_repository.rb +8 -3
  48. data/app/lib/actions/pulp3/alternate_content_source/create.rb +20 -0
  49. data/app/lib/actions/pulp3/alternate_content_source/create_remote.rb +20 -0
  50. data/app/lib/actions/pulp3/alternate_content_source/delete.rb +16 -0
  51. data/app/lib/actions/pulp3/alternate_content_source/delete_remote.rb +16 -0
  52. data/app/lib/actions/pulp3/alternate_content_source/refresh.rb +23 -0
  53. data/app/lib/actions/pulp3/alternate_content_source/update.rb +16 -0
  54. data/app/lib/actions/pulp3/alternate_content_source/update_remote.rb +17 -0
  55. data/app/lib/actions/pulp3/content_view_version/{import.rb → create_import.rb} +5 -5
  56. data/app/lib/actions/pulp3/content_view_version/create_importer.rb +4 -3
  57. data/app/lib/actions/pulp3/content_view_version/destroy_importer.rb +12 -1
  58. data/app/lib/actions/pulp3/orchestration/alternate_content_source/create.rb +16 -0
  59. data/app/lib/actions/pulp3/orchestration/alternate_content_source/delete.rb +23 -0
  60. data/app/lib/actions/pulp3/orchestration/alternate_content_source/refresh.rb +15 -0
  61. data/app/lib/actions/pulp3/orchestration/alternate_content_source/update.rb +16 -0
  62. data/app/lib/actions/pulp3/orchestration/content_view_version/copy_version_units_to_library.rb +1 -1
  63. data/app/lib/actions/pulp3/orchestration/content_view_version/export_repository.rb +51 -0
  64. data/app/lib/actions/pulp3/orchestration/content_view_version/import.rb +5 -2
  65. data/app/lib/actions/pulp3/repository/refresh_distribution.rb +1 -4
  66. data/app/lib/actions/pulp3/repository/save_artifact.rb +1 -1
  67. data/app/lib/actions/pulp3/repository/save_distribution_references.rb +0 -2
  68. data/app/lib/katello/api/v2/error_handling.rb +1 -0
  69. data/app/lib/katello/resources/cdn/katello_cdn.rb +3 -1
  70. data/app/lib/katello/util/errata.rb +2 -3
  71. data/app/lib/katello/validators/alternate_content_source_path_validator.rb +29 -0
  72. data/app/lib/katello/validators/content_default_http_proxy_setting_validator.rb +12 -0
  73. data/app/lib/katello/validators/content_view_environment_validator.rb +10 -5
  74. data/app/models/katello/alternate_content_source.rb +71 -0
  75. data/app/models/katello/authorization/alternate_content_source.rb +33 -0
  76. data/app/models/katello/authorization/repository.rb +3 -3
  77. data/app/models/katello/candlepin/repository_mapper.rb +13 -6
  78. data/app/models/katello/cdn_configuration.rb +15 -15
  79. data/app/models/katello/concerns/content_facet_host_extensions.rb +25 -0
  80. data/app/models/katello/concerns/host_managed_extensions.rb +7 -5
  81. data/app/models/katello/concerns/http_proxy_extensions.rb +14 -0
  82. data/app/models/katello/concerns/organization_extensions.rb +4 -2
  83. data/app/models/katello/concerns/setting_extensions.rb +14 -0
  84. data/app/models/katello/concerns/smart_proxy_extensions.rb +2 -1
  85. data/app/models/katello/content.rb +1 -0
  86. data/app/models/katello/content_credential.rb +6 -0
  87. data/app/models/katello/content_override.rb +7 -3
  88. data/app/models/katello/content_view.rb +33 -2
  89. data/app/models/katello/content_view_erratum_filter.rb +26 -12
  90. data/app/models/katello/content_view_filter.rb +4 -0
  91. data/app/models/katello/content_view_version.rb +12 -0
  92. data/app/models/katello/content_view_version_export_history.rb +3 -1
  93. data/app/models/katello/erratum.rb +9 -5
  94. data/app/models/katello/events/delete_latest_content_view_version.rb +40 -0
  95. data/app/models/katello/host/content_facet.rb +14 -0
  96. data/app/models/katello/host_available_module_stream.rb +12 -0
  97. data/app/models/katello/product_content.rb +1 -0
  98. data/app/models/katello/purpose_sla_status.rb +1 -1
  99. data/app/models/katello/purpose_status.rb +2 -2
  100. data/app/models/katello/repository.rb +7 -4
  101. data/app/models/katello/root_repository.rb +1 -1
  102. data/app/models/katello/smart_proxy_alternate_content_source.rb +8 -0
  103. data/app/models/katello/sync_plan.rb +1 -1
  104. data/app/presenters/katello/product_content_presenter.rb +15 -0
  105. data/app/services/katello/applicable_host_queue.rb +1 -1
  106. data/app/services/katello/product_content_finder.rb +12 -2
  107. data/app/services/katello/pulp3/alternate_content_source.rb +123 -0
  108. data/app/services/katello/pulp3/api/file.rb +8 -0
  109. data/app/services/katello/pulp3/api/yum.rb +8 -0
  110. data/app/services/katello/pulp3/content_view_version/export.rb +27 -5
  111. data/app/services/katello/pulp3/content_view_version/import.rb +97 -71
  112. data/app/services/katello/pulp3/content_view_version/import_export_common.rb +4 -4
  113. data/app/services/katello/pulp3/content_view_version/import_gpg_keys.rb +13 -11
  114. data/app/services/katello/pulp3/content_view_version/import_validator.rb +67 -72
  115. data/app/services/katello/pulp3/content_view_version/importable_products.rb +40 -24
  116. data/app/services/katello/pulp3/content_view_version/importable_repositories.rb +88 -39
  117. data/app/services/katello/pulp3/content_view_version/metadata_generator.rb +2 -2
  118. data/app/services/katello/pulp3/content_view_version/metadata_map.rb +117 -0
  119. data/app/services/katello/pulp3/erratum.rb +1 -1
  120. data/app/services/katello/pulp3/pulp_content_unit.rb +6 -1
  121. data/app/services/katello/pulp3/repository/yum.rb +70 -12
  122. data/app/services/katello/pulp3/repository.rb +35 -63
  123. data/app/services/katello/pulp3/service_common.rb +66 -0
  124. data/app/services/katello/pulp3/smart_proxy_mirror_repository.rb +4 -1
  125. data/app/services/katello/ui_notifications/content_view/delete_latest_version_failure.rb +22 -0
  126. data/app/views/foreman/job_templates/change_content_source.erb +1 -1
  127. data/app/views/foreman/job_templates/install_errata.erb +5 -5
  128. data/app/views/foreman/job_templates/install_errata_by_search_query.erb +7 -6
  129. data/app/views/foreman/job_templates/install_group.erb +4 -4
  130. data/app/views/foreman/job_templates/install_package.erb +4 -4
  131. data/app/views/foreman/job_templates/install_packages_by_search_query.erb +3 -3
  132. data/app/views/foreman/job_templates/remove_group.erb +4 -4
  133. data/app/views/foreman/job_templates/remove_package.erb +4 -4
  134. data/app/views/foreman/job_templates/remove_packages_by_search_query.erb +3 -3
  135. data/app/views/foreman/job_templates/resolve_traces.erb +2 -2
  136. data/app/views/foreman/job_templates/restart_services.erb +3 -3
  137. data/app/views/foreman/job_templates/update_group.erb +4 -4
  138. data/app/views/foreman/job_templates/update_package.erb +4 -4
  139. data/app/views/foreman/job_templates/update_packages_by_search_query.erb +3 -3
  140. data/app/views/foreman/smart_proxies/show.html.erb +2 -0
  141. data/app/views/katello/api/v2/alternate_content_sources/base.json.rabl +24 -0
  142. data/app/views/katello/api/v2/alternate_content_sources/index.json.rabl +7 -0
  143. data/app/views/katello/api/v2/alternate_content_sources/show.json.rabl +3 -0
  144. data/app/views/katello/api/v2/capsule_content/sync_status.json.rabl +1 -1
  145. data/app/views/katello/api/v2/content_facet/show.json.rabl +12 -0
  146. data/app/views/katello/api/v2/content_view_version_export_histories/show.json.rabl +2 -3
  147. data/app/views/katello/api/v2/content_view_versions/base.json.rabl +1 -1
  148. data/app/views/katello/api/v2/content_views/base.json.rabl +1 -0
  149. data/app/views/katello/api/v2/environments/show.json.rabl +2 -0
  150. data/app/views/katello/api/v2/errata/_counts.json.rabl +2 -2
  151. data/app/views/katello/api/v2/host_module_streams/base.json.rabl +2 -2
  152. data/app/views/katello/api/v2/hosts/host_collections.json.rabl +1 -1
  153. data/app/views/katello/api/v2/module_streams/show.json.rabl +0 -7
  154. data/app/views/katello/api/v2/organizations/show.json.rabl +7 -1
  155. data/app/views/katello/api/v2/repositories/show.json.rabl +2 -1
  156. data/app/views/katello/api/v2/repository_sets/show.json.rabl +4 -0
  157. data/app/views/katello/sync_management/_repo.html.erb +8 -29
  158. data/config/routes/api/v2.rb +19 -0
  159. data/db/migrate/20150930183738_migrate_content_hosts.rb +0 -399
  160. data/db/migrate/20171025163149_remove_use_pulp_oauth_setting.rb +1 -1
  161. data/db/migrate/20171114150937_cleanup_installed_packages.rb +1 -1
  162. data/db/migrate/20180402160223_clean_up_force_post_sync_action_setting.rb +1 -1
  163. data/db/migrate/20211129200124_remove_dependency_solving_algorithm_setting.rb +1 -1
  164. data/db/migrate/20211220185935_clean_duplicate_content_units.rb +1 -1
  165. data/db/migrate/20220110223754_update_disconnected_settings.rb +5 -5
  166. data/db/migrate/20220117151612_add_alternate_content_sources.rb +48 -0
  167. data/db/migrate/20220124191056_add_type_to_cdn_configuration.rb +9 -4
  168. data/db/migrate/20220209203251_add_generated_for_to_content_views.rb +13 -0
  169. data/db/migrate/20220209205137_expand_sync_timeout_settings.rb +7 -7
  170. data/db/migrate/20220228173251_remove_drpm_from_ignorable_content.rb +12 -0
  171. data/db/migrate/20220303160220_remove_duplicate_errata.rb +37 -2
  172. data/db/migrate/20220404190836_delete_old_setting_data.rb +9 -0
  173. data/db/migrate/20220405220616_update_cdn_configuration_type.rb +11 -0
  174. data/db/migrate/20220419193414_content_settings_to_dsl_category.rb +5 -0
  175. data/db/migrate/20220428203334_add_last_refreshed_to_katello_alternate_content_sources.rb +5 -0
  176. data/db/seeds.d/110-content-view-autopublish.rb +13 -0
  177. data/db/seeds.d/150-module_job_templates.rb +1 -1
  178. data/engines/bastion/README.md +1 -0
  179. data/engines/bastion/app/assets/javascripts/bastion/components/bst-modal.directive.js +1 -0
  180. data/engines/bastion/app/views/bastion/layouts/assets.html.erb +1 -0
  181. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-details.controller.js +4 -2
  182. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/capsule-content/capsule-content.controller.js +11 -6
  183. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-module-streams.controller.js +1 -0
  184. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages-installed.controller.js +1 -0
  185. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-traces.controller.js +1 -0
  186. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-actions.html +1 -1
  187. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-applicable.html +1 -1
  188. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.controller.js +8 -0
  189. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-details.controller.js +4 -2
  190. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +2 -2
  191. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/content.service.js +10 -0
  192. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-deb-repositories.html +26 -0
  193. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-debs.html +27 -0
  194. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/environments.controller.js +1 -0
  195. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/environments.routes.js +22 -0
  196. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/views/environments.html +13 -7
  197. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +63 -17
  198. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +7 -8
  199. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details.controller.js +10 -1
  200. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-details.html +21 -3
  201. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +8 -9
  202. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/mirroring-policy.service.js +1 -1
  203. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +7 -5
  204. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +2 -1
  205. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/discovery-create.controller.js +1 -1
  206. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/views/discovery-create.html +1 -1
  207. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.routes.js +1 -0
  208. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/views/content-access-mode-banner.html +6 -1
  209. data/lib/katello/engine.rb +1 -5
  210. data/lib/katello/permission_creator.rb +34 -4
  211. data/lib/katello/plugin.rb +377 -3
  212. data/lib/katello/tasks/refresh_alternate_content_sources.rake +10 -0
  213. data/lib/katello/tasks/reset.rake.bak +67 -0
  214. data/lib/katello/tasks/update_content_default_http_proxy.rake +2 -3
  215. data/lib/katello/version.rb +1 -1
  216. data/locale/action_names.rb +47 -41
  217. data/locale/bn/LC_MESSAGES/katello.mo +0 -0
  218. data/locale/bn/katello.po +820 -106
  219. data/locale/bn/katello.po.time_stamp +0 -0
  220. data/locale/cs/LC_MESSAGES/katello.mo +0 -0
  221. data/locale/cs/katello.po +818 -104
  222. data/locale/cs/katello.po.time_stamp +0 -0
  223. data/locale/de/LC_MESSAGES/katello.mo +0 -0
  224. data/locale/de/katello.po +893 -179
  225. data/locale/de/katello.po.time_stamp +0 -0
  226. data/locale/en/LC_MESSAGES/katello.mo +0 -0
  227. data/locale/en/katello.po +817 -103
  228. data/locale/en/katello.po.time_stamp +0 -0
  229. data/locale/es/LC_MESSAGES/katello.mo +0 -0
  230. data/locale/es/katello.po +882 -168
  231. data/locale/es/katello.po.time_stamp +0 -0
  232. data/locale/fr/LC_MESSAGES/katello.mo +0 -0
  233. data/locale/fr/katello.po +1219 -505
  234. data/locale/fr/katello.po.time_stamp +0 -0
  235. data/locale/gu/LC_MESSAGES/katello.mo +0 -0
  236. data/locale/gu/katello.po +826 -112
  237. data/locale/gu/katello.po.time_stamp +0 -0
  238. data/locale/hi/LC_MESSAGES/katello.mo +0 -0
  239. data/locale/hi/katello.po +826 -112
  240. data/locale/hi/katello.po.time_stamp +0 -0
  241. data/locale/it/LC_MESSAGES/katello.mo +0 -0
  242. data/locale/it/katello.po +863 -148
  243. data/locale/it/katello.po.time_stamp +0 -0
  244. data/locale/ja/LC_MESSAGES/katello.mo +0 -0
  245. data/locale/ja/katello.po +1216 -499
  246. data/locale/ja/katello.po.time_stamp +0 -0
  247. data/locale/katello.pot +3847 -2507
  248. data/locale/kn/LC_MESSAGES/katello.mo +0 -0
  249. data/locale/kn/katello.po +826 -112
  250. data/locale/kn/katello.po.time_stamp +0 -0
  251. data/locale/ko/LC_MESSAGES/katello.mo +0 -0
  252. data/locale/ko/katello.po +912 -198
  253. data/locale/ko/katello.po.time_stamp +0 -0
  254. data/locale/mr/LC_MESSAGES/katello.mo +0 -0
  255. data/locale/mr/katello.po +826 -112
  256. data/locale/mr/katello.po.time_stamp +0 -0
  257. data/locale/or/LC_MESSAGES/katello.mo +0 -0
  258. data/locale/or/katello.po +826 -112
  259. data/locale/or/katello.po.time_stamp +0 -0
  260. data/locale/pa/LC_MESSAGES/katello.mo +0 -0
  261. data/locale/pa/katello.po +826 -112
  262. data/locale/pa/katello.po.time_stamp +0 -0
  263. data/locale/pt/LC_MESSAGES/katello.mo +0 -0
  264. data/locale/pt/katello.po +817 -103
  265. data/locale/pt/katello.po.time_stamp +0 -0
  266. data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
  267. data/locale/pt_BR/katello.po +879 -165
  268. data/locale/pt_BR/katello.po.time_stamp +0 -0
  269. data/locale/ru/LC_MESSAGES/katello.mo +0 -0
  270. data/locale/ru/katello.po +927 -213
  271. data/locale/ru/katello.po.time_stamp +0 -0
  272. data/locale/ta/LC_MESSAGES/katello.mo +0 -0
  273. data/locale/ta/katello.po +820 -106
  274. data/locale/ta/katello.po.time_stamp +0 -0
  275. data/locale/te/LC_MESSAGES/katello.mo +0 -0
  276. data/locale/te/katello.po +826 -112
  277. data/locale/te/katello.po.time_stamp +0 -0
  278. data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
  279. data/locale/zh_CN/katello.po +1202 -486
  280. data/locale/zh_CN/katello.po.time_stamp +0 -0
  281. data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
  282. data/locale/zh_TW/katello.po +856 -142
  283. data/locale/zh_TW/katello.po.time_stamp +0 -0
  284. data/webpack/components/Bookmark/index.js +22 -14
  285. data/webpack/components/EditableTextInput/EditableTextInput.js +20 -5
  286. data/webpack/components/Errata/index.js +38 -8
  287. data/webpack/components/Packages/index.js +1 -4
  288. data/webpack/components/Search/Search.js +22 -3
  289. data/webpack/components/SelectAllCheckbox/index.js +1 -0
  290. data/webpack/components/SelectableDropdown/SelectableDropdown.js +4 -2
  291. data/webpack/components/Table/EmptyStateMessage.js +21 -7
  292. data/webpack/components/Table/MainTable.js +29 -4
  293. data/webpack/components/Table/MainTable.scss +5 -1
  294. data/webpack/components/Table/TableHooks.js +65 -20
  295. data/webpack/components/Table/TableWrapper.js +9 -3
  296. data/webpack/components/Table/components/SortableColumnHeaders.js +19 -0
  297. data/webpack/components/Table/components/TranslatedPlural.js +57 -0
  298. data/webpack/components/TypeAhead/TypeAhead.js +12 -0
  299. data/webpack/components/TypeAhead/pf4Search/TypeAheadInput.js +13 -11
  300. data/webpack/components/TypeAhead/pf4Search/TypeAheadSearch.js +7 -2
  301. data/webpack/components/extensions/HostDetails/ActionsBar/index.js +27 -0
  302. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ChangeHostCVModal.js +250 -0
  303. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ContentViewDetailsCard.js +232 -0
  304. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/HostContentViewActions.js +19 -0
  305. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/HostContentViewConstants.js +2 -0
  306. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/__tests__/changeHostCVModal.test.js +131 -0
  307. data/webpack/components/extensions/HostDetails/Cards/{__tests__ → ContentViewDetailsCard/__tests__}/contentViewDetailsCard.test.js +22 -0
  308. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/__tests__/contentViews.fixtures.json +443 -0
  309. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/__tests__/envPaths.fixtures.json +320 -0
  310. data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.js +57 -33
  311. data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.scss +3 -0
  312. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsActions.js +30 -0
  313. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsCard.js +206 -0
  314. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsConstants.js +7 -0
  315. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsModal.js +227 -0
  316. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsSelectors.js +18 -0
  317. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/__tests__/availableHostCollections.fixtures.json +106 -0
  318. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/__tests__/hostCollectionsCard.test.js +118 -0
  319. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/__tests__/hostCollectionsModal.test.js +235 -0
  320. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/__tests__/removableHostCollections.fixtures.json +45 -0
  321. data/webpack/components/extensions/HostDetails/Cards/__tests__/errataOverviewCard.test.js +33 -8
  322. data/webpack/components/extensions/HostDetails/DetailsTabCards/InstalledProductsCard.js +44 -0
  323. data/webpack/components/extensions/HostDetails/DetailsTabCards/RecentCommunicationCardExtensions.js +37 -0
  324. data/webpack/components/extensions/HostDetails/DetailsTabCards/RegistrationCard.js +107 -0
  325. data/webpack/components/extensions/HostDetails/DetailsTabCards/SystemPropertiesCardExtensions.js +38 -0
  326. data/webpack/components/extensions/HostDetails/HostDetailsActions.js +11 -0
  327. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/SecondaryTabsRoutes.js +4 -0
  328. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/constants.js +2 -0
  329. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/index.js +6 -1
  330. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.js +176 -72
  331. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/HostErrataActions.js +1 -7
  332. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsActions.js +1 -3
  333. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsConstants.js +28 -0
  334. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsTab.js +522 -118
  335. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/HostPackagesActions.js +1 -7
  336. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackageInstallModal.js +6 -4
  337. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.js +164 -58
  338. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionActions.js +59 -49
  339. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionConstants.js +1 -0
  340. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionHooks.js +85 -0
  341. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsActions.js +33 -54
  342. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsConstants.js +20 -0
  343. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +298 -107
  344. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/EnableTracerModal.js +14 -7
  345. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/HostTracesActions.js +2 -1
  346. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesEnabler.js +104 -0
  347. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesTab.js +134 -57
  348. data/webpack/components/extensions/HostDetails/Tabs/__tests__/errataTab.test.js +37 -32
  349. data/webpack/components/extensions/HostDetails/Tabs/{ModuleStreamsTab/__tests__/modules.fixtures.json → __tests__/moduleStreams.fixtures.json} +6 -3
  350. data/webpack/components/extensions/HostDetails/Tabs/__tests__/moduleStreamsTab.test.js +261 -0
  351. data/webpack/components/extensions/HostDetails/Tabs/__tests__/packageInstallModal.test.js +21 -15
  352. data/webpack/components/extensions/HostDetails/Tabs/__tests__/packagesTab.test.js +44 -1
  353. data/webpack/components/extensions/HostDetails/Tabs/__tests__/repositorySets.fixtures.json +4 -1
  354. data/webpack/components/extensions/HostDetails/Tabs/__tests__/repositorySetsTab.test.js +105 -6
  355. data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracesTab.test.js +25 -6
  356. data/webpack/components/extensions/HostDetails/Tabs/customizedRexUrlHelpers.js +6 -0
  357. data/webpack/components/extensions/HostDetails/hostDetailsHelpers.js +18 -0
  358. data/webpack/containers/Application/config.js +5 -0
  359. data/webpack/global_index.js +32 -9
  360. data/webpack/global_test_setup.js +13 -0
  361. data/webpack/redux/actions/RedHatRepositories/enabled.js +2 -1
  362. data/webpack/redux/actions/RedHatRepositories/helpers.js +13 -8
  363. data/webpack/scenes/AlternateContentSources/ACSActions.js +65 -0
  364. data/webpack/scenes/AlternateContentSources/ACSConstants.js +18 -0
  365. data/webpack/scenes/AlternateContentSources/ACSIndexPage.js +23 -0
  366. data/webpack/scenes/AlternateContentSources/ACSSelectors.js +24 -0
  367. data/webpack/scenes/AlternateContentSources/Create/ACSCreateContext.js +4 -0
  368. data/webpack/scenes/AlternateContentSources/Create/ACSCreateWizard.js +160 -0
  369. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSCreateFinish.js +79 -0
  370. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSCredentials.js +199 -0
  371. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSReview.js +104 -0
  372. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSSmartProxies.js +41 -0
  373. data/webpack/scenes/AlternateContentSources/Create/Steps/AcsUrlPaths.js +71 -0
  374. data/webpack/scenes/AlternateContentSources/Create/Steps/NameACS.js +57 -0
  375. data/webpack/scenes/AlternateContentSources/Create/Steps/SelectSource.js +77 -0
  376. data/webpack/scenes/AlternateContentSources/Create/__tests__/acsCreate.test.js +149 -0
  377. data/webpack/scenes/AlternateContentSources/Create/__tests__/acsCreateData.fixtures.json +3 -0
  378. data/webpack/scenes/AlternateContentSources/Create/__tests__/contentCredentials.fixtures.json +69 -0
  379. data/webpack/scenes/AlternateContentSources/Create/__tests__/smartProxy.fixtures.json +65 -0
  380. data/webpack/scenes/AlternateContentSources/MainTable/ACSTable.js +162 -0
  381. data/webpack/scenes/AlternateContentSources/MainTable/__tests__/acsIndex.fixtures.json +91 -0
  382. data/webpack/scenes/AlternateContentSources/MainTable/__tests__/acsTable.test.js +67 -0
  383. data/webpack/scenes/AlternateContentSources/index.js +4 -0
  384. data/webpack/scenes/Content/Details/ContentRepositories.js +1 -0
  385. data/webpack/scenes/Content/Table/ContentTable.js +1 -0
  386. data/webpack/scenes/ContentCredentials/ContentCredentialSelectors.js +4 -1
  387. data/webpack/scenes/ContentViews/ContentViewsActions.js +6 -2
  388. data/webpack/scenes/ContentViews/ContentViewsConstants.js +11 -3
  389. data/webpack/scenes/ContentViews/Copy/CopyContentViewForm.js +2 -1
  390. data/webpack/scenes/ContentViews/Create/ContentViewFormComponents.js +10 -1
  391. data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +4 -3
  392. data/webpack/scenes/ContentViews/Create/__tests__/createContentView.test.js +1 -1
  393. data/webpack/scenes/ContentViews/Delete/ContentViewDeleteWizard.js +7 -5
  394. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionFinish.js +29 -21
  395. data/webpack/scenes/ContentViews/Delete/__tests__/contentViewDelete.test.js +15 -8
  396. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewAddModal.js +3 -3
  397. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewBulkAddModal.js +4 -4
  398. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +3 -1
  399. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +4 -4
  400. data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +34 -8
  401. data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +33 -29
  402. data/webpack/scenes/ContentViews/Details/ContentViewDetails.js +130 -79
  403. data/webpack/scenes/ContentViews/Details/ContentViewInfo.js +17 -3
  404. data/webpack/scenes/ContentViews/Details/Filters/Add/CVFilterAddModal.js +2 -1
  405. data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositoryTable.js +2 -1
  406. data/webpack/scenes/ContentViews/Details/Filters/CVContainerImageFilterContent.js +6 -1
  407. data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +41 -21
  408. data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +38 -20
  409. data/webpack/scenes/ContentViews/Details/Filters/CVModuleStreamFilterContent.js +2 -0
  410. data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +8 -1
  411. data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +9 -1
  412. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +2 -1
  413. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/CVRpmMatchContentModal.js +1 -0
  414. data/webpack/scenes/ContentViews/Details/Filters/Rules/ContainerTag/AddEditContainerTagRuleModal.js +27 -12
  415. data/webpack/scenes/ContentViews/Details/Filters/Rules/Package/AddEditPackageRuleModal.js +39 -17
  416. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVContainerImageFilterContent.test.js +27 -10
  417. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVRpmFilterContent.test.js +46 -23
  418. data/webpack/scenes/ContentViews/Details/Histories/ContentViewHistories.js +3 -2
  419. data/webpack/scenes/ContentViews/Details/Promote/ContentViewVersionPromote.js +5 -2
  420. data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +161 -108
  421. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +7 -7
  422. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewRepoAdd.fixture.json +1 -0
  423. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/ActionSummary.js +58 -0
  424. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/BulkDeleteContextWrapper.js +45 -0
  425. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/BulkDeleteHelpers.js +30 -0
  426. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/BulkDeleteModal.js +56 -0
  427. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ConfirmBulkDelete.js +126 -0
  428. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/FinishBulkDelete.js +61 -0
  429. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReassignActivationKeys.js +196 -0
  430. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReassignHosts.js +220 -0
  431. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReviewEnvironments.js +104 -0
  432. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/BulkDeleteModal.test.js +122 -0
  433. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/BulkDeleteVersions.fixtures.json +600 -0
  434. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/contentView.fixtures.json +1504 -0
  435. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/contentViewVersion.fixtures.json +936 -0
  436. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/environmentPaths.fixtures.json +261 -0
  437. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/hosts.fixtures.json +163 -0
  438. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/bulkDeleteSteps.js +79 -0
  439. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +192 -167
  440. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveCVVersionWizard.js +2 -5
  441. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionDeleteFinish.js +38 -53
  442. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionRemoveReview.js +1 -1
  443. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemove.test.js +6 -12
  444. data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedActivationKeys.js +1 -0
  445. data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedHosts.js +1 -0
  446. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailConfig.js +1 -0
  447. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.js +8 -20
  448. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsHeader.js +23 -13
  449. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsTable.js +3 -0
  450. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.fixtures.json +4 -4
  451. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.test.js +0 -3
  452. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetailsEmpty.test.js +4 -4
  453. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +12 -14
  454. data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetails.fixtures.json +1 -0
  455. data/webpack/scenes/ContentViews/Publish/CVPublishFinish.js +96 -117
  456. data/webpack/scenes/ContentViews/Publish/PublishContentViewWizard.js +13 -19
  457. data/webpack/scenes/ContentViews/Publish/__tests__/publishContentView.test.js +9 -20
  458. data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +165 -148
  459. data/webpack/scenes/ContentViews/Table/tableDataGenerator.js +2 -0
  460. data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +4 -4
  461. data/webpack/scenes/ContentViews/components/ContentViewIcon.js +14 -3
  462. data/webpack/scenes/ContentViews/components/ContentViewsCounter.js +1 -1
  463. data/webpack/scenes/ContentViews/components/EnvironmentLabels.js +4 -3
  464. data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.js +10 -6
  465. data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.scss +6 -1
  466. data/webpack/scenes/ContentViews/components/TaskPresenter/TaskPresenter.js +40 -35
  467. data/webpack/scenes/ContentViews/expansions/DetailsExpansion.js +2 -2
  468. data/webpack/scenes/ContentViews/expansions/RelatedCompositeContentViewsModal.js +1 -1
  469. data/webpack/scenes/ContentViews/expansions/RelatedContentViewComponentsModal.js +4 -4
  470. data/webpack/scenes/ContentViews/expansions/__tests__/contentViewComponentsModal.test.js +1 -1
  471. data/webpack/scenes/ContentViews/helpers.js +3 -0
  472. data/webpack/scenes/Hosts/ChangeContentSource/helpers.js +5 -0
  473. data/webpack/scenes/ModuleStreams/Details/ModuleDetailsSchema.js +1 -10
  474. data/webpack/scenes/ModuleStreams/Details/ModuleStreamDetails.js +13 -14
  475. data/webpack/scenes/ModuleStreams/Details/__tests__/__snapshots__/ModuleStreamDetails.test.js.snap +17 -100
  476. data/webpack/scenes/RedHatRepositories/RedHatRepositoriesPage.js +3 -3
  477. data/webpack/scenes/RedHatRepositories/components/EnabledRepository/EnabledRepository.js +2 -1
  478. data/webpack/scenes/RedHatRepositories/components/EnabledRepository/__tests__/EnabledRepository.test.js +2 -0
  479. data/webpack/scenes/RedHatRepositories/components/Search.js +4 -4
  480. data/webpack/scenes/SmartProxy/SmartProxyContentActions.js +9 -2
  481. data/webpack/scenes/SmartProxy/SmartProxyContentConstants.js +1 -1
  482. data/webpack/scenes/SmartProxy/SmartProxyContentSelectors.js +10 -1
  483. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CdnConfigurationConstants.js +3 -3
  484. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CdnTypeForm.js +2 -0
  485. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/{AirGappedTypeForm.js → ExportSyncForm.js} +7 -6
  486. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/{UpstreamServerTypeForm.js → NetworkSyncForm.js} +15 -7
  487. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/{AirGappedTypeForm.test.js → ExportSyncForm.test.js} +4 -4
  488. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/{UpstreamServerTypeForm.test.js → NetworkSyncForm.test.js} +8 -8
  489. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/index.js +11 -11
  490. data/webpack/scenes/Subscriptions/SubscriptionConstants.js +1 -0
  491. data/webpack/scenes/Subscriptions/SubscriptionsPage.js +8 -7
  492. data/webpack/scenes/Tasks/TaskActions.js +6 -0
  493. data/webpack/scenes/Tasks/TaskSelectors.js +11 -0
  494. data/webpack/scenes/Tasks/helpers.js +60 -5
  495. data/webpack/utils/helpers.js +2 -0
  496. metadata +186 -41
  497. data/app/models/setting/content.rb +0 -201
  498. data/db/seeds.d/107-enable_dynflow.rb +0 -8
  499. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard.js +0 -96
  500. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/__tests__/moduleStreamsTab.test.js +0 -108
  501. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/EnableTracerEmptyState.js +0 -42
  502. data/webpack/scenes/ContentViews/Details/DetailsContainer.js +0 -36
@@ -1,403 +1,4 @@
1
1
  class MigrateContentHosts < ActiveRecord::Migration[4.2]
2
- HYPERVISOR_CLASS = 'Katello::Hypervisor'.freeze
3
-
4
- class Location < ApplicationRecord
5
- self.table_name = "taxonomies"
6
-
7
- def self.default_location
8
- location = MigrateContentHosts::Location.where(:katello_default => true).first
9
- location.becomes(MigrateContentHosts::Location)
10
- end
11
- end
12
-
13
- class Organization < ApplicationRecord
14
- self.table_name = "taxonomies"
15
-
16
- has_many :kt_environments, :class_name => "MigrateContentHosts::KTEnvironment",
17
- :dependent => :restrict_with_exception, :inverse_of => :organization
18
- end
19
-
20
- class SmartProxy < ApplicationRecord
21
- self.table_name = "smart_proxies"
22
-
23
- belongs_to :content_host, :class_name => "MigrateContentHosts::System", :inverse_of => :capsule
24
- end
25
-
26
- class KTEnvironment < ApplicationRecord
27
- self.table_name = "katello_environments"
28
-
29
- belongs_to :organization, :class_name => "MigrateContentHosts::Organization", :inverse_of => :kt_environments
30
-
31
- has_many :content_facets, :class_name => "MigrateContentHosts::ContentFacet", :foreign_key => :lifecycle_environment_id,
32
- :inverse_of => :lifecycle_environment, :dependent => :restrict_with_exception
33
- has_many :systems, :class_name => "MigrateContentHosts::System", :inverse_of => :environment,
34
- :dependent => :restrict_with_exception, :foreign_key => :environment_id
35
- end
36
-
37
- class ContentView < ApplicationRecord
38
- self.table_name = "katello_content_views"
39
-
40
- has_many :systems, :class_name => "MigrateContentHosts::System", :dependent => :restrict_with_exception
41
- has_many :content_facets, :class_name => "MigrateContentHosts::ContentFacet",
42
- :inverse_of => :content_view, :dependent => :restrict_with_exception
43
- end
44
-
45
- class Repository < ApplicationRecord
46
- self.table_name = "katello_repositories"
47
-
48
- has_many :content_facet_repositories, :class_name => "MigrateContentHosts::ContentFacetRepository", :dependent => :destroy
49
- has_many :content_facets, :through => :content_facet_repositories
50
-
51
- has_many :system_repositories, :class_name => "MigrateContentHosts::SystemRepository", :dependent => :destroy
52
- has_many :systems, :through => :system_repositories
53
- end
54
-
55
- class SystemRepository < ApplicationRecord
56
- self.table_name = "katello_system_repositories"
57
- belongs_to :system, :inverse_of => :system_repositories, :class_name => 'MigrateContentHosts::System'
58
- belongs_to :repository, :inverse_of => :system_repositories, :class_name => 'MigrateContentHosts::Repository'
59
- end
60
-
61
- class HostCollection < ApplicationRecord
62
- self.table_name = "katello_host_collection"
63
-
64
- has_many :system_host_collections, :class_name => "MigrateContentHosts::SystemHostCollection", :dependent => :destroy
65
- has_many :systems, :through => :system_host_collections, :class_name => "MigrateContentHosts::System"
66
- end
67
-
68
- class SystemHostCollections < ApplicationRecord
69
- self.table_name = "katello_system_host_collections"
70
-
71
- belongs_to :system, :inverse_of => :system_host_collections, :class_name => 'MigrateContentHosts::System'
72
- belongs_to :host_collection, :inverse_of => :system_host_collections
73
- end
74
-
75
- class Erratum < ApplicationRecord
76
- self.table_name = "katello_errata"
77
-
78
- has_many :systems_applicable, :through => :system_errata, :class_name => "MigrateContentHosts::System", :source => :system
79
- has_many :content_facet_errata, :class_name => "MigrateContentHosts::ContentFacetErratum", :source => :erratum
80
- end
81
-
82
- class SystemErratum < ApplicationRecord
83
- self.table_name = "katello_system_errata"
84
-
85
- belongs_to :system, :inverse_of => :system_errata, :class_name => 'MigrateContentHosts::System'
86
- belongs_to :erratum, :inverse_of => :system_errata, :class_name => 'MigrateContentHosts::Erratum'
87
- end
88
-
89
- class ActivationKey < ApplicationRecord
90
- self.table_name = "katello_activation_keys"
91
-
92
- has_many :system_activation_keys, :class_name => "MigrateContentHosts::SystemActivationKey", :dependent => :destroy
93
- has_many :subscription_facet_activation_keys, :class_name => "MigrateContentHosts::SubscriptionFacetActivationKey", :dependent => :destroy
94
- has_many :subscription_facets, :through => :subscription_facet_activation_keys
95
- end
96
-
97
- class SystemActivationKey < ApplicationRecord
98
- self.table_name = "katello_system_activation_keys"
99
-
100
- belongs_to :system, :inverse_of => :system_activation_keys
101
- belongs_to :activation_key, :inverse_of => :system_activation_keys
102
- end
103
-
104
- class Host < ApplicationRecord
105
- self.table_name = "hosts"
106
- self.inheritance_column = nil
107
-
108
- has_one :content_facet, :class_name => "MigrateContentHosts::ContentFacet", :dependent => :destroy
109
- has_one :subscription_facet, :class_name => "MigrateContentHosts::SubscriptionFacet", :dependent => :destroy
110
-
111
- belongs_to :organization, :class_name => "MigrateContentHosts::Organization"
112
- belongs_to :location, :class_name => "MigrateContentHosts::Location"
113
- end
114
-
115
- class System < ApplicationRecord
116
- self.table_name = "katello_systems"
117
- self.inheritance_column = nil
118
-
119
- def backend_data
120
- @data ||= ::Katello::Resources::Candlepin::Consumer.get(uuid)
121
- end
122
-
123
- def facts
124
- backend_data[:facts]
125
- end
126
-
127
- belongs_to :content_view, :inverse_of => :systems, :class_name => "MigrateContentHosts::ContentView"
128
- belongs_to :environment, :class_name => "MigrateContentHosts::KTEnvironment", :inverse_of => :systems
129
-
130
- has_many :system_activation_keys, :class_name => "MigrateContentHosts::SystemActivationKey", :dependent => :destroy
131
- has_many :activation_keys, :through => :system_activation_keys
132
- has_many :system_host_collections, :class_name => "MigrateContentHosts::SystemHostCollections", :dependent => :destroy
133
- has_many :host_collections, :through => :system_host_collections
134
- has_many :applicable_errata, :through => :system_errata, :class_name => "MigrateContentHosts::Erratum", :source => :erratum
135
- has_many :system_errata, :class_name => "MigrateContentHosts::SystemErratum", :dependent => :destroy, :inverse_of => :system
136
- has_many :bound_repositories, :through => :system_repositories, :class_name => "MigrateContentHosts::Repository", :source => :repository
137
- has_many :system_repositories, :class_name => "MigrateContentHosts::SystemRepository", :dependent => :destroy, :inverse_of => :system
138
-
139
- has_one :capsule, :class_name => "MigrateContentHosts::SmartProxy", :inverse_of => :content_host, :foreign_key => :content_host_id, :dependent => :nullify
140
- end
141
-
142
- class ContentFacet < ApplicationRecord
143
- self.table_name = "katello_content_facets"
144
-
145
- belongs_to :host, :inverse_of => :content_facet, :class_name => "MigrateContentHosts::Host"
146
- belongs_to :content_view, :inverse_of => :content_facets, :class_name => "MigrateContentHosts::ContentView"
147
- belongs_to :lifecycle_environment, :inverse_of => :content_facets, :class_name => "MigrateContentHosts::KTEnvironment"
148
-
149
- has_many :content_facet_repositories, :class_name => "MigrateContentHosts::ContentFacetRepository", :dependent => :destroy, :inverse_of => :content_facet
150
- has_many :bound_repositories, :through => :content_facet_repositories, :class_name => "MigrateContentHosts::Repository", :source => :repository
151
- has_many :applicable_errata, :through => :content_facet_errata, :class_name => "MigrateContentHosts::Erratum", :source => :erratum
152
- has_many :content_facet_errata, :class_name => "MigrateContentHosts::ContentFacetErratum", :dependent => :destroy, :inverse_of => :content_facet
153
- end
154
-
155
- class ContentFacetRepository < ApplicationRecord
156
- self.table_name = "katello_content_facet_repositories"
157
-
158
- belongs_to :content_facet, :inverse_of => :content_facet_repositories, :class_name => 'MigrateContentHosts::ContentFacet'
159
- belongs_to :repository, :inverse_of => :content_facet_repositories, :class_name => 'MigrateContentHosts::Repository'
160
- end
161
-
162
- class ContentFacetErratum < ApplicationRecord
163
- self.table_name = "katello_content_facet_errata"
164
-
165
- belongs_to :content_facet, :inverse_of => :content_facet_errata, :class_name => 'MigrateContentHosts::ContentFacet'
166
- belongs_to :erratum, :inverse_of => :content_facet_errata, :class_name => 'MigrateContentHosts::Erratum'
167
- end
168
-
169
- class SubscriptionFacet < ApplicationRecord
170
- self.table_name = "katello_subscription_facets"
171
-
172
- belongs_to :host, :inverse_of => :subscription_facet, :class_name => "MigrateContentHosts::Host"
173
- has_many :activation_keys, :through => :subscription_facet_activation_keys, :class_name => "MigrateContentHosts::ActivationKey"
174
- has_many :subscription_facet_activation_keys, :class_name => "MigrateContentHosts::SubscriptionFacetActivationKey", :dependent => :destroy, :inverse_of => :subscription_facet
175
- end
176
-
177
- class SubscriptionFacetActivationKey < ApplicationRecord
178
- self.table_name = "katello_subscription_facet_activation_keys"
179
-
180
- belongs_to :subscription_facet, :inverse_of => :subscription_facet_activation_keys, :class_name => 'MigrateContentHosts::SubscriptionFacet'
181
- belongs_to :activation_key, :inverse_of => :subscription_facet_activation_keys, :class_name => 'MigrateContentHosts::ActivationKey'
182
- end
183
-
184
- def logger
185
- Rails.logger
186
- end
187
-
188
- def create_content_facet(host, system, include_env_and_view_only = false)
189
- logger.info("Creating content facet for host #{host.name}.")
190
- content_facet = host.content_facet = MigrateContentHosts::ContentFacet.new(:content_view => system.content_view,
191
- :lifecycle_environment => system.environment)
192
- unless include_env_and_view_only
193
- content_facet.uuid = system.uuid
194
- content_facet.bound_repositories = system.bound_repositories
195
- content_facet.applicable_errata = system.applicable_errata
196
- end
197
- content_facet.save!
198
- end
199
-
200
- def create_subscription_facet(host, system)
201
- logger.info("Creating subscription facet for host #{host.name}.")
202
- subscription_facet = host.subscription_facet = MigrateContentHosts::SubscriptionFacet.new
203
- subscription_facet.activation_keys = system.activation_keys.uniq
204
- subscription_facet.uuid = system.uuid
205
- subscription_facet.save!
206
- end
207
-
208
- def get_systems_with_facts(systems)
209
- systems_to_remove = []
210
- systems = systems.to_a
211
-
212
- systems.each do |system|
213
- facts = system.facts
214
- unless facts
215
- systems_to_remove.push(system)
216
- end
217
- rescue RestClient::Exception
218
- systems_to_remove.push(system)
219
- end
220
-
221
- systems_to_remove.each do |system|
222
- logger.info("Content Host #{system.uuid} doesn't have candlepin information, unregistering.")
223
- if (system_proxy = SmartProxy.find_by_content_host_id(system.id))
224
- system_proxy.content_host_id = nil
225
- system_proxy.save
226
- end
227
- systems.delete(system)
228
- unregister_system(system)
229
- end
230
-
231
- systems
232
- end
233
-
234
- def group_systems_by_hostname(systems)
235
- system_hostnames = {}
236
-
237
- systems.each do |system|
238
- hostname = system.facts['network.hostname']
239
-
240
- if system_hostnames[hostname]
241
- system_hostnames[hostname].push(system)
242
- else
243
- system_hostnames[hostname] = [system]
244
- end
245
- end
246
-
247
- system_hostnames
248
- end
249
-
250
- def ensure_one_system_per_hostname(systems)
251
- # ensure only one system exists per hostname and unregister all except the last registered
252
- systems = get_systems_with_facts(systems)
253
- system_hostnames = group_systems_by_hostname(systems)
254
-
255
- system_hostnames.each do |hostname, duplicate_systems|
256
- if duplicate_systems.count > 1
257
- logger.warn("Multiple content hosts with the hostname #{hostname} found, unregistering all except last registered.")
258
- unregister_all_but_last_system(duplicate_systems)
259
- end
260
- end
261
- end
262
-
263
- def unregister_system(system)
264
- logger.warn("Unregistering content host with UUID: #{system.uuid}")
265
-
266
- begin
267
- logger.info("Removing Candlepin consumer #{system.uuid}")
268
- Katello::Resources::Candlepin::Consumer.destroy(system.uuid)
269
- rescue RestClient::Exception => e
270
- logger.warn("Exception when destroying candlepin consumer #{system.uuid}:#{e.inspect}")
271
- end
272
-
273
- begin
274
- logger.info("Removing Pulp consumer #{system.uuid}")
275
- Katello.pulp_server.extensions.consumer.delete(system.uuid)
276
- rescue RestClient::ResourceNotFound
277
- logger.warn("Pulp consumer not found for consumer #{system.uuid} proceeding.")
278
- #do nothing
279
- rescue RestClient::Exception => e
280
- logger.warn("Exception when destroying pulp consumer #{system.uuid}:#{e.inspect}")
281
- end
282
-
283
- logger.info("Removing system #{system.uuid}")
284
- system.destroy
285
- end
286
-
287
- def unregister_all_but_last_system(systems)
288
- systems_by_created_date = systems.sort_by(&:created_at)
289
- system = systems_by_created_date.pop
290
-
291
- systems_by_created_date.each do |system_to_remove|
292
- unregister_system(system_to_remove)
293
- end
294
-
295
- system
296
- end
297
-
298
- def handle_hypervisors
299
- MigrateContentHosts::System.where(:type => HYPERVISOR_CLASS).find_each do |hypervisor|
300
- org = hypervisor.environment.organization
301
- name = "virt-who-#{hypervisor.name}-#{org.id}"
302
-
303
- host = ::Host.find_by(:name => name)
304
- if host.nil?
305
- host = MigrateContentHosts::Host.create!(:name => name, :organization => org.becomes(MigrateContentHosts::Organization), :managed => false,
306
- :type => "Host::Managed", :location => MigrateContentHosts::Location.default_location)
307
- elsif host.organization != org
308
- logger.warn("Found host with name #{name} but it's in org #{host.organization.name} instead of #{org.name}.")
309
- unregister_system(hypervisor)
310
- next
311
- end
312
- hypervisor.host_id = host.id
313
- hypervisor.save!
314
- create_subscription_facet(host, hypervisor) unless host.subscription_facet
315
- update_hypervisor_consumer(hypervisor)
316
- end
317
- end
318
-
319
- def update_hypervisor_consumer(hypervisor)
320
- org = hypervisor.environment.organization
321
- hypervisor.content_view = org.default_content_view.becomes(MigrateContentHosts::ContentView)
322
- hypervisor.environment = org.library.becomes(MigrateContentHosts::KTEnvironment)
323
- hypervisor.save!
324
-
325
- candlepin_environment_id = org.default_content_view.content_view_environments.first.cp_id
326
- ::Katello::Resources::Candlepin::Consumer.update(hypervisor.uuid, 'environment' => {'id' => candlepin_environment_id})
327
- end
328
-
329
- # rubocop:disable Metrics/MethodLength
330
- # rubocop:disable Metrics/AbcSize
331
2
  def up
332
- unless User.unscoped.where(:login => User::ANONYMOUS_API_ADMIN).exists?
333
- logger.warn("Foreman anonymous admin does not exist, skipping content host migration.")
334
- return
335
- end
336
-
337
- User.current = User.anonymous_api_admin
338
- system_count = ::MigrateContentHosts::System.all.count
339
-
340
- return true if system_count == 0
341
-
342
- ping = ::Katello::Ping.ping
343
- if ping[:status] != ::Katello::Ping::OK_RETURN_CODE
344
- fail _("Some backend services are not running: %s") % ping.inspect
345
- end
346
-
347
- ::MigrateContentHosts::System.where(:uuid => nil).destroy_all
348
-
349
- ensure_one_system_per_hostname(MigrateContentHosts::System.where("type != '#{HYPERVISOR_CLASS}'").all)
350
-
351
- systems = get_systems_with_facts(MigrateContentHosts::System.where("type != '#{HYPERVISOR_CLASS}'").all)
352
-
353
- systems.each do |system|
354
- system.environment.organization = system.environment.organization.becomes(MigrateContentHosts::Organization)
355
- hostname = system.facts['network.hostname']
356
-
357
- logger.info("Processing content host #{system.uuid} #{hostname}")
358
-
359
- if hostname.nil?
360
- logger.warn("Content host #{system.uuid} does not have a hostname, removing.")
361
- unregister_system(system)
362
- next
363
- end
364
-
365
- MigrateContentHosts::Host.reset_column_information
366
- hosts = MigrateContentHosts::Host.where(:name => hostname)
367
- if hosts.empty? # no host exists
368
- logger.info("No host exists with hostname #{hostname}, creating new host.")
369
- host = MigrateContentHosts::Host.new(:name => system.facts['network.hostname'], :organization => system.environment.organization,
370
- :type => "Host::Managed", :location => MigrateContentHosts::Location.default_location, :managed => false)
371
- host.save!
372
-
373
- create_content_facet(host, system)
374
- create_subscription_facet(host, system)
375
-
376
- elsif hosts.where(:organization_id => system.environment.organization.id).empty? # host is not in the correct org
377
- if hosts[0].organization
378
- logger.warn("Found host with hostname #{hostname} but it's in org #{hosts[0].organization.name} instead of #{system.environment.organization.name}.")
379
- else
380
- logger.warn("Found host with hostname #{hostname} but it is not in an org, and should be in #{system.environment.organization.name}.")
381
- end
382
- host = hosts.first
383
-
384
- create_content_facet(host, system, true) unless host.content_facet
385
- unregister_system(system)
386
-
387
- else #host exists in the correct org
388
- logger.info("Found host with hostname #{hostname}.")
389
- host = hosts.first
390
-
391
- create_content_facet(host, system) unless host.content_facet
392
- create_subscription_facet(host, system) unless host.subscription_facet
393
- end
394
-
395
- unless system.destroyed? # if the system was unregistered, it will no longer exist
396
- system.host_id = host.id
397
- system.save!
398
- end
399
- end
400
-
401
- handle_hypervisors
402
3
  end
403
4
  end
@@ -1,5 +1,5 @@
1
1
  class RemoveUsePulpOauthSetting < ActiveRecord::Migration[4.2]
2
2
  def up
3
- Setting.where(:name => 'use_pulp_oauth', :category => 'Setting::Content').delete_all
3
+ Setting.where(:name => 'use_pulp_oauth').delete_all
4
4
  end
5
5
  end
@@ -43,7 +43,7 @@ class CleanupInstalledPackages < ActiveRecord::Migration[4.2]
43
43
  # Now do new things
44
44
  add_index :katello_installed_packages, [:nvra], :unique => true
45
45
  add_index :katello_host_installed_packages, [:host_id, :installed_package_id], :unique => true, :name => :katello_host_installed_packages_h_id_ip_id
46
- Setting.where(:name => 'bulk_query_installed_packages', :category => 'Setting::Content').delete_all
46
+ Setting.where(:name => 'bulk_query_installed_packages').delete_all
47
47
  end
48
48
 
49
49
  def down
@@ -1,5 +1,5 @@
1
1
  class CleanUpForcePostSyncActionSetting < ActiveRecord::Migration[5.1]
2
2
  def change
3
- Setting.where(:name => 'force_post_sync_actions', :category => 'Setting::Content').delete_all
3
+ Setting.where(:name => 'force_post_sync_actions').delete_all
4
4
  end
5
5
  end
@@ -1,5 +1,5 @@
1
1
  class RemoveDependencySolvingAlgorithmSetting < ActiveRecord::Migration[6.0]
2
2
  def change
3
- Setting.where(:name => 'dependency_solving_algorithm', :category => 'Setting::Content').delete_all
3
+ Setting.where(:name => 'dependency_solving_algorithm').delete_all
4
4
  end
5
5
  end
@@ -1,6 +1,6 @@
1
1
  class CleanDuplicateContentUnits < ActiveRecord::Migration[6.0]
2
2
  def find_duplicate_groups(model, fields)
3
- model.having("count(*) > 1").group(*fields).pluck("string_agg(id::TEXT, ',') ").map do |ids|
3
+ model.having("count(*) > 1").group(*fields).pluck(Arel.sql("string_agg(id::TEXT, ',')")).map do |ids|
4
4
  ids.split(',').map(&:to_i)
5
5
  end
6
6
  end
@@ -1,20 +1,20 @@
1
1
  class UpdateDisconnectedSettings < ActiveRecord::Migration[6.0]
2
2
  def up
3
- setting_disconnected = Setting.find_by(name: 'content_disconnected', category: 'Setting::Content')
4
- setting = Setting.find_by(name: 'subscription_connection_enabled', category: 'Setting::Content')
3
+ setting_disconnected = Setting.find_by(name: 'content_disconnected')
4
+ setting = Setting.find_by(name: 'subscription_connection_enabled')
5
5
 
6
6
  setting&.update!(
7
7
  value: !setting_disconnected&.value
8
8
  )
9
- Setting.where(:name => 'content_disconnected', :category => 'Setting::Content').delete_all
9
+ Setting.where(:name => 'content_disconnected').delete_all
10
10
  end
11
11
 
12
12
  def down
13
13
  remove_column :katello_cdn_configurations, :airgapped
14
- setting_disconnected = Setting.find_by(name: 'subscription_connection_enabled', category: 'Setting::Content')
14
+ setting_disconnected = Setting.find_by(name: 'subscription_connection_enabled')
15
15
  Setting.set('content_disconnected', N_("A server operating in disconnected mode does not communicate with the Red Hat CDN."),
16
16
  !setting_disconnected.value, N_('Disconnected mode'))
17
17
 
18
- Setting.where(:name => 'subscription_connection_enabled', :category => 'Setting::Content').delete_all
18
+ Setting.where(:name => 'subscription_connection_enabled').delete_all
19
19
  end
20
20
  end
@@ -0,0 +1,48 @@
1
+ # rubocop:disable Metrics/MethodLength
2
+ class AddAlternateContentSources < ActiveRecord::Migration[6.0]
3
+ def up
4
+ create_table :katello_alternate_content_sources do |t|
5
+ t.string :name, limit: 255, null: false
6
+ t.string :label, limit: 255, null: false
7
+ t.text :description
8
+ t.integer :ssl_ca_cert_id
9
+ t.integer :ssl_client_cert_id
10
+ t.integer :ssl_client_key_id
11
+ t.integer :http_proxy_id
12
+ t.string :base_url, limit: 1024
13
+ t.string :subpaths, array: true, default: []
14
+ t.string :content_type, limit: 255, default: 'yum'
15
+ t.string :alternate_content_source_type, limit: 255, default: 'custom', null: false
16
+ t.boolean :verify_ssl, default: true
17
+ t.string 'upstream_username', limit: 255
18
+ t.string 'upstream_password', limit: 1024
19
+ end
20
+
21
+ add_index :katello_alternate_content_sources, :name, :unique => true
22
+ add_index :katello_alternate_content_sources, :label, :unique => true
23
+
24
+ add_foreign_key :katello_alternate_content_sources, :katello_content_credentials, :name => :katello_alternate_content_sources_ssl_ca_cert_id, :column => :ssl_ca_cert_id
25
+ add_foreign_key :katello_alternate_content_sources, :katello_content_credentials, :name => :katello_alternate_content_sources_ssl_client_cert_id, :column => :ssl_client_cert_id
26
+ add_foreign_key :katello_alternate_content_sources, :katello_content_credentials, :name => :katello_alternate_content_sources_ssl_client_key_id, :column => :ssl_client_key_id
27
+ add_foreign_key :katello_alternate_content_sources, :http_proxies, :name => :katello_alternate_content_sources_http_proxy_id, :column => :http_proxy_id
28
+
29
+ create_table :katello_smart_proxy_alternate_content_sources do |t|
30
+ t.references :alternate_content_source, :null => false, index: false
31
+ t.references :smart_proxy, :null => false, index: false
32
+ t.string :remote_href
33
+ t.string :alternate_content_source_href
34
+ t.timestamps
35
+ end
36
+
37
+ add_index :katello_smart_proxy_alternate_content_sources, [:alternate_content_source_id, :smart_proxy_id], :unique => true,
38
+ :name => :index_katello_smart_proxy_acss_on_acs_id_and_smart_proxy_id
39
+
40
+ add_foreign_key :katello_smart_proxy_alternate_content_sources, :katello_alternate_content_sources, :column => :alternate_content_source_id
41
+ add_foreign_key :katello_smart_proxy_alternate_content_sources, :smart_proxies, :column => :smart_proxy_id
42
+ end
43
+
44
+ def down
45
+ drop_table :katello_smart_proxy_alternate_content_sources
46
+ drop_table :katello_alternate_content_sources
47
+ end
48
+ end
@@ -1,15 +1,20 @@
1
1
  class AddTypeToCdnConfiguration < ActiveRecord::Migration[6.0]
2
+ class FakeCdnConfiguration < Katello::Model
3
+ self.table_name = 'katello_cdn_configurations'
4
+ self.inheritance_column = nil
5
+ end
6
+
2
7
  def change
3
8
  add_index :katello_cdn_configurations, :organization_id, unique: true
4
- add_column :katello_cdn_configurations, :type, :string, default: ::Katello::CdnConfiguration::CDN_TYPE
9
+ add_column :katello_cdn_configurations, :type, :string, default: 'redhat_cdn'
5
10
 
6
- ::Katello::CdnConfiguration.reset_column_information
7
- ::Katello::CdnConfiguration.all.each do |config|
11
+ FakeCdnConfiguration.reset_column_information
12
+ FakeCdnConfiguration.all.each do |config|
8
13
  unless config.username.blank? ||
9
14
  config.password.blank? ||
10
15
  config.upstream_organization_label.blank? ||
11
16
  config.ssl_ca_credential_id.blank?
12
- config.update!(type: ::Katello::CdnConfiguration::UPSTREAM_SERVER_TYPE)
17
+ config.update!(type: 'upstream_server')
13
18
  end
14
19
  end
15
20
  end
@@ -0,0 +1,13 @@
1
+ class AddGeneratedForToContentViews < ActiveRecord::Migration[6.0]
2
+ def change
3
+ add_column :katello_content_views, :generated_for, :integer, :default => 0, :null => false
4
+ ::Katello::ContentView.reset_column_information
5
+ ::Katello::ContentView.
6
+ where(label: ::Katello::ContentView::IMPORT_LIBRARY).
7
+ update(generated_for: :library_import)
8
+
9
+ ::Katello::ContentView.
10
+ where('label like ?', "#{::Katello::ContentView::EXPORT_LIBRARY}%").
11
+ update(generated_for: :library_export)
12
+ end
13
+ end
@@ -1,20 +1,20 @@
1
1
  class ExpandSyncTimeoutSettings < ActiveRecord::Migration[6.0]
2
2
  def up
3
- old_timeout_setting = Setting.find_by(name: 'sync_connect_timeout', category: 'Setting::Content')
3
+ old_timeout_setting = Setting.find_by(name: 'sync_connect_timeout')
4
4
  if old_timeout_setting && (old_timeout_setting&.value != old_timeout_setting&.default)
5
5
  Setting.find_by(name: 'sync_total_timeout')&.update(value: old_timeout_setting&.value)
6
6
  Setting.find_by(name: 'sync_sock_read_timeout')&.update(value: old_timeout_setting&.value)
7
7
  end
8
- Setting.where(name: 'sync_connect_timeout', category: 'Setting::Content').delete_all
8
+ Setting.where(name: 'sync_connect_timeout').delete_all
9
9
  end
10
10
 
11
11
  def down
12
- timeout = Setting.find_by(name: 'sync_total_timeout', category: 'Setting::Content')&.value
12
+ timeout = Setting.find_by(name: 'sync_total_timeout')&.value
13
13
 
14
- Setting.where(name: 'sync_total_timeout', category: 'Setting::Content').delete_all
15
- Setting.where(name: 'sync_connect_timeout_v2', category: 'Setting::Content').delete_all
16
- Setting.where(name: 'sync_sock_connect_timeout', category: 'Setting::Content').delete_all
17
- Setting.where(name: 'sync_sock_read_timeout', category: 'Setting::Content').delete_all
14
+ Setting.where(name: 'sync_total_timeout').delete_all
15
+ Setting.where(name: 'sync_connect_timeout_v2').delete_all
16
+ Setting.where(name: 'sync_sock_connect_timeout').delete_all
17
+ Setting.where(name: 'sync_sock_read_timeout').delete_all
18
18
 
19
19
  Setting.create(Setting.set('sync_connect_timeout', N_("Timeout in seconds for downloads when syncing"),
20
20
  300, N_('Sync Connection Timeout')))
@@ -0,0 +1,12 @@
1
+ class RemoveDrpmFromIgnorableContent < ActiveRecord::Migration[6.0]
2
+ def up
3
+ Katello::RootRepository.select { |r| r&.ignorable_content&.include? "drpm" }.each do |root|
4
+ root.ignorable_content = root.ignorable_content - ["drpm"]
5
+ root.save!
6
+ end
7
+ end
8
+
9
+ def down
10
+ fail ActiveRecord::IrreversibleMigration
11
+ end
12
+ end
@@ -1,4 +1,8 @@
1
1
  class RemoveDuplicateErrata < ActiveRecord::Migration[6.0]
2
+ # rubocop:disable Metrics/MethodLength
3
+ # rubocop:disable Metrics/AbcSize
4
+ # rubocop:disable Metrics/CyclomaticComplexity
5
+ # rubocop:disable Metrics/PerceivedComplexity
2
6
  def up
3
7
  #Update all unique errata records to have pulp_id = errata_id
4
8
  ::Katello::Erratum.group(:errata_id).having("count(errata_id) = 1").pluck(:errata_id).each do |original_errata_id|
@@ -24,9 +28,36 @@ class RemoveDuplicateErrata < ActiveRecord::Migration[6.0]
24
28
  repo_erratum.update(erratum_id: errata_to_keep.id)
25
29
  end
26
30
  end
31
+ ::Katello::ContentFacetErratum.where(erratum_id: dup_errata&.map(&:id)).each do |host_erratum|
32
+ if ::Katello::ContentFacetErratum.find_by(content_facet_id: host_erratum.content_facet_id, erratum_id: errata_to_keep.id)
33
+ host_erratum.delete
34
+ else
35
+ host_erratum.update(erratum_id: errata_to_keep.id)
36
+ end
37
+ end
38
+ dup_errata_ids = dup_errata&.pluck(:id)
39
+
40
+ erratum_packages = ::Katello::ErratumPackage.where(:erratum_id => dup_errata_ids)
41
+ erratum_packages.each do |dup_err_package|
42
+ erratum_package_to_keep = ::Katello::ErratumPackage.find_by(erratum_id: errata_to_keep.id, nvrea: dup_err_package.nvrea)
43
+ ::Katello::ModuleStreamErratumPackage.where(erratum_package_id: dup_err_package).each do |dup_mod_errata_package|
44
+ if ::Katello::ModuleStreamErratumPackage.find_by(module_stream_id: dup_mod_errata_package.module_stream_id, erratum_package_id: erratum_package_to_keep&.id)
45
+ dup_mod_errata_package.delete
46
+ elsif erratum_package_to_keep&.id
47
+ begin
48
+ dup_mod_errata_package.update(erratum_package_id: erratum_package_to_keep&.id)
49
+ rescue
50
+ dup_mod_errata_package.delete
51
+ end
52
+ end
53
+ end
54
+ end
55
+
27
56
  dup_errata_ids = dup_errata&.pluck(:id)
28
57
  if dup_errata_ids&.present?
29
- ::Katello::ErratumPackage.where(:erratum_id => dup_errata_ids).delete_all
58
+ erratum_packages = ::Katello::ErratumPackage.where(:erratum_id => dup_errata_ids)
59
+ ::Katello::ModuleStreamErratumPackage.where(erratum_package_id: erratum_packages).delete_all
60
+ erratum_packages.delete_all
30
61
  ::Katello::ErratumBugzilla.where(:erratum_id => dup_errata_ids).delete_all
31
62
  ::Katello::ErratumCve.where(:erratum_id => dup_errata_ids).delete_all
32
63
  ::Katello::Erratum.where(:id => dup_errata_ids).delete_all
@@ -34,7 +65,11 @@ class RemoveDuplicateErrata < ActiveRecord::Migration[6.0]
34
65
  end
35
66
  end
36
67
 
68
+ # rubocop:enable Metrics/MethodLength
69
+ # rubocop:enable Metrics/AbcSize
70
+ # rubocop:enable Metrics/CyclomaticComplexity
71
+ # rubocop:enable Metrics/PerceivedComplexity
37
72
  def down
38
- fail ActiveRecord::IrreversibleMigration
73
+ #Don't do anything on reverse
39
74
  end
40
75
  end