katello 4.14.0 → 4.14.2
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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/katello/sync_management/sync_management.js +13 -9
- data/app/controllers/katello/api/v2/activation_keys_controller.rb +2 -2
- data/app/controllers/katello/api/v2/organizations_controller.rb +1 -0
- data/app/lib/actions/katello/repository/create_root.rb +3 -2
- data/app/lib/actions/katello/repository/destroy.rb +1 -5
- data/app/lib/actions/katello/repository/update.rb +1 -5
- data/app/lib/actions/pulp3/content_view/delete_repository_references.rb +6 -2
- data/app/models/katello/concerns/content_facet_host_extensions.rb +12 -36
- data/app/models/katello/concerns/host_managed_extensions.rb +18 -16
- data/app/models/katello/host/subscription_facet.rb +1 -1
- data/app/views/foreman/job_templates/install_errata_by_search_query.erb +1 -1
- data/app/views/foreman/job_templates/install_errata_by_search_query_-_katello_ansible_default.erb +1 -1
- data/app/views/katello/api/v2/content_views/base.json.rabl +1 -0
- data/app/views/katello/api/v2/content_views/show.json.rabl +0 -1
- data/app/views/katello/sync_management/index.html.erb +2 -2
- data/engines/bastion/app/assets/javascripts/bastion/i18n/i18n.module.js +4 -0
- data/engines/bastion/vendor/assets/javascripts/bastion/angular-gettext/angular-gettext.js +5 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-host-modal-helper.service.js +0 -1
- data/lib/katello/version.rb +1 -1
- data/webpack/redux/actions/RedHatRepositories/helpers.js +9 -9
- data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +6 -4
- data/webpack/scenes/Subscriptions/SubscriptionsPage.js +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bdd67a5d3169bbda126588bc123ac23ad95514e886fd546d212c149f5a62f7b8
|
4
|
+
data.tar.gz: 4b5681c673e1ecb65a71796ef5b493380363345336100efdf55a06ae818bf708
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d1834fc21b5fe071b50fb04837dd361f8d5dbe49155a3bfc195151ac1a3c7154dc426d25cd83cbd6e2d90c3d89135068ca79c5ce032e65ad29cccad57af3527b
|
7
|
+
data.tar.gz: 25fb6125c429eea841b1f1c4be625a4f51268ef126a3122f7357104721aa883d8a38cfb958565a642c7c6edf52b59119a0ded847063b9012ee92476890faa887
|
@@ -205,10 +205,22 @@ KT.content = (function () {
|
|
205
205
|
$(this).collapse();
|
206
206
|
});
|
207
207
|
};
|
208
|
+
populate_repo_status = function () {
|
209
|
+
var ids = [];
|
210
|
+
$.each(KT.repo_status, function (repo_id, status) {
|
211
|
+
if (status.is_running) {
|
212
|
+
ids.push(repo_id);
|
213
|
+
KT.content.draw_syncing(repo_id, status.progress.progress, status.sync_id);
|
214
|
+
}
|
215
|
+
});
|
216
|
+
KT.content.reset_products(KT.repo_status);
|
217
|
+
KT.content_actions.addSyncing(ids);
|
218
|
+
}
|
208
219
|
|
209
220
|
return {
|
210
221
|
updateProduct: updateProduct,
|
211
222
|
updateRepo: updateRepo,
|
223
|
+
populateRepoStatus: populate_repo_status,
|
212
224
|
finishRepo: finishRepo,
|
213
225
|
select_all: select_all,
|
214
226
|
select_none: select_none,
|
@@ -346,15 +358,7 @@ KT.content_actions = (function () {
|
|
346
358
|
};
|
347
359
|
})();
|
348
360
|
|
349
|
-
|
350
|
-
$.each(KT.repo_status, function (repo_id, status) {
|
351
|
-
if (status.is_running) {
|
352
|
-
ids.push(repo_id);
|
353
|
-
KT.content.draw_syncing(repo_id, status.progress.progress, status.sync_id);
|
354
|
-
}
|
355
|
-
});
|
356
|
-
KT.content.reset_products(KT.repo_status);
|
357
|
-
KT.content_actions.addSyncing(ids);
|
361
|
+
KT.content.populateRepoStatus();
|
358
362
|
|
359
363
|
$("#select_all").click(KT.content.select_all);
|
360
364
|
$("#select_none").click(KT.content.select_none);
|
@@ -19,8 +19,8 @@ module Katello
|
|
19
19
|
api :GET, "/environments/:environment_id/activation_keys"
|
20
20
|
api :GET, "/organizations/:organization_id/activation_keys"
|
21
21
|
param :organization_id, :number, :desc => N_("organization identifier"), :required => true
|
22
|
-
param :environment_id, :number, :desc => N_("environment identifier")
|
23
|
-
param :content_view_id, :number, :desc => N_("content view identifier")
|
22
|
+
param :environment_id, :number, :desc => N_("environment identifier"), :allow_nil => true
|
23
|
+
param :content_view_id, :number, :desc => N_("content view identifier"), :allow_nil => true
|
24
24
|
param :name, String, :desc => N_("activation key name to filter by")
|
25
25
|
param_group :search, Api::V2::ApiController
|
26
26
|
add_scoped_search_description_for(ActivationKey)
|
@@ -50,6 +50,7 @@ module Katello
|
|
50
50
|
param :id, :number, :desc => N_("organization ID"), :required => true
|
51
51
|
def show
|
52
52
|
@render_template = 'katello/api/v2/organizations/show'
|
53
|
+
@organization.manifest_expiration_date(cached: false) if params[:force_manifest_expire_cache]
|
53
54
|
super
|
54
55
|
end
|
55
56
|
|
@@ -5,11 +5,12 @@ module Actions
|
|
5
5
|
def plan(root, relative_path = nil)
|
6
6
|
begin
|
7
7
|
root.save!
|
8
|
-
rescue ActiveRecord::RecordInvalid
|
9
|
-
if root.is_container_push
|
8
|
+
rescue ActiveRecord::RecordInvalid => e
|
9
|
+
if root.is_container_push && e.message.include?("Container Repository Name") && e.message.include?("conflicts with an existing repository")
|
10
10
|
logger.warn("Skipping repository creation as container push repository already exists: #{root.container_push_name}")
|
11
11
|
return
|
12
12
|
end
|
13
|
+
raise e
|
13
14
|
end
|
14
15
|
repository = ::Katello::Repository.new(:environment => root.organization.library,
|
15
16
|
:content_view_version => root.organization.library.default_content_view_version,
|
@@ -70,11 +70,7 @@ module Actions
|
|
70
70
|
# Remove products from ACS's that contain no repositories which both
|
71
71
|
# match the ACS content type and have a non-nil URL
|
72
72
|
product = repository.product
|
73
|
-
repo_content_types =
|
74
|
-
product.repositories.each do |test_repo|
|
75
|
-
# we need to check id because test_repo will still contain the old, non-nil url
|
76
|
-
repo_content_types.add(test_repo.content_type) if (repository.id != test_repo.id) && test_repo.url.present?
|
77
|
-
end
|
73
|
+
repo_content_types = ::Katello::RootRepository.where(:id => product.repositories.where.not(:id => repository.id).select(:root_id)).where.not(:url => [nil, '']).distinct.pluck(:content_type)
|
78
74
|
::Katello::AlternateContentSource.with_products(product).each do |acs|
|
79
75
|
unless repo_content_types.include?(acs.content_type)
|
80
76
|
acs.products = acs.products - [product]
|
@@ -91,11 +91,7 @@ module Actions
|
|
91
91
|
# Remove products from ACS's that contain no repositories which both
|
92
92
|
# match the ACS content type and have a non-nil URL
|
93
93
|
product = repository.product
|
94
|
-
repo_content_types =
|
95
|
-
product.acs_compatible_repositories.each do |test_repo|
|
96
|
-
# we need to check id because test_repo will still contain the old, non-nil url
|
97
|
-
repo_content_types.add(test_repo.content_type) if (repository.id != test_repo.id) && test_repo.url.present?
|
98
|
-
end
|
94
|
+
repo_content_types = ::Katello::RootRepository.where(:id => product.repositories.where.not(:id => repository.id).select(:root_id)).where.not(:url => [nil, '']).distinct.pluck(:content_type)
|
99
95
|
::Katello::AlternateContentSource.with_products(product).each do |acs|
|
100
96
|
unless repo_content_types.include?(acs.content_type)
|
101
97
|
acs.products = acs.products - [product]
|
@@ -14,7 +14,11 @@ module Actions
|
|
14
14
|
to_delete = content_view.repository_references.select do |repository_reference|
|
15
15
|
repo = repository_reference.root_repository.library_instance
|
16
16
|
if delete_href?(repository_reference.repository_href, content_view)
|
17
|
-
|
17
|
+
if repo.root.is_container_push?
|
18
|
+
tasks << repo.backend_service(smart_proxy).delete_distributions
|
19
|
+
else
|
20
|
+
tasks << repo.backend_service(smart_proxy).delete_repository(repository_reference)
|
21
|
+
end
|
18
22
|
true
|
19
23
|
else
|
20
24
|
false
|
@@ -22,7 +26,7 @@ module Actions
|
|
22
26
|
end
|
23
27
|
to_delete.each(&:destroy)
|
24
28
|
|
25
|
-
output[:pulp_tasks] = tasks
|
29
|
+
output[:pulp_tasks] = tasks.compact
|
26
30
|
end
|
27
31
|
|
28
32
|
#migrated composites may have the same RepositoryReference as their component
|
@@ -79,22 +79,14 @@ module Katello
|
|
79
79
|
module ClassMethods
|
80
80
|
def find_by_applicable_errata(_key, operator, value)
|
81
81
|
conditions = sanitize_sql_for_conditions(["#{Katello::Erratum.table_name}.errata_id #{operator} ?", value_to_sql(operator, value)])
|
82
|
-
hosts = ::Host::Managed.joins(:applicable_errata).where(conditions)
|
83
|
-
|
84
|
-
{ :conditions => "1=0" }
|
85
|
-
else
|
86
|
-
{ :conditions => "#{::Host::Managed.table_name}.id IN (#{hosts.pluck(:id).join(',')})" }
|
87
|
-
end
|
82
|
+
hosts = ::Host::Managed.joins(:applicable_errata).select(:id).where(conditions)
|
83
|
+
{ :conditions => "#{::Host::Managed.table_name}.id IN (#{hosts.to_sql})" }
|
88
84
|
end
|
89
85
|
|
90
86
|
def find_by_installable_errata(_key, operator, value)
|
91
87
|
conditions = sanitize_sql_for_conditions(["#{Katello::Erratum.table_name}.errata_id #{operator} ?", value_to_sql(operator, value)])
|
92
|
-
facets = Katello::Host::ContentFacet.joins_installable_errata.where(conditions)
|
93
|
-
|
94
|
-
{ :conditions => "1=0" }
|
95
|
-
else
|
96
|
-
{ :conditions => "#{::Host::Managed.table_name}.id IN (#{facets.pluck(:host_id).join(',')})" }
|
97
|
-
end
|
88
|
+
facets = Katello::Host::ContentFacet.joins_installable_errata.select(:host_id).where(conditions)
|
89
|
+
{ :conditions => "#{::Host::Managed.table_name}.id IN (#{facets.to_sql})" }
|
98
90
|
end
|
99
91
|
|
100
92
|
def find_by_applicable_debs(_key, operator, value)
|
@@ -117,42 +109,26 @@ module Katello
|
|
117
109
|
|
118
110
|
def find_by_applicable_rpms(_key, operator, value)
|
119
111
|
conditions = sanitize_sql_for_conditions(["#{Katello::Rpm.table_name}.nvra #{operator} ?", value_to_sql(operator, value)])
|
120
|
-
hosts = ::Host::Managed.joins(:applicable_rpms).where(conditions)
|
121
|
-
|
122
|
-
{ :conditions => "1=0" }
|
123
|
-
else
|
124
|
-
{ :conditions => "#{::Host::Managed.table_name}.id IN (#{hosts.pluck(:id).join(',')})" }
|
125
|
-
end
|
112
|
+
hosts = ::Host::Managed.joins(:applicable_rpms).select(:id).where(conditions)
|
113
|
+
{ :conditions => "#{::Host::Managed.table_name}.id IN (#{hosts.to_sql})" }
|
126
114
|
end
|
127
115
|
|
128
116
|
def find_by_installable_rpms(_key, operator, value)
|
129
117
|
conditions = sanitize_sql_for_conditions(["#{Katello::Rpm.table_name}.nvra #{operator} ?", value_to_sql(operator, value)])
|
130
|
-
facets = Katello::Host::ContentFacet.joins_installable_rpms.where(conditions)
|
131
|
-
|
132
|
-
{ :conditions => "1=0" }
|
133
|
-
else
|
134
|
-
{ :conditions => "#{::Host::Managed.table_name}.id IN (#{facets.pluck(:host_id).join(',')})" }
|
135
|
-
end
|
118
|
+
facets = Katello::Host::ContentFacet.joins_installable_rpms.select(:host_id).where(conditions)
|
119
|
+
{ :conditions => "#{::Host::Managed.table_name}.id IN (#{facets.to_sql})" }
|
136
120
|
end
|
137
121
|
|
138
122
|
def find_by_repository_content_label(_key, operator, value)
|
139
123
|
conditions = sanitize_sql_for_conditions(["#{Katello::Content.table_name}.label #{operator} ?", value_to_sql(operator, value)])
|
140
|
-
facets = Katello::Host::ContentFacet.joins_repositories.where(conditions)
|
141
|
-
|
142
|
-
{ :conditions => "1=0" }
|
143
|
-
else
|
144
|
-
{ :conditions => "#{::Host::Managed.table_name}.id IN (#{facets.pluck(:host_id).join(',')})" }
|
145
|
-
end
|
124
|
+
facets = Katello::Host::ContentFacet.joins_repositories.select(:host_id).where(conditions)
|
125
|
+
{ :conditions => "#{::Host::Managed.table_name}.id IN (#{facets.to_sql})" }
|
146
126
|
end
|
147
127
|
|
148
128
|
def find_by_repository_name(_key, operator, value)
|
149
129
|
conditions = sanitize_sql_for_conditions(["#{Katello::RootRepository.table_name}.name #{operator} ?", value_to_sql(operator, value)])
|
150
|
-
facets = Katello::Host::ContentFacet.joins_repositories.where(conditions)
|
151
|
-
|
152
|
-
{ :conditions => "1=0" }
|
153
|
-
else
|
154
|
-
{ :conditions => "#{::Host::Managed.table_name}.id IN (#{facets.pluck(:host_id).join(',')})" }
|
155
|
-
end
|
130
|
+
facets = Katello::Host::ContentFacet.joins_repositories.select(:host_id).where(conditions)
|
131
|
+
{ :conditions => "#{::Host::Managed.table_name}.id IN (#{facets.to_sql})" }
|
156
132
|
end
|
157
133
|
|
158
134
|
def in_content_view_environments(content_views: nil, lifecycle_environments: nil)
|
@@ -511,17 +511,17 @@ module Katello
|
|
511
511
|
actions = %w(install remove update).freeze
|
512
512
|
case action
|
513
513
|
when 'install'
|
514
|
-
yum_installable = ::Katello::Rpm.
|
514
|
+
yum_installable = ::Katello::Rpm.search_for(search).distinct.pluck(:name)
|
515
515
|
if yum_installable.empty?
|
516
|
-
fail N_("No available packages found for search term '%s'.
|
516
|
+
fail N_("No available packages found for search term '%s'.") % search
|
517
517
|
end
|
518
518
|
yum_installable
|
519
519
|
when 'remove'
|
520
520
|
return [] if search.empty?
|
521
521
|
|
522
|
-
yum_removable =
|
522
|
+
yum_removable = ::Katello::InstalledPackage.search_for(search).distinct.pluck(:name)
|
523
523
|
if yum_removable.empty?
|
524
|
-
fail N_("Cannot remove package(s):
|
524
|
+
fail N_("Cannot remove package(s): No installed packages found for search term '%s'.") % search
|
525
525
|
end
|
526
526
|
yum_removable
|
527
527
|
when 'update'
|
@@ -536,14 +536,15 @@ module Katello
|
|
536
536
|
end
|
537
537
|
pkg_name_archs = installed_packages.search_for(search).distinct.pluck(:name, :arch)
|
538
538
|
if pkg_name_archs.empty?
|
539
|
-
fail _("Cannot upgrade packages: No installed packages found for search term '%s'") % search
|
539
|
+
fail _("Cannot upgrade packages: No installed packages found for search term '%s'.") % search
|
540
540
|
end
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
541
|
+
versionless_upgrades = ::Katello::Rpm.where(name: pkg_name_archs.map(&:first)).select(:id, :name, :arch, :evr).order(evr: :desc).group_by { |i| [i.name, i.arch] }
|
542
|
+
# Use versions_by_name_arch if a version is specified, otherwise use the latest version. If using the latest version, upgrade by name only, not by name and arch.
|
543
|
+
pkg_names_and_nvras = pkg_name_archs.map { |name, arch| versions_by_name_arch[[name, arch]] || versionless_upgrades[[name, arch]]&.first&.name }.compact
|
544
|
+
if pkg_names_and_nvras.empty?
|
545
|
+
fail _("No upgradable packages found for search term '%s'.") % search
|
545
546
|
end
|
546
|
-
|
547
|
+
pkg_names_and_nvras
|
547
548
|
else
|
548
549
|
fail ::Foreman::Exception.new(N_("package_names_for_job_template: Action must be one of %s"), actions.join(', '))
|
549
550
|
end
|
@@ -554,7 +555,7 @@ module Katello
|
|
554
555
|
actions = %w(install remove update).freeze
|
555
556
|
case action
|
556
557
|
when 'install'
|
557
|
-
deb_installable = ::Katello::Deb.
|
558
|
+
deb_installable = ::Katello::Deb.search_for(search).distinct.pluck(:name)
|
558
559
|
if deb_installable.empty?
|
559
560
|
fail _("No available debs found for search term '%s'. Check the host's content view environments and already-installed debs.") % search
|
560
561
|
end
|
@@ -562,10 +563,10 @@ module Katello
|
|
562
563
|
when 'remove'
|
563
564
|
return [] if search.empty?
|
564
565
|
|
565
|
-
|
566
|
+
::Katello::InstalledDeb.search_for(search).distinct.pluck(:name)
|
566
567
|
when 'update'
|
567
568
|
return [] if search.empty?
|
568
|
-
deb_results =
|
569
|
+
deb_results = ::Katello::InstalledDeb.search_for(search).distinct.pluck(:name)
|
569
570
|
if deb_results.empty?
|
570
571
|
fail _("No installed debs found for search term '%s'") % search
|
571
572
|
end
|
@@ -575,10 +576,11 @@ module Katello
|
|
575
576
|
end
|
576
577
|
end
|
577
578
|
|
578
|
-
def advisory_ids(search:)
|
579
|
-
|
579
|
+
def advisory_ids(search:, check_installable_for_host: true)
|
580
|
+
errata_scope = check_installable_for_host ? ::Katello::Erratum.installable_for_hosts([self]) : ::Katello::Erratum
|
581
|
+
ids = errata_scope.search_for(search).pluck(:errata_id)
|
580
582
|
if ids.empty?
|
581
|
-
fail _("Cannot install errata: No
|
583
|
+
fail _("Cannot install errata: No errata found for search term '%s'") % search
|
582
584
|
end
|
583
585
|
ids
|
584
586
|
end
|
@@ -158,7 +158,7 @@ module Katello
|
|
158
158
|
{ :id => cve.content_view.cp_environment_id(cve.lifecycle_environment) }
|
159
159
|
end
|
160
160
|
else
|
161
|
-
self.host.organization.default_content_view.cp_environment_id(self.host.organization.library)
|
161
|
+
[{ :id => self.host.organization.default_content_view.cp_environment_id(self.host.organization.library) }]
|
162
162
|
end
|
163
163
|
end
|
164
164
|
|
@@ -15,7 +15,7 @@ foreign_input_sets:
|
|
15
15
|
exclude: action,package
|
16
16
|
%>
|
17
17
|
|
18
|
-
<% advisory_ids = @host.advisory_ids(search: input("Errata search query")) -%>
|
18
|
+
<% advisory_ids = @host.advisory_ids(search: input("Errata search query"), check_installable_for_host: false) -%>
|
19
19
|
<% render_error(N_("No errata matching given search query")) if !input("Errata search query").blank? && advisory_ids.blank? -%>
|
20
20
|
# RESOLVED_ERRATA_IDS=<%= advisory_ids.join(',') %>
|
21
21
|
|
data/app/views/foreman/job_templates/install_errata_by_search_query_-_katello_ansible_default.erb
CHANGED
@@ -12,7 +12,7 @@ template_inputs:
|
|
12
12
|
required: false
|
13
13
|
%>
|
14
14
|
|
15
|
-
<% advisory_ids = @host.advisory_ids(search: input("Errata search query")) -%>
|
15
|
+
<% advisory_ids = @host.advisory_ids(search: input("Errata search query"), check_installable_for_host: false) -%>
|
16
16
|
<% render_error(N_("No errata matching given search query")) if !input("Errata search query").blank? && advisory_ids.blank? -%>
|
17
17
|
# RESOLVED_ERRATA_IDS=<%= advisory_ids.join(',') %>
|
18
18
|
|
@@ -13,6 +13,7 @@ attributes :generated_for
|
|
13
13
|
attributes :related_cv_count
|
14
14
|
attributes :related_composite_cvs
|
15
15
|
attributes :filtered? => :filtered
|
16
|
+
attributes :needs_publish? => :needs_publish
|
16
17
|
|
17
18
|
node :next_version do |content_view|
|
18
19
|
content_view.next_version.to_f.to_s
|
@@ -8,9 +8,9 @@
|
|
8
8
|
"complete": "<%= escape_javascript(_('Sync complete.')) %>",
|
9
9
|
"no_start_time": "<%= escape_javascript(_('No start time currently available.')) %>"
|
10
10
|
});
|
11
|
-
|
12
|
-
KT.repo_status = $.parseJSON('<%= escape_javascript(@repo_status.to_json.html_safe) %>');
|
11
|
+
KT.repo_status = JSON.parse('<%= escape_javascript(@repo_status.to_json.html_safe) %>');
|
13
12
|
KT.permissions = { "syncable" : <%= any_syncable? %> };
|
13
|
+
KT.content.populateRepoStatus();
|
14
14
|
</script>
|
15
15
|
<% end -%>
|
16
16
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
var loadAngularJSgettext = new Event('loadAngularJSgettext');
|
2
|
+
|
1
3
|
angular.module('gettext', []);
|
2
4
|
angular.module('gettext').constant('gettext', function (str) {
|
3
5
|
/*
|
@@ -342,4 +344,6 @@ angular.module('gettext').factory('gettextPlurals', function () {
|
|
342
344
|
return n != 1 ? 1 : 0;
|
343
345
|
}
|
344
346
|
};
|
345
|
-
});
|
347
|
+
});
|
348
|
+
|
349
|
+
document.dispatchEvent(loadAngularJSgettext);
|
@@ -39,7 +39,6 @@ angular.module('Bastion.content-hosts').service('ContentHostsModalHelper', ['$ui
|
|
39
39
|
$uibModal.open({
|
40
40
|
templateUrl: 'content-hosts/bulk/views/content-hosts-bulk-errata-modal.html',
|
41
41
|
controller: 'ContentHostsBulkErrataModalController',
|
42
|
-
openedClass: 'bastion',
|
43
42
|
size: 'lg',
|
44
43
|
resolve: {
|
45
44
|
hostIds: this.resolveFunc()
|
data/lib/katello/version.rb
CHANGED
@@ -20,23 +20,23 @@ const recommendedRepositoriesRHEL = [
|
|
20
20
|
'rhel-8-for-x86_64-appstream-kickstart',
|
21
21
|
'rhel-8-for-x86_64-baseos-eus-rpms',
|
22
22
|
'rhel-8-for-x86_64-appstream-eus-rpms',
|
23
|
-
'rhel-7-server-rpms',
|
24
|
-
'rhel-7-server-optional-rpms',
|
25
|
-
'rhel-7-server-extras-rpms',
|
26
|
-
'rhel-7-server-kickstart',
|
23
|
+
'rhel-7-server-els-rpms',
|
24
|
+
'rhel-7-server-els-optional-rpms',
|
27
25
|
];
|
28
26
|
|
29
27
|
const recommendedRepositoriesSatTools = [
|
30
28
|
'satellite-client-6-for-rhel-9-x86_64-rpms',
|
31
29
|
'satellite-client-6-for-rhel-8-x86_64-rpms',
|
32
|
-
'rhel-7-server-satellite-client-6-rpms',
|
33
|
-
'rhel-6-server-els-satellite-client-6-rpms',
|
30
|
+
'rhel-7-server-els-satellite-client-6-rpms',
|
34
31
|
];
|
35
32
|
|
36
33
|
const recommendedRepositoriesMisc = [
|
37
|
-
'satellite-capsule-6.
|
38
|
-
'satellite-maintenance-6.
|
39
|
-
'satellite-utils-6.
|
34
|
+
'satellite-capsule-6.16-for-rhel-8-x86_64-rpms',
|
35
|
+
'satellite-maintenance-6.16-for-rhel-8-x86_64-rpms',
|
36
|
+
'satellite-utils-6.16-for-rhel-8-x86_64-rpms',
|
37
|
+
'satellite-utils-6.16-for-rhel-9-x86_64-rpms',
|
38
|
+
'satellite-maintenance-6.16-for-rhel-9-x86_64-rpms',
|
39
|
+
'satellite-capsule-6.16-for-rhel-9-x86_64-rpms',
|
40
40
|
];
|
41
41
|
|
42
42
|
const recommendedRepositorySetLables = recommendedRepositoriesRHEL
|
@@ -4,7 +4,7 @@ import { Grid, Col, Row, Tabs, Tab, FormControl, ControlLabel } from 'react-boot
|
|
4
4
|
import { FormattedMessage } from 'react-intl';
|
5
5
|
import { Button, Spinner } from 'patternfly-react';
|
6
6
|
import { Alert } from '@patternfly/react-core';
|
7
|
-
import { propsToCamelCase } from 'foremanReact/common/helpers';
|
7
|
+
import { propsToCamelCase, getDocsURL } from 'foremanReact/common/helpers';
|
8
8
|
import ForemanModal from 'foremanReact/components/ForemanModal';
|
9
9
|
import Slot from 'foremanReact/components/common/Slot';
|
10
10
|
import { translate as __ } from 'foremanReact/common/I18n';
|
@@ -12,6 +12,7 @@ import TooltipButton from '../../../components/TooltipButton';
|
|
12
12
|
import { LoadingState } from '../../../components/LoadingState';
|
13
13
|
import { Table } from '../../../components/pf3Table';
|
14
14
|
|
15
|
+
|
15
16
|
import { columns } from './ManifestHistoryTableSchema';
|
16
17
|
import DeleteManifestModalText from './DeleteManifestModalText';
|
17
18
|
import { MANAGE_MANIFEST_MODAL_ID, DELETE_MANIFEST_MODAL_ID } from './ManifestConstants';
|
@@ -32,7 +33,7 @@ class ManageManifestModal extends Component {
|
|
32
33
|
}
|
33
34
|
|
34
35
|
if (prevProps.taskInProgress && !this.props.taskInProgress) {
|
35
|
-
this.props.loadOrganization();
|
36
|
+
this.props.loadOrganization({ force_manifest_expire_cache: true });
|
36
37
|
this.props.loadManifestHistory();
|
37
38
|
}
|
38
39
|
|
@@ -111,8 +112,9 @@ class ManageManifestModal extends Component {
|
|
111
112
|
header: __('There is no manifest history to display.'),
|
112
113
|
description: __('Import a manifest using the Manifest tab above.'),
|
113
114
|
documentation: {
|
114
|
-
label: __('Learn more about adding subscription manifests '),
|
115
|
-
|
115
|
+
label: __('Learn more about adding subscription manifests in '),
|
116
|
+
buttonLabel: __('the documentation.'),
|
117
|
+
url: getDocsURL('Managing_Content', 'Managing_Red_Hat_Subscriptions_content-management'),
|
116
118
|
},
|
117
119
|
});
|
118
120
|
|
@@ -204,7 +204,7 @@ class SubscriptionsPage extends Component {
|
|
204
204
|
description: __('Add subscriptions using the Add Subscriptions button.'),
|
205
205
|
action: {
|
206
206
|
title: __('Add subscriptions'),
|
207
|
-
url: 'subscriptions/add',
|
207
|
+
url: '/subscriptions/add',
|
208
208
|
},
|
209
209
|
}
|
210
210
|
: {
|
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.14.
|
4
|
+
version: 4.14.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- N/A
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-12-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|