katello 4.12.0 → 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.
- checksums.yaml +4 -4
- data/README.md +0 -1
- data/app/assets/javascripts/katello/locale/bn/katello.js +3365 -3350
- data/app/assets/javascripts/katello/locale/bn_IN/katello.js +3136 -3121
- data/app/assets/javascripts/katello/locale/ca/katello.js +3588 -3576
- data/app/assets/javascripts/katello/locale/cs/katello.js +3499 -3487
- data/app/assets/javascripts/katello/locale/cs_CZ/katello.js +4186 -4186
- data/app/assets/javascripts/katello/locale/de/katello.js +5553 -5562
- data/app/assets/javascripts/katello/locale/de_AT/katello.js +3008 -2993
- data/app/assets/javascripts/katello/locale/de_DE/katello.js +3066 -3051
- data/app/assets/javascripts/katello/locale/el/katello.js +3376 -3370
- data/app/assets/javascripts/katello/locale/en/katello.js +3008 -2993
- data/app/assets/javascripts/katello/locale/en_GB/katello.js +3076 -3073
- data/app/assets/javascripts/katello/locale/en_US/katello.js +3008 -2993
- data/app/assets/javascripts/katello/locale/es/katello.js +5366 -5372
- data/app/assets/javascripts/katello/locale/et_EE/katello.js +3008 -2993
- data/app/assets/javascripts/katello/locale/fr/katello.js +5975 -5984
- data/app/assets/javascripts/katello/locale/gl/katello.js +3125 -3113
- data/app/assets/javascripts/katello/locale/gu/katello.js +3119 -3104
- data/app/assets/javascripts/katello/locale/he_IL/katello.js +3020 -3005
- data/app/assets/javascripts/katello/locale/hi/katello.js +3137 -3122
- data/app/assets/javascripts/katello/locale/id/katello.js +3008 -2993
- data/app/assets/javascripts/katello/locale/it/katello.js +4469 -4466
- data/app/assets/javascripts/katello/locale/ja/katello.js +5969 -5978
- data/app/assets/javascripts/katello/locale/ka/katello.js +5649 -5652
- data/app/assets/javascripts/katello/locale/kn/katello.js +3136 -3121
- data/app/assets/javascripts/katello/locale/ko/katello.js +4717 -4720
- data/app/assets/javascripts/katello/locale/locale/katello.js +1050 -1084
- data/app/assets/javascripts/katello/locale/ml_IN/katello.js +3008 -2993
- data/app/assets/javascripts/katello/locale/mr/katello.js +3136 -3121
- data/app/assets/javascripts/katello/locale/nl_NL/katello.js +3116 -3101
- data/app/assets/javascripts/katello/locale/or/katello.js +3137 -3122
- data/app/assets/javascripts/katello/locale/pa/katello.js +3136 -3121
- data/app/assets/javascripts/katello/locale/pl/katello.js +3210 -3195
- data/app/assets/javascripts/katello/locale/pl_PL/katello.js +3008 -2993
- data/app/assets/javascripts/katello/locale/pt/katello.js +3009 -2994
- data/app/assets/javascripts/katello/locale/pt_BR/katello.js +5362 -5368
- data/app/assets/javascripts/katello/locale/ro/katello.js +3008 -2993
- data/app/assets/javascripts/katello/locale/ro_RO/katello.js +3008 -2993
- data/app/assets/javascripts/katello/locale/ru/katello.js +4638 -4641
- data/app/assets/javascripts/katello/locale/sl/katello.js +3051 -3036
- data/app/assets/javascripts/katello/locale/sv_SE/katello.js +3156 -3144
- data/app/assets/javascripts/katello/locale/ta/katello.js +3365 -3350
- data/app/assets/javascripts/katello/locale/ta_IN/katello.js +3121 -3106
- data/app/assets/javascripts/katello/locale/te/katello.js +3136 -3121
- data/app/assets/javascripts/katello/locale/tr/katello.js +3025 -3010
- data/app/assets/javascripts/katello/locale/vi/katello.js +3008 -2993
- data/app/assets/javascripts/katello/locale/vi_VN/katello.js +3008 -2993
- data/app/assets/javascripts/katello/locale/zh/katello.js +3008 -2993
- data/app/assets/javascripts/katello/locale/zh_CN/katello.js +5968 -5977
- data/app/assets/javascripts/katello/locale/zh_TW/katello.js +4694 -4697
- data/app/assets/javascripts/katello/sync_management/sync_management.js +1 -0
- data/app/controllers/katello/api/registry/registry_proxies_controller.rb +51 -124
- data/app/controllers/katello/api/rhsm/candlepin_dynflow_proxy_controller.rb +12 -20
- data/app/controllers/katello/api/v2/activation_keys_controller.rb +10 -4
- data/app/controllers/katello/api/v2/capsule_content_controller.rb +24 -0
- data/app/controllers/katello/api/v2/content_view_versions_controller.rb +9 -2
- data/app/controllers/katello/api/v2/debs_controller.rb +1 -1
- data/app/controllers/katello/api/v2/errata_controller.rb +1 -1
- data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +12 -4
- data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +3 -3
- data/app/controllers/katello/api/v2/organizations_controller.rb +0 -11
- data/app/controllers/katello/api/v2/packages_controller.rb +1 -1
- data/app/controllers/katello/api/v2/products_bulk_actions_controller.rb +1 -1
- data/app/controllers/katello/api/v2/repositories_controller.rb +18 -12
- data/app/controllers/katello/api/v2/repository_sets_controller.rb +2 -1
- data/app/controllers/katello/api/v2/simple_content_access_controller.rb +9 -22
- data/app/controllers/katello/concerns/api/v2/authorization.rb +1 -1
- data/app/helpers/katello/katello_urls_helper.rb +26 -1
- data/app/helpers/katello/subscription_mailer_helper.rb +1 -1
- data/app/jobs/create_manifest_expire_soon_warning_notifications.rb +11 -0
- data/app/lib/actions/candlepin/owner/regenerate_upstream_identity_cert.rb +21 -0
- data/app/lib/actions/katello/capsule_content/sync.rb +1 -1
- data/app/lib/actions/katello/capsule_content/verify_checksum.rb +75 -0
- data/app/lib/actions/katello/content_view/promote.rb +1 -1
- data/app/lib/actions/katello/content_view/publish.rb +1 -1
- data/app/lib/actions/katello/content_view_version/verify_checksum.rb +29 -0
- data/app/lib/actions/katello/host/hypervisors_update.rb +1 -0
- data/app/lib/actions/katello/host/update_content_view.rb +2 -2
- data/app/lib/actions/katello/organization/manifest_import.rb +5 -0
- data/app/lib/actions/katello/organization/manifest_refresh.rb +3 -0
- data/app/lib/actions/katello/repository/metadata_generate.rb +7 -1
- data/app/lib/actions/katello/repository/remove_content.rb +1 -0
- data/app/lib/actions/katello/repository/sync.rb +2 -1
- data/app/lib/actions/katello/repository/upload_files.rb +1 -0
- data/app/lib/actions/pulp3/capsule_content/verify_checksum.rb +27 -0
- data/app/lib/actions/pulp3/orchestration/content_view_version/export_repository.rb +7 -9
- data/app/lib/actions/pulp3/orchestration/content_view_version/syncable_export.rb +5 -4
- data/app/lib/katello/concerns/base_template_scope_extensions.rb +7 -2
- data/app/lib/katello/errors.rb +4 -0
- data/app/lib/katello/http_resource.rb +6 -1
- data/app/lib/katello/resources/candlepin/consumer.rb +1 -1
- data/app/lib/katello/resources/candlepin/upstream_consumer.rb +18 -6
- data/app/lib/katello/resources/candlepin/upstream_job.rb +1 -1
- data/app/lib/katello/resources/registry.rb +25 -0
- data/app/mailers/katello/subscription_mailer.rb +3 -6
- data/app/models/katello/candlepin/repository_mapper.rb +1 -1
- data/app/models/katello/concerns/organization_extensions.rb +42 -3
- data/app/models/katello/content_view.rb +28 -0
- data/app/models/katello/content_view_environment_content_facet.rb +4 -2
- data/app/models/katello/glue/provider.rb +19 -12
- data/app/models/katello/glue/pulp/repos.rb +3 -8
- data/app/models/katello/host/content_facet.rb +1 -1
- data/app/models/katello/host/subscription_facet.rb +1 -1
- data/app/models/katello/host_collection.rb +12 -3
- data/app/models/katello/ping.rb +1 -1
- data/app/models/katello/repository.rb +33 -0
- data/app/models/katello/root_repository.rb +0 -4
- data/app/services/katello/content_unit_indexer.rb +9 -0
- data/app/services/katello/pulp3/alternate_content_source.rb +4 -6
- data/app/services/katello/pulp3/api/core.rb +13 -0
- data/app/services/katello/pulp3/api/yum.rb +11 -0
- data/app/services/katello/pulp3/docker_manifest.rb +5 -1
- data/app/services/katello/pulp3/repository/generic.rb +1 -1
- data/app/services/katello/pulp3/repository.rb +26 -6
- data/app/services/katello/pulp3/repository_mirror.rb +13 -12
- data/app/services/katello/pulp3/service_common.rb +2 -10
- data/app/services/katello/pulp3/smart_proxy_repository.rb +0 -2
- data/app/services/katello/ui_notifications/subscriptions/manifest_expire_soon_warning.rb +75 -0
- data/app/views/foreman/job_templates/update_package_-_katello_ansible_default.erb +5 -1
- data/app/views/foreman/job_templates/update_packages_by_search_query_-_katello_ansible_default.erb +2 -2
- data/app/views/foreman/job_templates/upload_profile.erb +16 -0
- data/app/views/katello/api/v2/content_view_filter_rules/show.json.rabl +9 -0
- data/app/views/katello/api/v2/docker_manifests/show.json.rabl +1 -0
- data/app/views/katello/api/v2/hosts/host_collections.json.rabl +5 -1
- data/app/views/katello/api/v2/organizations/show.json.rabl +9 -1
- data/app/views/katello/hosts/_errata_counts.html.erb +1 -1
- data/app/views/overrides/activation_keys/_host_environment_select.html.erb +1 -1
- data/app/views/overrides/activation_keys/_host_media_type_select.html.erb +15 -5
- data/app/views/overrides/activation_keys/_host_tab_pane.html.erb +1 -29
- data/config/routes/api/registry.rb +4 -8
- data/config/routes/api/v2.rb +2 -0
- data/db/migrate/20240423112842_add_fields_to_katello_docker_manifest.rb +8 -0
- data/db/migrate/20240502192021_change_katello_repository_rpms_id_seq_to_big_int.rb +9 -0
- data/db/seeds.d/109-katello-notification-blueprints.rb +6 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-repository-sets.controller.js +3 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/new/views/new-content-credential.html +2 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-repository-sets.controller.js +3 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +0 -15
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +8 -6
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +12 -10
- data/lib/katello/permission_creator.rb +3 -3
- data/lib/katello/permissions/registry_permissions.rb +4 -7
- data/lib/katello/plugin.rb +10 -9
- data/lib/katello/repository_types/ostree.rb +7 -0
- data/lib/katello/scheduled_jobs.rb +7 -1
- data/lib/katello/tasks/clean_backend_objects.rake +1 -1
- data/lib/katello/tasks/repository.rake +22 -0
- data/lib/katello/version.rb +1 -1
- data/locale/action_names.rb +4 -3
- data/locale/bn/katello.po +166 -151
- data/locale/bn_IN/katello.po +166 -151
- data/locale/ca/katello.po +166 -151
- data/locale/cs/katello.po +166 -151
- data/locale/cs_CZ/LC_MESSAGES/katello.mo +0 -0
- data/locale/cs_CZ/katello.po +172 -157
- data/locale/de/LC_MESSAGES/katello.mo +0 -0
- data/locale/de/katello.po +178 -163
- data/locale/de_AT/katello.po +166 -151
- data/locale/de_DE/katello.po +166 -151
- data/locale/el/katello.po +166 -151
- data/locale/en/katello.po +166 -151
- data/locale/en_GB/katello.po +166 -151
- data/locale/en_US/katello.po +166 -151
- data/locale/es/LC_MESSAGES/katello.mo +0 -0
- data/locale/es/katello.po +178 -163
- data/locale/et_EE/katello.po +166 -151
- data/locale/fr/LC_MESSAGES/katello.mo +0 -0
- data/locale/fr/katello.po +179 -164
- data/locale/gl/katello.po +166 -151
- data/locale/gu/katello.po +166 -151
- data/locale/he_IL/katello.po +166 -151
- data/locale/hi/katello.po +166 -151
- data/locale/id/katello.po +166 -151
- data/locale/it/LC_MESSAGES/katello.mo +0 -0
- data/locale/it/katello.po +169 -154
- data/locale/ja/LC_MESSAGES/katello.mo +0 -0
- data/locale/ja/katello.po +179 -164
- data/locale/ka/LC_MESSAGES/katello.mo +0 -0
- data/locale/ka/katello.po +177 -162
- data/locale/katello.pot +1119 -1062
- data/locale/kn/katello.po +166 -151
- data/locale/ko/LC_MESSAGES/katello.mo +0 -0
- data/locale/ko/katello.po +174 -159
- data/locale/ml_IN/katello.po +166 -151
- data/locale/mr/katello.po +166 -151
- data/locale/nl_NL/katello.po +166 -151
- data/locale/or/katello.po +166 -151
- data/locale/pa/katello.po +166 -151
- data/locale/pl/katello.po +166 -151
- data/locale/pl_PL/katello.po +166 -151
- data/locale/pt/katello.po +166 -151
- data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
- data/locale/pt_BR/katello.po +178 -163
- data/locale/ro/katello.po +166 -151
- data/locale/ro_RO/katello.po +166 -151
- data/locale/ru/LC_MESSAGES/katello.mo +0 -0
- data/locale/ru/katello.po +171 -156
- data/locale/sl/katello.po +166 -151
- data/locale/sv_SE/katello.po +166 -151
- data/locale/ta/katello.po +166 -151
- data/locale/ta_IN/katello.po +166 -151
- data/locale/te/katello.po +166 -151
- data/locale/tr/katello.po +166 -151
- data/locale/vi/katello.po +166 -151
- data/locale/vi_VN/katello.po +166 -151
- data/locale/zh/katello.po +166 -151
- data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
- data/locale/zh_CN/katello.po +179 -164
- data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
- data/locale/zh_TW/katello.po +171 -156
- data/webpack/ForemanColumnExtensions/index.js +129 -0
- data/webpack/components/ActivationKeysSearch/ActivationKeysSearch.test.js +28 -0
- data/webpack/components/ActivationKeysSearch/index.js +222 -0
- data/webpack/components/Table/TableWrapper.js +14 -0
- data/webpack/components/extensions/HostDetails/ActionsBar/index.js +1 -1
- data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.js +1 -1
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/packageInstallModal.test.js +1 -0
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/packagesTab.test.js +1 -0
- data/webpack/components/extensions/Hosts/ActionsBar/index.js +20 -1
- data/webpack/components/extensions/Hosts/BulkActions/BulkChangeHostCVModal/BulkChangeHostCVModal.js +220 -0
- data/webpack/components/extensions/Hosts/BulkActions/BulkChangeHostCVModal/actions.js +23 -0
- data/webpack/components/extensions/Hosts/BulkActions/BulkChangeHostCVModal/index.js +25 -0
- data/webpack/components/extensions/Hosts/BulkActions/__tests__/bulkChangeHostCVModal.test.js +133 -0
- data/webpack/global_index.js +19 -0
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +6 -3
- data/webpack/scenes/Hosts/ChangeContentSource/actions.js +3 -1
- data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceForm.js +63 -25
- data/webpack/scenes/Hosts/ChangeContentSource/index.js +24 -16
- data/webpack/scenes/RedHatRepositories/__tests__/__snapshots__/RedHatRepositoriesPage.test.js.snap +1 -0
- data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +64 -5
- data/webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsPage.js +16 -13
- data/webpack/scenes/Subscriptions/UpstreamSubscriptions/__tests__/__snapshots__/UpstreamSubscriptionsPage.test.js.snap +14 -8
- data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsPage.test.js.snap +1 -0
- data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/SubscriptionsToolbar.js +1 -1
- metadata +61 -42
- data/app/assets/javascripts/katello/hosts/activation_key_edit.js +0 -167
- data/app/lib/actions/katello/host/upload_package_profile.rb +0 -45
- data/app/lib/actions/katello/host/upload_profiles.rb +0 -47
@@ -0,0 +1,75 @@
|
|
1
|
+
module Katello
|
2
|
+
module UINotifications
|
3
|
+
module Subscriptions
|
4
|
+
class ManifestExpireSoonWarning
|
5
|
+
class << self
|
6
|
+
def deliver!
|
7
|
+
::Organization.unscoped.all.each do |organization|
|
8
|
+
if (notification = existing_notification(organization))
|
9
|
+
days_remaining = organization.manifest_expire_days_remaining
|
10
|
+
if days_remaining == 0 || days_remaining > Setting[:expire_soon_days].to_i
|
11
|
+
# if the manifest has already expired, delete the notification;
|
12
|
+
# user will have a ManifestExpiredWarning instead.
|
13
|
+
# If user changes the expire_soon_days setting, remove notifications
|
14
|
+
# that are no longer relevant.
|
15
|
+
Rails.logger.debug("ManifestExpireSoonWarning: deleting notification for #{organization.name}")
|
16
|
+
notification.destroy
|
17
|
+
next
|
18
|
+
end
|
19
|
+
# don't update if the message hasn't changed
|
20
|
+
next unless message(organization).to_s !=
|
21
|
+
notification.message.to_s
|
22
|
+
notification.update(
|
23
|
+
:message => message(organization),
|
24
|
+
:actions => actions
|
25
|
+
)
|
26
|
+
else
|
27
|
+
next unless organization.manifest_expiring_soon?
|
28
|
+
::Notification.create!(
|
29
|
+
:subject => organization,
|
30
|
+
:initiator => User.anonymous_admin,
|
31
|
+
:audience => Notification::AUDIENCE_SUBJECT,
|
32
|
+
:message => message(organization),
|
33
|
+
:actions => actions,
|
34
|
+
:notification_blueprint => blueprint
|
35
|
+
)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def existing_notification(subject)
|
41
|
+
matching_notification = Notification.unscoped.find_by(:subject => subject, :notification_blueprint => blueprint)
|
42
|
+
return false if matching_notification.blank?
|
43
|
+
matching_notification
|
44
|
+
end
|
45
|
+
|
46
|
+
def message(organization)
|
47
|
+
::UINotifications::StringParser.new(
|
48
|
+
blueprint.message,
|
49
|
+
:manifest_expire_date => organization.manifest_expiration_date&.to_date,
|
50
|
+
:subject => organization,
|
51
|
+
:days_remaining => organization.manifest_expire_days_remaining
|
52
|
+
)
|
53
|
+
end
|
54
|
+
|
55
|
+
def actions
|
56
|
+
{
|
57
|
+
:links => [
|
58
|
+
{
|
59
|
+
:href => "/subscriptions",
|
60
|
+
:title => _('Subscriptions'),
|
61
|
+
:external => false
|
62
|
+
}
|
63
|
+
]
|
64
|
+
}
|
65
|
+
end
|
66
|
+
|
67
|
+
def blueprint
|
68
|
+
@blueprint ||= NotificationBlueprint.unscoped.find_by(
|
69
|
+
:name => 'manifest_expire_soon_warning')
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -13,4 +13,8 @@ provider_type: Ansible
|
|
13
13
|
kind: job_template
|
14
14
|
%>
|
15
15
|
|
16
|
-
|
16
|
+
<%
|
17
|
+
pkgs = input('package')
|
18
|
+
pkgs = '"*"' if pkgs.empty?
|
19
|
+
-%>
|
20
|
+
<%= render_template('Package Action - Ansible Default', :state => 'latest', :name => pkgs) %>
|
data/app/views/foreman/job_templates/update_packages_by_search_query_-_katello_ansible_default.erb
CHANGED
@@ -3,7 +3,7 @@ kind: job_template
|
|
3
3
|
name: Update packages by search query - Katello Ansible Default
|
4
4
|
job_category: Katello
|
5
5
|
description_format: 'Update package(s) %{Packages search query}'
|
6
|
-
feature:
|
6
|
+
feature: katello_package_update_by_search
|
7
7
|
provider_type: Ansible
|
8
8
|
template_inputs:
|
9
9
|
- name: Packages search query
|
@@ -22,7 +22,7 @@ template_inputs:
|
|
22
22
|
versions: input('Selected update versions')
|
23
23
|
) -%>
|
24
24
|
<% if package_names.empty? -%>
|
25
|
-
<%= render_template('
|
25
|
+
<%= render_template('Package Action - Ansible Default', :state => 'latest', :name => '"*"') %>
|
26
26
|
<% else -%>
|
27
27
|
---
|
28
28
|
- hosts: all
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<%#
|
2
|
+
kind: job_template
|
3
|
+
name: Upload profile - Katello Script Default
|
4
|
+
job_category: Katello
|
5
|
+
model: JobTemplate
|
6
|
+
provider_type: script
|
7
|
+
description_format: Upload package profile for a host
|
8
|
+
feature: katello_upload_profile
|
9
|
+
%>
|
10
|
+
#!/bin/sh
|
11
|
+
<% if @host.operatingsystem.family == 'Redhat' -%>
|
12
|
+
dnf uploadprofile --force-upload
|
13
|
+
<% else -%>
|
14
|
+
package-profile-upload --force-upload
|
15
|
+
<% end -%>
|
16
|
+
subscription-manager repos
|
@@ -15,4 +15,13 @@ attributes :architecture, :if => lambda { |rule| rule.respond_to?(:architecture)
|
|
15
15
|
attributes :types, :if => lambda { |rule| rule.respond_to?(:types) && !rule.types.blank? }
|
16
16
|
attributes :date_type, :if => lambda { |rule| rule.respond_to?(:date_type) }
|
17
17
|
attributes :module_stream_id, :if => lambda { |rule| rule.respond_to?(:module_stream_id) && !rule.module_stream_id.blank? }
|
18
|
+
if @resource&.try(:module_stream)
|
19
|
+
node :module_stream do |rule|
|
20
|
+
{
|
21
|
+
:module_stream_id => rule.module_stream.id,
|
22
|
+
:module_stream_name => rule.module_stream.name,
|
23
|
+
:module_stream_stream => rule.module_stream.stream
|
24
|
+
}
|
25
|
+
end
|
26
|
+
end
|
18
27
|
extends 'katello/api/v2/common/timestamps'
|
@@ -1,3 +1,7 @@
|
|
1
1
|
child :host_collections => :host_collections do
|
2
|
-
attributes :id, :name, :description, :max_hosts, :unlimited_hosts
|
2
|
+
attributes :id, :name, :description, :max_hosts, :unlimited_hosts
|
3
|
+
|
4
|
+
node :total_hosts do |host_collection|
|
5
|
+
host_collection.total_hosts(cached: true)
|
6
|
+
end
|
3
7
|
end
|
@@ -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
|
@@ -43,7 +43,7 @@
|
|
43
43
|
<% end %>
|
44
44
|
<% if host.operatingsystem_name&.match(/Debian|Ubuntu/) %>
|
45
45
|
<% if Setting["host_details_ui"] %>
|
46
|
-
<a href="/new/hosts/<%= host.name %>#/Content/
|
46
|
+
<a href="/new/hosts/<%= host.name %>#/Content/debs?status=Upgradable">
|
47
47
|
<% else %>
|
48
48
|
<a href="/content_hosts/<%= host.id %>/debs/applicable">
|
49
49
|
<% 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"
|
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"
|
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"
|
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>
|
@@ -1,31 +1,3 @@
|
|
1
|
-
|
2
|
-
<%= javascript "katello/hosts/activation_key_edit" %>
|
3
|
-
|
4
|
-
|
5
1
|
<div class="tab-pane" id="activation_keys">
|
6
|
-
|
7
|
-
<%= _("There was a problem retrieving Activation Key data from the server.") %>
|
8
|
-
</div>
|
9
|
-
|
10
|
-
<%= field(f, _("Activation Keys"),
|
11
|
-
:help_inline => _("The value will be available in templates as @host.params['#{kt_ak_label}']")) do
|
12
|
-
react_component('TypeAheadSelect', { id: 'kt_activation_keys', multiple: true, allowNew: true })
|
13
|
-
end %>
|
14
|
-
|
15
|
-
<div class="alert alert-info">
|
16
|
-
<p><b><%= _('Subscriptions information based on selected activation keys:') %></b></p>
|
17
|
-
<ul id="ak-subscriptions-info"></ul>
|
18
|
-
|
19
|
-
<div id="ak-subscriptions-spinner" style="display: none">
|
20
|
-
<%= image_tag "spinner.gif" %>
|
21
|
-
</div>
|
22
|
-
|
23
|
-
<p><%= _('Activation keys and subscriptions can be managed') %>
|
24
|
-
<b><a href="/activation_keys" target="_blank"> <%= _('here.') %></a></b>
|
25
|
-
</p>
|
26
|
-
<p translate>
|
27
|
-
Activation keys may be used during <a href="/hosts/register">system registration.</a>
|
28
|
-
</p>
|
29
|
-
<p><a href="" id="ak_refresh_subscriptions"><%= _('Reload data') %></a></p>
|
30
|
-
</div>
|
2
|
+
<%= react_component('ActivationKeysSearch')%>
|
31
3
|
</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
|
-
|
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
|
-
|
18
|
-
|
19
|
-
|
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
|
data/config/routes/api/v2.rb
CHANGED
@@ -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
|
@@ -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':
|
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:
|
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'] =
|
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':
|
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:
|
36
|
+
contentAccessModeAll: true,
|
37
37
|
contentAccessModeEnv: false
|
38
38
|
};
|
39
39
|
$scope.toggleFilters = function () {
|
40
|
-
$scope.nutupane.table.params['content_access_mode_all'] =
|
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
|
};
|
data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot
CHANGED
@@ -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
|
-
<
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
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
|
-
<
|
254
|
-
<
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
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
|
-
|
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
|
-
|
15
|
-
|
16
|
-
|
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
|
]
|
data/lib/katello/plugin.rb
CHANGED
@@ -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
|
+
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'])
|
@@ -720,7 +721,7 @@ Foreman::Plugin.register :katello do
|
|
720
721
|
], 'Role granting permission to import content views in an organization'
|
721
722
|
|
722
723
|
role 'Content Exporter', [
|
723
|
-
:export_content, :view_products, :view_content_views, :view_organizations
|
724
|
+
:export_content, :view_products, :view_content_views, :create_content_views, :view_organizations
|
724
725
|
], 'Role granting permission to export content views in an organization'
|
725
726
|
|
726
727
|
def find_katello_assets(args = {})
|
@@ -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
|