katello 3.17.0 → 3.18.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 (272) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/katello/api/registry/registry_proxies_controller.rb +38 -21
  3. data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +3 -1
  4. data/app/controllers/katello/api/v2/activation_keys_controller.rb +10 -15
  5. data/app/controllers/katello/api/v2/capsule_content_controller.rb +2 -2
  6. data/app/controllers/katello/api/v2/content_credentials_controller.rb +1 -8
  7. data/app/controllers/katello/api/v2/content_export_incrementals_controller.rb +98 -0
  8. data/app/controllers/katello/api/v2/content_exports_controller.rb +84 -0
  9. data/app/controllers/katello/api/v2/content_imports_controller.rb +59 -0
  10. data/app/controllers/katello/api/v2/content_view_components_controller.rb +31 -14
  11. data/app/controllers/katello/api/v2/content_view_filters_controller.rb +17 -8
  12. data/app/controllers/katello/api/v2/content_view_repositories_controller.rb +1 -0
  13. data/app/controllers/katello/api/v2/content_view_versions_controller.rb +65 -71
  14. data/app/controllers/katello/api/v2/content_views_controller.rb +37 -26
  15. data/app/controllers/katello/api/v2/environments_controller.rb +8 -8
  16. data/app/controllers/katello/api/v2/gpg_keys_controller.rb +5 -5
  17. data/app/controllers/katello/api/v2/host_collections_controller.rb +19 -16
  18. data/app/controllers/katello/api/v2/host_debs_controller.rb +1 -0
  19. data/app/controllers/katello/api/v2/host_errata_controller.rb +2 -2
  20. data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +35 -6
  21. data/app/controllers/katello/api/v2/products_bulk_actions_controller.rb +1 -1
  22. data/app/controllers/katello/api/v2/products_controller.rb +9 -9
  23. data/app/controllers/katello/api/v2/repositories_bulk_actions_controller.rb +1 -1
  24. data/app/controllers/katello/api/v2/repositories_controller.rb +10 -5
  25. data/app/controllers/katello/api/v2/repository_sets_controller.rb +24 -14
  26. data/app/controllers/katello/api/v2/subscriptions_controller.rb +1 -1
  27. data/app/controllers/katello/api/v2/sync_plans_controller.rb +8 -9
  28. data/app/controllers/katello/api/v2/upstream_subscriptions_controller.rb +9 -2
  29. data/app/controllers/katello/concerns/api/v2/authorization.rb +19 -5
  30. data/app/controllers/katello/concerns/api/v2/bulk_hosts_extensions.rb +22 -18
  31. data/app/controllers/katello/concerns/api/v2/registration_controller_extensions.rb +21 -0
  32. data/app/controllers/katello/concerns/api/v2/repository_content_controller.rb +1 -1
  33. data/app/controllers/katello/concerns/organizations_controller_extensions.rb +2 -1
  34. data/app/controllers/katello/concerns/registration_controller_extensions.rb +16 -0
  35. data/app/helpers/katello/katello_urls_helper.rb +5 -2
  36. data/app/lib/actions/candlepin/product/content_create.rb +2 -0
  37. data/app/lib/actions/candlepin/product/content_update.rb +2 -0
  38. data/app/lib/actions/helpers/smart_proxy_sync_history_helper.rb +24 -0
  39. data/app/lib/actions/katello/applicability/hosts/bulk_generate.rb +6 -2
  40. data/app/lib/actions/katello/capsule_content/sync.rb +1 -1
  41. data/app/lib/actions/katello/capsule_content/sync_capsule.rb +16 -7
  42. data/app/lib/actions/katello/content_view/promote_to_environment.rb +1 -1
  43. data/app/lib/actions/katello/content_view/publish.rb +9 -9
  44. data/app/lib/actions/katello/content_view_version/import.rb +8 -13
  45. data/app/lib/actions/katello/content_view_version/import_library.rb +17 -0
  46. data/app/lib/actions/katello/content_view_version/incremental_update.rb +18 -3
  47. data/app/lib/actions/katello/host/hypervisors_update.rb +18 -0
  48. data/app/lib/actions/katello/host/update_system_purpose.rb +31 -0
  49. data/app/lib/actions/katello/host/upload_package_profile.rb +3 -1
  50. data/app/lib/actions/katello/host/upload_profiles.rb +8 -6
  51. data/app/lib/actions/katello/organization/manifest_delete.rb +0 -1
  52. data/app/lib/actions/katello/organization/manifest_import.rb +0 -1
  53. data/app/lib/actions/katello/organization/manifest_refresh.rb +0 -1
  54. data/app/lib/actions/katello/product/content_create.rb +7 -6
  55. data/app/lib/actions/katello/repository/filtered_index_content.rb +10 -1
  56. data/app/lib/actions/katello/repository/import_upload.rb +4 -1
  57. data/app/lib/actions/katello/repository/remove_content.rb +1 -1
  58. data/app/lib/actions/katello/repository/sync.rb +3 -1
  59. data/app/lib/actions/katello/repository/update.rb +5 -1
  60. data/app/lib/actions/katello/repository/upload_files.rb +1 -0
  61. data/app/lib/actions/middleware/record_smart_proxy_sync_history.rb +15 -0
  62. data/app/lib/actions/pulp/consumer/sync_capsule.rb +4 -2
  63. data/app/lib/actions/pulp/repository/distributor_publish.rb +1 -1
  64. data/app/lib/actions/pulp3/capsule_content/sync.rb +1 -0
  65. data/app/lib/actions/pulp3/content_migration.rb +10 -0
  66. data/app/lib/actions/pulp3/content_migration_presenter.rb +59 -0
  67. data/app/lib/actions/pulp3/content_view/delete_repository_references.rb +1 -1
  68. data/app/lib/actions/pulp3/content_view_version/create_importer.rb +7 -3
  69. data/app/lib/actions/pulp3/content_view_version/export.rb +7 -1
  70. data/app/lib/actions/pulp3/content_view_version/import.rb +7 -3
  71. data/app/lib/actions/pulp3/import_migration.rb +6 -1
  72. data/app/lib/actions/pulp3/orchestration/content_view_version/copy_version_units_to_library.rb +2 -1
  73. data/app/lib/actions/pulp3/orchestration/content_view_version/export.rb +38 -14
  74. data/app/lib/actions/pulp3/orchestration/content_view_version/export_library.rb +60 -0
  75. data/app/lib/actions/pulp3/orchestration/content_view_version/import.rb +16 -10
  76. data/app/lib/actions/pulp3/orchestration/repository/generate_metadata.rb +4 -1
  77. data/app/lib/actions/pulp3/orchestration/repository/import_upload.rb +16 -3
  78. data/app/lib/actions/pulp3/repository/commit_upload.rb +2 -1
  79. data/app/lib/actions/pulp3/repository/copy_content.rb +1 -1
  80. data/app/lib/actions/pulp3/repository/delete.rb +1 -1
  81. data/app/lib/actions/pulp3/repository/save_artifact.rb +1 -1
  82. data/app/lib/actions/pulp3/repository/save_version.rb +1 -1
  83. data/app/lib/actions/pulp3/repository/upload_tag.rb +18 -0
  84. data/app/lib/katello/resources/candlepin/consumer.rb +2 -2
  85. data/app/lib/katello/resources/candlepin/owner.rb +5 -0
  86. data/app/lib/katello/resources/candlepin/upstream_consumer.rb +6 -0
  87. data/app/lib/katello/resources/registry.rb +3 -3
  88. data/app/models/katello/authorization/activation_key.rb +4 -0
  89. data/app/models/katello/authorization/content_view.rb +13 -0
  90. data/app/models/katello/authorization/content_view_component.rb +15 -0
  91. data/app/models/katello/authorization/content_view_filter.rb +15 -0
  92. data/app/models/katello/authorization/content_view_version.rb +25 -2
  93. data/app/models/katello/authorization/content_view_version_export_history.rb +1 -1
  94. data/app/models/katello/authorization/gpg_key.rb +12 -4
  95. data/app/models/katello/authorization/lifecycle_environment.rb +8 -0
  96. data/app/models/katello/authorization/organization.rb +8 -0
  97. data/app/models/katello/authorization/sync_plan.rb +16 -0
  98. data/app/models/katello/concerns/operatingsystem_extensions.rb +2 -0
  99. data/app/models/katello/concerns/organization_extensions.rb +4 -5
  100. data/app/models/katello/concerns/smart_proxy_extensions.rb +6 -4
  101. data/app/models/katello/content_migration_progress.rb +4 -0
  102. data/app/models/katello/content_view.rb +30 -4
  103. data/app/models/katello/content_view_component.rb +2 -0
  104. data/app/models/katello/content_view_filter.rb +5 -0
  105. data/app/models/katello/content_view_history.rb +2 -1
  106. data/app/models/katello/content_view_package_filter.rb +1 -1
  107. data/app/models/katello/content_view_puppet_module.rb +8 -0
  108. data/app/models/katello/content_view_repository.rb +13 -1
  109. data/app/models/katello/content_view_version_export_history.rb +8 -1
  110. data/app/models/katello/glue/candlepin/pool.rb +9 -14
  111. data/app/models/katello/glue/pulp/repo.rb +8 -0
  112. data/app/models/katello/gpg_key.rb +1 -1
  113. data/app/models/katello/ping.rb +8 -3
  114. data/app/models/katello/repository.rb +33 -0
  115. data/app/models/katello/root_repository.rb +26 -1
  116. data/app/models/katello/smart_proxy_sync_history.rb +8 -0
  117. data/app/services/katello/candlepin/event_handler.rb +2 -0
  118. data/app/services/katello/candlepin/message_handler.rb +34 -0
  119. data/app/services/katello/candlepin/upstream_consumer.rb +28 -0
  120. data/app/services/katello/host_status_manager.rb +9 -0
  121. data/app/services/katello/pulp3/api/apt.rb +57 -0
  122. data/app/services/katello/pulp3/api/core.rb +8 -0
  123. data/app/services/katello/pulp3/api/docker.rb +4 -0
  124. data/app/services/katello/pulp3/content_view_version/export.rb +125 -8
  125. data/app/services/katello/pulp3/content_view_version/import.rb +39 -34
  126. data/app/services/katello/pulp3/content_view_version/import_export_common.rb +6 -16
  127. data/app/services/katello/pulp3/content_view_version/import_validator.rb +114 -0
  128. data/app/services/katello/pulp3/deb.rb +38 -0
  129. data/app/services/katello/pulp3/docker_manifest.rb +1 -0
  130. data/app/services/katello/pulp3/docker_tag.rb +1 -0
  131. data/app/services/katello/pulp3/migration.rb +51 -10
  132. data/app/services/katello/pulp3/pulp_content_unit.rb +5 -0
  133. data/app/services/katello/pulp3/repository.rb +10 -4
  134. data/app/services/katello/pulp3/repository/ansible_collection.rb +9 -0
  135. data/app/services/katello/pulp3/repository/apt.rb +63 -0
  136. data/app/services/katello/pulp3/repository/docker.rb +9 -0
  137. data/app/services/katello/pulp3/repository/yum.rb +14 -9
  138. data/app/services/katello/pulp3/repository_mirror.rb +9 -4
  139. data/app/services/katello/pulp3/task.rb +4 -0
  140. data/app/services/katello/pulp3/task_group.rb +4 -0
  141. data/app/services/katello/repository_type.rb +2 -1
  142. data/app/services/katello/smart_proxy_helper.rb +9 -0
  143. data/app/views/dashboard/_subscription_widget.html.erb +0 -5
  144. data/app/views/foreman/hosts/_registration.html.erb +12 -0
  145. data/app/views/katello/api/v2/content_view_version_export_histories/show.json.rabl +1 -1
  146. data/app/views/katello/api/v2/content_views/base.json.rabl +1 -0
  147. data/app/views/katello/api/v2/repositories/base.json.rabl +1 -1
  148. data/app/views/katello/layouts/react.html.erb +3 -2
  149. data/app/views/overrides/activation_keys/_host_tab_pane.html.erb +1 -5
  150. data/app/views/overrides/organizations/_index_row_override.html.erb +1 -1
  151. data/config/routes/api/v2.rb +24 -2
  152. data/config/routes/overrides.rb +1 -0
  153. data/db/migrate/20200929200357_create_katello_smart_proxy_sync_history.rb +13 -0
  154. data/db/migrate/20201008204114_add_os_versions_to_katello_root_repositories.rb +5 -0
  155. data/db/migrate/20201012172713_remove_gpg_key_perms.rb +23 -0
  156. data/db/migrate/20201012192035_add_metadata_to_katello_content_view_version_export_history.rb +5 -0
  157. data/db/migrate/20201021150008_add_import_only_to_katello_content_view.rb +5 -0
  158. data/db/migrate/20201119211133_pulp3_migration_progress.rb +9 -0
  159. data/db/seeds.d/111-upgrade_tasks.rb +2 -1
  160. data/engines/bastion/app/assets/javascripts/bastion/components/notification.service.js +1 -1
  161. data/engines/bastion/app/assets/javascripts/bastion/components/nutupane.factory.js +8 -13
  162. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-system-purpose-modal.controller.js +112 -0
  163. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-system-purpose-modal.html +78 -0
  164. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-host-modal-helper.service.js +11 -0
  165. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.controller.js +5 -0
  166. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-debs-installed.controller.js +2 -42
  167. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +4 -0
  168. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-views.controller.js +6 -2
  169. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-details.controller.js +12 -0
  170. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-details.html +7 -7
  171. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-info.html +7 -1
  172. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/new/content-view-new.controller.js +17 -3
  173. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/new/views/content-view-new.html +16 -2
  174. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/views/content-views.html +5 -0
  175. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/host-collection-details.controller.js +4 -0
  176. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/views/host-collection-info.html +6 -0
  177. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/hosts/host-bulk-action.factory.js +2 -1
  178. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +92 -19
  179. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de.po +17 -20
  180. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/es.po +17 -24
  181. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/fr.po +1292 -1170
  182. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/it.po +17 -20
  183. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ja.po +858 -807
  184. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ko.po +18 -19
  185. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt_BR.po +17 -24
  186. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ru.po +17 -18
  187. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_CN.po +986 -971
  188. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_TW.po +19 -20
  189. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/translations.js +9 -9
  190. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/products-bulk-advanced-sync-modal.controller.js +6 -7
  191. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +168 -155
  192. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +17 -2
  193. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +125 -113
  194. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +15 -3
  195. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/os-versions.service.js +46 -0
  196. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repository-types.service.js +8 -1
  197. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/views/content-access-mode-banner.html +1 -1
  198. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/views/sync-plan-details.html +1 -1
  199. data/lib/katello/engine.rb +2 -0
  200. data/lib/katello/permission_creator.rb +98 -69
  201. data/lib/katello/permissions/host_permissions.rb +1 -0
  202. data/lib/katello/plugin.rb +10 -2
  203. data/lib/katello/repository_types/deb.rb +9 -1
  204. data/lib/katello/tasks/pulp3_migration.rake +17 -3
  205. data/lib/katello/tasks/pulp3_migration_abort.rake +22 -0
  206. data/lib/katello/tasks/pulp3_migration_stats.rake +41 -0
  207. data/lib/katello/tasks/receptor/extract_orgs.rake +1 -1
  208. data/lib/katello/tasks/reset.rake +2 -1
  209. data/lib/katello/tasks/upgrades/3.18/add_cvv_export_history_metadata.rb +18 -0
  210. data/lib/katello/version.rb +1 -1
  211. data/locale/action_names.rb +51 -44
  212. data/locale/bn/katello.po +279 -55
  213. data/locale/cs/katello.po +278 -51
  214. data/locale/de/katello.po +279 -52
  215. data/locale/en/katello.po +278 -49
  216. data/locale/es/katello.po +279 -51
  217. data/locale/fr/katello.po +279 -51
  218. data/locale/gu/katello.po +279 -55
  219. data/locale/hi/katello.po +279 -55
  220. data/locale/it/katello.po +279 -51
  221. data/locale/ja/katello.po +279 -52
  222. data/locale/katello.pot +1379 -971
  223. data/locale/kn/katello.po +279 -55
  224. data/locale/ko/katello.po +279 -51
  225. data/locale/mr/katello.po +279 -55
  226. data/locale/or/katello.po +279 -55
  227. data/locale/pa/katello.po +279 -55
  228. data/locale/pt/katello.po +278 -52
  229. data/locale/pt_BR/katello.po +279 -51
  230. data/locale/ru/katello.po +279 -51
  231. data/locale/ta/katello.po +279 -55
  232. data/locale/te/katello.po +279 -55
  233. data/locale/zh_CN/katello.po +279 -51
  234. data/locale/zh_TW/katello.po +279 -52
  235. data/webpack/components/ActionableDetail.js +2 -1
  236. data/webpack/components/Search/Search.js +1 -1
  237. data/webpack/components/Table/MainTable.js +6 -2
  238. data/webpack/components/Table/TableWrapper.js +46 -9
  239. data/webpack/scenes/ContentViews/ContentViewSelectors.js +7 -3
  240. data/webpack/scenes/ContentViews/ContentViewsConstants.js +8 -0
  241. data/webpack/scenes/ContentViews/ContentViewsPage.js +2 -9
  242. data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +25 -3
  243. data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +14 -4
  244. data/webpack/scenes/ContentViews/Details/ContentViewDetails.js +2 -1
  245. data/webpack/scenes/ContentViews/Details/Repositories/ContentCounts.js +56 -0
  246. data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +169 -0
  247. data/webpack/scenes/ContentViews/Details/Repositories/LastSync.js +47 -0
  248. data/webpack/scenes/ContentViews/Details/Repositories/RepoAddedStatus.js +17 -0
  249. data/webpack/scenes/ContentViews/Details/Repositories/RepoIcon.js +23 -0
  250. data/webpack/scenes/ContentViews/Details/Repositories/SelectableDropdown.js +49 -0
  251. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewDetailRepos.fixtures.json +154 -0
  252. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewDetailRepos.test.js +131 -0
  253. data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetail.test.js +3 -0
  254. data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +4 -1
  255. data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +2 -2
  256. data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +29 -19
  257. data/webpack/scenes/Subscriptions/Manifest/ManifestActions.js +17 -0
  258. data/webpack/scenes/Subscriptions/Manifest/ManifestConstants.js +4 -0
  259. data/webpack/scenes/Subscriptions/Manifest/SimpleContentAccess.js +19 -2
  260. data/webpack/scenes/Subscriptions/Manifest/__tests__/SimpleContentAccess.test.js +9 -1
  261. data/webpack/scenes/Subscriptions/Manifest/index.js +2 -1
  262. data/webpack/scenes/Subscriptions/SubscriptionConstants.js +1 -1
  263. data/webpack/scenes/Subscriptions/SubscriptionReducer.js +3 -0
  264. data/webpack/scenes/Subscriptions/SubscriptionsPage.js +8 -2
  265. data/webpack/scenes/Subscriptions/SubscriptionsSelectors.js +3 -0
  266. data/webpack/scenes/Subscriptions/__tests__/SubscriptionsPage.test.js +3 -0
  267. data/webpack/scenes/Subscriptions/__tests__/SubscriptionsSelectors.test.js +6 -0
  268. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsSelectors.test.js.snap +6 -0
  269. data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/SubscriptionsToolbar.js +1 -13
  270. data/webpack/test-utils/react-testing-lib-wrapper.js +3 -0
  271. metadata +74 -13
  272. data/webpack/__mocks__/foremanReact/components/common/Fill/GlobalFill.js +0 -3
@@ -91,6 +91,17 @@ angular.module('Bastion.content-hosts').service('ContentHostsModalHelper', ['$ui
91
91
  });
92
92
  };
93
93
 
94
+ this.openSystemPurposeModal = function() {
95
+ $uibModal.open({
96
+ templateUrl: 'content-hosts/bulk/views/content-hosts-bulk-system-purpose-modal.html',
97
+ controller: 'ContentHostsBulkSystemPurposeModalController',
98
+ size: 'lg',
99
+ resolve: {
100
+ hostIds: this.resolveFunc()
101
+ }
102
+ });
103
+ };
104
+
94
105
  this.openModuleStreamsModal = function() {
95
106
  $uibModal.open({
96
107
  templateUrl: 'content-hosts/bulk/views/content-host-bulk-module-streams-modal.html',
@@ -160,6 +160,11 @@ angular.module('Bastion.content-hosts').controller('ContentHostsController',
160
160
  ContentHostsModalHelper.openModuleStreamsModal();
161
161
  };
162
162
 
163
+ $scope.openSystemPurposeModal = function () {
164
+ nutupane.invalidate();
165
+ ContentHostsModalHelper.openSystemPurposeModal();
166
+ };
167
+
163
168
  $scope.openTracesModal = function () {
164
169
  nutupane.invalidate();
165
170
  ContentHostsModalHelper.openTracesModal();
@@ -8,40 +8,15 @@
8
8
  * @requires HostDeb
9
9
  * @requires translate
10
10
  * @requires Nutupane
11
- * @requires Notification
12
11
  *
13
12
  * @description
14
13
  * Provides the functionality for the content host deb packages list and actions.
15
14
  */
16
15
  angular.module('Bastion.content-hosts').controller('ContentHostDebsInstalledController',
17
- ['$scope', '$timeout', '$window', 'HostDeb', 'translate', 'Nutupane', 'BastionConfig', 'Notification',
18
- function ($scope, $timeout, $window, HostDeb, translate, Nutupane, BastionConfig, Notification) {
16
+ ['$scope', '$timeout', '$window', 'HostDeb', 'translate', 'Nutupane',
17
+ function ($scope, $timeout, $window, HostDeb, translate, Nutupane) {
19
18
  var debsNutupane;
20
19
 
21
- $scope.openEventInfo = function (event) {
22
- // when the event has label defined, it means it comes
23
- // from foreman-tasks
24
- if (event.label) {
25
- $scope.transitionTo('content-host.tasks.details', {taskId: event.id});
26
- } else {
27
- $scope.transitionTo('content-host.events.details', {eventId: event.id});
28
- }
29
- $scope.working = false;
30
- };
31
-
32
- $scope.errorHandler = function (response) {
33
- angular.forEach(response.data.errors, function (responseError) {
34
- Notification.setErrorMessage(responseError);
35
- });
36
- $scope.working = false;
37
- };
38
-
39
- $scope.working = false;
40
- $scope.remoteExecutionPresent = BastionConfig.remoteExecutionPresent;
41
- $scope.packageActionFormValues = {
42
- authenticityToken: $window.AUTH_TOKEN.replace(/"/g, '')
43
- };
44
-
45
20
  $scope.removeSelectedDebs = function () {
46
21
  var selected;
47
22
 
@@ -54,21 +29,6 @@ angular.module('Bastion.content-hosts').controller('ContentHostDebsInstalledCont
54
29
  }
55
30
  };
56
31
 
57
- $scope.performPackageAction = function (actionType, term) {
58
- $scope.performViaRemoteExecution(actionType, term, false);
59
- };
60
-
61
- $scope.performViaRemoteExecution = function (actionType, term, customize) {
62
- $scope.packageActionFormValues.package = term;
63
- $scope.packageActionFormValues.remoteAction = actionType;
64
- $scope.packageActionFormValues.hostIds = $scope.host.id;
65
- $scope.packageActionFormValues.customize = customize;
66
-
67
- $timeout(function () {
68
- angular.element('#packageActionForm').submit();
69
- }, 0);
70
- };
71
-
72
32
  debsNutupane = new Nutupane(HostDeb, {id: $scope.$stateParams.hostId});
73
33
  debsNutupane.primaryOnly = true;
74
34
  $scope.table = debsNutupane.table;
@@ -51,6 +51,10 @@
51
51
  <a ng-click="openModuleStreamsModal()" disable-link="table.numSelected === 0" translate>Manage Module Streams</a>
52
52
  </li>
53
53
 
54
+ <li role="menuitem" ng-show="permitted('edit_hosts')" ng-class="{disabled: table.numSelected === 0}">
55
+ <a ng-click="openSystemPurposeModal()" disable-link="table.numSelected === 0" translate>Manage System Purpose</a>
56
+ </li>
57
+
54
58
  <li role="menuitem" ng-show="permitted('edit_hosts')" ng-class="{disabled: table.numSelected === 0}">
55
59
  <a ng-click="openTracesModal()" disable-link="table.numSelected === 0" translate>Manage Host Traces</a>
56
60
  </li>
@@ -13,8 +13,8 @@
13
13
  * within the table.
14
14
  */
15
15
  angular.module('Bastion.content-views').controller('ContentViewsController',
16
- ['$scope', 'Nutupane', 'ContentView', 'CurrentOrganization',
17
- function ($scope, Nutupane, ContentView, CurrentOrganization) {
16
+ ['$scope', 'Nutupane', 'ContentView', 'CurrentOrganization', 'RepositoryTypesService',
17
+ function ($scope, Nutupane, ContentView, CurrentOrganization, RepositoryTypesService) {
18
18
 
19
19
  var nutupane = new Nutupane(ContentView, {
20
20
  'nondefault': true,
@@ -26,5 +26,9 @@ angular.module('Bastion.content-views').controller('ContentViewsController',
26
26
  $scope.controllerName = 'katello_content_views';
27
27
 
28
28
  $scope.table = nutupane.table;
29
+
30
+ $scope.importOnlyEnabled = function() {
31
+ return RepositoryTypesService.pulp3Supported('yum');
32
+ };
29
33
  }]
30
34
  );
@@ -84,5 +84,17 @@ angular.module('Bastion.content-views').controller('ContentViewDetailsController
84
84
  };
85
85
 
86
86
  $scope.fetchContentView();
87
+
88
+ $scope.$watch('contentView.import_only', function () {
89
+ if ($scope.contentView.import_only) {
90
+ /* eslint-disable camelcase */
91
+ $scope.contentView.solve_dependencies = false;
92
+ /* eslint-enable camelcase */
93
+ }
94
+ });
95
+
96
+ $scope.importOnlyEnabled = function() {
97
+ return RepositoryTypesService.pulp3Supported('yum');
98
+ };
87
99
  }]
88
100
  );
@@ -13,7 +13,7 @@
13
13
  </div>
14
14
 
15
15
  <nav data-block="item-actions">
16
- <button type="button" class="btn btn-primary" ng-hide="denied('publish_content_views', contentView)"
16
+ <button type="button" class="btn btn-primary" ng-hide="denied('publish_content_views', contentView) || contentView.import_only"
17
17
  ui-sref="content-view.publish">
18
18
  <span translate>Publish New Version</span>
19
19
  </button>
@@ -73,7 +73,7 @@
73
73
  Repositories
74
74
  </a>
75
75
  </li>
76
- <li>
76
+ <li ng-hide="contentView.import_only">
77
77
  <a ui-sref="content-view.yum.filters" translate>
78
78
  Filters
79
79
  </a>
@@ -82,21 +82,21 @@
82
82
  </li>
83
83
 
84
84
  <li ng-class="{active: stateIncludes('content-view.repositories.deb')}"
85
- ng-hide="contentView.composite || !repositoryTypeEnabled('deb')">
85
+ ng-hide="contentView.composite || contentView.import_only || !repositoryTypeEnabled('deb')">
86
86
  <a ui-sref="content-view.repositories.deb.list" translate>
87
87
  Apt Repositories
88
88
  </a>
89
89
  </li>
90
90
 
91
91
  <li ng-class="{active: stateIncludes('content-view.repositories.file')}"
92
- ng-hide="contentView.composite || !repositoryTypeEnabled('file')">
92
+ ng-hide="contentView.composite || contentView.import_only || !repositoryTypeEnabled('file')">
93
93
  <a ui-sref="content-view.repositories.file.list" translate>
94
94
  File Repositories
95
95
  </a>
96
96
  </li>
97
97
 
98
98
  <li ng-class="{active: stateIncludes('content-view.puppet-modules')}"
99
- ng-hide="contentView.composite || !repositoryTypeEnabled('puppet')">
99
+ ng-hide="contentView.composite || contentView.import_only || !repositoryTypeEnabled('puppet')">
100
100
  <a ui-sref="content-view.puppet-modules.list" translate>
101
101
  Puppet Modules
102
102
  </a>
@@ -104,7 +104,7 @@
104
104
 
105
105
  <li uib-dropdown
106
106
  ng-class="{active: stateIncludes('content-view.repositories.docker') || stateIncludes('content-view.docker.filters')}"
107
- ng-hide="contentView.composite || !repositoryTypeEnabled('docker')">
107
+ ng-hide="contentView.composite || contentView.import_only || !repositoryTypeEnabled('docker')">
108
108
  <a uib-dropdown-toggle>
109
109
  <span translate>Container Images</span>
110
110
  <i class="fa fa-chevron-down"></i>
@@ -124,7 +124,7 @@
124
124
  </li>
125
125
 
126
126
  <li ng-class="{active: stateIncludes('content-view.repositories.ostree')}"
127
- ng-hide="contentView.composite || !repositoryTypeEnabled('ostree')">
127
+ ng-hide="contentView.composite || contentView.import_only || !repositoryTypeEnabled('ostree')">
128
128
  <a ui-sref="content-view.repositories.ostree.list" translate>
129
129
  OSTree Content
130
130
  </a>
@@ -24,6 +24,12 @@
24
24
  <dd ng-show="contentView.composite" translate>Yes</dd>
25
25
  <dd ng-hide="contentView.composite" translate>No</dd>
26
26
 
27
+ <div ng-show="importOnlyEnabled()">
28
+ <dt translate>Import-only</dt>
29
+ <dd ng-show="contentView.import_only" translate>Yes</dd>
30
+ <dd ng-hide="contentView.import_only" translate>No</dd>
31
+ </div>
32
+
27
33
  <dt translate>Force Puppet Environment</dt>
28
34
  <dd>
29
35
  <div bst-edit-checkbox="contentView.force_puppet_environment"
@@ -50,7 +56,7 @@
50
56
  </dd>
51
57
  </div>
52
58
 
53
- <div>
59
+ <div ng-if="!contentView.import_only">
54
60
  <dt translate>Solve Dependencies</dt>
55
61
  <dd>
56
62
  <div bst-edit-checkbox="contentView.solve_dependencies"
@@ -11,8 +11,8 @@
11
11
  * @description
12
12
  */
13
13
  angular.module('Bastion.content-views').controller('NewContentViewController',
14
- ['$scope', 'ContentView', 'FormUtils', 'CurrentOrganization', 'contentViewSolveDependencies',
15
- function ($scope, ContentView, FormUtils, CurrentOrganization, contentViewSolveDependencies) {
14
+ ['$scope', 'ContentView', 'FormUtils', 'CurrentOrganization', 'contentViewSolveDependencies', 'RepositoryTypesService',
15
+ function ($scope, ContentView, FormUtils, CurrentOrganization, contentViewSolveDependencies, RepositoryTypesService) {
16
16
 
17
17
  function success(response) {
18
18
  var successState = 'content-view.repositories.yum.available';
@@ -44,17 +44,31 @@ angular.module('Bastion.content-views').controller('NewContentViewController',
44
44
  contentView.$save(success, error);
45
45
  };
46
46
 
47
+ $scope.importOnlyEnabled = function() {
48
+ return RepositoryTypesService.pulp3Supported('yum');
49
+ };
50
+
47
51
  $scope.$watch('contentView.name', function () {
48
- if ($scope.contentViewForm.name) {
52
+ if ($scope.contentViewForm && $scope.contentViewForm.name) {
49
53
  $scope.contentViewForm.name.$setValidity('server', true);
50
54
  FormUtils.labelize($scope.contentView);
51
55
  }
52
56
  });
53
57
 
58
+ $scope.$watch('contentView.import_only', function () {
59
+ if ($scope.contentView.import_only) {
60
+ $scope.contentView.composite = false;
61
+ /* eslint-disable camelcase */
62
+ $scope.contentView.solve_dependencies = false;
63
+ /* eslint-enable camelcase */
64
+ }
65
+ });
66
+
54
67
  $scope.$watch('contentView.composite', function () {
55
68
  if ($scope.contentView.composite) {
56
69
  /* eslint-disable camelcase */
57
70
  $scope.contentView.solve_dependencies = false;
71
+ $scope.contentView.import_only = false;
58
72
  } else {
59
73
  $scope.contentView.auto_publish = false;
60
74
  /* eslint-enable camelcase */
@@ -56,7 +56,7 @@
56
56
  </textarea>
57
57
  </div>
58
58
 
59
- <div bst-form-group>
59
+ <div bst-form-group ng-hide="contentView.import_only">
60
60
  <div class="checkbox">
61
61
  <label for="composite">
62
62
  <input id="composite"
@@ -70,7 +70,21 @@
70
70
  <p class="help-block" translate>A composite view contains other content views.</p>
71
71
  </div>
72
72
 
73
- <div bst-form-group ng-hide="contentView.composite">
73
+ <div bst-form-group ng-hide="!importOnlyEnabled() || contentView.composite">
74
+ <div class="checkbox">
75
+ <label for="import_only">
76
+ <input id="import_only"
77
+ name="import_only"
78
+ ng-model="contentView.import_only"
79
+ type="checkbox"
80
+ tabindex="4"/>
81
+ <span translate>Import-only</span>
82
+ </label>
83
+ </div>
84
+ <p class="help-block" translate>Designate whether this Content View is for importing from an upstream server. Import-only Content Views can not be published directly.</p>
85
+ </div>
86
+
87
+ <div bst-form-group ng-hide="contentView.composite || contentView.import_only">
74
88
  <div class="checkbox">
75
89
  <label for="solve_dependencies">
76
90
  <input id="solve_dependencies"
@@ -29,6 +29,7 @@
29
29
  <tr bst-table-head>
30
30
  <th bst-table-column><span translate>Name</span></th>
31
31
  <th bst-table-column><span translate>Composite View?</span></th>
32
+ <th bst-table-column ng-show="importOnlyEnabled()"><span translate>Import-only?</span></th>
32
33
  <th bst-table-column><span translate>Last Published</span></th>
33
34
  <th bst-table-column><span translate>Environments</span></th>
34
35
  <th bst-table-column><span translate>Repositories</span></th>
@@ -46,6 +47,10 @@
46
47
  <span ng-show="contentView.composite" translate>Yes</span>
47
48
  <span ng-hide="contentView.composite" translate>No</span>
48
49
  </td>
50
+ <td bst-table-cell ng-show="importOnlyEnabled()">
51
+ <span ng-show="contentView.import_only" translate>Yes</span>
52
+ <span ng-hide="contentView.import_only" translate>No</span>
53
+ </td>
49
54
  <td bst-table-cell>
50
55
  <span ng-show="contentView.last_published"><long-date-time date="contentView.last_published" /></span>
51
56
  <span ng-hide="contentView.last_published" translate>
@@ -77,6 +77,10 @@ angular.module('Bastion.host-collections').controller('HostCollectionDetailsCont
77
77
  ContentHostsModalHelper.openSubscriptionsModal();
78
78
  };
79
79
 
80
+ $scope.openSystemPurposeModal = function () {
81
+ ContentHostsModalHelper.openSystemPurposeModal();
82
+ };
83
+
80
84
  $scope.openModuleStreamsModal = function () {
81
85
  ContentHostsModalHelper.openModuleStreamsModal();
82
86
  };
@@ -100,6 +100,12 @@
100
100
  </a>
101
101
  </li>
102
102
 
103
+ <li>
104
+ <a translate ng-click="openSystemPurposeModal()">
105
+ System Purpose Management
106
+ </a>
107
+ </li>
108
+
103
109
  <li bst-feature-flag="lifecycle_environments">
104
110
  <a translate ng-click="openEnvironmentModal()">
105
111
  Change assigned Lifecycle Environment or Content View
@@ -27,7 +27,8 @@ angular.module('Bastion.hosts').factory('HostBulkAction',
27
27
  availableIncrementalUpdates: {method: 'POST', isArray: true, params: {action: 'available_incremental_updates'}},
28
28
  moduleStreams: {method: 'POST', params: {action: 'module_streams'}},
29
29
  traces: {method: 'POST', params: {action: 'traces'}},
30
- resolveTraces: {method: 'PUT', isArray: true, params: {action: 'resolve_traces'}}
30
+ resolveTraces: {method: 'PUT', isArray: true, params: {action: 'resolve_traces'}},
31
+ systemPurpose: {method: 'PUT', params: {action: 'system_purpose'}}
31
32
  });
32
33
 
33
34
  }]
@@ -273,6 +273,7 @@ msgstr ""
273
273
  msgid "* These marked Content View Versions are from Composite Content Views. Their components needing updating are listed underneath."
274
274
  msgstr ""
275
275
 
276
+ #: app/assets/javascripts/bastion_katello/products/bulk/products-bulk-advanced-sync-modal.controller.js
276
277
  #: app/assets/javascripts/bastion_katello/products/products.controller.js
277
278
  msgid "/foreman_tasks/tasks/%taskId"
278
279
  msgstr ""
@@ -520,6 +521,10 @@ msgstr ""
520
521
  msgid "Add ons"
521
522
  msgstr ""
522
523
 
524
+ #: app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-system-purpose-modal.html
525
+ msgid "Add ons:"
526
+ msgstr ""
527
+
523
528
  #: app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-group-filter-details.html
524
529
  msgid "Add Package Group"
525
530
  msgstr ""
@@ -1027,6 +1032,7 @@ msgstr[1] ""
1027
1032
 
1028
1033
  #: app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-environment-modal.html
1029
1034
  #: app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-release-version-modal.html
1035
+ #: app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-system-purpose-modal.html
1030
1036
  msgid "Assign"
1031
1037
  msgstr ""
1032
1038
 
@@ -1038,6 +1044,10 @@ msgstr ""
1038
1044
  msgid "Assign Release Version"
1039
1045
  msgstr ""
1040
1046
 
1047
+ #: app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-system-purpose-modal.html
1048
+ msgid "Assign System Purpose:"
1049
+ msgstr ""
1050
+
1041
1051
  #: app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-details.html
1042
1052
  msgid "Associations"
1043
1053
  msgstr ""
@@ -1191,6 +1201,7 @@ msgid "Build Time"
1191
1201
  msgstr ""
1192
1202
 
1193
1203
  #: app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-host-bulk-module-streams-modal.html
1204
+ #: app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-system-purpose-modal.html
1194
1205
  #: app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-traces-modal.html
1195
1206
  #: app/assets/javascripts/bastion_katello/content-views/deletion/views/content-view-deletion.html
1196
1207
  #: app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-activation-keys.html
@@ -1283,10 +1294,6 @@ msgstr ""
1283
1294
  msgid "Checksum Type"
1284
1295
  msgstr ""
1285
1296
 
1286
- #: app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html
1287
- msgid "Choose <b>Default</b> to enable the repository for all architectures"
1288
- msgstr ""
1289
-
1290
1297
  #: app/assets/javascripts/bastion_katello/content-views/details/views/content-view-promotion.html
1291
1298
  msgid "Choose a lifecycle environment from the available promotion paths."
1292
1299
  msgstr ""
@@ -1311,6 +1318,7 @@ msgstr ""
1311
1318
  msgid "Click to monitor task progress."
1312
1319
  msgstr ""
1313
1320
 
1321
+ #: app/assets/javascripts/bastion_katello/products/bulk/products-bulk-advanced-sync-modal.controller.js
1314
1322
  #: app/assets/javascripts/bastion_katello/products/bulk/products-bulk-http-proxy-modal.controller.js
1315
1323
  #: app/assets/javascripts/bastion_katello/products/details/product-repositories.controller.js
1316
1324
  #: app/assets/javascripts/bastion_katello/products/products.controller.js
@@ -1522,6 +1530,10 @@ msgstr ""
1522
1530
  msgid "Content Host Status"
1523
1531
  msgstr ""
1524
1532
 
1533
+ #: app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-system-purpose-modal.html
1534
+ msgid "Content Host System Purpose"
1535
+ msgstr ""
1536
+
1525
1537
  #: app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-details.html
1526
1538
  msgid "Content Host:"
1527
1539
  msgstr ""
@@ -1769,6 +1781,10 @@ msgstr ""
1769
1781
  msgid "Cron Logic"
1770
1782
  msgstr ""
1771
1783
 
1784
+ #: app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-system-purpose-modal.html
1785
+ msgid "ctrl-click or shift-click to select multiple Add ons"
1786
+ msgstr ""
1787
+
1772
1788
  #: app/assets/javascripts/bastion_katello/content-hosts/content/content-host-errata.controller.js
1773
1789
  msgid "Current Lifecycle Environment (%e/%cv)"
1774
1790
  msgstr ""
@@ -1858,8 +1874,6 @@ msgid "Debs"
1858
1874
  msgstr ""
1859
1875
 
1860
1876
  #: app/assets/javascripts/bastion_katello/products/details/repositories/checksum.service.js
1861
- #: app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js
1862
- #: app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js
1863
1877
  msgid "Default"
1864
1878
  msgstr ""
1865
1879
 
@@ -1942,6 +1956,10 @@ msgstr ""
1942
1956
  msgid "Description"
1943
1957
  msgstr ""
1944
1958
 
1959
+ #: app/assets/javascripts/bastion_katello/content-views/new/views/content-view-new.html
1960
+ msgid "Designate whether this Content View is for importing from an upstream server. Import-only Content Views can not be published directly."
1961
+ msgstr ""
1962
+
1945
1963
  #: app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-details.html
1946
1964
  #: app/assets/javascripts/bastion_katello/content-credentials/details/views/content-credential-details.html
1947
1965
  #: app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-details.html
@@ -2083,11 +2101,6 @@ msgstr ""
2083
2101
  msgid "Enable"
2084
2102
  msgstr ""
2085
2103
 
2086
- #: app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html
2087
- #: app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html
2088
- msgid "Enable on Registration"
2089
- msgstr ""
2090
-
2091
2104
  #: app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-traces.html
2092
2105
  #: app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html
2093
2106
  msgid "Enable Traces"
@@ -2608,6 +2621,15 @@ msgstr ""
2608
2621
  msgid "Immediate"
2609
2622
  msgstr ""
2610
2623
 
2624
+ #: app/assets/javascripts/bastion_katello/content-views/details/views/content-view-info.html
2625
+ #: app/assets/javascripts/bastion_katello/content-views/new/views/content-view-new.html
2626
+ msgid "Import-only"
2627
+ msgstr ""
2628
+
2629
+ #: app/assets/javascripts/bastion_katello/content-views/views/content-views.html
2630
+ msgid "Import-only?"
2631
+ msgstr ""
2632
+
2611
2633
  #: app/assets/javascripts/bastion_katello/errata/errata-severity.filter.js
2612
2634
  msgid "Important"
2613
2635
  msgstr ""
@@ -3027,6 +3049,10 @@ msgstr ""
3027
3049
  msgid "Manage Sync Plan"
3028
3050
  msgstr ""
3029
3051
 
3052
+ #: app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html
3053
+ msgid "Manage System Purpose"
3054
+ msgstr ""
3055
+
3030
3056
  #: app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-docker-manifests.html
3031
3057
  msgid "Manifest Lists"
3032
3058
  msgstr ""
@@ -3238,7 +3264,7 @@ msgid "Name"
3238
3264
  msgstr ""
3239
3265
 
3240
3266
  #: app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html
3241
- msgid "Name of the upstream repository you want to sync. Example: 'busybox' or 'fedora/ssh'."
3267
+ msgid "Name of the upstream repository you want to sync. Example: 'quay/busybox' or 'fedora/ssh'."
3242
3268
  msgstr ""
3243
3269
 
3244
3270
  #: app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html
@@ -3481,6 +3507,11 @@ msgstr ""
3481
3507
  msgid "No repository sets provided through subscriptions."
3482
3508
  msgstr ""
3483
3509
 
3510
+ #: app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js
3511
+ #: app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js
3512
+ msgid "No restriction"
3513
+ msgstr ""
3514
+
3484
3515
  #: app/assets/javascripts/bastion_katello/content-views/details/filters/views/filter-rule-matching-package-modal.html
3485
3516
  msgid "No RPMs were matched"
3486
3517
  msgstr ""
@@ -3937,7 +3968,11 @@ msgid "Product sync has been initiated in the background."
3937
3968
  msgstr ""
3938
3969
 
3939
3970
  #: app/assets/javascripts/bastion_katello/products/bulk/products-bulk-advanced-sync-modal.controller.js
3940
- msgid "Product syncs has been initiated in the background. Click %s to monitor the progress."
3971
+ msgid "Product syncs has been initiated in the background."
3972
+ msgstr ""
3973
+
3974
+ #: app/assets/javascripts/bastion_katello/products/products.controller.js
3975
+ msgid "Product verify checksum has been initiated in the background."
3941
3976
  msgstr ""
3942
3977
 
3943
3978
  #: app/assets/javascripts/bastion_katello/content-credentials/details/views/content-credential-details.html
@@ -4625,6 +4660,10 @@ msgstr ""
4625
4660
  msgid "Restart Services on Content Host \"{{host.name}}\"?"
4626
4661
  msgstr ""
4627
4662
 
4663
+ #: app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html
4664
+ msgid "Restrict to <br>OS version"
4665
+ msgstr ""
4666
+
4628
4667
  #: app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html
4629
4668
  msgid "Restrict to architecture"
4630
4669
  msgstr ""
@@ -4633,6 +4672,10 @@ msgstr ""
4633
4672
  msgid "Restrict to Architecture"
4634
4673
  msgstr ""
4635
4674
 
4675
+ #: app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html
4676
+ msgid "Restrict to OS version"
4677
+ msgstr ""
4678
+
4636
4679
  #: app/assets/javascripts/bastion_katello/tasks/views/task-details.html
4637
4680
  msgid "Result"
4638
4681
  msgstr ""
@@ -4642,6 +4685,10 @@ msgstr ""
4642
4685
  msgid "Role"
4643
4686
  msgstr ""
4644
4687
 
4688
+ #: app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-system-purpose-modal.html
4689
+ msgid "Role:"
4690
+ msgstr ""
4691
+
4645
4692
  #: app/assets/javascripts/bastion_katello/content-views/details/filters/views/filter-rule-matching-package-modal.html
4646
4693
  #: app/assets/javascripts/bastion_katello/packages/views/packages.html
4647
4694
  #: app/assets/javascripts/bastion_katello/content-views/details/filters/filter-helper.service.js
@@ -4771,10 +4818,6 @@ msgstr ""
4771
4818
  msgid "Selecting \"Complete Sync\" will cause only Yum repositories of the selected product to be synced. Selecting \"Validate Content\" will cause only Yum repositories using the \"Immediate\" or \"Background\" download policies will be synced."
4772
4819
  msgstr ""
4773
4820
 
4774
- #: app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html
4775
- msgid "Selecting this option will automatically enable this Repository when a Host registers and consumes this subscription."
4776
- msgstr ""
4777
-
4778
4821
  #: app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html
4779
4822
  msgid "Selecting this option will result in contents that are no longer part of the upstream repository being removed during synchronization."
4780
4823
  msgstr ""
@@ -4801,10 +4844,18 @@ msgstr ""
4801
4844
  msgid "Service Level (SLA)"
4802
4845
  msgstr ""
4803
4846
 
4847
+ #: app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-system-purpose-modal.html
4848
+ msgid "Service Level:"
4849
+ msgstr ""
4850
+
4804
4851
  #: app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html
4805
4852
  msgid "Set Release Version"
4806
4853
  msgstr ""
4807
4854
 
4855
+ #: app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-system-purpose-modal.html
4856
+ msgid "Set System Purpose values on {{ hostCount }} selected content hosts?"
4857
+ msgstr ""
4858
+
4808
4859
  #: app/assets/javascripts/bastion_katello/errata/details/views/erratum-info.html
4809
4860
  msgid "Severity"
4810
4861
  msgstr ""
@@ -5207,6 +5258,10 @@ msgstr ""
5207
5258
  msgid "System Purpose allows you to set the system's intended use on your network and improves the accuracy of auto attaching subscriptions."
5208
5259
  msgstr ""
5209
5260
 
5261
+ #: app/assets/javascripts/bastion_katello/host-collections/details/views/host-collection-info.html
5262
+ msgid "System Purpose Management"
5263
+ msgstr ""
5264
+
5210
5265
  #: app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html
5211
5266
  msgid "System Purpose Status"
5212
5267
  msgstr ""
@@ -5307,6 +5362,15 @@ msgstr ""
5307
5362
  msgid "The Remote Execution plugin needs to be installed in order to resolve Traces."
5308
5363
  msgstr ""
5309
5364
 
5365
+ #: app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html
5366
+ msgid "The repository will be enabled by default on content hosts with the selected architecture."
5367
+ msgstr ""
5368
+
5369
+ #: app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html
5370
+ #: app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html
5371
+ msgid "The repository will be enabled by default on content hosts with the selected OS version."
5372
+ msgstr ""
5373
+
5310
5374
  #: app/assets/javascripts/bastion_katello/activation-keys/new/views/activation-key-new.html
5311
5375
  msgid "The selected environment contains no Content Views, please select a different environment."
5312
5376
  msgstr ""
@@ -5456,7 +5520,7 @@ msgid ""
5456
5520
  msgstr ""
5457
5521
 
5458
5522
  #: app/assets/javascripts/bastion_katello/subscriptions/views/content-access-mode-banner.html
5459
- msgid "This organization has Simple Content Access enabled. Hosts can consume from all repositories in their Content View regardless of subscription status."
5523
+ msgid "This organization has Simple Content Access enabled. Hosts are not required to have subscriptions attached to access repositories."
5460
5524
  msgstr ""
5461
5525
 
5462
5526
  #: app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-environments.html
@@ -5737,7 +5801,7 @@ msgid "Url"
5737
5801
  msgstr ""
5738
5802
 
5739
5803
  #: app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html
5740
- msgid "URL of the registry you want to sync. Example: https://registry-1.docker.io/"
5804
+ msgid "URL of the registry you want to sync. Example: https://registry-1.docker.io/ or https://quay.io/"
5741
5805
  msgstr ""
5742
5806
 
5743
5807
  #: app/assets/javascripts/bastion_katello/products/discovery/views/discovery.html
@@ -5749,6 +5813,10 @@ msgstr ""
5749
5813
  msgid "Usage Type"
5750
5814
  msgstr ""
5751
5815
 
5816
+ #: app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-system-purpose-modal.html
5817
+ msgid "Usage Type:"
5818
+ msgstr ""
5819
+
5752
5820
  #: app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html
5753
5821
  #: app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html
5754
5822
  msgid "Use Ctrl-click to multi-select/deselect items."
@@ -5798,6 +5866,11 @@ msgstr ""
5798
5866
  msgid "Variant"
5799
5867
  msgstr ""
5800
5868
 
5869
+ #: app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-details.html
5870
+ #: app/assets/javascripts/bastion_katello/products/views/products.html
5871
+ msgid "Verify Content Checksum"
5872
+ msgstr ""
5873
+
5801
5874
  #: app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html
5802
5875
  #: app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html
5803
5876
  #: app/assets/javascripts/bastion_katello/products/discovery/views/discovery-create.html