katello 4.17.0.rc2 → 4.17.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of katello might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/app/controllers/katello/api/registry/registry_proxies_controller.rb +2 -0
- data/app/controllers/katello/api/v2/content_view_repositories_controller.rb +5 -0
- data/app/controllers/katello/api/v2/repositories_controller.rb +1 -0
- data/app/lib/actions/katello/content_view/create.rb +5 -0
- data/app/lib/actions/katello/repository/destroy.rb +3 -0
- data/app/models/katello/content_view_repository.rb +7 -0
- data/app/views/foreman/job_templates/install_packages_by_search_query_-_katello_ansible_default.erb +6 -14
- data/app/views/foreman/job_templates/remove_packages_by_search_query_-_katello_ansible_default.erb +2 -15
- data/app/views/foreman/job_templates/update_packages_by_search_query_-_katello_ansible_default.erb +5 -13
- data/db/migrate/20240924161240_katello_recreate_evr_constructs.rb +20 -0
- data/db/migrate/20250714190050_add_missing_rpms_evr_index.rb +14 -0
- data/lib/katello/version.rb +1 -1
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 522d23e5be01ddc111e940e111a09d858a2dfa686c9cbb17ac0c883b14f224bc
|
4
|
+
data.tar.gz: 6f6dc2887f0eafdd0500edeb62792318da9bd25612565fcef2027423b364d2c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 597e47e1205993f0223f0151f24accea76c030eb0a98536f9b9e05cb1d1f49341c69543bf79a4781b700fa948f6df53769dbaa44d6c54399f504362bd1729b68
|
7
|
+
data.tar.gz: 263fe1e31f8469f6a7ea74c932c1fa8bab9769200d72aca0f3a94c47d5772a4a5c8c10661ea1abe0bebdcc53b416584fa17a98c1c12e1a94e8519eab4fbf93b9
|
@@ -560,6 +560,8 @@ module Katello
|
|
560
560
|
|
561
561
|
def check_blob
|
562
562
|
pulp_response = Resources::Registry::Proxy.get(@_request.fullpath, 'Accept' => request.headers['Accept'])
|
563
|
+
response.headers['Content-Type'] = pulp_response.headers[:content_type] if pulp_response.headers[:content_type]
|
564
|
+
response.headers['Content-Length'] = pulp_response.headers[:content_length] if pulp_response.headers[:content_length]
|
563
565
|
head pulp_response.code
|
564
566
|
end
|
565
567
|
|
@@ -25,6 +25,11 @@ module Katello
|
|
25
25
|
SQL
|
26
26
|
|
27
27
|
query = Katello::Repository.readable.in_default_view.in_organization(@organization)
|
28
|
+
if @content_view.rolling
|
29
|
+
# Exclude container push repositories
|
30
|
+
query = query.joins(:root).where(katello_root_repositories: { is_container_push: false })
|
31
|
+
end
|
32
|
+
|
28
33
|
query = query.with_type(params[:content_type]) if params[:content_type]
|
29
34
|
# Use custom sort to perform the join and order since we need to order by specific content_view
|
30
35
|
# and the ORDER BY query needs access to the katello_content_view_repositories table
|
@@ -719,6 +719,7 @@ Alternatively, use the 'force' parameter to regenerate metadata locally. On the
|
|
719
719
|
if is_available_for
|
720
720
|
params[:library] = true
|
721
721
|
sub_query = ContentViewRepository.where(:content_view_id => content_view_id).pluck(:repository_id)
|
722
|
+
sub_query += Repository.where(root: RootRepository.where(is_container_push: true)).pluck(:id) if ContentView.find(content_view_id).rolling
|
722
723
|
query = query.where("#{Repository.table_name}.id not in (#{sub_query.join(',')})") unless sub_query.empty?
|
723
724
|
elsif environment_id
|
724
725
|
version = ContentViewVersion.in_environment(environment_id).where(:content_view_id => content_view_id)
|
@@ -6,6 +6,11 @@ module Actions
|
|
6
6
|
content_view.save!
|
7
7
|
if content_view.rolling?
|
8
8
|
plan_action(AddToEnvironment, content_view.create_new_version, content_view.organization.library)
|
9
|
+
repository_ids = content_view.repository_ids
|
10
|
+
if repository_ids.any?
|
11
|
+
content_view.reload
|
12
|
+
plan_action(AddRollingRepoClone, content_view, repository_ids)
|
13
|
+
end
|
9
14
|
end
|
10
15
|
end
|
11
16
|
|
@@ -88,6 +88,9 @@ module Actions
|
|
88
88
|
def handle_custom_content(repository, remove_from_content_view_versions)
|
89
89
|
#if this is the last instance of a custom repo or a deb repo using structured APT, destroy the content
|
90
90
|
if remove_from_content_view_versions || repository.root.repositories.where.not(id: repository.id).empty? || repository.deb_using_structured_apt?
|
91
|
+
# Never destroy content for structured apt rolling repo clones, because it belongs to the library instance
|
92
|
+
return if repository.deb_using_structured_apt? && repository.content_view.rolling?
|
93
|
+
|
91
94
|
plan_action(::Actions::Katello::Product::ContentDestroy, repository)
|
92
95
|
end
|
93
96
|
end
|
@@ -18,6 +18,7 @@ module Katello
|
|
18
18
|
validates_lengths_from_database
|
19
19
|
validates :repository_id, :uniqueness => {:scope => :content_view_id, :message => N_("already belongs to the content view") }
|
20
20
|
validate :content_view_composite
|
21
|
+
validate :content_view_rolling
|
21
22
|
validate :ensure_repository_type
|
22
23
|
validate :check_repo_membership
|
23
24
|
|
@@ -29,6 +30,12 @@ module Katello
|
|
29
30
|
end
|
30
31
|
end
|
31
32
|
|
33
|
+
def content_view_rolling
|
34
|
+
if content_view.rolling? && repository.root.is_container_push?
|
35
|
+
errors.add(:base, _("Cannot add container push repositories to a rolling content view"))
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
32
39
|
def ensure_repository_type
|
33
40
|
unless allowed_repository_types.include?(repository.content_type)
|
34
41
|
errors.add(:base, _("Cannot add %s repositories to a content view.") % repository.content_type)
|
data/app/views/foreman/job_templates/install_packages_by_search_query_-_katello_ansible_default.erb
CHANGED
@@ -19,23 +19,15 @@ template_inputs:
|
|
19
19
|
- hosts: all
|
20
20
|
tasks:
|
21
21
|
<%= indent(4) { snippet('check_bootc_status') } %>
|
22
|
-
- name: Enable bootc overlay
|
23
|
-
shell:
|
24
|
-
cmd: 'bootc usr-overlay'
|
25
|
-
register: out
|
26
|
-
ignore_errors: true
|
27
|
-
when: is_bootc_host
|
28
|
-
- debug: var=out
|
29
|
-
- name: Install packages via dnf for image mode machines
|
30
|
-
package:
|
31
|
-
use: 'dnf'
|
32
22
|
<% if package_names.empty? -%>
|
33
|
-
|
23
|
+
- name: Install all packages transiently for image mode machines
|
24
|
+
shell: "dnf --transient install -y '*'"
|
25
|
+
when: is_bootc_host
|
34
26
|
<% else -%>
|
35
|
-
|
36
|
-
|
37
|
-
<% end -%>
|
27
|
+
- name: Install packages transiently for image mode machines
|
28
|
+
shell: "dnf --transient install -y <%= package_names.join(' ') %>"
|
38
29
|
when: is_bootc_host
|
30
|
+
<% end -%>
|
39
31
|
- name: Install packages normally
|
40
32
|
package:
|
41
33
|
<% if package_names.empty? -%>
|
data/app/views/foreman/job_templates/remove_packages_by_search_query_-_katello_ansible_default.erb
CHANGED
@@ -19,21 +19,8 @@ template_inputs:
|
|
19
19
|
- hosts: all
|
20
20
|
tasks:
|
21
21
|
<%= indent(4) { snippet('check_bootc_status') } %>
|
22
|
-
- name:
|
23
|
-
shell:
|
24
|
-
cmd: 'bootc usr-overlay'
|
25
|
-
register: out
|
26
|
-
ignore_errors: true
|
27
|
-
when: is_bootc_host
|
28
|
-
- debug: var=out
|
29
|
-
- name: Remove packages via dnf for image mode machines
|
30
|
-
package:
|
31
|
-
name:
|
32
|
-
<% package_names.each do |package_name| -%>
|
33
|
-
- <%= package_name %>
|
34
|
-
<% end -%>
|
35
|
-
state: absent
|
36
|
-
use: 'dnf'
|
22
|
+
- name: Remove packages transiently for image mode machines
|
23
|
+
shell: "dnf --transient remove -y <%= package_names.join(' ') %>"
|
37
24
|
when: is_bootc_host
|
38
25
|
- name: Remove packages normally
|
39
26
|
package:
|
data/app/views/foreman/job_templates/update_packages_by_search_query_-_katello_ansible_default.erb
CHANGED
@@ -28,20 +28,12 @@ template_inputs:
|
|
28
28
|
- hosts: all
|
29
29
|
tasks:
|
30
30
|
<%= indent(4) { snippet('check_bootc_status') } %>
|
31
|
-
- name:
|
32
|
-
shell:
|
33
|
-
|
34
|
-
|
35
|
-
ignore_errors: true
|
31
|
+
- name: Update packages transiently for image mode machines
|
32
|
+
shell: |
|
33
|
+
dnf --transient install -y <%= package_names.join(' ') %>
|
34
|
+
dnf --transient upgrade -y --best <%= package_names.join(' ') %>
|
36
35
|
when: is_bootc_host
|
37
|
-
-
|
38
|
-
- name: Install packages via dnf for image mode machines
|
39
|
-
package:
|
40
|
-
name: <%= indent(10) { to_yaml(package_names).gsub(/---/, "") } -%>
|
41
|
-
state: latest
|
42
|
-
use: 'dnf'
|
43
|
-
when: is_bootc_host
|
44
|
-
- name: Install packages normally
|
36
|
+
- name: Update packages normally
|
45
37
|
package:
|
46
38
|
name: <%= indent(10) { to_yaml(package_names).gsub(/---/, "") } -%>
|
47
39
|
state: latest
|
@@ -1,5 +1,23 @@
|
|
1
1
|
class KatelloRecreateEvrConstructs < ActiveRecord::Migration[6.1]
|
2
|
+
def fix_installed_package_dupes
|
3
|
+
# Remove duplicate installed packages and host installed packages.
|
4
|
+
duplicated_nvreas = ::Katello::InstalledPackage.group(:nvrea).having('count(*) > 1').pluck(:nvrea)
|
5
|
+
duplicated_nvreas.each do |nvrea|
|
6
|
+
packages_relation = ::Katello::InstalledPackage.where(nvrea: nvrea).order(:id)
|
7
|
+
original_package = packages_relation.first
|
8
|
+
duplicate_package_ids = packages_relation.offset(1).pluck(:id)
|
9
|
+
hosts_with_original_package = ::Katello::HostInstalledPackage.where(installed_package_id: original_package.id).pluck(:host_id)
|
10
|
+
if hosts_with_original_package.any?
|
11
|
+
::Katello::HostInstalledPackage.where(host_id: hosts_with_original_package, installed_package_id: duplicate_package_ids).delete_all
|
12
|
+
end
|
13
|
+
::Katello::HostInstalledPackage.where(installed_package_id: duplicate_package_ids).update_all(installed_package_id: original_package.id)
|
14
|
+
::Katello::InstalledPackage.where(id: duplicate_package_ids).delete_all
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
2
18
|
def up
|
19
|
+
fix_installed_package_dupes
|
20
|
+
|
3
21
|
if !extension_enabled?('evr')
|
4
22
|
return
|
5
23
|
else
|
@@ -147,6 +165,8 @@ class KatelloRecreateEvrConstructs < ActiveRecord::Migration[6.1]
|
|
147
165
|
rpmver_array(coalesce(release,'empty'))::evr_array_item[])::evr_t);
|
148
166
|
SQL
|
149
167
|
|
168
|
+
add_index :katello_rpms, [:name, :arch, :evr]
|
169
|
+
|
150
170
|
create_trigger :evr_insert_trigger_katello_rpms, on: :katello_rpms
|
151
171
|
create_trigger :evr_update_trigger_katello_rpms, on: :katello_rpms
|
152
172
|
create_trigger :evr_insert_trigger_katello_installed_packages, on: :katello_installed_packages
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class AddMissingRpmsEvrIndex < ActiveRecord::Migration[7.0]
|
2
|
+
def up
|
3
|
+
# Re-add the katello_rpms EVR index dropped erroneously by 20240924161240.
|
4
|
+
unless index_exists?(:katello_rpms, [:name, :arch, :evr])
|
5
|
+
add_index :katello_rpms, [:name, :arch, :evr]
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
def down
|
10
|
+
if index_exists?(:katello_rpms, [:name, :arch, :evr])
|
11
|
+
remove_index :katello_rpms, [:name, :arch, :evr]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/lib/katello/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: katello
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.17.
|
4
|
+
version: 4.17.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- N/A
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-07-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -2160,6 +2160,7 @@ files:
|
|
2160
2160
|
- db/migrate/20250215143303_drop_katello_yum_metadata_file.rb
|
2161
2161
|
- db/migrate/20250409120843_fix_file_download_policy.rb
|
2162
2162
|
- db/migrate/20250410155300_change_ansible_templates_category.rb
|
2163
|
+
- db/migrate/20250714190050_add_missing_rpms_evr_index.rb
|
2163
2164
|
- db/seeds.d/101-locations.rb
|
2164
2165
|
- db/seeds.d/102-organizations.rb
|
2165
2166
|
- db/seeds.d/104-proxy.rb
|
@@ -5544,11 +5545,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
5544
5545
|
version: '4'
|
5545
5546
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
5546
5547
|
requirements:
|
5547
|
-
- - "
|
5548
|
+
- - ">="
|
5548
5549
|
- !ruby/object:Gem::Version
|
5549
|
-
version:
|
5550
|
+
version: '0'
|
5550
5551
|
requirements: []
|
5551
|
-
rubygems_version: 3.
|
5552
|
+
rubygems_version: 3.5.22
|
5552
5553
|
signing_key:
|
5553
5554
|
specification_version: 4
|
5554
5555
|
summary: Content and Subscription Management plugin for Foreman
|