katello 3.16.0 → 3.16.1
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/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +1 -1
- data/app/controllers/katello/api/v2/host_tracer_controller.rb +0 -5
- data/app/controllers/katello/api/v2/products_bulk_actions_controller.rb +15 -0
- data/app/controllers/katello/api/v2/repositories_controller.rb +10 -1
- data/app/controllers/katello/concerns/hosts_controller_extensions.rb +11 -5
- data/app/lib/actions/katello/capsule_content/refresh_repos.rb +1 -1
- data/app/lib/actions/katello/capsule_content/sync.rb +3 -2
- data/app/lib/actions/katello/capsule_content/sync_capsule.rb +17 -3
- data/app/lib/actions/katello/product/destroy.rb +25 -4
- data/app/lib/actions/katello/repository/destroy.rb +5 -1
- data/app/lib/actions/katello/repository/multi_clone_contents.rb +5 -9
- data/app/lib/actions/katello/repository/sync.rb +35 -25
- data/app/lib/actions/katello/repository/update.rb +11 -16
- data/app/lib/actions/katello/repository/verify_checksum.rb +28 -0
- data/app/lib/actions/pulp/orchestration/repository/sync.rb +2 -1
- data/app/lib/actions/pulp/repository/sync.rb +2 -1
- data/app/lib/actions/pulp3/capsule_content/refresh_content_guard.rb +17 -0
- data/app/lib/actions/pulp3/capsule_content/sync.rb +3 -1
- data/app/lib/actions/pulp3/{ContentGuard → content_guard}/refresh.rb +0 -0
- data/app/lib/actions/pulp3/orchestration/repository/copy_all_units.rb +1 -2
- data/app/lib/actions/pulp3/orchestration/repository/sync.rb +3 -1
- data/app/lib/actions/pulp3/orchestration/repository/trigger_update_repo_cert_guard.rb +22 -0
- data/app/lib/actions/pulp3/repository/copy_content.rb +0 -1
- data/app/lib/actions/pulp3/repository/multi_copy_content.rb +1 -1
- data/app/lib/actions/pulp3/repository/presenters/repair_presenter.rb +85 -0
- data/app/lib/actions/pulp3/repository/repair.rb +29 -0
- data/app/lib/actions/pulp3/repository/save_version.rb +20 -16
- data/app/lib/actions/pulp3/repository/sync.rb +1 -1
- data/app/lib/actions/pulp3/repository/update_cv_repository_cert_guard.rb +6 -2
- data/app/lib/actions/pulp3/repository/upload_file.rb +1 -1
- data/app/lib/katello/concerns/base_template_scope_extensions.rb +4 -0
- data/app/lib/katello/resources/cdn.rb +3 -2
- data/app/lib/katello/util/cdn_var_substitutor.rb +9 -6
- data/app/models/katello/concerns/smart_proxy_extensions.rb +14 -3
- data/app/models/katello/content_view_package_filter.rb +1 -1
- data/app/models/katello/host/content_facet.rb +1 -0
- data/app/models/katello/ping.rb +1 -3
- data/app/models/katello/repository.rb +5 -0
- data/app/models/setting/content.rb +1 -1
- data/app/services/cert/certs.rb +10 -2
- data/app/services/katello/pulp3/repository.rb +7 -8
- data/app/services/katello/pulp3/repository/yum.rb +73 -6
- data/app/services/katello/pulp3/repository_mirror.rb +7 -2
- data/app/services/katello/pulp3/smart_proxy_mirror_repository.rb +1 -1
- data/app/services/katello/smart_proxy_helper.rb +13 -16
- data/config/routes/api/rhsm.rb +1 -0
- data/config/routes/api/v2.rb +2 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/product-bulk-action.factory.js +1 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details.controller.js +6 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-details.html +7 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repository.factory.js +1 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.controller.js +15 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/views/products.html +6 -0
- data/lib/katello/permission_creator.rb +2 -2
- data/lib/katello/plugin.rb +0 -1
- data/lib/katello/version.rb +1 -1
- data/webpack/redux/actions/RedHatRepositories/helpers.js +1 -1
- metadata +14 -4
- data/app/lib/actions/katello/repository/update_cv_repo_cert_guard.rb +0 -17
@@ -92,7 +92,7 @@ class Setting::Content < Setting
|
|
92
92
|
self.set('check_services_before_actions', N_("Whether or not to check the status of backend services such as pulp and candlepin prior to performing some actions."),
|
93
93
|
true, N_('Check services before actions')),
|
94
94
|
self.set('foreman_proxy_content_batch_size', N_("How many repositories should be synced concurrently on the capsule. A smaller number may lead to longer sync times. A larger number will increase dynflow load."),
|
95
|
-
|
95
|
+
100, N_('Batch size to sync repositories in.')),
|
96
96
|
self.set('foreman_proxy_content_auto_sync', N_("Whether or not to auto sync the Smart Proxies after a Content View promotion."),
|
97
97
|
true, N_('Sync Smart Proxies after Content View promotion')),
|
98
98
|
self.set('default_download_policy', N_("Default download policy for custom repositories (either 'immediate', 'on_demand', or 'background')"), "immediate",
|
data/app/services/cert/certs.rb
CHANGED
@@ -9,11 +9,19 @@ module Cert
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def self.ssl_client_cert
|
12
|
-
@ssl_client_cert ||= OpenSSL::X509::Certificate.new(File.open(
|
12
|
+
@ssl_client_cert ||= OpenSSL::X509::Certificate.new(File.open(ssl_client_cert_filename, 'r').read)
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.ssl_client_cert_filename
|
16
|
+
Setting['pulp_client_cert']
|
13
17
|
end
|
14
18
|
|
15
19
|
def self.ssl_client_key
|
16
|
-
@ssl_client_key ||= OpenSSL::PKey::RSA.new(File.open(
|
20
|
+
@ssl_client_key ||= OpenSSL::PKey::RSA.new(File.open(ssl_client_key_filename, 'r').read)
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.ssl_client_key_filename
|
24
|
+
Setting['pulp_client_key']
|
17
25
|
end
|
18
26
|
|
19
27
|
def self.verify_ueber_cert(organization)
|
@@ -193,16 +193,15 @@ module Katello
|
|
193
193
|
ignore_404_exception { api.repositories_api.delete(href) } if href
|
194
194
|
end
|
195
195
|
|
196
|
-
def
|
197
|
-
|
196
|
+
def sync(options = {})
|
197
|
+
repository_sync_url_data = api.class.repository_sync_url_class.new(sync_url_params(options))
|
198
|
+
[api.repositories_api.sync(repository_reference.repository_href, repository_sync_url_data)]
|
198
199
|
end
|
199
200
|
|
200
|
-
def
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
repository_sync_url_data = api.class.repository_sync_url_class.new(sync_url_params)
|
205
|
-
[api.repositories_api.sync(repository_reference.repository_href, repository_sync_url_data)]
|
201
|
+
def sync_url_params(_sync_options)
|
202
|
+
params = {remote: repo.remote_href, mirror: repo.root.mirror_on_sync}
|
203
|
+
params[:skip_types] = skip_types if skip_types
|
204
|
+
params
|
206
205
|
end
|
207
206
|
|
208
207
|
def create_publication
|
@@ -3,10 +3,13 @@ require 'pulp_rpm_client'
|
|
3
3
|
module Katello
|
4
4
|
module Pulp3
|
5
5
|
class Repository
|
6
|
+
# rubocop:disable Metrics/ClassLength
|
6
7
|
class Yum < ::Katello::Pulp3::Repository
|
7
8
|
include Katello::Util::Errata
|
8
9
|
include Katello::Util::PulpcoreContentFilters
|
9
10
|
|
11
|
+
UNIT_LIMIT = 10_000
|
12
|
+
|
10
13
|
def remote_options
|
11
14
|
if root.url.blank?
|
12
15
|
common_remote_options.merge(url: nil, policy: root.download_policy)
|
@@ -31,10 +34,6 @@ module Katello
|
|
31
34
|
}
|
32
35
|
end
|
33
36
|
|
34
|
-
def sync_params
|
35
|
-
{remote: repo.remote_href, mirror: repo.root.mirror_on_sync, optimize: false}
|
36
|
-
end
|
37
|
-
|
38
37
|
def mirror_remote_options
|
39
38
|
policy = smart_proxy.download_policy
|
40
39
|
|
@@ -63,6 +62,12 @@ module Katello
|
|
63
62
|
end
|
64
63
|
end
|
65
64
|
|
65
|
+
def sync_url_params(sync_options)
|
66
|
+
params = super
|
67
|
+
params[:optimize] = sync_options[:optimize] if sync_options.key?(:optimize)
|
68
|
+
params
|
69
|
+
end
|
70
|
+
|
66
71
|
def self.distribution_bootable?(distribution)
|
67
72
|
file_paths = distribution.results.first.images.map(&:path)
|
68
73
|
file_paths.any? do |path|
|
@@ -102,14 +107,71 @@ module Katello
|
|
102
107
|
data.config << config
|
103
108
|
end
|
104
109
|
end
|
105
|
-
|
106
|
-
tasks << api.copy_api.copy_content(data)
|
110
|
+
tasks << copy_content_chunked(data)
|
107
111
|
else
|
108
112
|
tasks << remove_all_content_from_mapping(repo_id_map)
|
109
113
|
end
|
110
114
|
tasks.flatten
|
111
115
|
end
|
112
116
|
|
117
|
+
def copy_api_data_dup(data)
|
118
|
+
data_dup = PulpRpmClient::Copy.new
|
119
|
+
data_dup.dependency_solving = data.dependency_solving
|
120
|
+
data_dup.config = []
|
121
|
+
data.config.each do |repo_config|
|
122
|
+
config_hash = {
|
123
|
+
source_repo_version: repo_config[:source_repo_version],
|
124
|
+
dest_repo: repo_config[:dest_repo],
|
125
|
+
content: []
|
126
|
+
}
|
127
|
+
config_hash[:dest_base_version] = repo_config[:dest_base_version] if repo_config[:dest_base_version]
|
128
|
+
data_dup.config << config_hash
|
129
|
+
end
|
130
|
+
data_dup
|
131
|
+
end
|
132
|
+
|
133
|
+
def copy_content_chunked(data)
|
134
|
+
tasks = []
|
135
|
+
# Don't chunk if there aren't enough content units
|
136
|
+
if data.config.sum { |repo_config| repo_config[:content].size } <= UNIT_LIMIT
|
137
|
+
return api.copy_api.copy_content(data)
|
138
|
+
end
|
139
|
+
|
140
|
+
unit_copy_counter = 0
|
141
|
+
i = 0
|
142
|
+
leftover_units = data.config.first[:content].deep_dup
|
143
|
+
|
144
|
+
# Copy data and clear its content fields
|
145
|
+
data_dup = copy_api_data_dup(data)
|
146
|
+
|
147
|
+
while i < data_dup.config.size
|
148
|
+
# Copy all units within repo or only some?
|
149
|
+
if leftover_units.length < UNIT_LIMIT - unit_copy_counter
|
150
|
+
copy_amount = leftover_units.length
|
151
|
+
else
|
152
|
+
copy_amount = UNIT_LIMIT - unit_copy_counter
|
153
|
+
end
|
154
|
+
|
155
|
+
data_dup.config[i][:content] = leftover_units.pop(copy_amount)
|
156
|
+
unit_copy_counter += copy_amount
|
157
|
+
# Do copy call if limit is reached or if we're under the limit but on the last repo config.
|
158
|
+
if unit_copy_counter >= UNIT_LIMIT || (i == data_dup.config.size - 1 && leftover_units.empty?)
|
159
|
+
tasks << api.copy_api.copy_content(data_dup)
|
160
|
+
unit_copy_counter = 0
|
161
|
+
end
|
162
|
+
|
163
|
+
if leftover_units.empty?
|
164
|
+
# Nothing more to copy -- clear current config's content
|
165
|
+
data_dup.config[i][:content] = []
|
166
|
+
i += 1
|
167
|
+
# Fetch unit list for next data config
|
168
|
+
leftover_units = data.config[i][:content].deep_dup unless i == data_dup.config.size
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
tasks
|
173
|
+
end
|
174
|
+
|
113
175
|
def remove_all_content_from_mapping(repo_id_map)
|
114
176
|
tasks = []
|
115
177
|
repo_id_map.each do |_source_repo_ids, dest_repo_id_map|
|
@@ -147,6 +209,11 @@ module Katello
|
|
147
209
|
api.repositories_api.modify(repo_href, data)
|
148
210
|
end
|
149
211
|
|
212
|
+
def repair(repository_version_href)
|
213
|
+
data = PulpRpmClient::RepositoryVersion.new
|
214
|
+
api.repository_versions_api.repair(repository_version_href, data)
|
215
|
+
end
|
216
|
+
|
150
217
|
def remove_all_content
|
151
218
|
data = PulpRpmClient::RepositoryAddRemoveContent.new(
|
152
219
|
remove_content_units: ['*'])
|
@@ -11,6 +11,11 @@ module Katello
|
|
11
11
|
@repo_service = repository_service
|
12
12
|
end
|
13
13
|
|
14
|
+
def content_guard_href
|
15
|
+
content_guard_api = ::Katello::Pulp3::Api::ContentGuard.new(smart_proxy)
|
16
|
+
content_guard_api.list&.results&.first&.pulp_href
|
17
|
+
end
|
18
|
+
|
14
19
|
def backend_object_name
|
15
20
|
#Create repos in pulp3 instance with the name as this repo's pulp_id
|
16
21
|
repo.pulp_id
|
@@ -78,6 +83,7 @@ module Katello
|
|
78
83
|
base_path: path,
|
79
84
|
name: "#{backend_object_name}"
|
80
85
|
}
|
86
|
+
ret[:content_guard] = repo.unprotected ? nil : content_guard_href
|
81
87
|
ret[:publication] = options[:publication] if options.key? :publication
|
82
88
|
ret[:repository_version] = options[:repository_version] if options.key? :repository_version
|
83
89
|
ret
|
@@ -85,10 +91,9 @@ module Katello
|
|
85
91
|
|
86
92
|
def remote_options
|
87
93
|
base_options = common_remote_options
|
94
|
+
base_options.merge(url: remote_feed_url)
|
88
95
|
if (type_specific_options = repo_service.try(:mirror_remote_options))
|
89
96
|
base_options.merge(type_specific_options)
|
90
|
-
else
|
91
|
-
base_options.merge(url: remote_feed_url)
|
92
97
|
end
|
93
98
|
end
|
94
99
|
|
@@ -10,7 +10,7 @@ module Katello
|
|
10
10
|
repo_map = {}
|
11
11
|
|
12
12
|
smart_proxy_helper = ::Katello::SmartProxyHelper.new(smart_proxy)
|
13
|
-
katello_pulp_ids = smart_proxy_helper.
|
13
|
+
katello_pulp_ids = smart_proxy_helper.combined_repos_available_to_capsule.map(&:pulp_id)
|
14
14
|
pulp3_enabled_repo_types.each do |repo_type|
|
15
15
|
api = repo_type.pulp3_service_class.api(smart_proxy)
|
16
16
|
repo_map[api] = api.list_all.reject { |capsule_repo| katello_pulp_ids.include? capsule_repo.name }
|
@@ -13,34 +13,31 @@ module Katello
|
|
13
13
|
@smart_proxy.pulp_master?
|
14
14
|
end
|
15
15
|
|
16
|
-
def
|
17
|
-
|
18
|
-
if repository
|
19
|
-
environment = repository.environment
|
20
|
-
ret = [repository]
|
21
|
-
else
|
22
|
-
yum_repos = fetch_repos_available_to_capsule(environment, content_view) || []
|
23
|
-
puppet_envs = fetch_puppet_environments_available_to_capsule(environment, content_view) || []
|
24
|
-
ret = yum_repos + puppet_envs
|
25
|
-
end
|
16
|
+
def lifecycle_environment_check(environment = nil, repository = nil)
|
17
|
+
environment = repository.environment if repository
|
26
18
|
|
27
19
|
if environment && !self.smart_proxy.lifecycle_environments.include?(environment)
|
28
20
|
fail _("Lifecycle environment '%{environment}' is not attached to this capsule.") % { :environment => environment.name }
|
29
21
|
end
|
30
|
-
|
31
|
-
ret
|
32
22
|
end
|
33
23
|
|
34
|
-
|
24
|
+
def combined_repos_available_to_capsule(environment = nil, content_view = nil, repository = nil)
|
25
|
+
lifecycle_environment_check(environment, repository)
|
26
|
+
if repository
|
27
|
+
[repository]
|
28
|
+
else
|
29
|
+
repositories_available_to_capsule(environment, content_view) + puppet_environments_available_to_capsule(environment, content_view)
|
30
|
+
end
|
31
|
+
end
|
35
32
|
|
36
|
-
def
|
33
|
+
def repositories_available_to_capsule(environments, content_view)
|
37
34
|
environments = @smart_proxy.lifecycle_environments if environments.nil?
|
38
35
|
yum_repos = Katello::Repository.in_environment(environments)
|
39
36
|
yum_repos = yum_repos.in_content_views([content_view]) if content_view
|
40
|
-
yum_repos.
|
37
|
+
yum_repos.smart_proxy_syncable
|
41
38
|
end
|
42
39
|
|
43
|
-
def
|
40
|
+
def puppet_environments_available_to_capsule(environments, content_view)
|
44
41
|
environments = @smart_proxy.lifecycle_environments if environments.nil?
|
45
42
|
puppet_environments = Katello::ContentViewPuppetEnvironment.in_environment(environments)
|
46
43
|
puppet_environments = puppet_environments.in_content_view(content_view) if content_view
|
data/config/routes/api/rhsm.rb
CHANGED
@@ -21,6 +21,7 @@ Katello::Engine.routes.draw do
|
|
21
21
|
match '/owners/:organization_id/environments' => 'candlepin_proxies#rhsm_index', :via => :get
|
22
22
|
match '/owners/:organization_id/pools' => 'candlepin_proxies#get', :via => :get, :as => :proxy_owner_pools_path
|
23
23
|
match '/owners/:organization_id/servicelevels' => 'candlepin_proxies#get', :via => :get, :as => :proxy_owner_servicelevels_path
|
24
|
+
match '/owners/:organization_id/system_purpose' => 'candlepin_proxies#get', :via => :get, :as => :proxy_owner_system_purpose_path
|
24
25
|
match '/environments/:environment_id/consumers' => 'candlepin_proxies#consumer_create', :via => :post
|
25
26
|
match '/consumers/:id' => 'candlepin_proxies#consumer_show', :via => :get
|
26
27
|
match '/consumers/:id' => 'candlepin_proxies#regenerate_identity_certificates', :via => :post
|
data/config/routes/api/v2.rb
CHANGED
@@ -392,6 +392,7 @@ Katello::Engine.routes.draw do
|
|
392
392
|
put :remove_docker_manifests, :action => :remove_content
|
393
393
|
put :remove_content
|
394
394
|
post :sync
|
395
|
+
post :verify_checksum
|
395
396
|
post :export
|
396
397
|
post :upload_content
|
397
398
|
put :import_uploads
|
@@ -421,6 +422,7 @@ Katello::Engine.routes.draw do
|
|
421
422
|
collection do
|
422
423
|
match '/bulk/destroy' => 'products_bulk_actions#destroy_products', :via => :put
|
423
424
|
match '/bulk/sync' => 'products_bulk_actions#sync_products', :via => :put
|
425
|
+
match '/bulk/verify_checksum' => 'products_bulk_actions#verify_checksum_products', :via => :put
|
424
426
|
match '/bulk/sync_plan' => 'products_bulk_actions#update_sync_plans', :via => :put
|
425
427
|
match '/bulk/http_proxy' => 'products_bulk_actions#update_http_proxy', :via => :put
|
426
428
|
end
|
@@ -13,6 +13,7 @@ angular.module('Bastion.products').factory('ProductBulkAction',
|
|
13
13
|
return BastionResource('katello/api/v2/products/bulk/:action', {}, {
|
14
14
|
removeProducts: {method: 'PUT', params: {action: 'destroy'}},
|
15
15
|
syncProducts: {method: 'PUT', params: {action: 'sync'}},
|
16
|
+
verifyChecksumProducts: {method: 'PUT', params: {action: 'verify_checksum'}},
|
16
17
|
updateProductSyncPlan: {method: 'PUT', params: {action: 'sync_plan'}},
|
17
18
|
updateProductHttpProxy: {method: 'PUT', params: {action: 'http_proxy'}}
|
18
19
|
});
|
@@ -70,6 +70,12 @@
|
|
70
70
|
}, errorHandler);
|
71
71
|
};
|
72
72
|
|
73
|
+
$scope.verifyChecksum = function (repository) {
|
74
|
+
Repository.verifyChecksum({id: repository.id}, function (task) {
|
75
|
+
$state.go('product.repository.tasks.details', {taskId: task.id});
|
76
|
+
}, errorHandler);
|
77
|
+
};
|
78
|
+
|
73
79
|
$scope.republishRepository = function (repository) {
|
74
80
|
Repository.republish({id: repository.id}, function (task) {
|
75
81
|
$state.go('product.repository.tasks.details', {taskId: task.id});
|
@@ -32,6 +32,12 @@
|
|
32
32
|
</a>
|
33
33
|
</li>
|
34
34
|
|
35
|
+
<li role="menuitem" ng-hide="hideSyncButton(repository, true)" ng-class="{disabled: disableSyncLink()}">
|
36
|
+
<a ng-click="verifyChecksum(repository)" disable-link="disableSyncLink()" translate>
|
37
|
+
Verify Content Checksum
|
38
|
+
</a>
|
39
|
+
</li>
|
40
|
+
|
35
41
|
<li role="menuitem" ng-hide="syncInProgress(repository.last_sync) || denied('edit_products', product)">
|
36
42
|
<a ng-click="republishRepository(repository)" translate>
|
37
43
|
Republish Repository Metadata
|
@@ -90,4 +96,4 @@
|
|
90
96
|
<div data-block="content">
|
91
97
|
<section ui-view></section>
|
92
98
|
</div>
|
93
|
-
</div>
|
99
|
+
</div>
|
@@ -17,6 +17,7 @@ angular.module('Bastion.repositories').factory('Repository',
|
|
17
17
|
{
|
18
18
|
update: { method: 'PUT' },
|
19
19
|
sync: { method: 'POST', params: { action: 'sync' } },
|
20
|
+
verifyChecksum: { method: 'POST', params: { action: 'verify_checksum' }},
|
20
21
|
removePackages: { method: 'PUT', params: { action: 'remove_packages'}},
|
21
22
|
removeContent: { method: 'PUT', params: { action: 'remove_content'}},
|
22
23
|
autocomplete: {method: 'GET', isArray: true, params: {id: 'auto_complete_search'}},
|
data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.controller.js
CHANGED
@@ -101,6 +101,21 @@ angular.module('Bastion.products').controller('ProductsController',
|
|
101
101
|
ProductBulkAction.syncProducts(getBulkParams(), success, bulkError);
|
102
102
|
};
|
103
103
|
|
104
|
+
$scope.verifyChecksumProducts = function () {
|
105
|
+
var success;
|
106
|
+
|
107
|
+
success = function (task) {
|
108
|
+
var message = translate("Product verify checksum has been initiated in the background.");
|
109
|
+
Notification.setSuccessMessage(message, {
|
110
|
+
link: {
|
111
|
+
children: translate("Click to monitor task progress."),
|
112
|
+
href: translate("/foreman_tasks/tasks/%taskId").replace('%taskId', task.id)
|
113
|
+
}});
|
114
|
+
};
|
115
|
+
|
116
|
+
ProductBulkAction.verifyChecksumProducts(getBulkParams(), success, bulkError);
|
117
|
+
};
|
118
|
+
|
104
119
|
$scope.goToDiscoveries = function () {
|
105
120
|
nutupane.table.rows = [];
|
106
121
|
nutupane.table.resource.results = [];
|
data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/views/products.html
CHANGED
@@ -36,6 +36,12 @@
|
|
36
36
|
</a>
|
37
37
|
</li>
|
38
38
|
|
39
|
+
<li role="menuitem" ng-show="permitted('edit_products')" ng-class="{disabled: table.numSelected === 0}">
|
40
|
+
<a ng-click="verifyChecksumProducts()" disable-link="table.numSelected === 0" translate>
|
41
|
+
Verify Content Checksum
|
42
|
+
</a>
|
43
|
+
</li>
|
44
|
+
|
39
45
|
<li role="menuitem" ng-show="permitted('edit_products')" ng-class="{disabled: table.numSelected === 0}">
|
40
46
|
<a ng-click="openSyncPlanModal()" disable-link="table.numSelected === 0" translate>
|
41
47
|
Manage Sync Plan
|
@@ -304,8 +304,8 @@ module Katello
|
|
304
304
|
@plugin.permission :edit_products,
|
305
305
|
{
|
306
306
|
'katello/api/v2/products' => [:update],
|
307
|
-
'katello/api/v2/repositories' => [:update, :remove_content, :import_uploads, :upload_content, :republish],
|
308
|
-
'katello/api/v2/products_bulk_actions' => [:update_sync_plans, :update_http_proxy],
|
307
|
+
'katello/api/v2/repositories' => [:update, :remove_content, :import_uploads, :upload_content, :republish, :verify_checksum],
|
308
|
+
'katello/api/v2/products_bulk_actions' => [:update_sync_plans, :update_http_proxy, :verify_checksum_products],
|
309
309
|
'katello/api/v2/content_uploads' => [:create, :update, :destroy],
|
310
310
|
'katello/api/v2/organizations' => [:repo_discover, :cancel_repo_discover]
|
311
311
|
},
|
data/lib/katello/plugin.rb
CHANGED
@@ -218,7 +218,6 @@ Foreman::Plugin.register :katello do
|
|
218
218
|
:parent => :lab_features_menu,
|
219
219
|
:turbolinks => false
|
220
220
|
|
221
|
-
allowed_template_helpers :subscription_manager_configuration_url, :repository_url
|
222
221
|
extend_template_helpers Katello::KatelloUrlsHelper
|
223
222
|
extend_template_helpers Katello::Concerns::BaseTemplateScopeExtensions
|
224
223
|
|
data/lib/katello/version.rb
CHANGED
@@ -35,7 +35,7 @@ const recommendedRepositoriesSatTools = [
|
|
35
35
|
const recommendedRepositoriesMisc = [
|
36
36
|
'rhel-server-rhscl-7-rpms',
|
37
37
|
'rhel-7-server-satellite-capsule-6.8-rpms',
|
38
|
-
'rhel-7-server-ansible-2.
|
38
|
+
'rhel-7-server-ansible-2.9-rpms',
|
39
39
|
];
|
40
40
|
|
41
41
|
const recommendedRepositorySetLables = recommendedRepositoriesRHEL
|
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: 3.16.
|
4
|
+
version: 3.16.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: 2020-
|
11
|
+
date: 2020-09-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -87,6 +87,9 @@ dependencies:
|
|
87
87
|
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: 0.14.1
|
90
|
+
- - "<="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: 2.0.2
|
90
93
|
type: :runtime
|
91
94
|
prerelease: false
|
92
95
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -94,6 +97,9 @@ dependencies:
|
|
94
97
|
- - ">="
|
95
98
|
- !ruby/object:Gem::Version
|
96
99
|
version: 0.14.1
|
100
|
+
- - "<="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: 2.0.2
|
97
103
|
- !ruby/object:Gem::Dependency
|
98
104
|
name: dynflow
|
99
105
|
requirement: !ruby/object:Gem::Requirement
|
@@ -892,13 +898,13 @@ files:
|
|
892
898
|
- app/lib/actions/katello/repository/sync_hook.rb
|
893
899
|
- app/lib/actions/katello/repository/update.rb
|
894
900
|
- app/lib/actions/katello/repository/update_content_urls.rb
|
895
|
-
- app/lib/actions/katello/repository/update_cv_repo_cert_guard.rb
|
896
901
|
- app/lib/actions/katello/repository/update_http_proxy_details.rb
|
897
902
|
- app/lib/actions/katello/repository/update_metadata_sync.rb
|
898
903
|
- app/lib/actions/katello/repository/update_redhat_repository.rb
|
899
904
|
- app/lib/actions/katello/repository/upload_errata.rb
|
900
905
|
- app/lib/actions/katello/repository/upload_files.rb
|
901
906
|
- app/lib/actions/katello/repository/upload_package_group.rb
|
907
|
+
- app/lib/actions/katello/repository/verify_checksum.rb
|
902
908
|
- app/lib/actions/katello/repository_set/disable_repository.rb
|
903
909
|
- app/lib/actions/katello/repository_set/enable_repository.rb
|
904
910
|
- app/lib/actions/katello/repository_set/scan_cdn.rb
|
@@ -980,12 +986,13 @@ files:
|
|
980
986
|
- app/lib/actions/pulp/repository_group/create.rb
|
981
987
|
- app/lib/actions/pulp/repository_group/delete.rb
|
982
988
|
- app/lib/actions/pulp/repository_group/export.rb
|
983
|
-
- app/lib/actions/pulp3/ContentGuard/refresh.rb
|
984
989
|
- app/lib/actions/pulp3/abstract.rb
|
985
990
|
- app/lib/actions/pulp3/abstract_async_task.rb
|
986
991
|
- app/lib/actions/pulp3/capsule_content/generate_metadata.rb
|
992
|
+
- app/lib/actions/pulp3/capsule_content/refresh_content_guard.rb
|
987
993
|
- app/lib/actions/pulp3/capsule_content/refresh_distribution.rb
|
988
994
|
- app/lib/actions/pulp3/capsule_content/sync.rb
|
995
|
+
- app/lib/actions/pulp3/content_guard/refresh.rb
|
989
996
|
- app/lib/actions/pulp3/content_migration.rb
|
990
997
|
- app/lib/actions/pulp3/content_view/delete_repository_references.rb
|
991
998
|
- app/lib/actions/pulp3/import_migration.rb
|
@@ -1000,6 +1007,7 @@ files:
|
|
1000
1007
|
- app/lib/actions/pulp3/orchestration/repository/refresh_repos.rb
|
1001
1008
|
- app/lib/actions/pulp3/orchestration/repository/remove_units.rb
|
1002
1009
|
- app/lib/actions/pulp3/orchestration/repository/sync.rb
|
1010
|
+
- app/lib/actions/pulp3/orchestration/repository/trigger_update_repo_cert_guard.rb
|
1003
1011
|
- app/lib/actions/pulp3/orchestration/repository/update.rb
|
1004
1012
|
- app/lib/actions/pulp3/orchestration/repository/upload_content.rb
|
1005
1013
|
- app/lib/actions/pulp3/orphan_cleanup/delete_orphan_distributions.rb
|
@@ -1023,8 +1031,10 @@ files:
|
|
1023
1031
|
- app/lib/actions/pulp3/repository/multi_copy_units.rb
|
1024
1032
|
- app/lib/actions/pulp3/repository/presenters/abstract_sync_presenter.rb
|
1025
1033
|
- app/lib/actions/pulp3/repository/presenters/content_unit_presenter.rb
|
1034
|
+
- app/lib/actions/pulp3/repository/presenters/repair_presenter.rb
|
1026
1035
|
- app/lib/actions/pulp3/repository/refresh_distribution.rb
|
1027
1036
|
- app/lib/actions/pulp3/repository/remove_units.rb
|
1037
|
+
- app/lib/actions/pulp3/repository/repair.rb
|
1028
1038
|
- app/lib/actions/pulp3/repository/save_artifact.rb
|
1029
1039
|
- app/lib/actions/pulp3/repository/save_distribution_references.rb
|
1030
1040
|
- app/lib/actions/pulp3/repository/save_publication.rb
|