katello 4.4.1 → 4.5.0

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 (488) 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/host_module_streams_controller.rb +8 -2
  16. data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +25 -3
  17. data/app/controllers/katello/api/v2/organizations_controller.rb +4 -2
  18. data/app/controllers/katello/api/v2/repositories_bulk_actions_controller.rb +1 -1
  19. data/app/controllers/katello/api/v2/repositories_controller.rb +1 -1
  20. data/app/controllers/katello/api/v2/repository_sets_controller.rb +40 -7
  21. data/app/controllers/katello/api/v2/subscriptions_controller.rb +2 -2
  22. data/app/controllers/katello/concerns/api/v2/hosts_controller_extensions.rb +1 -1
  23. data/app/helpers/katello/concerns/smart_proxy_helper_extensions.rb +4 -0
  24. data/app/helpers/katello/hosts_and_hostgroups_helper.rb +21 -3
  25. data/app/lib/actions/katello/alternate_content_source/create.rb +24 -0
  26. data/app/lib/actions/katello/alternate_content_source/destroy.rb +27 -0
  27. data/app/lib/actions/katello/alternate_content_source/refresh.rb +27 -0
  28. data/app/lib/actions/katello/alternate_content_source/update.rb +41 -0
  29. data/app/lib/actions/katello/cdn_configuration/update.rb +3 -3
  30. data/app/lib/actions/katello/content_view/destroy.rb +2 -1
  31. data/app/lib/actions/katello/content_view/incremental_updates.rb +7 -3
  32. data/app/lib/actions/katello/content_view/publish.rb +8 -10
  33. data/app/lib/actions/katello/content_view_version/auto_create_products.rb +4 -4
  34. data/app/lib/actions/katello/content_view_version/auto_create_redhat_repositories.rb +6 -4
  35. data/app/lib/actions/katello/content_view_version/auto_create_repositories.rb +6 -4
  36. data/app/lib/actions/katello/content_view_version/import.rb +25 -22
  37. data/app/lib/actions/katello/content_view_version/import_library.rb +0 -1
  38. data/app/lib/actions/katello/content_view_version/import_repository.rb +21 -0
  39. data/app/lib/actions/katello/content_view_version/incremental_update.rb +85 -93
  40. data/app/lib/actions/katello/content_view_version/reset_content_view_repositories_from_metadata.rb +2 -2
  41. data/app/lib/actions/katello/organization/manifest_refresh.rb +1 -1
  42. data/app/lib/actions/katello/product/content_create.rb +10 -8
  43. data/app/lib/actions/katello/repository/destroy.rb +36 -12
  44. data/app/lib/actions/katello/repository_set/disable_repository.rb +8 -3
  45. data/app/lib/actions/pulp3/alternate_content_source/create.rb +20 -0
  46. data/app/lib/actions/pulp3/alternate_content_source/create_remote.rb +20 -0
  47. data/app/lib/actions/pulp3/alternate_content_source/delete.rb +16 -0
  48. data/app/lib/actions/pulp3/alternate_content_source/delete_remote.rb +16 -0
  49. data/app/lib/actions/pulp3/alternate_content_source/refresh.rb +23 -0
  50. data/app/lib/actions/pulp3/alternate_content_source/update.rb +16 -0
  51. data/app/lib/actions/pulp3/alternate_content_source/update_remote.rb +17 -0
  52. data/app/lib/actions/pulp3/content_view_version/{import.rb → create_import.rb} +5 -5
  53. data/app/lib/actions/pulp3/content_view_version/create_importer.rb +4 -3
  54. data/app/lib/actions/pulp3/content_view_version/destroy_importer.rb +12 -1
  55. data/app/lib/actions/pulp3/orchestration/alternate_content_source/create.rb +16 -0
  56. data/app/lib/actions/pulp3/orchestration/alternate_content_source/delete.rb +23 -0
  57. data/app/lib/actions/pulp3/orchestration/alternate_content_source/refresh.rb +15 -0
  58. data/app/lib/actions/pulp3/orchestration/alternate_content_source/update.rb +16 -0
  59. data/app/lib/actions/pulp3/orchestration/content_view_version/copy_version_units_to_library.rb +1 -1
  60. data/app/lib/actions/pulp3/orchestration/content_view_version/export_repository.rb +51 -0
  61. data/app/lib/actions/pulp3/orchestration/content_view_version/import.rb +5 -2
  62. data/app/lib/actions/pulp3/repository/save_artifact.rb +1 -1
  63. data/app/lib/katello/api/v2/error_handling.rb +1 -0
  64. data/app/lib/katello/concerns/base_template_scope_extensions.rb +24 -11
  65. data/app/lib/katello/resources/cdn/katello_cdn.rb +3 -1
  66. data/app/lib/katello/util/errata.rb +2 -3
  67. data/app/lib/katello/validators/alternate_content_source_path_validator.rb +29 -0
  68. data/app/lib/katello/validators/content_default_http_proxy_setting_validator.rb +12 -0
  69. data/app/lib/katello/validators/content_view_environment_validator.rb +10 -5
  70. data/app/models/katello/alternate_content_source.rb +71 -0
  71. data/app/models/katello/authorization/alternate_content_source.rb +33 -0
  72. data/app/models/katello/authorization/repository.rb +5 -3
  73. data/app/models/katello/candlepin/repository_mapper.rb +13 -6
  74. data/app/models/katello/cdn_configuration.rb +15 -15
  75. data/app/models/katello/concerns/content_facet_host_extensions.rb +25 -0
  76. data/app/models/katello/concerns/host_managed_extensions.rb +7 -6
  77. data/app/models/katello/concerns/http_proxy_extensions.rb +14 -0
  78. data/app/models/katello/concerns/organization_extensions.rb +4 -2
  79. data/app/models/katello/concerns/setting_extensions.rb +14 -0
  80. data/app/models/katello/concerns/smart_proxy_extensions.rb +2 -1
  81. data/app/models/katello/content.rb +1 -0
  82. data/app/models/katello/content_credential.rb +6 -0
  83. data/app/models/katello/content_override.rb +7 -3
  84. data/app/models/katello/content_view.rb +33 -2
  85. data/app/models/katello/content_view_erratum_filter.rb +26 -12
  86. data/app/models/katello/content_view_filter.rb +4 -0
  87. data/app/models/katello/content_view_version.rb +12 -0
  88. data/app/models/katello/content_view_version_export_history.rb +3 -1
  89. data/app/models/katello/erratum.rb +9 -5
  90. data/app/models/katello/events/delete_latest_content_view_version.rb +40 -0
  91. data/app/models/katello/host/content_facet.rb +14 -0
  92. data/app/models/katello/host_available_module_stream.rb +12 -0
  93. data/app/models/katello/product_content.rb +1 -0
  94. data/app/models/katello/purpose_sla_status.rb +1 -1
  95. data/app/models/katello/purpose_status.rb +2 -2
  96. data/app/models/katello/repository.rb +7 -4
  97. data/app/models/katello/root_repository.rb +1 -1
  98. data/app/models/katello/smart_proxy_alternate_content_source.rb +8 -0
  99. data/app/models/katello/sync_plan.rb +1 -1
  100. data/app/presenters/katello/product_content_presenter.rb +15 -0
  101. data/app/services/katello/applicable_host_queue.rb +1 -1
  102. data/app/services/katello/product_content_finder.rb +12 -2
  103. data/app/services/katello/pulp3/alternate_content_source.rb +123 -0
  104. data/app/services/katello/pulp3/api/file.rb +8 -0
  105. data/app/services/katello/pulp3/api/yum.rb +8 -0
  106. data/app/services/katello/pulp3/content_view_version/export.rb +27 -5
  107. data/app/services/katello/pulp3/content_view_version/import.rb +104 -71
  108. data/app/services/katello/pulp3/content_view_version/import_export_common.rb +4 -4
  109. data/app/services/katello/pulp3/content_view_version/import_gpg_keys.rb +13 -11
  110. data/app/services/katello/pulp3/content_view_version/import_validator.rb +67 -72
  111. data/app/services/katello/pulp3/content_view_version/importable_products.rb +40 -24
  112. data/app/services/katello/pulp3/content_view_version/importable_repositories.rb +102 -38
  113. data/app/services/katello/pulp3/content_view_version/metadata_generator.rb +2 -2
  114. data/app/services/katello/pulp3/content_view_version/metadata_map.rb +117 -0
  115. data/app/services/katello/pulp3/pulp_content_unit.rb +6 -1
  116. data/app/services/katello/pulp3/repository/yum.rb +70 -12
  117. data/app/services/katello/pulp3/repository.rb +6 -62
  118. data/app/services/katello/pulp3/service_common.rb +66 -0
  119. data/app/services/katello/pulp3/smart_proxy_mirror_repository.rb +4 -1
  120. data/app/services/katello/ui_notifications/content_view/delete_latest_version_failure.rb +22 -0
  121. data/app/views/foreman/job_templates/change_content_source.erb +1 -1
  122. data/app/views/foreman/job_templates/install_errata.erb +5 -5
  123. data/app/views/foreman/job_templates/install_errata_by_search_query.erb +10 -8
  124. data/app/views/foreman/job_templates/install_group.erb +4 -4
  125. data/app/views/foreman/job_templates/install_package.erb +4 -4
  126. data/app/views/foreman/job_templates/install_packages_by_search_query.erb +3 -3
  127. data/app/views/foreman/job_templates/remove_group.erb +4 -4
  128. data/app/views/foreman/job_templates/remove_package.erb +4 -4
  129. data/app/views/foreman/job_templates/remove_packages_by_search_query.erb +3 -3
  130. data/app/views/foreman/job_templates/resolve_traces.erb +2 -2
  131. data/app/views/foreman/job_templates/restart_services.erb +3 -3
  132. data/app/views/foreman/job_templates/update_group.erb +4 -4
  133. data/app/views/foreman/job_templates/update_package.erb +4 -4
  134. data/app/views/foreman/job_templates/update_packages_by_search_query.erb +3 -3
  135. data/app/views/katello/api/v2/alternate_content_sources/base.json.rabl +24 -0
  136. data/app/views/katello/api/v2/alternate_content_sources/index.json.rabl +7 -0
  137. data/app/views/katello/api/v2/alternate_content_sources/show.json.rabl +3 -0
  138. data/app/views/katello/api/v2/capsule_content/sync_status.json.rabl +1 -1
  139. data/app/views/katello/api/v2/content_facet/show.json.rabl +12 -0
  140. data/app/views/katello/api/v2/content_view_version_export_histories/show.json.rabl +2 -3
  141. data/app/views/katello/api/v2/content_view_versions/base.json.rabl +1 -1
  142. data/app/views/katello/api/v2/content_views/base.json.rabl +1 -0
  143. data/app/views/katello/api/v2/environments/show.json.rabl +2 -0
  144. data/app/views/katello/api/v2/errata/_counts.json.rabl +2 -2
  145. data/app/views/katello/api/v2/host_module_streams/base.json.rabl +2 -2
  146. data/app/views/katello/api/v2/hosts/host_collections.json.rabl +1 -1
  147. data/app/views/katello/api/v2/organizations/show.json.rabl +7 -1
  148. data/app/views/katello/api/v2/repositories/show.json.rabl +2 -1
  149. data/app/views/katello/api/v2/repository_sets/show.json.rabl +4 -0
  150. data/app/views/katello/sync_management/_repo.html.erb +8 -29
  151. data/config/routes/api/v2.rb +19 -0
  152. data/db/migrate/20150930183738_migrate_content_hosts.rb +0 -399
  153. data/db/migrate/20171025163149_remove_use_pulp_oauth_setting.rb +1 -1
  154. data/db/migrate/20171114150937_cleanup_installed_packages.rb +1 -1
  155. data/db/migrate/20180402160223_clean_up_force_post_sync_action_setting.rb +1 -1
  156. data/db/migrate/20211129200124_remove_dependency_solving_algorithm_setting.rb +1 -1
  157. data/db/migrate/20211220185935_clean_duplicate_content_units.rb +1 -1
  158. data/db/migrate/20220110223754_update_disconnected_settings.rb +5 -5
  159. data/db/migrate/20220117151612_add_alternate_content_sources.rb +48 -0
  160. data/db/migrate/20220124191056_add_type_to_cdn_configuration.rb +9 -4
  161. data/db/migrate/20220209203251_add_generated_for_to_content_views.rb +13 -0
  162. data/db/migrate/20220209205137_expand_sync_timeout_settings.rb +7 -7
  163. data/db/migrate/20220228173251_remove_drpm_from_ignorable_content.rb +12 -0
  164. data/db/migrate/20220303160220_remove_duplicate_errata.rb +1 -1
  165. data/db/migrate/20220404190836_delete_old_setting_data.rb +9 -0
  166. data/db/migrate/20220405220616_update_cdn_configuration_type.rb +11 -0
  167. data/db/migrate/20220419193414_content_settings_to_dsl_category.rb +5 -0
  168. data/db/migrate/20220428203334_add_last_refreshed_to_katello_alternate_content_sources.rb +5 -0
  169. data/db/seeds.d/110-content-view-autopublish.rb +13 -0
  170. data/db/seeds.d/150-module_job_templates.rb +1 -1
  171. data/engines/bastion/README.md +1 -0
  172. data/engines/bastion/app/assets/javascripts/bastion/components/bst-modal.directive.js +1 -0
  173. data/engines/bastion/app/views/bastion/layouts/assets.html.erb +1 -0
  174. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/activation-keys.routes.js +1 -1
  175. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-details.controller.js +4 -2
  176. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-details.html +1 -1
  177. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/capsule-content/capsule-content.controller.js +11 -6
  178. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-module-streams.controller.js +1 -0
  179. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages-installed.controller.js +1 -0
  180. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages.controller.js +11 -3
  181. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-traces.controller.js +1 -0
  182. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-actions.html +1 -1
  183. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-applicable.html +1 -1
  184. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.controller.js +8 -0
  185. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-details.controller.js +4 -2
  186. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +2 -2
  187. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/content.service.js +10 -0
  188. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-deb-repositories.html +26 -0
  189. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-debs.html +27 -0
  190. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/environments.controller.js +1 -0
  191. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/environments.routes.js +22 -0
  192. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/views/environments.html +13 -7
  193. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +63 -17
  194. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +7 -8
  195. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details.controller.js +10 -1
  196. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-details.html +21 -3
  197. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +8 -12
  198. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +7 -5
  199. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +2 -1
  200. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/discovery-create.controller.js +1 -1
  201. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/views/discovery-create.html +1 -1
  202. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.routes.js +1 -0
  203. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/views/content-access-mode-banner.html +6 -1
  204. data/lib/katello/engine.rb +1 -5
  205. data/lib/katello/permission_creator.rb +34 -4
  206. data/lib/katello/plugin.rb +377 -3
  207. data/lib/katello/tasks/refresh_alternate_content_sources.rake +15 -0
  208. data/lib/katello/tasks/reset.rake.bak +67 -0
  209. data/lib/katello/tasks/update_content_default_http_proxy.rake +2 -3
  210. data/lib/katello/version.rb +1 -1
  211. data/locale/action_names.rb +47 -41
  212. data/locale/bn/LC_MESSAGES/katello.mo +0 -0
  213. data/locale/bn/katello.po +820 -106
  214. data/locale/bn/katello.po.time_stamp +0 -0
  215. data/locale/cs/LC_MESSAGES/katello.mo +0 -0
  216. data/locale/cs/katello.po +818 -104
  217. data/locale/cs/katello.po.time_stamp +0 -0
  218. data/locale/de/LC_MESSAGES/katello.mo +0 -0
  219. data/locale/de/katello.po +893 -179
  220. data/locale/de/katello.po.time_stamp +0 -0
  221. data/locale/en/LC_MESSAGES/katello.mo +0 -0
  222. data/locale/en/katello.po +817 -103
  223. data/locale/en/katello.po.time_stamp +0 -0
  224. data/locale/es/LC_MESSAGES/katello.mo +0 -0
  225. data/locale/es/katello.po +882 -168
  226. data/locale/es/katello.po.time_stamp +0 -0
  227. data/locale/fr/LC_MESSAGES/katello.mo +0 -0
  228. data/locale/fr/katello.po +1219 -505
  229. data/locale/fr/katello.po.time_stamp +0 -0
  230. data/locale/gu/LC_MESSAGES/katello.mo +0 -0
  231. data/locale/gu/katello.po +826 -112
  232. data/locale/gu/katello.po.time_stamp +0 -0
  233. data/locale/hi/LC_MESSAGES/katello.mo +0 -0
  234. data/locale/hi/katello.po +826 -112
  235. data/locale/hi/katello.po.time_stamp +0 -0
  236. data/locale/it/LC_MESSAGES/katello.mo +0 -0
  237. data/locale/it/katello.po +863 -148
  238. data/locale/it/katello.po.time_stamp +0 -0
  239. data/locale/ja/LC_MESSAGES/katello.mo +0 -0
  240. data/locale/ja/katello.po +1216 -499
  241. data/locale/ja/katello.po.time_stamp +0 -0
  242. data/locale/katello.pot +3847 -2507
  243. data/locale/kn/LC_MESSAGES/katello.mo +0 -0
  244. data/locale/kn/katello.po +826 -112
  245. data/locale/kn/katello.po.time_stamp +0 -0
  246. data/locale/ko/LC_MESSAGES/katello.mo +0 -0
  247. data/locale/ko/katello.po +912 -198
  248. data/locale/ko/katello.po.time_stamp +0 -0
  249. data/locale/mr/LC_MESSAGES/katello.mo +0 -0
  250. data/locale/mr/katello.po +826 -112
  251. data/locale/mr/katello.po.time_stamp +0 -0
  252. data/locale/or/LC_MESSAGES/katello.mo +0 -0
  253. data/locale/or/katello.po +826 -112
  254. data/locale/or/katello.po.time_stamp +0 -0
  255. data/locale/pa/LC_MESSAGES/katello.mo +0 -0
  256. data/locale/pa/katello.po +826 -112
  257. data/locale/pa/katello.po.time_stamp +0 -0
  258. data/locale/pt/LC_MESSAGES/katello.mo +0 -0
  259. data/locale/pt/katello.po +817 -103
  260. data/locale/pt/katello.po.time_stamp +0 -0
  261. data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
  262. data/locale/pt_BR/katello.po +879 -165
  263. data/locale/pt_BR/katello.po.time_stamp +0 -0
  264. data/locale/ru/LC_MESSAGES/katello.mo +0 -0
  265. data/locale/ru/katello.po +927 -213
  266. data/locale/ru/katello.po.time_stamp +0 -0
  267. data/locale/ta/LC_MESSAGES/katello.mo +0 -0
  268. data/locale/ta/katello.po +820 -106
  269. data/locale/ta/katello.po.time_stamp +0 -0
  270. data/locale/te/LC_MESSAGES/katello.mo +0 -0
  271. data/locale/te/katello.po +826 -112
  272. data/locale/te/katello.po.time_stamp +0 -0
  273. data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
  274. data/locale/zh_CN/katello.po +1202 -486
  275. data/locale/zh_CN/katello.po.time_stamp +0 -0
  276. data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
  277. data/locale/zh_TW/katello.po +856 -142
  278. data/locale/zh_TW/katello.po.time_stamp +0 -0
  279. data/webpack/components/Bookmark/index.js +22 -14
  280. data/webpack/components/EditableTextInput/EditableTextInput.js +20 -5
  281. data/webpack/components/Errata/index.js +38 -8
  282. data/webpack/components/Packages/index.js +1 -4
  283. data/webpack/components/Search/Search.js +22 -3
  284. data/webpack/components/SelectAllCheckbox/index.js +1 -0
  285. data/webpack/components/SelectableDropdown/SelectableDropdown.js +4 -2
  286. data/webpack/components/Table/EmptyStateMessage.js +21 -7
  287. data/webpack/components/Table/MainTable.js +29 -4
  288. data/webpack/components/Table/MainTable.scss +5 -1
  289. data/webpack/components/Table/TableHooks.js +65 -20
  290. data/webpack/components/Table/TableWrapper.js +9 -3
  291. data/webpack/components/Table/components/SortableColumnHeaders.js +19 -0
  292. data/webpack/components/Table/components/TranslatedPlural.js +57 -0
  293. data/webpack/components/TypeAhead/TypeAhead.js +12 -0
  294. data/webpack/components/TypeAhead/pf4Search/TypeAheadInput.js +13 -11
  295. data/webpack/components/TypeAhead/pf4Search/TypeAheadSearch.js +7 -2
  296. data/webpack/components/extensions/HostDetails/ActionsBar/index.js +27 -0
  297. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ChangeHostCVModal.js +250 -0
  298. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ContentViewDetailsCard.js +232 -0
  299. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/HostContentViewActions.js +19 -0
  300. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/HostContentViewConstants.js +2 -0
  301. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/__tests__/changeHostCVModal.test.js +131 -0
  302. data/webpack/components/extensions/HostDetails/Cards/{__tests__ → ContentViewDetailsCard/__tests__}/contentViewDetailsCard.test.js +22 -0
  303. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/__tests__/contentViews.fixtures.json +443 -0
  304. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/__tests__/envPaths.fixtures.json +320 -0
  305. data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.js +57 -33
  306. data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.scss +3 -0
  307. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsActions.js +30 -0
  308. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsCard.js +206 -0
  309. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsConstants.js +7 -0
  310. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsModal.js +227 -0
  311. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsSelectors.js +18 -0
  312. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/__tests__/availableHostCollections.fixtures.json +106 -0
  313. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/__tests__/hostCollectionsCard.test.js +118 -0
  314. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/__tests__/hostCollectionsModal.test.js +235 -0
  315. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/__tests__/removableHostCollections.fixtures.json +45 -0
  316. data/webpack/components/extensions/HostDetails/Cards/__tests__/errataOverviewCard.test.js +33 -8
  317. data/webpack/components/extensions/HostDetails/DetailsTabCards/InstalledProductsCard.js +44 -0
  318. data/webpack/components/extensions/HostDetails/DetailsTabCards/RecentCommunicationCardExtensions.js +37 -0
  319. data/webpack/components/extensions/HostDetails/DetailsTabCards/RegistrationCard.js +107 -0
  320. data/webpack/components/extensions/HostDetails/DetailsTabCards/SystemPropertiesCardExtensions.js +38 -0
  321. data/webpack/components/extensions/HostDetails/HostDetailsActions.js +11 -0
  322. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/SecondaryTabsRoutes.js +4 -0
  323. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/constants.js +2 -0
  324. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/index.js +6 -1
  325. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.js +176 -72
  326. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/HostErrataActions.js +1 -7
  327. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsActions.js +1 -3
  328. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsConstants.js +28 -0
  329. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsTab.js +522 -118
  330. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/HostPackagesActions.js +1 -7
  331. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackageInstallModal.js +6 -4
  332. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.js +164 -58
  333. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionActions.js +59 -49
  334. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionConstants.js +1 -0
  335. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionHooks.js +85 -0
  336. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsActions.js +33 -54
  337. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsConstants.js +20 -0
  338. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +298 -107
  339. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/EnableTracerModal.js +14 -7
  340. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/HostTracesActions.js +2 -1
  341. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesEnabler.js +104 -0
  342. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesTab.js +134 -57
  343. data/webpack/components/extensions/HostDetails/Tabs/__tests__/errataTab.test.js +37 -32
  344. data/webpack/components/extensions/HostDetails/Tabs/{ModuleStreamsTab/__tests__/modules.fixtures.json → __tests__/moduleStreams.fixtures.json} +6 -3
  345. data/webpack/components/extensions/HostDetails/Tabs/__tests__/moduleStreamsTab.test.js +261 -0
  346. data/webpack/components/extensions/HostDetails/Tabs/__tests__/packageInstallModal.test.js +21 -15
  347. data/webpack/components/extensions/HostDetails/Tabs/__tests__/packagesTab.test.js +44 -1
  348. data/webpack/components/extensions/HostDetails/Tabs/__tests__/repositorySets.fixtures.json +4 -1
  349. data/webpack/components/extensions/HostDetails/Tabs/__tests__/repositorySetsTab.test.js +105 -6
  350. data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracesTab.test.js +25 -6
  351. data/webpack/components/extensions/HostDetails/Tabs/customizedRexUrlHelpers.js +6 -0
  352. data/webpack/components/extensions/HostDetails/hostDetailsHelpers.js +18 -0
  353. data/webpack/containers/Application/config.js +5 -0
  354. data/webpack/global_index.js +32 -9
  355. data/webpack/global_test_setup.js +13 -0
  356. data/webpack/redux/actions/RedHatRepositories/enabled.js +2 -1
  357. data/webpack/redux/actions/RedHatRepositories/helpers.js +13 -8
  358. data/webpack/scenes/AlternateContentSources/ACSActions.js +65 -0
  359. data/webpack/scenes/AlternateContentSources/ACSConstants.js +18 -0
  360. data/webpack/scenes/AlternateContentSources/ACSIndexPage.js +23 -0
  361. data/webpack/scenes/AlternateContentSources/ACSSelectors.js +24 -0
  362. data/webpack/scenes/AlternateContentSources/Create/ACSCreateContext.js +4 -0
  363. data/webpack/scenes/AlternateContentSources/Create/ACSCreateWizard.js +160 -0
  364. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSCreateFinish.js +79 -0
  365. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSCredentials.js +199 -0
  366. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSReview.js +104 -0
  367. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSSmartProxies.js +41 -0
  368. data/webpack/scenes/AlternateContentSources/Create/Steps/AcsUrlPaths.js +71 -0
  369. data/webpack/scenes/AlternateContentSources/Create/Steps/NameACS.js +57 -0
  370. data/webpack/scenes/AlternateContentSources/Create/Steps/SelectSource.js +77 -0
  371. data/webpack/scenes/AlternateContentSources/Create/__tests__/acsCreate.test.js +149 -0
  372. data/webpack/scenes/AlternateContentSources/Create/__tests__/acsCreateData.fixtures.json +3 -0
  373. data/webpack/scenes/AlternateContentSources/Create/__tests__/contentCredentials.fixtures.json +69 -0
  374. data/webpack/scenes/AlternateContentSources/Create/__tests__/smartProxy.fixtures.json +65 -0
  375. data/webpack/scenes/AlternateContentSources/MainTable/ACSTable.js +162 -0
  376. data/webpack/scenes/AlternateContentSources/MainTable/__tests__/acsIndex.fixtures.json +91 -0
  377. data/webpack/scenes/AlternateContentSources/MainTable/__tests__/acsTable.test.js +67 -0
  378. data/webpack/scenes/AlternateContentSources/index.js +4 -0
  379. data/webpack/scenes/Content/Details/ContentRepositories.js +1 -0
  380. data/webpack/scenes/Content/Table/ContentTable.js +1 -0
  381. data/webpack/scenes/ContentCredentials/ContentCredentialSelectors.js +4 -1
  382. data/webpack/scenes/ContentViews/ContentViewsActions.js +6 -2
  383. data/webpack/scenes/ContentViews/ContentViewsConstants.js +11 -3
  384. data/webpack/scenes/ContentViews/Copy/CopyContentViewForm.js +2 -1
  385. data/webpack/scenes/ContentViews/Create/ContentViewFormComponents.js +10 -1
  386. data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +2 -1
  387. data/webpack/scenes/ContentViews/Delete/ContentViewDeleteWizard.js +7 -5
  388. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionFinish.js +29 -21
  389. data/webpack/scenes/ContentViews/Delete/__tests__/contentViewDelete.test.js +15 -8
  390. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewAddModal.js +2 -2
  391. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewBulkAddModal.js +2 -2
  392. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +3 -1
  393. data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +34 -8
  394. data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +33 -29
  395. data/webpack/scenes/ContentViews/Details/ContentViewDetails.js +130 -79
  396. data/webpack/scenes/ContentViews/Details/ContentViewInfo.js +16 -2
  397. data/webpack/scenes/ContentViews/Details/Filters/Add/CVFilterAddModal.js +2 -1
  398. data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositoryTable.js +2 -1
  399. data/webpack/scenes/ContentViews/Details/Filters/CVContainerImageFilterContent.js +6 -1
  400. data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +41 -21
  401. data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +38 -20
  402. data/webpack/scenes/ContentViews/Details/Filters/CVModuleStreamFilterContent.js +2 -0
  403. data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +8 -1
  404. data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +9 -1
  405. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +2 -1
  406. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/CVRpmMatchContentModal.js +1 -0
  407. data/webpack/scenes/ContentViews/Details/Filters/Rules/ContainerTag/AddEditContainerTagRuleModal.js +27 -12
  408. data/webpack/scenes/ContentViews/Details/Filters/Rules/Package/AddEditPackageRuleModal.js +39 -17
  409. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVContainerImageFilterContent.test.js +27 -10
  410. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVRpmFilterContent.test.js +46 -23
  411. data/webpack/scenes/ContentViews/Details/Histories/ContentViewHistories.js +3 -2
  412. data/webpack/scenes/ContentViews/Details/Promote/ContentViewVersionPromote.js +5 -2
  413. data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +161 -108
  414. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +7 -7
  415. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewRepoAdd.fixture.json +1 -0
  416. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/ActionSummary.js +58 -0
  417. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/BulkDeleteContextWrapper.js +45 -0
  418. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/BulkDeleteHelpers.js +30 -0
  419. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/BulkDeleteModal.js +56 -0
  420. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ConfirmBulkDelete.js +126 -0
  421. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/FinishBulkDelete.js +61 -0
  422. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReassignActivationKeys.js +196 -0
  423. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReassignHosts.js +220 -0
  424. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReviewEnvironments.js +104 -0
  425. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/BulkDeleteModal.test.js +122 -0
  426. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/BulkDeleteVersions.fixtures.json +600 -0
  427. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/contentView.fixtures.json +1504 -0
  428. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/contentViewVersion.fixtures.json +936 -0
  429. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/environmentPaths.fixtures.json +261 -0
  430. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/hosts.fixtures.json +163 -0
  431. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/bulkDeleteSteps.js +79 -0
  432. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +192 -167
  433. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveCVVersionWizard.js +2 -5
  434. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionDeleteFinish.js +38 -53
  435. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionRemoveReview.js +1 -1
  436. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemove.test.js +6 -12
  437. data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedActivationKeys.js +1 -0
  438. data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedHosts.js +1 -0
  439. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailConfig.js +1 -0
  440. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.js +8 -20
  441. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsHeader.js +23 -13
  442. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsTable.js +3 -0
  443. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.fixtures.json +4 -4
  444. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.test.js +0 -3
  445. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetailsEmpty.test.js +4 -4
  446. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +12 -14
  447. data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetails.fixtures.json +1 -0
  448. data/webpack/scenes/ContentViews/Publish/CVPublishFinish.js +96 -117
  449. data/webpack/scenes/ContentViews/Publish/PublishContentViewWizard.js +13 -19
  450. data/webpack/scenes/ContentViews/Publish/__tests__/publishContentView.test.js +9 -20
  451. data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +165 -148
  452. data/webpack/scenes/ContentViews/Table/tableDataGenerator.js +2 -0
  453. data/webpack/scenes/ContentViews/components/ContentViewIcon.js +14 -3
  454. data/webpack/scenes/ContentViews/components/EnvironmentLabels.js +4 -3
  455. data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.js +10 -6
  456. data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.scss +6 -1
  457. data/webpack/scenes/ContentViews/components/TaskPresenter/TaskPresenter.js +40 -35
  458. data/webpack/scenes/ContentViews/expansions/RelatedCompositeContentViewsModal.js +1 -1
  459. data/webpack/scenes/ContentViews/expansions/RelatedContentViewComponentsModal.js +2 -2
  460. data/webpack/scenes/ContentViews/helpers.js +3 -0
  461. data/webpack/scenes/Hosts/ChangeContentSource/helpers.js +5 -0
  462. data/webpack/scenes/RedHatRepositories/RedHatRepositoriesPage.js +3 -3
  463. data/webpack/scenes/RedHatRepositories/components/EnabledRepository/EnabledRepository.js +2 -1
  464. data/webpack/scenes/RedHatRepositories/components/EnabledRepository/__tests__/EnabledRepository.test.js +2 -0
  465. data/webpack/scenes/RedHatRepositories/components/Search.js +4 -4
  466. data/webpack/scenes/SmartProxy/SmartProxyContentActions.js +9 -2
  467. data/webpack/scenes/SmartProxy/SmartProxyContentConstants.js +1 -1
  468. data/webpack/scenes/SmartProxy/SmartProxyContentSelectors.js +10 -1
  469. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CdnConfigurationConstants.js +3 -3
  470. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CdnTypeForm.js +2 -0
  471. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/{AirGappedTypeForm.js → ExportSyncForm.js} +7 -6
  472. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/{UpstreamServerTypeForm.js → NetworkSyncForm.js} +15 -7
  473. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/{AirGappedTypeForm.test.js → ExportSyncForm.test.js} +4 -4
  474. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/{UpstreamServerTypeForm.test.js → NetworkSyncForm.test.js} +8 -8
  475. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/index.js +11 -11
  476. data/webpack/scenes/Subscriptions/SubscriptionConstants.js +1 -0
  477. data/webpack/scenes/Subscriptions/SubscriptionsPage.js +8 -7
  478. data/webpack/scenes/Tasks/TaskActions.js +6 -0
  479. data/webpack/scenes/Tasks/TaskSelectors.js +11 -0
  480. data/webpack/scenes/Tasks/helpers.js +60 -5
  481. data/webpack/utils/helpers.js +2 -0
  482. metadata +183 -38
  483. data/app/models/setting/content.rb +0 -201
  484. data/db/seeds.d/107-enable_dynflow.rb +0 -8
  485. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard.js +0 -96
  486. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/__tests__/moduleStreamsTab.test.js +0 -108
  487. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/EnableTracerEmptyState.js +0 -42
  488. data/webpack/scenes/ContentViews/Details/DetailsContainer.js +0 -36
@@ -1,201 +0,0 @@
1
- class Setting::Content < Setting
2
- #rubocop:disable Metrics/AbcSize
3
-
4
- validate :content_default_http_proxy, if: proc { |s| s.name == 'content_default_http_proxy' && HttpProxy.table_exists? }
5
-
6
- after_save :add_organizations_and_locations_if_global_http_proxy
7
-
8
- def self.hashify_parameters(parameters)
9
- Hash[parameters.map { |p| [p, p] }]
10
- end
11
-
12
- def self.default_settings
13
- download_policies = proc { hashify_parameters(::Katello::RootRepository::DOWNLOAD_POLICIES) }
14
-
15
- proxy_download_policies = proc { hashify_parameters(::SmartProxy::DOWNLOAD_POLICIES) }
16
- cdn_ssl_versions = proc { hashify_parameters(Katello::Resources::CDN::SUPPORTED_SSL_VERSIONS) }
17
- http_proxy_select = [{
18
- name: _("HTTP Proxies"),
19
- class: 'HttpProxy',
20
- scope: 'all',
21
- value_method: 'name',
22
- text_method: 'name_and_url'
23
- }]
24
-
25
- [
26
- self.set('content_default_http_proxy', N_("Default HTTP Proxy for syncing content"),
27
- nil, N_('Default HTTP proxy'),
28
- nil,
29
- collection: proc { http_proxy_select }, include_blank: N_("no global default")
30
- ),
31
- self.set('cdn_ssl_version', N_("SSL version used to communicate with the CDN"),
32
- nil, N_('CDN SSL version'), nil,
33
- :collection => cdn_ssl_versions),
34
- self.set('katello_default_provision', N_("Default provisioning template for Operating Systems created from synced content"),
35
- 'Kickstart default', N_('Default synced OS provisioning template'),
36
- nil, :collection => proc { katello_template_setting_values("provision") }
37
- ),
38
- self.set('katello_default_finish',
39
- N_("Default finish template for new Operating Systems created from synced content"),
40
- 'Kickstart default finish', N_('Default synced OS finish template'),
41
- nil, :collection => proc { katello_template_setting_values("finish") }
42
- ),
43
- self.set('katello_default_user_data', N_("Default user data for new Operating Systems created from synced content"),
44
- 'Kickstart default user data', N_('Default synced OS user-data'),
45
- nil, :collection => proc { katello_template_setting_values("user_data") }
46
- ),
47
- self.set('katello_default_PXELinux', N_("Default PXELinux template for new Operating Systems created from synced content"),
48
- 'Kickstart default PXELinux', N_('Default synced OS PXELinux template'),
49
- nil, :collection => proc { katello_template_setting_values("PXELinux") }
50
- ),
51
- self.set('katello_default_PXEGrub', N_("Default PXEGrub template for new Operating Systems created from synced content"),
52
- 'Kickstart default PXEGrub', N_('Default synced OS PXEGrub template'),
53
- nil, :collection => proc { katello_template_setting_values("PXEGrub") }
54
- ),
55
- self.set('katello_default_PXEGrub2', N_("Default PXEGrub2 template for new Operating Systems created from synced content"),
56
- 'Kickstart default PXEGrub2', N_('Default synced OS PXEGrub2 template'),
57
- nil, :collection => proc { katello_template_setting_values("PXEGrub2") }
58
- ),
59
- self.set('katello_default_iPXE', N_("Default iPXE template for new Operating Systems created from synced content"),
60
- 'Kickstart default iPXE', N_('Default synced OS iPXE template'),
61
- nil, :collection => proc { katello_template_setting_values("iPXE") }
62
- ),
63
- self.set('katello_default_ptable', N_("Default partitioning table for new Operating Systems created from synced content"),
64
- 'Kickstart default', N_('Default synced OS partition table'),
65
- nil, :collection => proc { Hash[Template.all.where(:type => "Ptable").map { |tmp| [tmp[:name], tmp[:name]] }] }
66
- ), self.set('katello_default_kexec', N_("Default kexec template for new Operating Systems created from synced content"), 'Discovery Red Hat kexec', N_('Default synced OS kexec template'),
67
- nil, :collection => proc { katello_template_setting_values("kexec") }
68
- ),
69
- self.set('katello_default_atomic_provision', N_("Default provisioning template for new Atomic Operating Systems created from synced content"),
70
- 'Atomic Kickstart default', N_('Default synced OS Atomic template'),
71
- nil, :collection => proc { katello_template_setting_values("provision") }
72
- ),
73
- self.set('manifest_refresh_timeout', N_('Timeout when refreshing a manifest (in seconds)'), 60 * 20, N_("Manifest refresh timeout")),
74
- self.set('content_action_accept_timeout', N_("Time in seconds to wait for a Host to pickup a remote action"),
75
- 20, N_('Accept action timeout')),
76
- self.set('content_action_finish_timeout', N_("Time in seconds to wait for a Host to finish a remote action"),
77
- 3600, N_('Finish action timeout')),
78
- self.set('subscription_connection_enabled', N_("Can communicate with the Red Hat Portal for subscriptions."),
79
- true, N_('Subscription connection enabled')),
80
- self.set('errata_status_installable', N_("Calculate errata host status based only on errata in a Host's Content View and Lifecycle Environment"),
81
- false, N_('Installable errata from Content View')),
82
- self.set('restrict_composite_view', N_("If this is enabled, a composite content view may not be published or "\
83
- "promoted, unless the component content view versions that it includes exist in the target environment."),
84
- false, N_('Restrict Composite Content View promotion')),
85
- self.set('check_services_before_actions', N_("Whether or not to check the status of backend services such as pulp and candlepin prior to performing some actions."),
86
- true, N_('Check services before actions')),
87
- self.set('foreman_proxy_content_batch_size', N_("How many repositories should be synced concurrently on the capsule. A smaller number may lead to longer sync times. A larger number will increase dynflow load."),
88
- 100, N_('Batch size to sync repositories in.')),
89
- self.set('foreman_proxy_content_auto_sync', N_("Whether or not to auto sync the Smart Proxies after a Content View promotion."),
90
- true, N_('Sync Smart Proxies after Content View promotion')),
91
- self.set('download_rate_limit', N_("Maximum download rate when syncing a repository (requests per second). Use 0 for no limit."), 0, N_("Download rate limit")),
92
- self.set('default_download_policy', N_("Default download policy for custom repositories (either 'immediate' or 'on_demand')"), "immediate",
93
- N_('Default Custom Repository download policy'), nil, :collection => download_policies),
94
- self.set('default_redhat_download_policy', N_("Default download policy for enabled Red Hat repositories (either 'immediate' or 'on_demand')"), "on_demand",
95
- N_('Default Red Hat Repository download policy'), nil, :collection => download_policies),
96
- self.set('default_proxy_download_policy', N_("Default download policy for Smart Proxy syncs (either 'inherit', immediate', or 'on_demand')"), "on_demand",
97
- N_('Default Smart Proxy download policy'), nil, :collection => proxy_download_policies),
98
- self.set('pulp_docker_registry_port', N_("The port used by Pulp Crane to provide Docker Registries"),
99
- 5000, N_('Pulp Docker registry port')),
100
- self.set('pulp_export_destination', N_("On-disk location for exported repositories"),
101
- "/var/lib/pulp/katello-export", N_('Pulp export destination filepath')),
102
- self.set('pulpcore_export_destination', N_("On-disk location for pulp 3 exported repositories"),
103
- "/var/lib/pulp/exports", N_('Pulp 3 export destination filepath')),
104
- self.set('pulp_client_key', N_("Path for ssl key used for pulp server auth"),
105
- "/etc/pki/katello/private/pulp-client.key", N_('Pulp client key')),
106
- self.set('pulp_client_cert', N_("Path for ssl cert used for pulp server auth"),
107
- "/etc/pki/katello/certs/pulp-client.crt", N_('Pulp client cert')),
108
- self.set('sync_total_timeout', N_("The maximum number of second that Pulp can take to do a single sync operation, e.g., download a single metadata file."),
109
- 3600, N_('Sync Total Timeout')),
110
- self.set('sync_connect_timeout_v2',
111
- N_("The maximum number of seconds for Pulp to establish a new connection or for waiting for a free connection from a pool if pool connection limits are exceeded."),
112
- 60, N_('Sync Connect Timeout')),
113
- self.set('sync_sock_connect_timeout', N_("The maximum number of seconds for Pulp to connect to a peer for a new connection not given from a pool."),
114
- 60, N_('Sync Sock Connect Timeout')),
115
- self.set('sync_sock_read_timeout', N_("The maximum number of seconds that Pulp can take to download a file, not counting connection time."),
116
- 3600, N_('Sync Sock Read Timeout')),
117
- self.set('remote_execution_by_default', N_("If this is enabled, remote execution is used instead of katello-agent for remote actions"),
118
- false, N_('Use remote execution by default')),
119
- self.set('unregister_delete_host', N_("When unregistering a host via subscription-manager, also delete the host record. Managed resources linked to host " \
120
- "such as virtual machines and DNS records may also be deleted."),
121
- false, N_('Delete Host upon unregister')),
122
- self.set('register_hostname_fact', N_("When registering a host via subscription-manager, force use the specified fact (in the form of 'fact.fact')"),
123
- '', N_('Subscription manager name registration fact'), nil),
124
- self.set('register_hostname_fact_strict_match', N_('If this is enabled, and register_hostname_fact is set and provided, registration will look for a new host by name only '\
125
- 'using that fact, and will skip all hostname matching'), false, N_('Subscription manager name registration fact strict matching'), nil),
126
- self.set('default_location_subscribed_hosts',
127
- N_('Default Location where new subscribed hosts will put upon registration'),
128
- nil, N_('Default Location subscribed hosts'), nil,
129
- :collection => proc { Hash[Location.unscoped.all.map { |loc| [loc[:title], loc[:title]] }] }),
130
- self.set('expire_soon_days', N_('The number of days remaining in a subscription before you will be reminded about renewing it.'),
131
- 120, N_('Expire soon days')),
132
- self.set('content_view_solve_dependencies',
133
- N_('The default dependency solving value for new Content Views.'),
134
- false, N_('Content View Dependency Solving Default')),
135
- self.set('host_dmi_uuid_duplicates',
136
- N_("If hosts fail to register because of duplicate DMI UUIDs " \
137
- "add their comma-separated values here. Subsequent registrations will generate a unique DMI UUID for the affected hosts."),
138
- [], N_('Host Duplicate DMI UUIDs')),
139
- self.set('host_profile_assume', N_("Allow new Host registrations to assume registered profiles with matching hostname " \
140
- "as long as the registering DMI UUID is not used by another host."),
141
- true, N_('Host Profile Assume')),
142
- self.set('host_profile_assume_build_can_change', N_("Allow Host registrations to bypass 'Host Profile Assume' " \
143
- "as long as the host is in build mode."),
144
- false, N_('Host Profile Can Change In Build')),
145
- self.set('host_re_register_build_only', N_("Allow hosts to re-register themselves only when they are in build mode"),
146
- false, N_('Host Can Re-Register Only In Build')),
147
- self.set('host_tasks_workers_pool_size', N_("Amount of workers in the pool to handle the execution of host-related tasks. When set to 0, the default queue will be used instead. Restart of the dynflowd/foreman-tasks service is required."),
148
- 5, N_('Host Tasks Workers Pool Size')),
149
- self.set('applicability_batch_size', N_("Number of host applicability calculations to process per task."),
150
- 50, N_('Applicability Batch Size')),
151
- self.set('autosearch_while_typing', N_('For pages that support it, automatically perform search while typing in search input.'),
152
- true, N_('Autosearch')),
153
- self.set('autosearch_delay', N_('If Autosearch is enabled, delay in milliseconds before executing searches while typing.'),
154
- 500, N_('Autosearch delay')),
155
- self.set('bulk_load_size', N_('The number of items fetched from a single paged Pulp API call.'), 2000,
156
- N_('Pulp bulk load size')),
157
- self.set('upload_profiles_without_dynflow', N_('Allow Katello to update host installed packages, enabled repos, and module inventory directly instead of wrapped in Dynflow tasks (try turning off if Puma processes are using too much memory)'), true,
158
- N_('Upload profiles without Dynflow')),
159
- self.set('orphan_protection_time', N_('Time in minutes to consider orphan content as orphaned.'), 1440, N_('Orphaned Content Protection Time')),
160
- self.set('remote_execution_prefer_registered_through_proxy', N_('Prefer using a proxy to which a host is registered when using remote execution'), false,
161
- N_('Prefer registered through proxy for remote execution'))
162
- ]
163
- end
164
-
165
- def self.load_defaults
166
- BLANK_ATTRS.concat %w(register_hostname_fact default_location_subscribed_hosts
167
- content_default_http_proxy host_dmi_uuid_duplicates cdn_ssl_version)
168
- super
169
- end
170
-
171
- def self.katello_template_setting_values(name)
172
- templates = ProvisioningTemplate.where(:template_kind => TemplateKind.where(:name => name))
173
- templates.each_with_object({}) { |tmpl, hash| hash[tmpl.name] = tmpl.name }
174
- end
175
-
176
- def add_organizations_and_locations_if_global_http_proxy
177
- if name == 'content_default_http_proxy' && (::HttpProxy.table_exists? rescue(false))
178
- proxy = HttpProxy.where(name: value).first
179
-
180
- if proxy
181
- proxy.update_attribute(:organizations, Organization.unscoped.all)
182
- proxy.update_attribute(:locations, Location.unscoped.all)
183
- end
184
- end
185
- end
186
-
187
- def content_default_http_proxy
188
- proxy = HttpProxy.where(name: value).first
189
- return if proxy || value.blank?
190
-
191
- errors.add(:base, _('There is no such HTTP proxy'))
192
- end
193
- end
194
-
195
- # If the database is not migrated yet, the system will not be able to load
196
- # since setting initializers will try to load old class. Let it have the class and remove it
197
- # later.
198
- if Setting.where(category: 'Setting::Katello').count > 0
199
- class Setting::Katello < Setting
200
- end
201
- end
@@ -1,8 +0,0 @@
1
- # This file should contain all the record creation needed to seed the database with its default values.
2
- # The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
3
- #
4
- # !!! PLEASE KEEP THIS SCRIPT IDEMPOTENT !!!
5
- #
6
- User.as(::User.anonymous_api_admin.login) do
7
- Setting.find_by(:name => "dynflow_enable_console").update!(:value => true) if Rails.env.development?
8
- end
@@ -1,96 +0,0 @@
1
- import React from 'react';
2
- import {
3
- Card,
4
- CardHeader,
5
- CardTitle,
6
- CardBody,
7
- Flex,
8
- FlexItem,
9
- GridItem,
10
- Label,
11
- } from '@patternfly/react-core';
12
-
13
- import { urlBuilder } from 'foremanReact/common/urlHelpers';
14
- import { translate as __ } from 'foremanReact/common/I18n';
15
- import { propsToCamelCase } from 'foremanReact/common/helpers';
16
- import PropTypes from 'prop-types';
17
- import ContentViewIcon from '../../../../scenes/ContentViews/components/ContentViewIcon';
18
- import { hostIsRegistered } from '../hostDetailsHelpers';
19
-
20
- const HostContentViewDetails = ({
21
- contentView, lifecycleEnvironment, contentViewVersionId,
22
- contentViewVersion, contentViewVersionLatest,
23
- }) => {
24
- let versionLabel = `Version ${contentViewVersion}`;
25
- if (contentViewVersionLatest) {
26
- versionLabel += ' (latest)';
27
- }
28
-
29
- return (
30
- <GridItem rowSpan={1} md={6} lg={4} xl2={3} >
31
- <Card isHoverable>
32
- <CardHeader>
33
- <CardTitle>{__('Content view details')}</CardTitle>
34
- </CardHeader>
35
- <CardBody>
36
- <Flex direction={{ default: 'column' }}>
37
- <Flex
38
- direction={{ default: 'row', sm: 'row' }}
39
- flexWrap={{ default: 'nowrap' }}
40
- alignItems={{ default: 'alignItemsCenter', sm: 'alignItemsCenter' }}
41
- >
42
- <ContentViewIcon composite={contentView.composite} style={{ marginRight: '2px' }} />
43
- <h3>{__('Content view')}</h3>
44
- </Flex>
45
- <Flex direction={{ default: 'row', sm: 'row' }} flexWrap={{ default: 'wrap' }}>
46
- <a style={{ fontSize: '14px' }} href={`/content_views/${contentView.id}`}>{`${contentView.name}`}</a>
47
- <Label isTruncated color="purple" href={`/lifecycle_environments/${lifecycleEnvironment.id}`}>{`${lifecycleEnvironment.name}`}</Label>
48
- </Flex>
49
- </Flex>
50
- <Flex direction={{ default: 'column' }}>
51
- <FlexItem>
52
- <h3>{__('Version in use')}</h3>
53
- <a style={{ fontSize: '14px' }} href={urlBuilder(`content_views/${contentView.id}/versions/${contentViewVersionId}`, '')}>
54
- {versionLabel}
55
- </a>
56
- </FlexItem>
57
- </Flex>
58
- </CardBody>
59
- </Card>
60
- </GridItem>
61
- );
62
- };
63
-
64
- const ContentViewDetailsCard = ({ hostDetails }) => {
65
- if (hostIsRegistered({ hostDetails }) && hostDetails.content_facet_attributes) {
66
- return <HostContentViewDetails {...propsToCamelCase(hostDetails.content_facet_attributes)} />;
67
- }
68
- return null;
69
- };
70
-
71
- HostContentViewDetails.propTypes = {
72
- contentView: PropTypes.shape({
73
- name: PropTypes.string,
74
- id: PropTypes.number,
75
- composite: PropTypes.bool,
76
- }).isRequired,
77
- lifecycleEnvironment: PropTypes.shape({
78
- name: PropTypes.string,
79
- id: PropTypes.number,
80
- }).isRequired,
81
- contentViewVersionId: PropTypes.number.isRequired,
82
- contentViewVersion: PropTypes.string.isRequired,
83
- contentViewVersionLatest: PropTypes.bool.isRequired,
84
- };
85
-
86
- ContentViewDetailsCard.propTypes = {
87
- hostDetails: PropTypes.shape({
88
- content_facet_attributes: PropTypes.shape({}),
89
- }),
90
- };
91
-
92
- ContentViewDetailsCard.defaultProps = {
93
- hostDetails: {},
94
- };
95
-
96
- export default ContentViewDetailsCard;
@@ -1,108 +0,0 @@
1
- import React from 'react';
2
- import { act } from 'react-test-renderer';
3
- import { renderWithRedux, patientlyWaitFor } from 'react-testing-lib-wrapper';
4
- import { nockInstance, assertNockRequest, mockForemanAutocomplete, mockSetting } from '../../../../../../test-utils/nockWrapper';
5
- import { foremanApi } from '../../../../../../services/api';
6
- import { ModuleStreamsTab } from '../ModuleStreamsTab';
7
- import mockModuleStreams from './modules.fixtures.json';
8
- import { MODULE_STREAMS_KEY } from '../ModuleStreamsConstants';
9
-
10
- const contentFacetAttributes = {
11
- id: 11,
12
- uuid: 'e5761ea3-4117-4ecf-83d0-b694f99b389e',
13
- content_view_default: false,
14
- lifecycle_environment_library: false,
15
- };
16
-
17
- const renderOptions = (facetAttributes = contentFacetAttributes) => ({
18
- apiNamespace: MODULE_STREAMS_KEY,
19
- initialState: {
20
- API: {
21
- HOST_DETAILS: {
22
- response: {
23
- id: 1,
24
- name: 'test-host',
25
- content_facet_attributes: { ...facetAttributes },
26
- },
27
- status: 'RESOLVED',
28
- },
29
- },
30
- },
31
- });
32
-
33
- const hostModuleStreams = foremanApi.getApiUrl('/hosts/1/module_streams');
34
- const autocompleteUrl = '/hosts/1/module_streams/auto_complete_search';
35
-
36
- let firstModuleStreams;
37
- let searchDelayScope;
38
- let autoSearchScope;
39
-
40
- beforeEach(() => {
41
- const { results } = mockModuleStreams;
42
- [firstModuleStreams] = results;
43
- searchDelayScope = mockSetting(nockInstance, 'autosearch_delay', 0);
44
- autoSearchScope = mockSetting(nockInstance, 'autosearch_while_typing');
45
- });
46
-
47
- afterEach(() => {
48
- assertNockRequest(searchDelayScope);
49
- assertNockRequest(autoSearchScope);
50
- });
51
-
52
- beforeEach(() => {
53
- const { results } = mockModuleStreams;
54
- [firstModuleStreams] = results;
55
- searchDelayScope = mockSetting(nockInstance, 'autosearch_delay', 0);
56
- autoSearchScope = mockSetting(nockInstance, 'autosearch_while_typing');
57
- });
58
-
59
- afterEach(() => {
60
- assertNockRequest(searchDelayScope);
61
- assertNockRequest(autoSearchScope);
62
- });
63
-
64
- test('Can call API for Module streams and show on screen on page load', async (done) => {
65
- // Setup autocomplete with mockForemanAutoComplete since we aren't adding /katello
66
- const autocompleteScope = mockForemanAutocomplete(nockInstance, autocompleteUrl);
67
- const scope = nockInstance
68
- .get(hostModuleStreams)
69
- .query(true)
70
- .reply(200, mockModuleStreams);
71
-
72
- const { getAllByText } = renderWithRedux(<ModuleStreamsTab />, renderOptions());
73
-
74
- // Assert that the Module streams are now showing on the screen, but wait for them to appear.
75
- await patientlyWaitFor(() =>
76
- expect(getAllByText(firstModuleStreams.name)[0]).toBeInTheDocument());
77
- // Assert request was made and completed, see helper function
78
- assertNockRequest(autocompleteScope);
79
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
80
- act(done);
81
- });
82
-
83
- test('Can handle no Module streams being present', async (done) => {
84
- // Setup autocomplete with mockForemanAutoComplete since we aren't adding /katello
85
- const autocompleteScope = mockForemanAutocomplete(nockInstance, autocompleteUrl);
86
-
87
- const noResults = {
88
- total: 0,
89
- subtotal: 0,
90
- page: 1,
91
- per_page: 20,
92
- results: [],
93
- };
94
-
95
- const scope = nockInstance
96
- .get(hostModuleStreams)
97
- .query(true)
98
- .reply(200, noResults);
99
-
100
- const { queryByText } = renderWithRedux(<ModuleStreamsTab />, renderOptions());
101
-
102
- // Assert that there are not any Module streams showing on the screen.
103
- await patientlyWaitFor(() => expect(queryByText('This host does not have any Module streams.')).toBeInTheDocument());
104
- // Assert request was made and completed, see helper function
105
- assertNockRequest(autocompleteScope);
106
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
107
- act(done);
108
- });
@@ -1,42 +0,0 @@
1
- import React, { useState } from 'react';
2
- import {
3
- EmptyState,
4
- EmptyStateIcon,
5
- EmptyStateBody,
6
- Title,
7
- EmptyStateVariant,
8
- Button,
9
- Flex,
10
- FlexItem,
11
- } from '@patternfly/react-core';
12
- import { WrenchIcon } from '@patternfly/react-icons';
13
- import { translate as __ } from 'foremanReact/common/I18n';
14
- import EnableTracerModal from './EnableTracerModal';
15
-
16
- const EnableTracerEmptyState = () => {
17
- const title = __('Traces are not enabled');
18
- const body = __('Traces help administrators identify applications that need to be restarted after a system is patched.');
19
- const [enableTracerModalOpen, setEnableTracerModalOpen] = useState(false);
20
-
21
- return (
22
- <EmptyState variant={EmptyStateVariant.small}>
23
- <EmptyStateIcon icon={WrenchIcon} />
24
- <Title headingLevel="h2" size="lg">
25
- {title}
26
- </Title>
27
- <EmptyStateBody>
28
- <Flex direction={{ default: 'column' }}>
29
- <FlexItem>{body}</FlexItem>
30
- <FlexItem>
31
- <Button onClick={() => setEnableTracerModalOpen(true)}>
32
- {__('Enable Traces')}
33
- </Button>
34
- </FlexItem>
35
- </Flex>
36
- </EmptyStateBody>
37
- <EnableTracerModal isOpen={enableTracerModalOpen} setIsOpen={setEnableTracerModalOpen} />
38
- </EmptyState>
39
- );
40
- };
41
-
42
- export default EnableTracerEmptyState;
@@ -1,36 +0,0 @@
1
- import React, { useEffect } from 'react';
2
- import { STATUS } from 'foremanReact/constants';
3
- import PropTypes from 'prop-types';
4
- import {
5
- shallowEqual,
6
- useDispatch,
7
- useSelector,
8
- } from 'react-redux';
9
- import Loading from '../../../components/Loading';
10
- import EmptyStateMessage from '../../../components/Table/EmptyStateMessage';
11
- import getContentViewDetails from './ContentViewDetailActions';
12
- import {
13
- selectCVDetailError,
14
- selectCVDetailStatus,
15
- } from './ContentViewDetailSelectors';
16
-
17
- const DetailsContainer = ({ children, cvId }) => {
18
- const dispatch = useDispatch();
19
- const status = useSelector(state => selectCVDetailStatus(state, cvId), shallowEqual);
20
- const error = useSelector(state => selectCVDetailError(state, cvId), shallowEqual);
21
-
22
- useEffect(() => {
23
- dispatch(getContentViewDetails(cvId));
24
- }, [cvId, dispatch]);
25
-
26
- if (status === STATUS.PENDING) return (<Loading />);
27
- if (status === STATUS.ERROR) return (<EmptyStateMessage error={error} />);
28
- return (<>{children}</>);
29
- };
30
-
31
- DetailsContainer.propTypes = {
32
- children: PropTypes.element.isRequired,
33
- cvId: PropTypes.number.isRequired,
34
- };
35
-
36
- export default DetailsContainer;