katello 4.18.1 → 4.19.0.rc2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of katello might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/app/assets/javascripts/katello/locale/bn/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/bn_IN/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/ca/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/cs/katello.js +380 -110
- data/app/assets/javascripts/katello/locale/cs_CZ/katello.js +382 -112
- data/app/assets/javascripts/katello/locale/de/katello.js +385 -115
- data/app/assets/javascripts/katello/locale/de_AT/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/de_DE/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/el/katello.js +380 -110
- data/app/assets/javascripts/katello/locale/en/katello.js +380 -110
- data/app/assets/javascripts/katello/locale/en_GB/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/en_US/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/es/katello.js +383 -113
- data/app/assets/javascripts/katello/locale/et_EE/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/fr/katello.js +388 -118
- data/app/assets/javascripts/katello/locale/gl/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/gu/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/he_IL/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/hi/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/id/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/it/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/ja/katello.js +388 -118
- data/app/assets/javascripts/katello/locale/ka/katello.js +385 -115
- data/app/assets/javascripts/katello/locale/kn/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/ko/katello.js +388 -118
- data/app/assets/javascripts/katello/locale/ml_IN/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/mr/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/nl_NL/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/or/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/pa/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/pl/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/pl_PL/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/pt/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/pt_BR/katello.js +383 -113
- data/app/assets/javascripts/katello/locale/ro/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/ro_RO/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/ru/katello.js +381 -111
- data/app/assets/javascripts/katello/locale/sl/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/sv_SE/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/ta/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/ta_IN/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/te/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/tr/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/vi/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/vi_VN/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/zh/katello.js +379 -109
- data/app/assets/javascripts/katello/locale/zh_CN/katello.js +388 -118
- data/app/assets/javascripts/katello/locale/zh_TW/katello.js +381 -111
- data/app/controllers/katello/api/registry/registry_proxies_controller.rb +41 -12
- data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +1 -1
- data/app/controllers/katello/api/v2/activation_keys_controller.rb +3 -65
- data/app/controllers/katello/api/v2/content_view_filter_rules_controller.rb +1 -1
- data/app/controllers/katello/api/v2/content_views_controller.rb +18 -3
- data/app/controllers/katello/api/v2/debs_controller.rb +21 -11
- data/app/controllers/katello/api/v2/docker_tags_controller.rb +7 -0
- data/app/controllers/katello/api/v2/flatpak_remote_repositories_controller.rb +21 -19
- data/app/controllers/katello/api/v2/host_debs_controller.rb +16 -1
- data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +3 -60
- data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +10 -53
- data/app/controllers/katello/api/v2/repositories_controller.rb +0 -1
- data/app/controllers/katello/concerns/api/v2/hosts_controller_extensions.rb +10 -0
- data/app/controllers/katello/concerns/organizations_controller_extensions.rb +3 -0
- data/app/lib/actions/candlepin/activation_key/create.rb +0 -2
- data/app/lib/actions/candlepin/activation_key/update.rb +0 -2
- data/app/lib/actions/candlepin/product/content_create.rb +3 -5
- data/app/lib/actions/candlepin/product/content_update.rb +2 -3
- data/app/lib/actions/helpers/rolling_cv_repos.rb +1 -1
- data/app/lib/actions/katello/activation_key/create.rb +0 -1
- data/app/lib/actions/katello/activation_key/update.rb +0 -2
- data/app/lib/actions/katello/capsule_content/sync_capsule.rb +1 -6
- data/app/lib/actions/katello/content_credential/update.rb +1 -1
- data/app/lib/actions/katello/content_view/add_rolling_repo_clone.rb +18 -24
- data/app/lib/actions/katello/content_view/create.rb +9 -4
- data/app/lib/actions/katello/content_view/refresh_rolling_repo.rb +6 -1
- data/app/lib/actions/katello/content_view/remove_rolling_repo_clone.rb +16 -11
- data/app/lib/actions/katello/content_view/update.rb +34 -7
- data/app/lib/actions/katello/product/content_create.rb +2 -2
- data/app/lib/actions/katello/product/content_destroy.rb +1 -1
- data/app/lib/actions/katello/repository/check_matching_content.rb +1 -1
- data/app/lib/actions/katello/repository/clone_contents.rb +1 -1
- data/app/lib/actions/katello/repository/create.rb +1 -1
- data/app/lib/actions/katello/repository/destroy.rb +4 -4
- data/app/lib/actions/katello/repository/finish_upload.rb +1 -1
- data/app/lib/actions/katello/repository/sync.rb +1 -1
- data/app/lib/actions/pulp3/orchestration/repository/copy_all_units.rb +2 -2
- data/app/lib/actions/pulp3/orchestration/repository/generate_metadata.rb +1 -1
- data/app/lib/actions/pulp3/orchestration/repository/multi_copy_all_units.rb +1 -1
- data/app/lib/actions/pulp3/repository/save_publication.rb +3 -1
- data/app/lib/actions/pulp3/repository/save_version.rb +45 -24
- data/app/lib/actions/pulp3/repository/save_versions.rb +2 -1
- data/app/lib/katello/resources/candlepin/activation_key.rb +3 -4
- data/app/lib/katello/resources/candlepin/upstream_job.rb +9 -1
- data/app/lib/katello/resources/candlepin.rb +4 -0
- data/app/models/katello/authorization/repository.rb +17 -4
- data/app/models/katello/concerns/subscription_facet_host_extensions.rb +0 -7
- data/app/models/katello/content_view_deb_filter.rb +10 -0
- data/app/models/katello/content_view_deb_filter_rule.rb +7 -0
- data/app/models/katello/deb.rb +10 -10
- data/app/models/katello/erratum.rb +1 -1
- data/app/models/katello/glue/provider.rb +14 -3
- data/app/models/katello/host/content_facet.rb +1 -1
- data/app/models/katello/host/subscription_facet.rb +1 -7
- data/app/models/katello/product_content.rb +2 -2
- data/app/models/katello/repository.rb +4 -23
- data/app/models/katello/root_repository.rb +2 -5
- data/app/services/katello/candlepin/event_handler.rb +0 -33
- data/app/services/katello/candlepin/message_handler.rb +0 -41
- data/app/services/katello/content_unit_indexer.rb +59 -13
- data/app/services/katello/product_content_finder.rb +5 -4
- data/app/services/katello/pulp3/alternate_content_source.rb +2 -2
- data/app/services/katello/pulp3/ansible_collection.rb +1 -0
- data/app/services/katello/pulp3/api/content_guard.rb +5 -5
- data/app/services/katello/pulp3/api/core.rb +10 -0
- data/app/services/katello/pulp3/deb.rb +1 -0
- data/app/services/katello/pulp3/docker_manifest.rb +1 -0
- data/app/services/katello/pulp3/docker_manifest_list.rb +1 -0
- data/app/services/katello/pulp3/docker_tag.rb +1 -0
- data/app/services/katello/pulp3/file_unit.rb +1 -0
- data/app/services/katello/pulp3/generic_content_unit.rb +1 -0
- data/app/services/katello/pulp3/module_stream.rb +1 -0
- data/app/services/katello/pulp3/package_group.rb +1 -0
- data/app/services/katello/pulp3/repository/apt.rb +41 -16
- data/app/services/katello/pulp3/repository.rb +59 -10
- data/app/services/katello/pulp3/rpm.rb +3 -2
- data/app/services/katello/pulp3/srpm.rb +3 -2
- data/app/services/katello/pulp3/task_group.rb +1 -1
- data/app/services/katello/registration_manager.rb +19 -17
- data/app/services/katello/repository_type_manager.rb +7 -5
- data/app/services/katello/smart_proxy_helper.rb +1 -6
- data/app/views/foreman/job_templates/upload_profile.erb +5 -0
- data/app/views/katello/api/v2/activation_keys/base.json.rabl +1 -1
- data/app/views/katello/api/v2/content_views/base.json.rabl +1 -0
- data/app/views/katello/api/v2/debs/thindex.json.rabl +6 -0
- data/app/views/katello/api/v2/docker_tags/_base.json.rabl +32 -0
- data/app/views/katello/api/v2/docker_tags/show.json.rabl +0 -5
- data/app/views/katello/api/v2/flatpak_remotes/index.json.rabl +6 -0
- data/app/views/katello/api/v2/host_debs/installed_debs.json.rabl +6 -0
- data/app/views/katello/api/v2/hosts_bulk_actions/applicable_errata.json.rabl +1 -1
- data/app/views/katello/api/v2/hosts_bulk_actions/applicable_erratum.json.rabl +9 -0
- data/app/views/katello/api/v2/hosts_bulk_actions/installable_errata.json.rabl +1 -1
- data/app/views/katello/api/v2/hosts_bulk_actions/{erratum.json.rabl → installable_erratum.json.rabl} +3 -3
- data/app/views/katello/api/v2/subscription_facet/base.json.rabl +1 -1
- data/config/initializers/monkeys.rb +1 -0
- data/config/routes/api/v2.rb +2 -2
- data/config/routes/overrides.rb +2 -7
- data/config/routes.rb +2 -0
- data/db/migrate/20211019192121_create_cdn_configuration.katello.rb +1 -1
- data/db/migrate/20250912000000_add_pulp_prn_fields.rb +73 -0
- data/db/migrate/20250912000001_populate_pulp_prn_fields.rb +403 -0
- data/db/migrate/20251009142516_remove_auto_attach_from_activation_keys.rb +5 -0
- data/db/migrate/20251009142517_remove_autoheal_from_subscription_facets.rb +5 -0
- data/db/seeds.d/111-upgrade_tasks.rb +2 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/bn.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/bn_IN.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ca.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/cs_CZ.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de_AT.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de_DE.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/el.po +12 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/en_GB.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/en_US.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/es.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/et_EE.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/fr.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/gl.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/gu.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/he_IL.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/hi.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/id.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/it.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ja.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ka.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/kn.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ko.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ml_IN.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/mr.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/nl_NL.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/or.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pa.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pl.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pl_PL.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt_BR.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ro.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ro_RO.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ru.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/sl.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/sv_SE.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ta.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ta_IN.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/te.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/tr.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/vi.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/vi_VN.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_CN.po +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_TW.po +10 -0
- data/lib/katello/permission_creator.rb +2 -2
- data/lib/katello/permissions/host_permissions.rb +0 -6
- data/lib/katello/plugin.rb +17 -8
- data/lib/katello/tasks/jenkins.rake +1 -1
- data/lib/katello/tasks/upgrades/4.19/enable_structured_apt_for_deb.rake +87 -0
- data/lib/katello/tasks/upgrades/4.19/populate_repository_version_prns.rake +32 -0
- data/lib/katello/version.rb +1 -1
- data/lib/monkeys/fix_rpm_repository_gpgcheck.rb +38 -0
- data/locale/action_names.rb +0 -6
- data/locale/bn/LC_MESSAGES/katello.mo +0 -0
- data/locale/bn/katello.po +379 -109
- data/locale/bn_IN/LC_MESSAGES/katello.mo +0 -0
- data/locale/bn_IN/katello.po +379 -109
- data/locale/ca/LC_MESSAGES/katello.mo +0 -0
- data/locale/ca/katello.po +379 -109
- data/locale/cs/LC_MESSAGES/katello.mo +0 -0
- data/locale/cs/katello.po +380 -111
- data/locale/cs_CZ/LC_MESSAGES/katello.mo +0 -0
- data/locale/cs_CZ/katello.po +382 -112
- data/locale/de/LC_MESSAGES/katello.mo +0 -0
- data/locale/de/katello.po +386 -116
- data/locale/de_AT/LC_MESSAGES/katello.mo +0 -0
- data/locale/de_AT/katello.po +379 -109
- data/locale/de_DE/LC_MESSAGES/katello.mo +0 -0
- data/locale/de_DE/katello.po +379 -109
- data/locale/el/LC_MESSAGES/katello.mo +0 -0
- data/locale/el/katello.po +381 -111
- data/locale/en/LC_MESSAGES/katello.mo +0 -0
- data/locale/en/katello.po +380 -111
- data/locale/en_GB/LC_MESSAGES/katello.mo +0 -0
- data/locale/en_GB/katello.po +379 -109
- data/locale/en_US/LC_MESSAGES/katello.mo +0 -0
- data/locale/en_US/katello.po +379 -109
- data/locale/es/LC_MESSAGES/katello.mo +0 -0
- data/locale/es/katello.po +383 -113
- data/locale/et_EE/LC_MESSAGES/katello.mo +0 -0
- data/locale/et_EE/katello.po +379 -109
- data/locale/fr/LC_MESSAGES/katello.mo +0 -0
- data/locale/fr/katello.po +389 -119
- data/locale/gl/LC_MESSAGES/katello.mo +0 -0
- data/locale/gl/katello.po +379 -109
- data/locale/gu/LC_MESSAGES/katello.mo +0 -0
- data/locale/gu/katello.po +379 -109
- data/locale/he_IL/LC_MESSAGES/katello.mo +0 -0
- data/locale/he_IL/katello.po +379 -109
- data/locale/hi/LC_MESSAGES/katello.mo +0 -0
- data/locale/hi/katello.po +379 -109
- data/locale/id/LC_MESSAGES/katello.mo +0 -0
- data/locale/id/katello.po +379 -109
- data/locale/it/LC_MESSAGES/katello.mo +0 -0
- data/locale/it/katello.po +379 -109
- data/locale/ja/LC_MESSAGES/katello.mo +0 -0
- data/locale/ja/katello.po +390 -119
- data/locale/ka/LC_MESSAGES/katello.mo +0 -0
- data/locale/ka/katello.po +385 -115
- data/locale/katello.pot +1273 -831
- data/locale/kn/LC_MESSAGES/katello.mo +0 -0
- data/locale/kn/katello.po +379 -109
- data/locale/ko/LC_MESSAGES/katello.mo +0 -0
- data/locale/ko/katello.po +389 -119
- data/locale/ml_IN/LC_MESSAGES/katello.mo +0 -0
- data/locale/ml_IN/katello.po +379 -109
- data/locale/mr/LC_MESSAGES/katello.mo +0 -0
- data/locale/mr/katello.po +379 -109
- data/locale/nl_NL/LC_MESSAGES/katello.mo +0 -0
- data/locale/nl_NL/katello.po +379 -109
- data/locale/or/LC_MESSAGES/katello.mo +0 -0
- data/locale/or/katello.po +379 -109
- data/locale/pa/LC_MESSAGES/katello.mo +0 -0
- data/locale/pa/katello.po +379 -109
- data/locale/pl/LC_MESSAGES/katello.mo +0 -0
- data/locale/pl/katello.po +379 -109
- data/locale/pl_PL/LC_MESSAGES/katello.mo +0 -0
- data/locale/pl_PL/katello.po +379 -109
- data/locale/pt/LC_MESSAGES/katello.mo +0 -0
- data/locale/pt/katello.po +379 -109
- data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
- data/locale/pt_BR/katello.po +383 -113
- data/locale/ro/LC_MESSAGES/katello.mo +0 -0
- data/locale/ro/katello.po +379 -109
- data/locale/ro_RO/LC_MESSAGES/katello.mo +0 -0
- data/locale/ro_RO/katello.po +379 -109
- data/locale/ru/LC_MESSAGES/katello.mo +0 -0
- data/locale/ru/katello.po +381 -111
- data/locale/sl/LC_MESSAGES/katello.mo +0 -0
- data/locale/sl/katello.po +379 -109
- data/locale/sv_SE/LC_MESSAGES/katello.mo +0 -0
- data/locale/sv_SE/katello.po +379 -109
- data/locale/ta/LC_MESSAGES/katello.mo +0 -0
- data/locale/ta/katello.po +379 -109
- data/locale/ta_IN/LC_MESSAGES/katello.mo +0 -0
- data/locale/ta_IN/katello.po +379 -109
- data/locale/te/LC_MESSAGES/katello.mo +0 -0
- data/locale/te/katello.po +379 -109
- data/locale/tr/LC_MESSAGES/katello.mo +0 -0
- data/locale/tr/katello.po +379 -109
- data/locale/vi/LC_MESSAGES/katello.mo +0 -0
- data/locale/vi/katello.po +379 -109
- data/locale/vi_VN/LC_MESSAGES/katello.mo +0 -0
- data/locale/vi_VN/katello.po +379 -109
- data/locale/zh/LC_MESSAGES/katello.mo +0 -0
- data/locale/zh/katello.po +379 -109
- data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
- data/locale/zh_CN/katello.po +389 -119
- data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
- data/locale/zh_TW/katello.po +381 -111
- data/webpack/ForemanColumnExtensions/index.js +46 -2
- data/webpack/components/Content/Details/__tests__/__snapshots__/ContentDetails.test.js.snap +2 -2
- data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeEditModal.js +0 -2
- data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeEditModal.test.js +0 -2
- data/webpack/components/extensions/Hosts/ActionsBar/index.js +1 -0
- data/webpack/components/extensions/Hosts/BulkActions/BulkActionsConstants.js +7 -0
- data/webpack/components/extensions/Hosts/BulkActions/BulkChangeHostCollectionsModal/BulkChangeHostCollectionsModal.js +388 -0
- data/webpack/components/extensions/Hosts/BulkActions/BulkChangeHostCollectionsModal/__tests__/BulkChangeHostCollectionsModal.test.js +640 -0
- data/webpack/components/extensions/Hosts/BulkActions/BulkChangeHostCollectionsModal/actions.js +28 -0
- data/webpack/components/extensions/Hosts/BulkActions/BulkChangeHostCollectionsModal/index.js +71 -0
- data/webpack/components/extensions/Hosts/BulkActions/BulkErrataWizard/02_BulkErrataTable.js +1 -1
- data/webpack/components/extensions/Hosts/BulkActions/BulkErrataWizard/BulkErrataWizard.js +1 -1
- data/webpack/components/extensions/Hosts/BulkActions/BulkPackagesWizard/02_BulkPackagesTable.js +11 -4
- data/webpack/components/extensions/Hosts/BulkActions/BulkPackagesWizard/BulkPackagesWizard.js +51 -24
- data/webpack/components/extensions/Hosts/BulkActions/BulkRepositorySetsWizard/01_BulkRepositorySetsTable.js +1 -1
- data/webpack/components/extensions/Hosts/BulkActions/HostReview.js +8 -1
- data/webpack/containers/Application/config.js +11 -1
- data/webpack/global_index.js +3 -0
- data/webpack/scenes/{BootedContainerImages → ContainerImages/Booted}/BootedContainerImagesConstants.js +1 -1
- data/webpack/scenes/{BootedContainerImages → ContainerImages/Booted}/BootedContainerImagesPage.js +7 -43
- data/webpack/scenes/{BootedContainerImages → ContainerImages/Booted}/__tests__/bootedContainerImagesPage.test.js +1 -1
- data/webpack/scenes/ContainerImages/ContainerImagesPage.js +86 -0
- data/webpack/scenes/ContainerImages/LabelsAnnotationsModal.js +105 -0
- data/webpack/scenes/ContainerImages/Synced/Details/ManifestDetails.js +218 -0
- data/webpack/scenes/ContainerImages/Synced/Details/ManifestDetailsActions.js +15 -0
- data/webpack/scenes/ContainerImages/Synced/Details/ManifestDetailsSelectors.js +16 -0
- data/webpack/scenes/ContainerImages/Synced/Details/__tests__/ManifestDetails.test.js +395 -0
- data/webpack/scenes/ContainerImages/Synced/Details/__tests__/manifestDetails.fixtures.json +43 -0
- data/webpack/scenes/ContainerImages/Synced/Details/__tests__/manifestList.fixtures.json +58 -0
- data/webpack/scenes/ContainerImages/Synced/Details/index.js +4 -0
- data/webpack/scenes/ContainerImages/Synced/SyncedContainerImagesPage.js +359 -0
- data/webpack/scenes/ContainerImages/Synced/SyncedContainerImagesPage.scss +21 -0
- data/webpack/scenes/ContainerImages/Synced/__tests__/LabelsAnnotationsModal.test.js +69 -0
- data/webpack/scenes/ContainerImages/Synced/__tests__/SyncedContainerImagesPage.test.js +335 -0
- data/webpack/scenes/ContainerImages/Synced/__tests__/syncedContainerImages.fixtures.json +105 -0
- data/webpack/scenes/ContainerImages/TableEmptyState.js +67 -0
- data/webpack/scenes/ContainerImages/containerImagesHelpers.js +48 -0
- data/webpack/scenes/ContainerImages/index.js +4 -0
- data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +29 -3
- data/webpack/scenes/ContentViews/Create/__tests__/contentViewCreateResult.fixtures.json +1 -0
- data/webpack/scenes/ContentViews/Create/__tests__/createContentView.test.js +45 -1
- data/webpack/scenes/ContentViews/Delete/__tests__/affectedHosts.fixtures.json +0 -1
- data/webpack/scenes/ContentViews/Details/ContentViewInfo.js +59 -1
- data/webpack/scenes/ContentViews/Details/Filters/CVDebFilterContent.js +1 -0
- data/webpack/scenes/ContentViews/Details/Filters/Rules/DebPackage/AddEditDebPackageRuleModal.js +164 -24
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVDebFilterContent.test.js +268 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvDebFilterDetail.fixtures.json +95 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvDebFilterRules.fixtures.json +31 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/emptyCVDebFilterRules.fixtures.json +10 -0
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/hosts.fixtures.json +0 -1
- data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvAffectedHosts.fixture.json +0 -1
- data/webpack/scenes/ContentViews/Details/__tests__/contentViewRollingDetail.test.js +15 -0
- data/webpack/scenes/ContentViews/Details/__tests__/contentViewRollingDetails.fixtures.json +1 -0
- data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +9 -0
- data/webpack/scenes/FlatpakRemotes/CreateEdit/CreateFlatpakRemoteModal.js +5 -3
- data/webpack/scenes/FlatpakRemotes/CreateEdit/EditFlatpakRemotesModal.js +1 -1
- data/webpack/scenes/FlatpakRemotes/CreateEdit/FlatpakRemoteform.js +35 -3
- data/webpack/scenes/FlatpakRemotes/Details/FlatpakRemoteDetails.js +1 -1
- data/webpack/scenes/FlatpakRemotes/Details/RemoteRepositories/RemoteRepositoriesTable.css +3 -0
- data/webpack/scenes/FlatpakRemotes/Details/RemoteRepositories/RemoteRepositoriesTable.js +63 -132
- data/webpack/scenes/FlatpakRemotes/FlatpakRemotesPage.js +67 -143
- data/webpack/scenes/SmartProxy/ExpandableCvDetails.js +10 -2
- data/webpack/scenes/SmartProxy/SmartProxyContentActions.js +13 -2
- data/webpack/scenes/SmartProxy/SmartProxyContentConstants.js +1 -0
- data/webpack/scenes/SmartProxy/SmartProxyExpandableTable.js +8 -2
- data/webpack/scenes/SmartProxy/__tests__/SmartProxyContentTest.js +67 -1
- data/webpack/scenes/Subscriptions/Details/__tests__/__snapshots__/SubscriptionDetails.test.js.snap +2 -2
- data/webpack/scenes/Subscriptions/SubscriptionConstants.js +0 -2
- data/webpack/scenes/Subscriptions/SubscriptionReducer.js +15 -5
- data/webpack/scenes/Subscriptions/SubscriptionsPage.js +22 -5
- data/webpack/scenes/Subscriptions/__tests__/SubscriptionsPage.test.js +141 -0
- data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsActions.test.js.snap +2 -2
- metadata +82 -56
- data/app/lib/actions/katello/host/attach_subscriptions.rb +0 -59
- data/app/lib/actions/katello/host/auto_attach_subscriptions.rb +0 -22
- data/app/lib/actions/katello/host/remove_subscriptions.rb +0 -50
- data/app/lib/actions/katello/organization/simple_content_access/disable.rb +0 -25
- data/app/lib/actions/katello/organization/simple_content_access/enable.rb +0 -25
- data/app/lib/actions/katello/organization/simple_content_access/toggle.rb +0 -42
- data/lib/katello/tasks/migrate_structure_content_for_deb.rake +0 -105
- data/lib/katello/tasks/upgrades/4.2/remove_checksum_values.rake +0 -17
- /data/webpack/scenes/{BootedContainerImages → ContainerImages/Booted}/__tests__/bootedContainerImages.fixtures.js +0 -0
- /data/webpack/scenes/{BootedContainerImages → ContainerImages/Booted}/index.js +0 -0
|
@@ -9,35 +9,56 @@ module Actions
|
|
|
9
9
|
|
|
10
10
|
def run
|
|
11
11
|
repo = ::Katello::Repository.find(input[:repository_id])
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
12
|
+
version_href = determine_version_href(repo)
|
|
13
|
+
|
|
14
|
+
save_publication_if_present(repo)
|
|
15
|
+
save_version_if_changed(repo, version_href)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def determine_version_href(repo)
|
|
19
|
+
return fetch_version_href(repo) if input[:force_fetch_version]
|
|
20
|
+
return input[:repository_details][:latest_version_href] if input[:repository_details].present?
|
|
21
|
+
return ::Katello::Pulp3::Task.version_href(input[:tasks]) if input[:tasks].present?
|
|
22
|
+
fetch_version_href(repo)
|
|
23
|
+
end
|
|
21
24
|
|
|
25
|
+
def save_publication_if_present(repo)
|
|
22
26
|
output[:publication_provided] = false
|
|
23
|
-
if input[:tasks].
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
+
return if input[:tasks].blank?
|
|
28
|
+
|
|
29
|
+
publication_href = ::Katello::Pulp3::Task.publication_href(input[:tasks])
|
|
30
|
+
return unless publication_href
|
|
27
31
|
|
|
32
|
+
repo_backend_service = repo.backend_service(SmartProxy.pulp_primary)
|
|
33
|
+
publication = repo_backend_service.api.publications_api.read(publication_href, {fields: 'prn'})
|
|
34
|
+
repo.update(:publication_href => publication_href, :publication_prn => publication.prn)
|
|
35
|
+
output[:publication_provided] = true
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def save_version_if_changed(repo, version_href)
|
|
28
39
|
if version_href
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
40
|
+
update_version_if_changed(repo, version_href)
|
|
41
|
+
else
|
|
42
|
+
check_publication_version_match(repo)
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def update_version_if_changed(repo, version_href)
|
|
47
|
+
return unless repo.version_href != version_href || input[:force_fetch_version]
|
|
48
|
+
|
|
49
|
+
output[:contents_changed] = true
|
|
50
|
+
repo.update(:last_contents_changed => DateTime.now)
|
|
51
|
+
repo_backend_service = repo.backend_service(SmartProxy.pulp_primary)
|
|
52
|
+
version = repo_backend_service.api.repository_versions_api.read(version_href, {fields: 'prn'})
|
|
53
|
+
repo.update(:version_href => version_href, :version_prn => version.prn)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def check_publication_version_match(repo)
|
|
57
|
+
# get publication and check if repo-version and publication match. Otherwise, contents_changed: false
|
|
58
|
+
if !repo.repository_type.pulp3_skip_publication && fetch_current_published_version_href(repo) != repo.version_href
|
|
59
|
+
output[:contents_changed] = true
|
|
34
60
|
else
|
|
35
|
-
|
|
36
|
-
if !repo.repository_type.pulp3_skip_publication && fetch_current_published_version_href(repo) != repo.version_href
|
|
37
|
-
output[:contents_changed] = true
|
|
38
|
-
else
|
|
39
|
-
output[:contents_changed] = false
|
|
40
|
-
end
|
|
61
|
+
output[:contents_changed] = false
|
|
41
62
|
end
|
|
42
63
|
end
|
|
43
64
|
|
|
@@ -37,7 +37,8 @@ module Actions
|
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
unless new_version_href == repo.version_href
|
|
40
|
-
|
|
40
|
+
version = repo_backend_service.api.repository_versions_api.read(new_version_href, {fields: 'prn'})
|
|
41
|
+
repo.update(version_href: new_version_href, version_prn: version.prn)
|
|
41
42
|
repo.index_content
|
|
42
43
|
output[:contents_changed] = true
|
|
43
44
|
output[:updated_repositories] << repo.id
|
|
@@ -10,11 +10,10 @@ module Katello
|
|
|
10
10
|
::Katello::Util::Data.array_with_indifferent_access akeys
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
-
def create(name, owner_key,
|
|
13
|
+
def create(name, owner_key, service_level, release_version, purpose_role, purpose_usage)
|
|
14
14
|
url = "/candlepin/owners/#{owner_key}/activation_keys"
|
|
15
15
|
params = {
|
|
16
16
|
name: name,
|
|
17
|
-
autoAttach: auto_attach,
|
|
18
17
|
serviceLevel: service_level,
|
|
19
18
|
releaseVer: release_version,
|
|
20
19
|
role: purpose_role,
|
|
@@ -24,8 +23,8 @@ module Katello
|
|
|
24
23
|
JSON.parse(response.body).with_indifferent_access
|
|
25
24
|
end
|
|
26
25
|
|
|
27
|
-
def update(id, release_version, service_level,
|
|
28
|
-
attrs = { :releaseVer => release_version, :serviceLevel => service_level, :
|
|
26
|
+
def update(id, release_version, service_level, purpose_role, purpose_usage)
|
|
27
|
+
attrs = { :releaseVer => release_version, :serviceLevel => service_level, :role => purpose_role, :usage => purpose_usage }.delete_if { |_k, v| v.nil? }
|
|
29
28
|
JSON.parse(self.put(path(id), attrs.to_json, self.default_headers).body).with_indifferent_access
|
|
30
29
|
end
|
|
31
30
|
|
|
@@ -5,13 +5,14 @@ module Katello
|
|
|
5
5
|
class << self
|
|
6
6
|
NOT_FINISHED_STATES = %w(CREATED WAITING PENDING RUNNING).freeze unless defined? NOT_FINISHED_STATES
|
|
7
7
|
API_URL = 'https://subscription.rhsm.redhat.com/subscription'.freeze
|
|
8
|
+
SUBSCRIPTION_PATH = '/subscription'.freeze
|
|
8
9
|
|
|
9
10
|
def not_finished?(job)
|
|
10
11
|
NOT_FINISHED_STATES.include?(job[:state])
|
|
11
12
|
end
|
|
12
13
|
|
|
13
14
|
def get(id, upstream)
|
|
14
|
-
url = ENV['REDHAT_RHSM_API_URL'] || API_URL
|
|
15
|
+
url = subscription_path(ENV['REDHAT_RHSM_API_URL']) || subscription_path(upstream['apiUrl']) || API_URL
|
|
15
16
|
response = Resources::Candlepin::UpstreamConsumer.start_upstream_export("#{url}#{path(id)}", upstream['idCert']['cert'],
|
|
16
17
|
upstream['idCert']['key'], nil)
|
|
17
18
|
job = JSON.parse(response)
|
|
@@ -21,6 +22,13 @@ module Katello
|
|
|
21
22
|
def path(id = nil)
|
|
22
23
|
"/jobs/#{id}"
|
|
23
24
|
end
|
|
25
|
+
|
|
26
|
+
def subscription_path(upstream_api_url)
|
|
27
|
+
return if upstream_api_url.blank?
|
|
28
|
+
uri = URI.parse(upstream_api_url) # https://subscription.rhsm.redhat.com/subscription/consumers/
|
|
29
|
+
uri.path = SUBSCRIPTION_PATH # https://subscription.rhsm.redhat.com/subscription
|
|
30
|
+
uri.to_s
|
|
31
|
+
end
|
|
24
32
|
end
|
|
25
33
|
end
|
|
26
34
|
end
|
|
@@ -88,6 +88,10 @@ module Katello
|
|
|
88
88
|
class << self
|
|
89
89
|
delegate :[], to: :json_resource
|
|
90
90
|
|
|
91
|
+
def default_headers(uuid = nil)
|
|
92
|
+
super(uuid).except('cp-user', 'cp-consumer')
|
|
93
|
+
end
|
|
94
|
+
|
|
91
95
|
def resource(options = {}, url: self.site + self.path, client_cert: self.client_cert, client_key: self.client_key, ca_file: nil)
|
|
92
96
|
cert_store = OpenSSL::X509::Store.new
|
|
93
97
|
cert_store.add_file(ca_file) if ca_file
|
|
@@ -39,14 +39,27 @@ module Katello
|
|
|
39
39
|
|
|
40
40
|
def readable_docker_catalog(host = nil)
|
|
41
41
|
if host
|
|
42
|
-
repo_ids =
|
|
42
|
+
repo_ids = []
|
|
43
43
|
if host&.content_view_environments&.any?
|
|
44
44
|
repo_ids = host.content_view_environments.flat_map do |cve|
|
|
45
|
-
cve&.content_view_version&.repositories&.where(environment_id: cve.environment)&.
|
|
45
|
+
cve&.content_view_version&.repositories&.where(environment_id: cve.environment)&.pluck(:id)
|
|
46
46
|
end
|
|
47
|
+
repo_ids = repo_ids.compact.uniq
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
base_scope = Katello::Repository.non_archived.docker_type
|
|
51
|
+
host_repos = base_scope.where(id: repo_ids)
|
|
52
|
+
|
|
53
|
+
table_name = Repository.table_name
|
|
54
|
+
in_unauth_environments = Repository.joins(:environment)
|
|
55
|
+
.where("#{Katello::KTEnvironment.table_name}.registry_unauthenticated_pull" => true)
|
|
56
|
+
.select(:id)
|
|
57
|
+
|
|
58
|
+
if in_unauth_environments.exists?
|
|
59
|
+
return host_repos.or(base_scope.joins(:root).where("#{table_name}.id in (?)", in_unauth_environments))
|
|
60
|
+
else
|
|
61
|
+
return host_repos
|
|
47
62
|
end
|
|
48
|
-
repos = Katello::Repository.where(id: repo_ids)
|
|
49
|
-
return repos
|
|
50
63
|
end
|
|
51
64
|
readable_docker_catalog_as(User.current)
|
|
52
65
|
end
|
|
@@ -21,7 +21,6 @@ module Katello
|
|
|
21
21
|
scoped_search on: :status, relation: :rhel_lifecycle_status_object, rename: :rhel_lifecycle_status, complete_value: rhel_lifecycle_status_map
|
|
22
22
|
|
|
23
23
|
scoped_search :on => :release_version, :relation => :subscription_facet, :complete_value => true, :only_explicit => true
|
|
24
|
-
scoped_search :on => :autoheal, :relation => :subscription_facet, :complete_value => true, :only_explicit => true
|
|
25
24
|
scoped_search :on => :service_level, :relation => :subscription_facet, :complete_value => true, :only_explicit => true
|
|
26
25
|
scoped_search :on => :last_checkin, :relation => :subscription_facet, :complete_value => true, :only_explicit => true
|
|
27
26
|
scoped_search :on => :registered_through, :relation => :subscription_facet, :complete_value => true, :only_explicit => true
|
|
@@ -45,8 +44,6 @@ module Katello
|
|
|
45
44
|
content_facet.cves_changed = false if content_facet
|
|
46
45
|
content_facet&.save!
|
|
47
46
|
|
|
48
|
-
auto_attach_enabled_via_checkin = consumer_params.try(:[], 'autoheal')
|
|
49
|
-
|
|
50
47
|
if subscription_facet
|
|
51
48
|
consumer_params ||= subscription_facet.consumer_attributes
|
|
52
49
|
|
|
@@ -59,10 +56,6 @@ module Katello
|
|
|
59
56
|
end
|
|
60
57
|
::Katello::Resources::Candlepin::Consumer.update(subscription_facet.uuid, consumer_params)
|
|
61
58
|
|
|
62
|
-
if auto_attach_enabled_via_checkin
|
|
63
|
-
::Katello::Resources::Candlepin::Consumer.refresh_entitlements(subscription_facet.uuid)
|
|
64
|
-
end
|
|
65
|
-
|
|
66
59
|
if consumer_params.try(:[], :facts)
|
|
67
60
|
::Katello::Host::SubscriptionFacet.update_facts(self, consumer_params[:facts])
|
|
68
61
|
end
|
|
@@ -13,6 +13,8 @@ module Katello
|
|
|
13
13
|
package_filenames.concat(query_debs(repo, rule))
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
+
package_filenames = package_filenames.uniq.sort
|
|
17
|
+
|
|
16
18
|
ContentViewDebFilter.generate_deb_clauses(package_filenames)
|
|
17
19
|
end
|
|
18
20
|
|
|
@@ -21,6 +23,9 @@ module Katello
|
|
|
21
23
|
self.deb_rules.each do |rule|
|
|
22
24
|
deb_filenames.concat(query_debs(repo, rule))
|
|
23
25
|
end
|
|
26
|
+
|
|
27
|
+
deb_filenames = deb_filenames.uniq
|
|
28
|
+
|
|
24
29
|
debs = Deb.in_repositories(repo)
|
|
25
30
|
debs.where(filename: deb_filenames).pluck(:pulp_id).flatten.uniq
|
|
26
31
|
end
|
|
@@ -45,6 +50,11 @@ module Katello
|
|
|
45
50
|
query_arch = rule.architecture.tr("*", "%")
|
|
46
51
|
query = query.where("#{Deb.table_name}.architecture ilike ?", query_arch)
|
|
47
52
|
end
|
|
53
|
+
if rule.version.present?
|
|
54
|
+
query = query.search_version_equal(rule.version)
|
|
55
|
+
elsif rule.min_version.present? || rule.max_version.present?
|
|
56
|
+
query = query.search_version_range(rule.min_version, rule.max_version)
|
|
57
|
+
end
|
|
48
58
|
query.default_sort
|
|
49
59
|
end
|
|
50
60
|
end
|
|
@@ -10,10 +10,17 @@ module Katello
|
|
|
10
10
|
validates :name, :presence => true
|
|
11
11
|
validate :ensure_unique_attributes
|
|
12
12
|
validates_with Validators::ContentViewFilterVersionValidator
|
|
13
|
+
scoped_search :on => :version, :complete_value => true
|
|
14
|
+
scoped_search :on => :min_version, :complete_value => true
|
|
15
|
+
scoped_search :on => :max_version, :complete_value => true
|
|
16
|
+
scoped_search :on => :architecture, :complete_value => true
|
|
13
17
|
|
|
14
18
|
def ensure_unique_attributes
|
|
15
19
|
other = self.class.where(:name => self.name,
|
|
20
|
+
:version => self.version,
|
|
16
21
|
:content_view_filter_id => self.content_view_filter_id,
|
|
22
|
+
:min_version => self.min_version,
|
|
23
|
+
:max_version => self.max_version,
|
|
17
24
|
:architecture => self.architecture)
|
|
18
25
|
other = other.where.not(:id => self.id) if self.id
|
|
19
26
|
if other.exists?
|
data/app/models/katello/deb.rb
CHANGED
|
@@ -27,16 +27,16 @@ module Katello
|
|
|
27
27
|
ContentFacetApplicableDeb
|
|
28
28
|
end
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
scope :search_version_equal, ->(ver) {
|
|
31
|
+
where("deb_version_cmp(#{::Katello::Deb.table_name}.version, ?) = 0", ver)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
scope :search_version_range, ->(min_ver, max_ver) {
|
|
35
|
+
query = all
|
|
36
|
+
query = query.where("deb_version_cmp(#{::Katello::Deb.table_name}.version, ?) >= 0", min_ver) if min_ver.present?
|
|
37
|
+
query = query.where("deb_version_cmp(#{::Katello::Deb.table_name}.version, ?) <= 0", max_ver) if max_ver.present?
|
|
34
38
|
query
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
def self.search_version_equal(version)
|
|
38
|
-
Katello::Util::PackageFilter.new(self, version, Katello::Util::PackageFilter::EQUAL).results
|
|
39
|
-
end
|
|
39
|
+
}
|
|
40
40
|
|
|
41
41
|
def self.total_for_repositories(repos)
|
|
42
42
|
self.in_repositories(repos).count
|
|
@@ -96,7 +96,7 @@ module Katello
|
|
|
96
96
|
|
|
97
97
|
# Return deb packages that are not installed on a host, but could be installed
|
|
98
98
|
# the word 'installable' has a different meaning here than elsewhere
|
|
99
|
-
def self.
|
|
99
|
+
def self.deb_installable_for_host(host)
|
|
100
100
|
repos = host.content_facet.bound_repositories.pluck(:id)
|
|
101
101
|
Katello::Deb.in_repositories(repos).where.not(name: host.installed_debs.pluck(:name)).order(:name)
|
|
102
102
|
end
|
|
@@ -227,7 +227,7 @@ module Katello
|
|
|
227
227
|
property :summary, String, desc: 'Returns the errata summary, the length can very, it is usually in range of 60 to 1000 characters. It can include empty line characters.'
|
|
228
228
|
end
|
|
229
229
|
class Jail < ::Safemode::Jail
|
|
230
|
-
allow :errata_id, :errata_type, :issued, :created_at, :severity, :package_names, :cves, :reboot_suggested, :title, :summary
|
|
230
|
+
allow :errata_id, :errata_type, :issued, :updated, :created_at, :severity, :package_names, :cves, :reboot_suggested, :title, :summary
|
|
231
231
|
end
|
|
232
232
|
end
|
|
233
233
|
end
|
|
@@ -31,10 +31,21 @@ module Katello
|
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
module InstanceMethods
|
|
34
|
-
|
|
34
|
+
API_BASE_URL = 'https://subscription.rhsm.redhat.com'.freeze
|
|
35
|
+
SUBSCRIPTION_PATH = '/subscription'.freeze
|
|
36
|
+
CONSUMERS_PATH = '/consumers/'.freeze
|
|
37
|
+
API_URL = API_BASE_URL + SUBSCRIPTION_PATH + CONSUMERS_PATH # https://subscription.rhsm.redhat.com/subscription/consumers/
|
|
38
|
+
|
|
39
|
+
def normalize_api_url(api_url)
|
|
40
|
+
return nil if api_url.blank?
|
|
41
|
+
uri = URI.parse(api_url)
|
|
42
|
+
# only take base url; we will overwrite the path to ensure it's correct
|
|
43
|
+
uri.path = SUBSCRIPTION_PATH + CONSUMERS_PATH # https://subscription.rhsm.redhat.com/subscription/consumers/
|
|
44
|
+
uri.to_s
|
|
45
|
+
end
|
|
46
|
+
|
|
35
47
|
def api_url(upstream = {})
|
|
36
|
-
|
|
37
|
-
ENV['REDHAT_RHSM_API_URL'] || upstream['apiUrl'] || API_URL
|
|
48
|
+
ENV['REDHAT_RHSM_API_URL'] || normalize_api_url(upstream['apiUrl']) || API_URL
|
|
38
49
|
end
|
|
39
50
|
|
|
40
51
|
def sync
|
|
@@ -202,7 +202,7 @@ module Katello
|
|
|
202
202
|
# "/pulp/content/Org/Library/custom/Test_product/test2/%3Fcomp%3Dmain%26rel%3Dstable"]
|
|
203
203
|
paths.each do |path|
|
|
204
204
|
if (prefix = prefixes.find { |pre| path.start_with?(pre) })
|
|
205
|
-
# strip prefix and
|
|
205
|
+
# strip prefix and deb? content postfix before adding to relative_paths
|
|
206
206
|
relative_paths << path.sub(prefix, '').sub(%r{/?(%3F|\?).*}, '')
|
|
207
207
|
else
|
|
208
208
|
Rails.logger.warn("System #{self.host.name} (#{self.host.id}) requested binding to repo with unknown prefix. #{path}")
|
|
@@ -51,7 +51,6 @@ module Katello
|
|
|
51
51
|
self.dmi_uuid = consumer_params['facts']['dmi.system.uuid']
|
|
52
52
|
end
|
|
53
53
|
|
|
54
|
-
self.autoheal = consumer_params['autoheal'] unless consumer_params['autoheal'].nil?
|
|
55
54
|
self.service_level = consumer_params['serviceLevel'] unless consumer_params['serviceLevel'].nil?
|
|
56
55
|
self.registered_at = consumer_params['created'] unless consumer_params['created'].blank?
|
|
57
56
|
self.last_checkin = consumer_params['lastCheckin'] unless consumer_params['lastCheckin'].blank?
|
|
@@ -130,7 +129,6 @@ module Katello
|
|
|
130
129
|
|
|
131
130
|
def consumer_attributes
|
|
132
131
|
attrs = {
|
|
133
|
-
:autoheal => autoheal,
|
|
134
132
|
:usage => purpose_usage,
|
|
135
133
|
:role => purpose_role,
|
|
136
134
|
:serviceLevel => service_level,
|
|
@@ -257,10 +255,6 @@ module Katello
|
|
|
257
255
|
Katello::Product.joins(:subscriptions => {:pools => :subscription_facets}).where("#{Katello::Host::SubscriptionFacet.table_name}.id" => self.id).enabled.uniq
|
|
258
256
|
end
|
|
259
257
|
|
|
260
|
-
def remove_subscriptions(pools_with_quantities)
|
|
261
|
-
ForemanTasks.sync_task(Actions::Katello::Host::RemoveSubscriptions, self.host, pools_with_quantities)
|
|
262
|
-
end
|
|
263
|
-
|
|
264
258
|
def self.sanitize_name(name)
|
|
265
259
|
name.gsub('_', '-').chomp('.').downcase
|
|
266
260
|
end
|
|
@@ -274,7 +268,7 @@ module Katello
|
|
|
274
268
|
end
|
|
275
269
|
|
|
276
270
|
def backend_update_needed?
|
|
277
|
-
%w(release_version service_level
|
|
271
|
+
%w(release_version service_level purpose_role purpose_usage).each do |method|
|
|
278
272
|
if self.send("#{method}_changed?")
|
|
279
273
|
Rails.logger.debug("backend_update_needed: subscription facet #{method} changed")
|
|
280
274
|
return true
|
|
@@ -46,8 +46,8 @@ module Katello
|
|
|
46
46
|
|
|
47
47
|
def self.enabled(organization)
|
|
48
48
|
content_ids = Katello::RootRepository.in_organization(organization).where.not(content_id: nil).pluck(:content_id)
|
|
49
|
-
|
|
50
|
-
joins(:content).where("#{self.content_table_name}.cp_content_id" => content_ids +
|
|
49
|
+
deb_content_ids = Katello::Repository.in_organization(organization).library.deb_type.pluck(:content_id)
|
|
50
|
+
joins(:content).where("#{self.content_table_name}.cp_content_id" => content_ids + deb_content_ids)
|
|
51
51
|
end
|
|
52
52
|
|
|
53
53
|
def self.with_valid_subscription(organization)
|
|
@@ -170,7 +170,7 @@ module Katello
|
|
|
170
170
|
scoped_search :on => :label, :relation => :root, :complete_value => true, :only_explicit => true
|
|
171
171
|
scoped_search :on => :content_label, :ext_method => :search_by_content_label, :default_operator => :like
|
|
172
172
|
|
|
173
|
-
delegate :product, :redhat?, :custom?, :
|
|
173
|
+
delegate :product, :redhat?, :custom?, :to => :root
|
|
174
174
|
delegate :yum?, :docker?, :deb?, :file?, :ostree?, :ansible_collection?, :generic?, :to => :root
|
|
175
175
|
delegate :name, :label, :docker_upstream_name, :url, :download_concurrency, :to => :root
|
|
176
176
|
|
|
@@ -1046,32 +1046,13 @@ module Katello
|
|
|
1046
1046
|
|
|
1047
1047
|
def deb_content_url_options
|
|
1048
1048
|
return '' unless version_href
|
|
1049
|
-
return '' if backend_service(SmartProxy.pulp_primary).version_missing_structure_content?
|
|
1050
1049
|
|
|
1051
|
-
|
|
1052
|
-
|
|
1050
|
+
backend_service = self.backend_service(SmartProxy.pulp_primary)
|
|
1051
|
+
components = backend_service.pulp_components.join(',')
|
|
1052
|
+
distributions = backend_service.pulp_distributions.join(',')
|
|
1053
1053
|
"/?comp=#{components}&rel=#{distributions}"
|
|
1054
1054
|
end
|
|
1055
1055
|
|
|
1056
|
-
def deb_pulp_components(version_href = self.version_href)
|
|
1057
|
-
return [] if version_href.blank?
|
|
1058
|
-
|
|
1059
|
-
pulp_api = Katello::Pulp3::Repository.instance_for_type(self, SmartProxy.pulp_primary).api.content_release_components_api
|
|
1060
|
-
pulp_api.list({:repository_version => version_href}).results.map { |x| x.plain_component }.uniq
|
|
1061
|
-
end
|
|
1062
|
-
|
|
1063
|
-
def deb_sanitize_pulp_distribution(distribution)
|
|
1064
|
-
return "flat-repo" if distribution == "/"
|
|
1065
|
-
return distribution.chomp("/") if distribution&.end_with?("/")
|
|
1066
|
-
distribution
|
|
1067
|
-
end
|
|
1068
|
-
|
|
1069
|
-
def deb_pulp_distributions(version_href = self.version_href)
|
|
1070
|
-
return [] if version_href.blank?
|
|
1071
|
-
pulp_api = Katello::Pulp3::Repository.instance_for_type(self, SmartProxy.pulp_primary).api.content_release_components_api
|
|
1072
|
-
pulp_api.list({:repository_version => version_href}).results.map { |x| deb_sanitize_pulp_distribution(x.distribution) }.uniq
|
|
1073
|
-
end
|
|
1074
|
-
|
|
1075
1056
|
def sync_status
|
|
1076
1057
|
return latest_dynflow_sync
|
|
1077
1058
|
end
|
|
@@ -389,10 +389,6 @@ module Katello
|
|
|
389
389
|
self.content_type == Repository::DEB_TYPE
|
|
390
390
|
end
|
|
391
391
|
|
|
392
|
-
def deb_using_structured_apt?
|
|
393
|
-
self.deb? && !self.content_id
|
|
394
|
-
end
|
|
395
|
-
|
|
396
392
|
def ansible_collection?
|
|
397
393
|
self.content_type == Repository::ANSIBLE_COLLECTION_TYPE
|
|
398
394
|
end
|
|
@@ -446,7 +442,8 @@ module Katello
|
|
|
446
442
|
end
|
|
447
443
|
|
|
448
444
|
def format_arches
|
|
449
|
-
if
|
|
445
|
+
if self.deb?
|
|
446
|
+
# Pulp 2 needed a "," separated string-list, but Pulp 3 needs " " separated!
|
|
450
447
|
self.deb_architectures&.gsub(" ", ",")
|
|
451
448
|
else
|
|
452
449
|
self.arch == "noarch" ? nil : self.arch
|
|
@@ -15,46 +15,13 @@ module Katello
|
|
|
15
15
|
@message_handler = ::Katello::Candlepin::MessageHandler.new(message)
|
|
16
16
|
data[:entity_id] = @message_handler.entity_id
|
|
17
17
|
case message_handler.subject
|
|
18
|
-
when /entitlement\.created/
|
|
19
|
-
message_handler.import_pool
|
|
20
|
-
message_handler.create_pool_on_host
|
|
21
|
-
when /entitlement\.deleted/
|
|
22
|
-
message_handler.import_pool
|
|
23
|
-
message_handler.remove_pool_from_host
|
|
24
18
|
when /pool\.created/
|
|
25
19
|
message_handler.import_pool
|
|
26
20
|
when /pool\.deleted/
|
|
27
21
|
message_handler.delete_pool
|
|
28
|
-
when /^compliance\.created/
|
|
29
|
-
event_no_longer_handled
|
|
30
|
-
when /system_purpose_compliance\.created/
|
|
31
|
-
event_no_longer_handled
|
|
32
|
-
when /owner_content_access_mode\.modified/
|
|
33
|
-
message_handler.handle_content_access_mode_modified
|
|
34
22
|
end
|
|
35
23
|
end
|
|
36
24
|
end
|
|
37
|
-
|
|
38
|
-
private
|
|
39
|
-
|
|
40
|
-
def event_no_longer_handled
|
|
41
|
-
@logger.error "Received #{message_handler.subject} event from Candlepin. Handling of this event is no longer supported."
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def subscription_facet
|
|
45
|
-
message_handler.subscription_facet
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def reindex_consumer
|
|
49
|
-
if subscription_facet.nil?
|
|
50
|
-
@logger.debug "skip re-indexing of non-existent content host #{message_handler.consumer_uuid}"
|
|
51
|
-
return
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
@logger.debug "re-indexing content host #{subscription_facet.host.name}"
|
|
55
|
-
|
|
56
|
-
yield
|
|
57
|
-
end
|
|
58
25
|
end
|
|
59
26
|
end
|
|
60
27
|
end
|
|
@@ -46,27 +46,9 @@ module Katello
|
|
|
46
46
|
case subject
|
|
47
47
|
when 'pool.created', 'pool.deleted'
|
|
48
48
|
content['entityId']
|
|
49
|
-
when 'entitlement.created', 'entitlement.deleted'
|
|
50
|
-
content['referenceId']
|
|
51
49
|
end
|
|
52
50
|
end
|
|
53
51
|
|
|
54
|
-
def create_pool_on_host
|
|
55
|
-
return if self.subscription_facet.nil? || pool.nil?
|
|
56
|
-
old_host_ids = subscription_facet_host_ids
|
|
57
|
-
::Katello::SubscriptionFacetPool.where(subscription_facet_id: self.subscription_facet.id,
|
|
58
|
-
pool_id: pool.id).first_or_create
|
|
59
|
-
pool.import_audit_record(old_host_ids)
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def remove_pool_from_host
|
|
63
|
-
return if self.subscription_facet.nil? || pool.nil?
|
|
64
|
-
old_host_ids = subscription_facet_host_ids
|
|
65
|
-
::Katello::SubscriptionFacetPool.where(subscription_facet_id: self.subscription_facet.id,
|
|
66
|
-
pool_id: pool.id).destroy_all
|
|
67
|
-
pool.import_audit_record(old_host_ids)
|
|
68
|
-
end
|
|
69
|
-
|
|
70
52
|
def import_pool(index_hosts = true)
|
|
71
53
|
if pool
|
|
72
54
|
::Katello::EventQueue.push_event(::Katello::Events::ImportPool::EVENT_TYPE, pool.id)
|
|
@@ -86,29 +68,6 @@ module Katello
|
|
|
86
68
|
Rails.logger.info "Deleted Katello::Pool with cp_id=#{pool_id}"
|
|
87
69
|
end
|
|
88
70
|
end
|
|
89
|
-
|
|
90
|
-
def handle_content_access_mode_modified
|
|
91
|
-
# Ideally the target_name would be the Candlepin Owner key
|
|
92
|
-
# Since it's the displayName, and we don't update that after org creation, there could be a mismatch
|
|
93
|
-
# For now, find the Candlepin Owner displayName from this event, and tie it back to a Katello org based on owner key
|
|
94
|
-
owners = Katello::Resources::Candlepin::Owner.all
|
|
95
|
-
owner = owners.find { |o| o['displayName'] == target_name }
|
|
96
|
-
|
|
97
|
-
unless owner
|
|
98
|
-
fail("Candlepin Owner %s could not be found" % target_name)
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
org = ::Organization.find_by!(label: owner['key'])
|
|
102
|
-
|
|
103
|
-
Rails.logger.error "Received content_access_mode_modified event for org #{org.label}. This event is no longer supported."
|
|
104
|
-
org.simple_content_access?(cached: false)
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
private
|
|
108
|
-
|
|
109
|
-
def subscription_facet_host_ids
|
|
110
|
-
::Katello::SubscriptionFacetPool.where(pool_id: pool_id).joins(:subscription_facet).pluck(:host_id)
|
|
111
|
-
end
|
|
112
71
|
end
|
|
113
72
|
end
|
|
114
73
|
end
|