katello 4.12.1 → 4.13.0.rc1

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

Potentially problematic release.


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

Files changed (222) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/katello/locale/bn/katello.js +3365 -3350
  3. data/app/assets/javascripts/katello/locale/bn_IN/katello.js +3136 -3121
  4. data/app/assets/javascripts/katello/locale/ca/katello.js +3588 -3576
  5. data/app/assets/javascripts/katello/locale/cs/katello.js +3499 -3487
  6. data/app/assets/javascripts/katello/locale/cs_CZ/katello.js +4186 -4186
  7. data/app/assets/javascripts/katello/locale/de/katello.js +5553 -5562
  8. data/app/assets/javascripts/katello/locale/de_AT/katello.js +3008 -2993
  9. data/app/assets/javascripts/katello/locale/de_DE/katello.js +3066 -3051
  10. data/app/assets/javascripts/katello/locale/el/katello.js +3376 -3370
  11. data/app/assets/javascripts/katello/locale/en/katello.js +3008 -2993
  12. data/app/assets/javascripts/katello/locale/en_GB/katello.js +3076 -3073
  13. data/app/assets/javascripts/katello/locale/en_US/katello.js +3008 -2993
  14. data/app/assets/javascripts/katello/locale/es/katello.js +5366 -5372
  15. data/app/assets/javascripts/katello/locale/et_EE/katello.js +3008 -2993
  16. data/app/assets/javascripts/katello/locale/fr/katello.js +5975 -5984
  17. data/app/assets/javascripts/katello/locale/gl/katello.js +3125 -3113
  18. data/app/assets/javascripts/katello/locale/gu/katello.js +3119 -3104
  19. data/app/assets/javascripts/katello/locale/he_IL/katello.js +3020 -3005
  20. data/app/assets/javascripts/katello/locale/hi/katello.js +3137 -3122
  21. data/app/assets/javascripts/katello/locale/id/katello.js +3008 -2993
  22. data/app/assets/javascripts/katello/locale/it/katello.js +4469 -4466
  23. data/app/assets/javascripts/katello/locale/ja/katello.js +5969 -5978
  24. data/app/assets/javascripts/katello/locale/ka/katello.js +5649 -5652
  25. data/app/assets/javascripts/katello/locale/kn/katello.js +3136 -3121
  26. data/app/assets/javascripts/katello/locale/ko/katello.js +4717 -4720
  27. data/app/assets/javascripts/katello/locale/locale/katello.js +1050 -1084
  28. data/app/assets/javascripts/katello/locale/ml_IN/katello.js +3008 -2993
  29. data/app/assets/javascripts/katello/locale/mr/katello.js +3136 -3121
  30. data/app/assets/javascripts/katello/locale/nl_NL/katello.js +3116 -3101
  31. data/app/assets/javascripts/katello/locale/or/katello.js +3137 -3122
  32. data/app/assets/javascripts/katello/locale/pa/katello.js +3136 -3121
  33. data/app/assets/javascripts/katello/locale/pl/katello.js +3210 -3195
  34. data/app/assets/javascripts/katello/locale/pl_PL/katello.js +3008 -2993
  35. data/app/assets/javascripts/katello/locale/pt/katello.js +3009 -2994
  36. data/app/assets/javascripts/katello/locale/pt_BR/katello.js +5362 -5368
  37. data/app/assets/javascripts/katello/locale/ro/katello.js +3008 -2993
  38. data/app/assets/javascripts/katello/locale/ro_RO/katello.js +3008 -2993
  39. data/app/assets/javascripts/katello/locale/ru/katello.js +4638 -4641
  40. data/app/assets/javascripts/katello/locale/sl/katello.js +3051 -3036
  41. data/app/assets/javascripts/katello/locale/sv_SE/katello.js +3156 -3144
  42. data/app/assets/javascripts/katello/locale/ta/katello.js +3365 -3350
  43. data/app/assets/javascripts/katello/locale/ta_IN/katello.js +3121 -3106
  44. data/app/assets/javascripts/katello/locale/te/katello.js +3136 -3121
  45. data/app/assets/javascripts/katello/locale/tr/katello.js +3025 -3010
  46. data/app/assets/javascripts/katello/locale/vi/katello.js +3008 -2993
  47. data/app/assets/javascripts/katello/locale/vi_VN/katello.js +3008 -2993
  48. data/app/assets/javascripts/katello/locale/zh/katello.js +3008 -2993
  49. data/app/assets/javascripts/katello/locale/zh_CN/katello.js +5968 -5977
  50. data/app/assets/javascripts/katello/locale/zh_TW/katello.js +4694 -4697
  51. data/app/controllers/katello/api/registry/registry_proxies_controller.rb +51 -124
  52. data/app/controllers/katello/api/rhsm/candlepin_dynflow_proxy_controller.rb +12 -20
  53. data/app/controllers/katello/api/v2/activation_keys_controller.rb +10 -4
  54. data/app/controllers/katello/api/v2/capsule_content_controller.rb +24 -0
  55. data/app/controllers/katello/api/v2/content_view_versions_controller.rb +9 -2
  56. data/app/controllers/katello/api/v2/debs_controller.rb +1 -1
  57. data/app/controllers/katello/api/v2/errata_controller.rb +1 -1
  58. data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +12 -4
  59. data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +3 -3
  60. data/app/controllers/katello/api/v2/organizations_controller.rb +0 -11
  61. data/app/controllers/katello/api/v2/packages_controller.rb +1 -1
  62. data/app/controllers/katello/api/v2/repositories_controller.rb +18 -12
  63. data/app/controllers/katello/api/v2/repository_sets_controller.rb +2 -1
  64. data/app/controllers/katello/api/v2/simple_content_access_controller.rb +9 -22
  65. data/app/controllers/katello/concerns/api/v2/authorization.rb +1 -1
  66. data/app/helpers/katello/subscription_mailer_helper.rb +1 -1
  67. data/app/jobs/create_manifest_expire_soon_warning_notifications.rb +11 -0
  68. data/app/lib/actions/candlepin/owner/regenerate_upstream_identity_cert.rb +21 -0
  69. data/app/lib/actions/katello/capsule_content/sync.rb +1 -1
  70. data/app/lib/actions/katello/capsule_content/verify_checksum.rb +75 -0
  71. data/app/lib/actions/katello/content_view/promote.rb +1 -1
  72. data/app/lib/actions/katello/content_view/publish.rb +1 -1
  73. data/app/lib/actions/katello/content_view_version/verify_checksum.rb +29 -0
  74. data/app/lib/actions/katello/host/hypervisors_update.rb +1 -0
  75. data/app/lib/actions/katello/host/update_content_view.rb +2 -2
  76. data/app/lib/actions/katello/organization/manifest_import.rb +5 -0
  77. data/app/lib/actions/katello/organization/manifest_refresh.rb +3 -0
  78. data/app/lib/actions/katello/repository/metadata_generate.rb +7 -1
  79. data/app/lib/actions/katello/repository/remove_content.rb +1 -0
  80. data/app/lib/actions/katello/repository/sync.rb +2 -1
  81. data/app/lib/actions/katello/repository/upload_files.rb +1 -0
  82. data/app/lib/actions/pulp3/capsule_content/verify_checksum.rb +27 -0
  83. data/app/lib/actions/pulp3/orchestration/content_view_version/export_repository.rb +7 -9
  84. data/app/lib/actions/pulp3/orchestration/content_view_version/syncable_export.rb +5 -4
  85. data/app/lib/katello/concerns/base_template_scope_extensions.rb +7 -2
  86. data/app/lib/katello/http_resource.rb +6 -1
  87. data/app/lib/katello/resources/candlepin/consumer.rb +1 -1
  88. data/app/lib/katello/resources/candlepin/upstream_consumer.rb +18 -6
  89. data/app/lib/katello/resources/candlepin/upstream_job.rb +1 -1
  90. data/app/lib/katello/resources/registry.rb +25 -0
  91. data/app/mailers/katello/subscription_mailer.rb +3 -6
  92. data/app/models/katello/concerns/organization_extensions.rb +42 -3
  93. data/app/models/katello/content_view.rb +28 -0
  94. data/app/models/katello/content_view_environment_content_facet.rb +4 -2
  95. data/app/models/katello/glue/provider.rb +19 -12
  96. data/app/models/katello/glue/pulp/repos.rb +3 -2
  97. data/app/models/katello/host/content_facet.rb +1 -1
  98. data/app/models/katello/host/subscription_facet.rb +1 -1
  99. data/app/models/katello/ping.rb +1 -1
  100. data/app/models/katello/repository.rb +27 -0
  101. data/app/models/katello/root_repository.rb +0 -4
  102. data/app/services/katello/content_unit_indexer.rb +9 -0
  103. data/app/services/katello/pulp3/alternate_content_source.rb +4 -6
  104. data/app/services/katello/pulp3/api/core.rb +13 -0
  105. data/app/services/katello/pulp3/api/yum.rb +11 -0
  106. data/app/services/katello/pulp3/docker_manifest.rb +5 -1
  107. data/app/services/katello/pulp3/repository/generic.rb +1 -1
  108. data/app/services/katello/pulp3/repository.rb +26 -6
  109. data/app/services/katello/pulp3/repository_mirror.rb +13 -12
  110. data/app/services/katello/pulp3/service_common.rb +2 -10
  111. data/app/services/katello/pulp3/smart_proxy_repository.rb +0 -2
  112. data/app/services/katello/ui_notifications/subscriptions/manifest_expire_soon_warning.rb +75 -0
  113. data/app/views/foreman/job_templates/update_package_-_katello_ansible_default.erb +5 -1
  114. data/app/views/foreman/job_templates/update_packages_by_search_query_-_katello_ansible_default.erb +2 -2
  115. data/app/views/foreman/job_templates/upload_profile.erb +16 -0
  116. data/app/views/katello/api/v2/content_view_filter_rules/show.json.rabl +9 -0
  117. data/app/views/katello/api/v2/docker_manifests/show.json.rabl +1 -0
  118. data/app/views/katello/api/v2/organizations/show.json.rabl +9 -1
  119. data/app/views/overrides/activation_keys/_host_environment_select.html.erb +1 -1
  120. data/app/views/overrides/activation_keys/_host_media_type_select.html.erb +15 -5
  121. data/config/routes/api/registry.rb +4 -8
  122. data/config/routes/api/v2.rb +2 -0
  123. data/db/migrate/20240423112842_add_fields_to_katello_docker_manifest.rb +8 -0
  124. data/db/migrate/20240502192021_change_katello_repository_rpms_id_seq_to_big_int.rb +9 -0
  125. data/db/seeds.d/109-katello-notification-blueprints.rb +6 -0
  126. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-repository-sets.controller.js +3 -3
  127. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/new/views/new-content-credential.html +2 -1
  128. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-repository-sets.controller.js +3 -3
  129. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +0 -15
  130. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +8 -6
  131. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +12 -10
  132. data/lib/katello/permission_creator.rb +3 -3
  133. data/lib/katello/permissions/registry_permissions.rb +4 -7
  134. data/lib/katello/plugin.rb +9 -8
  135. data/lib/katello/repository_types/ostree.rb +7 -0
  136. data/lib/katello/scheduled_jobs.rb +7 -1
  137. data/lib/katello/tasks/clean_backend_objects.rake +1 -1
  138. data/lib/katello/tasks/repository.rake +22 -0
  139. data/lib/katello/version.rb +1 -1
  140. data/locale/action_names.rb +4 -3
  141. data/locale/bn/katello.po +166 -151
  142. data/locale/bn_IN/katello.po +166 -151
  143. data/locale/ca/katello.po +166 -151
  144. data/locale/cs/katello.po +166 -151
  145. data/locale/cs_CZ/LC_MESSAGES/katello.mo +0 -0
  146. data/locale/cs_CZ/katello.po +172 -157
  147. data/locale/de/LC_MESSAGES/katello.mo +0 -0
  148. data/locale/de/katello.po +178 -163
  149. data/locale/de_AT/katello.po +166 -151
  150. data/locale/de_DE/katello.po +166 -151
  151. data/locale/el/katello.po +166 -151
  152. data/locale/en/katello.po +166 -151
  153. data/locale/en_GB/katello.po +166 -151
  154. data/locale/en_US/katello.po +166 -151
  155. data/locale/es/LC_MESSAGES/katello.mo +0 -0
  156. data/locale/es/katello.po +178 -163
  157. data/locale/et_EE/katello.po +166 -151
  158. data/locale/fr/LC_MESSAGES/katello.mo +0 -0
  159. data/locale/fr/katello.po +179 -164
  160. data/locale/gl/katello.po +166 -151
  161. data/locale/gu/katello.po +166 -151
  162. data/locale/he_IL/katello.po +166 -151
  163. data/locale/hi/katello.po +166 -151
  164. data/locale/id/katello.po +166 -151
  165. data/locale/it/LC_MESSAGES/katello.mo +0 -0
  166. data/locale/it/katello.po +169 -154
  167. data/locale/ja/LC_MESSAGES/katello.mo +0 -0
  168. data/locale/ja/katello.po +179 -164
  169. data/locale/ka/LC_MESSAGES/katello.mo +0 -0
  170. data/locale/ka/katello.po +177 -162
  171. data/locale/katello.pot +1119 -1062
  172. data/locale/kn/katello.po +166 -151
  173. data/locale/ko/LC_MESSAGES/katello.mo +0 -0
  174. data/locale/ko/katello.po +174 -159
  175. data/locale/ml_IN/katello.po +166 -151
  176. data/locale/mr/katello.po +166 -151
  177. data/locale/nl_NL/katello.po +166 -151
  178. data/locale/or/katello.po +166 -151
  179. data/locale/pa/katello.po +166 -151
  180. data/locale/pl/katello.po +166 -151
  181. data/locale/pl_PL/katello.po +166 -151
  182. data/locale/pt/katello.po +166 -151
  183. data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
  184. data/locale/pt_BR/katello.po +178 -163
  185. data/locale/ro/katello.po +166 -151
  186. data/locale/ro_RO/katello.po +166 -151
  187. data/locale/ru/LC_MESSAGES/katello.mo +0 -0
  188. data/locale/ru/katello.po +171 -156
  189. data/locale/sl/katello.po +166 -151
  190. data/locale/sv_SE/katello.po +166 -151
  191. data/locale/ta/katello.po +166 -151
  192. data/locale/ta_IN/katello.po +166 -151
  193. data/locale/te/katello.po +166 -151
  194. data/locale/tr/katello.po +166 -151
  195. data/locale/vi/katello.po +166 -151
  196. data/locale/vi_VN/katello.po +166 -151
  197. data/locale/zh/katello.po +166 -151
  198. data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
  199. data/locale/zh_CN/katello.po +179 -164
  200. data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
  201. data/locale/zh_TW/katello.po +171 -156
  202. data/webpack/ForemanColumnExtensions/index.js +129 -0
  203. data/webpack/components/Table/TableWrapper.js +14 -0
  204. data/webpack/components/extensions/HostDetails/ActionsBar/index.js +1 -1
  205. data/webpack/components/extensions/Hosts/ActionsBar/index.js +20 -1
  206. data/webpack/components/extensions/Hosts/BulkActions/BulkChangeHostCVModal/BulkChangeHostCVModal.js +220 -0
  207. data/webpack/components/extensions/Hosts/BulkActions/BulkChangeHostCVModal/actions.js +23 -0
  208. data/webpack/components/extensions/Hosts/BulkActions/BulkChangeHostCVModal/index.js +25 -0
  209. data/webpack/components/extensions/Hosts/BulkActions/__tests__/bulkChangeHostCVModal.test.js +133 -0
  210. data/webpack/global_index.js +9 -0
  211. data/webpack/scenes/Hosts/ChangeContentSource/actions.js +3 -1
  212. data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceForm.js +62 -24
  213. data/webpack/scenes/Hosts/ChangeContentSource/index.js +24 -16
  214. data/webpack/scenes/RedHatRepositories/__tests__/__snapshots__/RedHatRepositoriesPage.test.js.snap +1 -0
  215. data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +64 -5
  216. data/webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsPage.js +16 -13
  217. data/webpack/scenes/Subscriptions/UpstreamSubscriptions/__tests__/__snapshots__/UpstreamSubscriptionsPage.test.js.snap +14 -8
  218. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsPage.test.js.snap +1 -0
  219. data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/SubscriptionsToolbar.js +1 -1
  220. metadata +59 -41
  221. data/app/lib/actions/katello/host/upload_package_profile.rb +0 -45
  222. data/app/lib/actions/katello/host/upload_profiles.rb +0 -47
@@ -1,6 +1,7 @@
1
1
  object @resource
2
2
 
3
3
  attributes :id, :schema_version, :digest, :manifest_type
4
+ attributes :annotations, :labels, :is_bootable, :is_flatpak
4
5
 
5
6
  child :docker_tags => :tags do
6
7
  attributes :associated_meta_tag_identifier => :id
@@ -3,10 +3,18 @@ object @organization
3
3
  extends "api/v2/taxonomies/show"
4
4
 
5
5
  attributes :task_id, :label, :redhat_repository_url
6
-
6
+ attributes :manifest_expiration_date, :manifest_expire_days_remaining
7
7
  attributes :system_purposes, :system_purposes
8
8
  attributes :service_levels, :service_level
9
9
 
10
+ node :manifest_expiring_soon do |org|
11
+ org.manifest_expiring_soon?
12
+ end
13
+
14
+ node :manifest_expired do |org|
15
+ org.manifest_expired?
16
+ end
17
+
10
18
  node :simple_content_access do |org|
11
19
  org.simple_content_access?
12
20
  end
@@ -8,7 +8,7 @@
8
8
 
9
9
  <% if edit_action? && !using_hostgroups_page? && !using_discovered_hosts_page? %>
10
10
  <div style="margin-left: 270px">
11
- <%= link_to _("Change content source"), "/change_host_content_source?host_id=#{@host.id}" %>
11
+ <%= link_to _("Change content source"), "/change_host_content_source?fromPage=hostEdit&host_id=#{@host.id}&initialContentSourceId=#{@host.content_source_id}" %>
12
12
  </div>
13
13
  <% end %>
14
14
 
@@ -16,19 +16,29 @@
16
16
  %>
17
17
 
18
18
  <div class="clear-fix" id="media_selection_section">
19
- <div class="form-group ">
20
- <label class="col-md-2 control-label" for="use_install_media"><%= _('Media Selection') %></label>
19
+ <div class="form-group">
20
+ <label class="col-md-2 control-label" for="use_install_media">
21
+ <%= _('Media Selection') %>
22
+ </label>
21
23
  <div class="col-md-4">
22
24
  <label class="radio-inline">
23
- <input data-media-selector="true" id="host_use_synced_content" name="media_selector" value="synced_content" type="radio" <%= synced_content_radio %> <%= synced_content_disabled %>/> <%= _('Synced Content') %>
25
+ <input data-media-selector="true" id="host_use_synced_content" name="media_selector" value="synced_content" type="radio"
26
+ <%= synced_content_radio %>
27
+ <%= synced_content_disabled %>
28
+ />
29
+ <%= _('Synced Content') %>
24
30
  </label>
31
+ <%= popover("", _("To enable the synced content option, this host must use a content source, content view, and lifecycle environment which contain synced kickstart repositories for the selected architecture and operating system.")) %>
25
32
  <label class="radio-inline">
26
- <input data-media-selector="true" id="host_use_install_media" name="media_selector" value="install_media" type="radio" <%= install_media_radio %> <%= install_media_disabled %>/> <%= _('All Media') %>
33
+ <input data-media-selector="true" id="host_use_install_media" name="media_selector" value="install_media" type="radio"
34
+ <%= install_media_radio %>
35
+ <%= install_media_disabled %>
36
+ />
37
+ <%= _('All Media') %>
27
38
  </label>
28
39
  <span class="help-block">
29
40
  <%= _("Select the installation media that will be used to provision this host. Choose 'Synced Content' for Synced Kickstart Repositories or 'All Media' for other media.") %>
30
41
  </span>
31
42
  </div>
32
- <span class="help-block help-inline"></span>
33
43
  </div>
34
44
  </div>
@@ -10,16 +10,12 @@ Katello::Engine.routes.draw do
10
10
  match '/v2/token' => 'registry_proxies#token', :via => :get
11
11
  match '/v2/token' => 'registry_proxies#token', :via => :post
12
12
  match '/v2/*repository/manifests/:tag' => 'registry_proxies#pull_manifest', :via => :get
13
- # Push-related routes are disabled until there is support for pushing to Pulp 3.
14
- # match '/v2/*repository/manifests/:tag' => 'registry_proxies#push_manifest', :via => :put
13
+ match '/v2/*repository/manifests/:tag' => 'registry_proxies#push_manifest', :via => :put
15
14
  match '/v2/*repository/blobs/:digest' => 'registry_proxies#pull_blob', :via => :get
16
15
  match '/v2/*repository/blobs/:digest' => 'registry_proxies#check_blob', :via => :head
17
- # match '/v2/*repository/blobs/uploads' => 'registry_proxies#start_upload_blob', :via => :post
18
- # match '/v2/*repository/blobs/uploads/:uuid' => 'registry_proxies#chunk_upload_blob', :via => :post
19
- # match '/v2/*repository/blobs/uploads/:uuid' => 'registry_proxies#finish_upload_blob', :via => :put
20
- # match '/v2/*repository/blobs/uploads/:uuid' => 'registry_proxies#upload_blob', :via => :patch
21
- # match '/v2/*repository/blobs/uploads/:uuid' => 'registry_proxies#status_upload_blob', :via => :get
22
- # match '/v2/*repository/blobs/uploads/:uuid' => 'registry_proxies#cancel_upload_blob', :via => :delete
16
+ match '/v2/*repository/blobs/uploads' => 'registry_proxies#start_upload_blob', :via => :post
17
+ match '/v2/*repository/blobs/uploads/:uuid' => 'registry_proxies#finish_upload_blob', :via => :put
18
+ match '/v2/*repository/blobs/uploads/:uuid' => 'registry_proxies#upload_blob', :via => :patch
23
19
  match '/v2/_catalog' => 'registry_proxies#catalog', :via => :get
24
20
  match '/v2/*repository/tags/list' => 'registry_proxies#tags_list', :via => :get
25
21
  match '/v2' => 'registry_proxies#ping', :via => :get
@@ -29,6 +29,7 @@ Katello::Engine.routes.draw do
29
29
  get :sync, :action => :sync_status
30
30
  delete :sync, :action => :cancel_sync
31
31
  post :reclaim_space
32
+ post :verify_checksum
32
33
  post '/lifecycle_environments' => 'capsule_content#add_lifecycle_environment'
33
34
  delete '/lifecycle_environments/:environment_id' => 'capsule_content#remove_lifecycle_environment'
34
35
  end
@@ -149,6 +150,7 @@ Katello::Engine.routes.draw do
149
150
  post :promote
150
151
  post :export
151
152
  put :republish_repositories
153
+ post :verify_checksum
152
154
  end
153
155
  collection do
154
156
  get :auto_complete_search
@@ -0,0 +1,8 @@
1
+ class AddFieldsToKatelloDockerManifest < ActiveRecord::Migration[6.1]
2
+ def change
3
+ add_column :katello_docker_manifests, :annotations, :jsonb, default: {}
4
+ add_column :katello_docker_manifests, :labels, :jsonb, default: {}
5
+ add_column :katello_docker_manifests, :is_bootable, :boolean, default: false
6
+ add_column :katello_docker_manifests, :is_flatpak, :boolean, default: false
7
+ end
8
+ end
@@ -0,0 +1,9 @@
1
+ class ChangeKatelloRepositoryRpmsIdSeqToBigInt < ActiveRecord::Migration[6.1]
2
+ def up
3
+ execute 'ALTER SEQUENCE katello_repository_rpms_id_seq AS bigint;'
4
+ end
5
+
6
+ def down
7
+ execute 'ALTER SEQUENCE katello_repository_rpms_id_seq AS integer;'
8
+ end
9
+ end
@@ -25,6 +25,12 @@ blueprints = [
25
25
  message: N_('%{expiring_subs} subscriptions in %{subject} are going to expire in less than %{days} days. Please renew them before they expire to guarantee your hosts will continue receiving content.'),
26
26
  level: 'warning'
27
27
  },
28
+ {
29
+ group: N_('Subscriptions'),
30
+ name: 'manifest_expire_soon_warning',
31
+ message: N_('Manifest in organization %{subject} has an identity certificate that will expire in %{days_remaining} days, on %{manifest_expire_date}. To extend the expiration date, please refresh your manifest.'),
32
+ level: 'info'
33
+ },
28
34
  {
29
35
  group: N_('Subscriptions'),
30
36
  name: 'manifest_expired_warning',
@@ -23,7 +23,7 @@ angular.module('Bastion.activation-keys').controller('ActivationKeyRepositorySet
23
23
 
24
24
  params = {
25
25
  'activation_key_id': $scope.$stateParams.activationKeyId,
26
- 'content_access_mode_all': $scope.simpleContentAccessEnabled,
26
+ 'content_access_mode_all': true,
27
27
  'content_access_mode_env': true,
28
28
  'sort_order': 'ASC',
29
29
  'paged': true
@@ -39,7 +39,7 @@ angular.module('Bastion.activation-keys').controller('ActivationKeyRepositorySet
39
39
  $scope.repositoryType = {};
40
40
 
41
41
  $scope.contentAccessModes = {
42
- contentAccessModeAll: $scope.simpleContentAccessEnabled,
42
+ contentAccessModeAll: true,
43
43
  contentAccessModeEnv: true
44
44
  };
45
45
 
@@ -53,7 +53,7 @@ angular.module('Bastion.activation-keys').controller('ActivationKeyRepositorySet
53
53
 
54
54
  $scope.toggleFilters = function () {
55
55
  $scope.nutupane.table.params['content_access_mode_env'] = $scope.contentAccessModes.contentAccessModeEnv;
56
- $scope.nutupane.table.params['content_access_mode_all'] = $scope.contentAccessModes.contentAccessModeAll || $scope.simpleContentAccessEnabled;
56
+ $scope.nutupane.table.params['content_access_mode_all'] = true;
57
57
  $scope.nutupane.refresh();
58
58
  };
59
59
 
@@ -35,7 +35,8 @@
35
35
  class="form-control"
36
36
  style="font-family: monospace"
37
37
  rows="15"
38
- placeholder="{{ 'Paste contents of Content Credential' | translate }}">
38
+ placeholder="{{ 'Paste contents of Content Credential' | translate }}"
39
+ required>
39
40
  </textarea>
40
41
  </div>
41
42
 
@@ -20,7 +20,7 @@ angular.module('Bastion.content-hosts').controller('ContentHostRepositorySetsCon
20
20
 
21
21
  params = {
22
22
  'host_id': $scope.$stateParams.hostId,
23
- 'content_access_mode_all': $scope.simpleContentAccessEnabled,
23
+ 'content_access_mode_all': true,
24
24
  'sort_order': 'ASC',
25
25
  'paged': true
26
26
  };
@@ -33,11 +33,11 @@ angular.module('Bastion.content-hosts').controller('ContentHostRepositorySetsCon
33
33
  $scope.nutupane.primaryOnly = true;
34
34
 
35
35
  $scope.contentAccessModes = {
36
- contentAccessModeAll: $scope.simpleContentAccessEnabled,
36
+ contentAccessModeAll: true,
37
37
  contentAccessModeEnv: false
38
38
  };
39
39
  $scope.toggleFilters = function () {
40
- $scope.nutupane.table.params['content_access_mode_all'] = $scope.contentAccessModes.contentAccessModeAll || $scope.simpleContentAccessEnabled;
40
+ $scope.nutupane.table.params['content_access_mode_all'] = true;
41
41
  $scope.nutupane.table.params['content_access_mode_env'] = $scope.contentAccessModes.contentAccessModeEnv;
42
42
  $scope.nutupane.refresh();
43
43
  };
@@ -3973,7 +3973,6 @@ msgstr ""
3973
3973
  #: app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-module-streams.html
3974
3974
  #: app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-provisioning-info.html
3975
3975
  #: app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-repository-sets.html
3976
- #: app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-subscriptions.html
3977
3976
  #: app/assets/javascripts/bastion_katello/tasks/views/tasks-table.html
3978
3977
  #: app/assets/javascripts/bastion_katello/tasks/views/user-tasks-table.html
3979
3978
  msgid "Status"
@@ -3995,8 +3994,6 @@ msgid "Subscription Management"
3995
3994
  msgstr ""
3996
3995
 
3997
3996
  #: app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-associations-content-hosts.html
3998
- #: app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html
3999
- #: app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html
4000
3997
  msgid "Subscription Status"
4001
3998
  msgstr ""
4002
3999
 
@@ -4178,10 +4175,6 @@ msgstr ""
4178
4175
  msgid "System Purpose Management"
4179
4176
  msgstr ""
4180
4177
 
4181
- #: app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html
4182
- msgid "System Purpose Status"
4183
- msgstr ""
4184
-
4185
4178
  #: app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-docker-manifest-lists.html
4186
4179
  #: app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-docker-manifests.html
4187
4180
  msgid "Tags"
@@ -4398,14 +4391,6 @@ msgid ""
4398
4391
  " Change the setting \"Delete Host upon Unregister\" to false on the <a href=\"/settings\">settings page</a> to prevent this."
4399
4392
  msgstr ""
4400
4393
 
4401
- #: app/assets/javascripts/bastion_katello/subscriptions/views/content-access-mode-banner.html
4402
- msgid "This organization has Simple Content Access enabled. Hosts are not required to have subscriptions attached to access repositories."
4403
- msgstr ""
4404
-
4405
- #: app/assets/javascripts/bastion_katello/subscriptions/views/content-access-mode-banner.html
4406
- msgid "This organization is not using <a target=\"_blank\" href=\"https://access.redhat.com/articles/simple-content-access\">Simple Content Access.</a> Entitlement-based subscription management is deprecated and will be removed in Katello 4.12."
4407
- msgstr ""
4408
-
4409
4394
  #: app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-errata-modal.html
4410
4395
  #: app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-errata.html
4411
4396
  #: app/assets/javascripts/bastion_katello/content-hosts/content/views/errata-details.html
@@ -189,12 +189,14 @@
189
189
  type="{{ repository.upstream_password.length < 1 ? 'text': 'password' }}"
190
190
  autocomplete="{{ (repository.upstream_username==null || repository.upstream_username=='') ? 'new-password' : '' }}"
191
191
  ng-model="repository.upstream_password"/>
192
- <div translate>Upstream Authentication Token</div>
193
- <input id="upstream_authentication_token"
194
- name="upstream_authentication_token"
195
- type="{{ repository.upstream_authentication_token.length < 1 ? 'text': 'password' }}"
196
- autocomplete="off"
197
- ng-model="repository.upstream_authentication_token"/>
192
+ <span ng-show="repository.content_type === 'yum'">
193
+ <div translate>Upstream Authentication Token</div>
194
+ <input id="upstream_authentication_token"
195
+ name="upstream_authentication_token"
196
+ type="{{ repository.upstream_authentication_token.length < 1 ? 'text': 'password' }}"
197
+ autocomplete="off"
198
+ ng-model="repository.upstream_authentication_token"/>
199
+ </span>
198
200
  </dd>
199
201
  </span>
200
202
 
@@ -250,16 +250,18 @@
250
250
  </p>
251
251
  </div>
252
252
 
253
- <div bst-form-group label="{{ 'Upstream Authentication Token' | translate }}" >
254
- <input id="upstream_authentication_token"
255
- name="upstream_authentication_token"
256
- type="text"
257
- autocomplete="off"
258
- ng-model="repository.upstream_authentication_token"/>
259
- <p class="help-block" translate>
260
- Token of the upstream repository user for authentication. Leave empty if repository does not require authentication.
261
- </p>
262
- </div>
253
+ <span ng-show="repository.content_type === 'yum'">
254
+ <div bst-form-group label="{{ 'Upstream Authentication Token' | translate }}" >
255
+ <input id="upstream_authentication_token"
256
+ name="upstream_authentication_token"
257
+ type="text"
258
+ autocomplete="off"
259
+ ng-model="repository.upstream_authentication_token"/>
260
+ <p class="help-block" translate>
261
+ Token of the upstream repository user for authentication. Leave empty if repository does not require authentication.
262
+ </p>
263
+ </div>
264
+ </span>
263
265
 
264
266
  <div ng-repeat="option in genericRemoteOptions" ng-if="repository.generic_remote_options !== []">
265
267
  <div ng-if='option.input_type=="text"' bst-form-group label="{{ option.title | translate }}">
@@ -54,7 +54,7 @@ module Katello
54
54
  @plugin.permission :manage_capsule_content,
55
55
  {
56
56
  'katello/api/v2/capsule_content' => [:add_lifecycle_environment, :remove_lifecycle_environment,
57
- :update_counts, :sync, :reclaim_space, :cancel_sync],
57
+ :update_counts, :sync, :reclaim_space, :verify_checksum, :cancel_sync],
58
58
  'katello/api/v2/capsules' => [:index, :show]
59
59
  },
60
60
  :resource_type => 'SmartProxy'
@@ -134,7 +134,7 @@ module Katello
134
134
  @plugin.permission :publish_content_views,
135
135
  {
136
136
  'katello/api/v2/content_views' => [:publish],
137
- 'katello/api/v2/content_view_versions' => [:incremental_update, :republish_repositories],
137
+ 'katello/api/v2/content_view_versions' => [:incremental_update, :republish_repositories, :verify_checksum],
138
138
  'katello/api/v2/content_imports' => [:version, :index]
139
139
  },
140
140
  :resource_type => 'Katello::ContentView',
@@ -142,7 +142,7 @@ module Katello
142
142
  @plugin.permission :promote_or_remove_content_views,
143
143
  {
144
144
  'katello/api/v2/content_view_versions' => [:promote],
145
- 'katello/api/v2/content_views' => [:remove_from_environment, :remove, :republish_repositories]
145
+ 'katello/api/v2/content_views' => [:remove_from_environment, :remove, :republish_repositories, :verify_checksum]
146
146
  },
147
147
  :resource_type => 'Katello::ContentView',
148
148
  :finder_scope => :promotable_or_removable
@@ -8,13 +8,10 @@ Foreman::AccessControl.permission(:create_personal_access_tokens).actions.concat
8
8
  'katello/api/registry/registry_proxies/catalog',
9
9
  'katello/api/registry/registry_proxies/tags_list',
10
10
  'katello/api/registry/registry_proxies/pull_manifest',
11
- #'katello/api/registry/registry_proxies/push_manifest',
11
+ 'katello/api/registry/registry_proxies/push_manifest',
12
12
  'katello/api/registry/registry_proxies/pull_blob',
13
13
  'katello/api/registry/registry_proxies/check_blob',
14
- #'katello/api/registry/registry_proxies/start_upload_blob',
15
- #'katello/api/registry/registry_proxies/upload_blob',
16
- #'katello/api/registry/registry_proxies/chunk_upload_blob',
17
- #'katello/api/registry/registry_proxies/finish_upload_blob',
18
- 'katello/api/registry/registry_proxies/status_upload_blob',
19
- 'katello/api/registry/registry_proxies/cancel_upload_blob'
14
+ 'katello/api/registry/registry_proxies/start_upload_blob',
15
+ 'katello/api/registry/registry_proxies/upload_blob',
16
+ 'katello/api/registry/registry_proxies/finish_upload_blob'
20
17
  ]
@@ -4,7 +4,7 @@ require 'katello/host_status_manager'
4
4
  # rubocop:disable Metrics/BlockLength
5
5
 
6
6
  Foreman::Plugin.register :katello do
7
- requires_foreman '>= 3.7'
7
+ requires_foreman '>= 3.11'
8
8
  register_gettext
9
9
 
10
10
  sub_menu :top_menu, :content_menu, :caption => N_('Content'),
@@ -512,6 +512,12 @@ Foreman::Plugin.register :katello do
512
512
  description: N_("Default download policy for Smart Proxy syncs (either 'inherit', immediate', or 'on_demand')"),
513
513
  collection: proxy_download_policies
514
514
 
515
+ setting 'validate_host_lce_content_source_coherence',
516
+ type: :boolean,
517
+ default: true,
518
+ full_name: N_('Validate host/lifecycle environment/content source coherence'),
519
+ description: N_("Validate that a host's assigned lifecycle environment is synced by the smart proxy from which the host will get its content. Applies only to API requests; does not affect web UI checks")
520
+
515
521
  setting 'pulpcore_export_destination',
516
522
  type: :string,
517
523
  default: "/var/lib/pulp/exports",
@@ -578,7 +584,7 @@ Foreman::Plugin.register :katello do
578
584
  type: :integer,
579
585
  default: 120,
580
586
  full_name: N_('Expire soon days'),
581
- description: N_('The number of days remaining in a subscription before you will be reminded about renewing it.')
587
+ description: N_('The number of days remaining in a subscription before you will be reminded about renewing it. Also used for manifest expiration warnings.')
582
588
 
583
589
  setting 'host_dmi_uuid_duplicates',
584
590
  type: :array,
@@ -622,12 +628,6 @@ Foreman::Plugin.register :katello do
622
628
  full_name: N_('Pulp bulk load size'),
623
629
  description: N_('The number of items fetched from a single paged Pulp API call.')
624
630
 
625
- setting 'upload_profiles_without_dynflow',
626
- type: :boolean,
627
- default: true,
628
- full_name: N_('Upload profiles without Dynflow'),
629
- description: 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)')
630
-
631
631
  setting 'orphan_protection_time',
632
632
  type: :integer,
633
633
  default: 1440,
@@ -669,6 +669,7 @@ Foreman::Plugin.register :katello do
669
669
  RemoteExecutionFeature.register(:katello_service_restart, N_("Katello: Service Restart"), :description => N_("Restart Services via Katello interface"), :provided_inputs => ['helpers'])
670
670
  RemoteExecutionFeature.register(:katello_host_tracer_resolve, N_("Katello: Resolve Traces"), :description => N_("Resolve traces via Katello interface"), :provided_inputs => ['ids'])
671
671
  RemoteExecutionFeature.register(:katello_change_content_source, N_("Katello: Configure host for new content source"), :description => N_("Replace content source on the target machine"), :provided_inputs => [])
672
+ RemoteExecutionFeature.register(:katello_upload_profile, N_("Katello: Upload Profile"), :description => N_("Upload package / repos profile"), :provided_inputs => [])
672
673
  RemoteExecutionFeature.register(:katello_module_stream_action, N_("Katello: Module Stream Actions"),
673
674
  :description => N_("Perform a module stream action via Katello interface"),
674
675
  :provided_inputs => ['action', 'module_spec', 'options'])
@@ -18,6 +18,12 @@ Katello::RepositoryTypeManager.register('ostree') do
18
18
  distribution_class PulpOstreeClient::OstreeOstreeDistribution
19
19
  repo_sync_url_class PulpOstreeClient::RepositorySyncURL
20
20
 
21
+ generic_remote_option :include_refs, title: N_("Include Refs"), type: Array, input_type: "text", delimiter: ",", default: [],
22
+ description: N_("A comma-separated list of refs to include during a sync. The wildcards *, ? are recognized.")
23
+
24
+ generic_remote_option :exclude_refs, title: N_("Exclude Refs"), type: Array, input_type: "text", delimiter: ",", default: [],
25
+ description: N_("A comma-separated list of tags to exclude during a sync. The wildcards *, ? are recognized. 'exclude_refs' is evaluated after 'include_refs'.")
26
+
21
27
  url_description N_("URL of an OSTree repository.")
22
28
 
23
29
  generic_content_type 'ostree_ref',
@@ -47,4 +53,5 @@ Katello::RepositoryTypeManager.register('ostree') do
47
53
  default_managed_content_type :ostree_ref
48
54
 
49
55
  test_url 'https://fixtures.pulpproject.org/ostree/small/'
56
+ test_url_root_options generic_remote_options: {include_refs: ['rawhide']}.to_json
50
57
  end
@@ -1,6 +1,12 @@
1
1
  # First, we check if there's a job already enqueued for any notifications
2
2
  ::Foreman::Application.dynflow.config.on_init do |world|
3
- [CreateExpiredManifestNotifications, CreateHostLifecycleExpireSoonNotifications, CreatePulpDiskSpaceNotifications, SendExpireSoonNotifications].each do |job_class|
3
+ [
4
+ CreateExpiredManifestNotifications,
5
+ CreateHostLifecycleExpireSoonNotifications,
6
+ CreatePulpDiskSpaceNotifications,
7
+ SendExpireSoonNotifications,
8
+ CreateManifestExpireSoonWarningNotifications
9
+ ].each do |job_class|
4
10
  job_class.spawn_if_missing(world)
5
11
  end
6
12
  end
@@ -75,7 +75,7 @@ namespace :katello do
75
75
  print "The following changes will not actually be performed. Rerun with COMMIT=true to apply the changes\n"
76
76
  end
77
77
 
78
- SETTINGS[:katello][:candlepin][:bulk_load_size] = 1_500
78
+ SETTINGS[:katello][:candlepin][:bulk_load_size] = 125
79
79
  User.current = User.anonymous_admin
80
80
  cleaner = BackendCleaner.new
81
81
  cleaner.populate!
@@ -71,6 +71,12 @@ namespace :katello do
71
71
  end
72
72
  end
73
73
 
74
+ desc "Re-import all container manifests to populate labels and annotations."
75
+ task :import_container_manifest_labels => ["dynflow:client", "check_ping"] do
76
+ User.current = User.anonymous_api_admin
77
+ handle_manifest_label_updates
78
+ end
79
+
74
80
  def lookup_repositories
75
81
  lifecycle_envs = Katello::KTEnvironment.where(:name => ENV['LIFECYCLE_ENVIRONMENT']) if ENV['LIFECYCLE_ENVIRONMENT']
76
82
  content_views = Katello::ContentView.where(:name => ENV['CONTENT_VIEW']) if ENV['CONTENT_VIEW']
@@ -108,6 +114,22 @@ namespace :katello do
108
114
  end
109
115
  end
110
116
 
117
+ def handle_manifest_label_updates
118
+ batch_size = 1000
119
+ Katello::DockerManifest.
120
+ where(schema_version: 2).
121
+ where(annotations: {}, labels: {}).
122
+ where(is_bootable: false, is_flatpak: false).
123
+ find_in_batches(batch_size: batch_size) do |group|
124
+ manifest_unit_ids = group.pluck(:pulp_id)
125
+ index_service = Katello::ContentUnitIndexer.new(
126
+ content_type: Katello::RepositoryTypeManager.find_content_type("docker_manifest"),
127
+ pulp_content_ids: manifest_unit_ids
128
+ )
129
+ index_service.reimport_units
130
+ end
131
+ end
132
+
111
133
  def handle_missing_root_repo(root_repo)
112
134
  root_repo.destroy! if commit?
113
135
  end
@@ -1,3 +1,3 @@
1
1
  module Katello
2
- VERSION = "4.12.1".freeze
2
+ VERSION = "4.13.0.rc1".freeze
3
3
  end
@@ -4,7 +4,6 @@ _("Abstract")
4
4
  _("Attach subscriptions")
5
5
  _("Auto attach subscriptions")
6
6
  _("Bulk generate applicability for hosts")
7
- _("Combined Profile Update")
8
7
  _("Copy version units to library")
9
8
  _("Create Alternate Content Source")
10
9
  _("Create Export History")
@@ -48,7 +47,7 @@ _("Index errata")
48
47
  _("Index module streams")
49
48
  _("Index package groups")
50
49
  _("Instance update")
51
- _("Package Profile Update")
50
+ _("Metadata generate")
52
51
  _("Product Create")
53
52
  _("Promote")
54
53
  _("Promotion to Environment")
@@ -72,7 +71,7 @@ _("Update CDN Configuration")
72
71
  _("Update Content Counts")
73
72
  _("Update Content Overrides")
74
73
  _("Update content urls")
75
- _("Update for host")
74
+ _("Update content view environments for host")
76
75
  _("Update http proxy details")
77
76
  _("Update http proxy")
78
77
  _("Update redhat repository")
@@ -86,4 +85,6 @@ _("Update")
86
85
  _("Updating System Purpose for host")
87
86
  _("Upload into")
88
87
  _("Upload into")
88
+ _("Verify checksum for content on smart proxy")
89
+ _("Verify checksum of version repositories")
89
90
  _("Verify checksum")