katello 4.16.1 → 4.17.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/hosts/host_and_hostgroup_edit.js +5 -3
- data/app/assets/javascripts/katello/locale/bn/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/bn_IN/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/ca/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/cs/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/cs_CZ/katello.js +83 -32
- data/app/assets/javascripts/katello/locale/de/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/de_AT/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/de_DE/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/el/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/en/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/en_GB/katello.js +84 -33
- data/app/assets/javascripts/katello/locale/en_US/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/es/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/et_EE/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/fr/katello.js +83 -32
- data/app/assets/javascripts/katello/locale/gl/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/gu/katello.js +83 -32
- data/app/assets/javascripts/katello/locale/he_IL/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/hi/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/id/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/it/katello.js +84 -33
- data/app/assets/javascripts/katello/locale/ja/katello.js +83 -32
- data/app/assets/javascripts/katello/locale/ka/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/kn/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/ko/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/ml_IN/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/mr/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/nl_NL/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/or/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/pa/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/pl/katello.js +83 -32
- data/app/assets/javascripts/katello/locale/pl_PL/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/pt/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/pt_BR/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/ro/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/ro_RO/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/ru/katello.js +84 -33
- data/app/assets/javascripts/katello/locale/sl/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/sv_SE/katello.js +83 -32
- data/app/assets/javascripts/katello/locale/ta/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/ta_IN/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/te/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/tr/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/vi/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/vi_VN/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/zh/katello.js +82 -31
- data/app/assets/javascripts/katello/locale/zh_CN/katello.js +83 -32
- data/app/assets/javascripts/katello/locale/zh_TW/katello.js +84 -33
- data/app/controllers/katello/api/registry/registry_proxies_controller.rb +19 -3
- data/app/controllers/katello/api/v2/content_view_components_controller.rb +6 -6
- data/app/controllers/katello/api/v2/content_view_filters_controller.rb +3 -0
- data/app/controllers/katello/api/v2/content_view_versions_controller.rb +6 -0
- data/app/controllers/katello/api/v2/content_views_controller.rb +12 -1
- data/app/controllers/katello/api/v2/exports_controller.rb +3 -0
- data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +12 -14
- data/app/controllers/katello/api/v2/organizations_controller.rb +10 -10
- data/app/controllers/katello/concerns/authorization/api/v2/content_views_controller.rb +8 -2
- data/app/lib/actions/helpers/rolling_cv_repos.rb +25 -0
- data/app/lib/actions/katello/capsule_content/sync_capsule.rb +6 -1
- data/app/lib/actions/katello/content_view/add_rolling_repo_clone.rb +39 -0
- data/app/lib/actions/katello/content_view/create.rb +3 -0
- data/app/lib/actions/katello/content_view/refresh_rolling_repo.rb +40 -0
- data/app/lib/actions/katello/content_view/remove.rb +8 -4
- data/app/lib/actions/katello/content_view/remove_rolling_repo_clone.rb +28 -0
- data/app/lib/actions/katello/content_view/update.rb +8 -0
- data/app/lib/actions/katello/repository/check_matching_content.rb +1 -8
- data/app/lib/actions/katello/repository/import_upload.rb +5 -0
- data/app/lib/actions/katello/repository/sync.rb +8 -4
- data/app/lib/actions/katello/repository/upload_files.rb +7 -1
- data/app/lib/actions/pulp3/orchestration/orphan_cleanup/remove_orphans.rb +3 -2
- data/app/lib/actions/pulp3/orphan_cleanup/delete_orphan_repository_versions.rb +8 -1
- data/app/lib/katello/errors.rb +8 -0
- data/app/lib/katello/validators/container_image_name_validator.rb +3 -2
- data/app/models/katello/authorization/repository.rb +11 -1
- data/app/models/katello/concerns/host_managed_extensions.rb +2 -2
- data/app/models/katello/concerns/pulp_database_unit.rb +12 -42
- data/app/models/katello/concerns/smart_proxy_extensions.rb +8 -0
- data/app/models/katello/content_view.rb +14 -1
- data/app/models/katello/content_view_component.rb +4 -0
- data/app/models/katello/content_view_environment.rb +1 -0
- data/app/models/katello/content_view_version.rb +3 -2
- data/app/models/katello/host/content_facet.rb +18 -5
- data/app/models/katello/product_content.rb +3 -1
- data/app/models/katello/repository.rb +3 -3
- data/app/services/katello/content_unit_indexer.rb +1 -1
- data/app/services/katello/pulp3/api/content_guard.rb +1 -1
- data/app/services/katello/pulp3/api/core.rb +6 -0
- data/app/services/katello/pulp3/smart_proxy_mirror_repository.rb +58 -1
- data/app/services/katello/pulp3/smart_proxy_repository.rb +67 -3
- data/app/services/katello/smart_proxy_helper.rb +6 -1
- data/app/views/foreman/job_templates/install_errata_-_katello_ansible_default.erb +15 -1
- data/app/views/foreman/job_templates/install_errata_by_search_query_-_katello_ansible_default.erb +15 -1
- data/app/views/foreman/job_templates/install_group_-_katello_ansible_default.erb +15 -2
- data/app/views/foreman/job_templates/install_packages_by_search_query_-_katello_ansible_default.erb +21 -2
- data/app/views/foreman/job_templates/remove_group_-_katello_ansible_default.erb +15 -1
- data/app/views/foreman/job_templates/remove_packages_by_search_query_-_katello_ansible_default.erb +20 -1
- data/app/views/foreman/job_templates/update_group_-_katello_ansible_default.erb +15 -2
- data/app/views/foreman/job_templates/update_packages_by_search_query_-_katello_ansible_default.erb +17 -1
- data/app/views/katello/api/v2/activation_keys/base.json.rabl +1 -0
- data/app/views/katello/api/v2/capsule_content/sync_status.json.rabl +2 -1
- data/app/views/katello/api/v2/content_facet/base.json.rabl +2 -0
- data/app/views/katello/api/v2/content_view_versions/base.json.rabl +12 -0
- data/app/views/katello/api/v2/content_views/base.json.rabl +1 -0
- data/app/views/katello/api/v2/environments/show.json.rabl +14 -0
- data/app/views/katello/api/v2/hosts/base.json.rabl +1 -0
- data/app/views/katello/api/v2/organizations/show.json.rabl +2 -0
- data/app/views/katello/api/v2/repositories/base.json.rabl +2 -1
- data/db/migrate/20190930192813_add_pulp3_hrefs_to_content_types.rb +1 -1
- data/db/migrate/20241022122325_add_rolling_to_katello_content_views.rb +5 -0
- data/db/migrate/20241025151105_remove_pulp3_migrated_hrefs_from_content_tables.rb +1 -1
- data/db/migrate/20250215143303_drop_katello_yum_metadata_file.rb +5 -0
- data/db/migrate/20250409120843_fix_file_download_policy.rb +11 -0
- data/db/migrate/20250410155300_change_ansible_templates_category.rb +22 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +4 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/bn.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/bn_IN.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ca.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/cs_CZ.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de.po +93 -60
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de_AT.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de_DE.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/el.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/en_GB.po +94 -35
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/en_US.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/es.po +93 -40
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/et_EE.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/fr.po +254 -192
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/gl.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/gu.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/he_IL.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/hi.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/id.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/it.po +90 -35
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ja.po +113 -52
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ka.po +93 -34
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/kn.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ko.po +101 -40
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ml_IN.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/mr.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/nl_NL.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/or.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pa.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pl.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pl_PL.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt_BR.po +93 -40
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ro.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ro_RO.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ru.po +91 -34
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/sl.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/sv_SE.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ta.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ta_IN.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/te.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/tr.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/vi.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/vi_VN.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh.po +90 -31
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_CN.po +99 -40
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_TW.po +92 -33
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/translations.js +14 -14
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repository-types.service.js +3 -0
- data/lib/katello/engine.rb +9 -1
- data/lib/katello/permissions/host_permissions.rb +1 -0
- data/lib/katello/repository_types/python.rb +1 -1
- data/lib/katello/tasks/repository.rake +1 -1
- data/lib/katello/version.rb +1 -1
- data/locale/bn/LC_MESSAGES/katello.mo +0 -0
- data/locale/bn/katello.po +82 -31
- data/locale/bn_IN/LC_MESSAGES/katello.mo +0 -0
- data/locale/bn_IN/katello.po +82 -31
- data/locale/ca/LC_MESSAGES/katello.mo +0 -0
- data/locale/ca/katello.po +82 -31
- data/locale/cs/LC_MESSAGES/katello.mo +0 -0
- data/locale/cs/katello.po +82 -31
- data/locale/cs_CZ/LC_MESSAGES/katello.mo +0 -0
- data/locale/cs_CZ/katello.po +83 -32
- data/locale/de/LC_MESSAGES/katello.mo +0 -0
- data/locale/de/katello.po +82 -31
- data/locale/de_AT/LC_MESSAGES/katello.mo +0 -0
- data/locale/de_AT/katello.po +82 -31
- data/locale/de_DE/LC_MESSAGES/katello.mo +0 -0
- data/locale/de_DE/katello.po +82 -31
- data/locale/el/LC_MESSAGES/katello.mo +0 -0
- data/locale/el/katello.po +82 -31
- data/locale/en/LC_MESSAGES/katello.mo +0 -0
- data/locale/en/katello.po +82 -31
- data/locale/en_GB/LC_MESSAGES/katello.mo +0 -0
- data/locale/en_GB/katello.po +84 -33
- data/locale/en_US/LC_MESSAGES/katello.mo +0 -0
- data/locale/en_US/katello.po +82 -31
- data/locale/es/LC_MESSAGES/katello.mo +0 -0
- data/locale/es/katello.po +82 -31
- data/locale/et_EE/LC_MESSAGES/katello.mo +0 -0
- data/locale/et_EE/katello.po +82 -31
- data/locale/fr/LC_MESSAGES/katello.mo +0 -0
- data/locale/fr/katello.po +83 -32
- data/locale/gl/LC_MESSAGES/katello.mo +0 -0
- data/locale/gl/katello.po +82 -31
- data/locale/gu/LC_MESSAGES/katello.mo +0 -0
- data/locale/gu/katello.po +84 -33
- data/locale/he_IL/LC_MESSAGES/katello.mo +0 -0
- data/locale/he_IL/katello.po +82 -31
- data/locale/hi/LC_MESSAGES/katello.mo +0 -0
- data/locale/hi/katello.po +82 -31
- data/locale/id/LC_MESSAGES/katello.mo +0 -0
- data/locale/id/katello.po +82 -31
- data/locale/it/LC_MESSAGES/katello.mo +0 -0
- data/locale/it/katello.po +85 -34
- data/locale/ja/LC_MESSAGES/katello.mo +0 -0
- data/locale/ja/katello.po +83 -32
- data/locale/ka/LC_MESSAGES/katello.mo +0 -0
- data/locale/ka/katello.po +82 -31
- data/locale/katello.pot +1232 -1140
- data/locale/kn/LC_MESSAGES/katello.mo +0 -0
- data/locale/kn/katello.po +82 -31
- data/locale/ko/LC_MESSAGES/katello.mo +0 -0
- data/locale/ko/katello.po +82 -31
- data/locale/ml_IN/LC_MESSAGES/katello.mo +0 -0
- data/locale/ml_IN/katello.po +82 -31
- data/locale/mr/LC_MESSAGES/katello.mo +0 -0
- data/locale/mr/katello.po +82 -31
- data/locale/nl_NL/LC_MESSAGES/katello.mo +0 -0
- data/locale/nl_NL/katello.po +82 -31
- data/locale/or/LC_MESSAGES/katello.mo +0 -0
- data/locale/or/katello.po +82 -31
- data/locale/pa/LC_MESSAGES/katello.mo +0 -0
- data/locale/pa/katello.po +82 -31
- data/locale/pl/LC_MESSAGES/katello.mo +0 -0
- data/locale/pl/katello.po +84 -33
- data/locale/pl_PL/LC_MESSAGES/katello.mo +0 -0
- data/locale/pl_PL/katello.po +82 -31
- data/locale/pt/LC_MESSAGES/katello.mo +0 -0
- data/locale/pt/katello.po +82 -31
- data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
- data/locale/pt_BR/katello.po +82 -31
- data/locale/ro/LC_MESSAGES/katello.mo +0 -0
- data/locale/ro/katello.po +82 -31
- data/locale/ro_RO/LC_MESSAGES/katello.mo +0 -0
- data/locale/ro_RO/katello.po +82 -31
- data/locale/ru/LC_MESSAGES/katello.mo +0 -0
- data/locale/ru/katello.po +85 -34
- data/locale/sl/LC_MESSAGES/katello.mo +0 -0
- data/locale/sl/katello.po +82 -31
- data/locale/sv_SE/LC_MESSAGES/katello.mo +0 -0
- data/locale/sv_SE/katello.po +84 -33
- data/locale/ta/LC_MESSAGES/katello.mo +0 -0
- data/locale/ta/katello.po +82 -31
- data/locale/ta_IN/LC_MESSAGES/katello.mo +0 -0
- data/locale/ta_IN/katello.po +82 -31
- data/locale/te/LC_MESSAGES/katello.mo +0 -0
- data/locale/te/katello.po +82 -31
- data/locale/tr/LC_MESSAGES/katello.mo +0 -0
- data/locale/tr/katello.po +82 -31
- data/locale/vi/LC_MESSAGES/katello.mo +0 -0
- data/locale/vi/katello.po +82 -31
- data/locale/vi_VN/LC_MESSAGES/katello.mo +0 -0
- data/locale/vi_VN/katello.po +82 -31
- data/locale/zh/LC_MESSAGES/katello.mo +0 -0
- data/locale/zh/katello.po +82 -31
- data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
- data/locale/zh_CN/katello.po +83 -32
- data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
- data/locale/zh_TW/katello.po +85 -34
- data/webpack/ForemanColumnExtensions/index.js +12 -4
- data/webpack/components/ActivationKeysSearch/index.js +6 -7
- data/webpack/components/Bookmark/AddBookmarkModal.js +3 -3
- data/webpack/components/Bookmark/Bookmark.scss +3 -3
- data/webpack/components/Bookmark/index.js +7 -2
- data/webpack/components/EditableSwitch.js +1 -1
- data/webpack/components/EditableTextInput/EditableTextInput.js +1 -1
- data/webpack/components/EditableTextInput/editableTextInput.scss +1 -1
- data/webpack/components/Errata/index.js +1 -24
- data/webpack/components/Loading.js +10 -6
- data/webpack/components/Packages/index.js +2 -1
- data/webpack/components/SelectAllCheckbox/index.js +7 -3
- data/webpack/components/SelectableDropdown/SelectableDropdown.js +21 -3
- data/webpack/components/Table/EmptyStateMessage.js +12 -14
- data/webpack/components/Table/MainTable.js +8 -7
- data/webpack/components/Table/MainTable.scss +4 -4
- data/webpack/components/extensions/HostDetails/ActionsBar/index.js +4 -1
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ChangeHostCVModal.js +1 -1
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ContentViewDetailsCard.js +9 -6
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/__tests__/changeHostCVModal.test.js +2 -1
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/__tests__/contentViews.fixtures.json +4 -1
- data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.js +23 -6
- data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.scss +1 -1
- data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsCard.js +5 -3
- data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsCard.scss +3 -3
- data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsModal.js +1 -1
- data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/__tests__/hostCollectionsModal.test.js +25 -10
- data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.js +5 -2
- data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.scss +2 -2
- data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeEditModal.js +5 -4
- data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeCard.test.js +6 -3
- data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeEditModal.test.js +19 -12
- data/webpack/components/extensions/HostDetails/Cards/__tests__/errataOverviewCard.test.js +1 -1
- data/webpack/components/extensions/HostDetails/DetailsTabCards/HwPropertiesCard.js +1 -4
- data/webpack/components/extensions/HostDetails/DetailsTabCards/ImageModeCard.js +1 -4
- data/webpack/components/extensions/HostDetails/DetailsTabCards/InstalledProductsCard.js +1 -4
- data/webpack/components/extensions/HostDetails/DetailsTabCards/__test__/HwPropertiesCard.test.js +63 -0
- data/webpack/components/extensions/HostDetails/DetailsTabCards/__test__/ImageModeCard.test.js +73 -0
- data/webpack/components/extensions/HostDetails/DetailsTabCards/__test__/InstalledProductsCard.test.js +45 -0
- data/webpack/components/extensions/HostDetails/Tabs/DebsTab/DebInstallModal.js +12 -2
- data/webpack/components/extensions/HostDetails/Tabs/DebsTab/DebInstallModal.scss +1 -1
- data/webpack/components/extensions/HostDetails/Tabs/DebsTab/DebsTab.js +10 -13
- data/webpack/components/extensions/HostDetails/Tabs/DebsTab/DebsTab.scss +1 -1
- data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.js +46 -21
- data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.scss +1 -1
- data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsTab.js +15 -7
- data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackageInstallModal.js +13 -3
- data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackageInstallModal.scss +1 -1
- data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.js +34 -20
- data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.scss +1 -1
- data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +8 -6
- data/webpack/components/extensions/HostDetails/Tabs/TracesTab/EnableTracerModal.js +5 -3
- data/webpack/components/extensions/HostDetails/Tabs/TracesTab/EnableTracerModal.scss +1 -1
- data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesEnabler.js +12 -13
- data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesTab.js +16 -6
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/debsInstallModal.test.js +10 -5
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/debsTab.test.js +48 -22
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/errataTab.test.js +123 -47
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/moduleStreamsTab.test.js +14 -7
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/packageInstallModal.test.js +10 -5
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/packagesTab.test.js +41 -24
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/repositorySetsTab.test.js +50 -25
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracesTab.test.js +50 -25
- data/webpack/components/extensions/HostDetails/hostDetailsHelpers.js +3 -0
- data/webpack/components/extensions/Hosts/BulkActions/BulkErrataWizard/04_Review.js +16 -2
- data/webpack/components/extensions/Hosts/BulkActions/BulkErrataWizard/04_ReviewFooter.js +6 -2
- data/webpack/components/extensions/Hosts/BulkActions/BulkErrataWizard/BulkErrataWizard.js +5 -1
- data/webpack/components/extensions/Hosts/BulkActions/BulkPackagesWizard/04_Review.js +16 -2
- data/webpack/components/extensions/Hosts/BulkActions/BulkPackagesWizard/04_ReviewFooter.js +6 -2
- data/webpack/components/extensions/Hosts/BulkActions/BulkPackagesWizard/BulkPackagesWizard.js +15 -2
- data/webpack/components/extensions/Hosts/BulkActions/HostReview.js +1 -1
- data/webpack/components/extensions/Hosts/BulkActions/__tests__/bulkChangeHostCVModal.test.js +2 -1
- data/webpack/components/extensions/Hosts/FontAwesomeImageModeIcon.js +1 -1
- data/webpack/components/extensions/Hosts/ImageModeHostAlert.js +14 -0
- data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/ActivationKeys.test.js.snap +14 -17
- data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/Force.test.js.snap +1 -1
- data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/IgnoreSubmanErrors.test.js.snap +1 -1
- data/webpack/components/extensions/RegistrationCommands/fields/ActivationKeys.js +38 -49
- data/webpack/containers/Application/overrides.scss +7 -7
- data/webpack/ouia_id_check.js +15 -11
- data/webpack/redux/actions/RedHatRepositories/helpers.js +0 -2
- data/webpack/scenes/ActivationKeys/Details/__tests__/activationKeyDetails.test.js +12 -6
- data/webpack/scenes/ActivationKeys/Details/components/DeleteMenu.js +12 -2
- data/webpack/scenes/ActivationKeys/Details/components/EditModal.js +3 -3
- data/webpack/scenes/AlternateContentSources/Create/ACSCreateWizard.js +3 -1
- data/webpack/scenes/AlternateContentSources/Create/Steps/ACSCreateFinish.js +3 -1
- data/webpack/scenes/AlternateContentSources/Create/Steps/ACSCredentials.js +12 -6
- data/webpack/scenes/AlternateContentSources/Create/Steps/ACSSmartProxies.js +1 -1
- data/webpack/scenes/AlternateContentSources/Create/Steps/AcsUrlPaths.js +22 -7
- data/webpack/scenes/AlternateContentSources/Create/Steps/NameACS.js +2 -2
- data/webpack/scenes/AlternateContentSources/Create/Steps/SelectSource.js +1 -1
- data/webpack/scenes/AlternateContentSources/Create/__tests__/acsCreate.test.js +6 -3
- data/webpack/scenes/AlternateContentSources/Details/ACSExpandableDetails.js +25 -15
- data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditCredentials.js +9 -6
- data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditDetails.js +2 -2
- data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditSmartProxies.js +1 -1
- data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditURLPaths.js +33 -7
- data/webpack/scenes/AlternateContentSources/Details/__tests__/ACSEdits.test.js +10 -5
- data/webpack/scenes/AlternateContentSources/Details/__tests__/ACSExpandableDetails.test.js +4 -2
- data/webpack/scenes/AlternateContentSources/MainTable/ACSTable.js +10 -8
- data/webpack/scenes/AlternateContentSources/MainTable/__tests__/acsTable.test.js +4 -2
- data/webpack/scenes/BootedContainerImages/BootedContainerImagesPage.js +5 -5
- data/webpack/scenes/Content/Details/__tests__/contentDetail.test.js +8 -4
- data/webpack/scenes/Content/__tests__/contentTable.test.js +4 -2
- data/webpack/scenes/ContentViews/Copy/CopyContentViewForm.js +1 -1
- data/webpack/scenes/ContentViews/Copy/__tests__/contentViewCopyResult.fixtures.json +1 -0
- data/webpack/scenes/ContentViews/Copy/__tests__/copyContentView.test.js +2 -1
- data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +86 -31
- data/webpack/scenes/ContentViews/Create/CreateContentViewForm.scss +10 -2
- data/webpack/scenes/ContentViews/Create/__tests__/contentViewCreateResult.fixtures.json +1 -0
- data/webpack/scenes/ContentViews/Create/__tests__/createContentView.test.js +10 -4
- data/webpack/scenes/ContentViews/Delete/ContentViewDeleteWizard.js +3 -1
- data/webpack/scenes/ContentViews/Delete/Steps/CVDeleteEnvironmentsSelection.js +6 -6
- data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignActivationKeysForm.js +7 -2
- data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignHostsForm.js +7 -2
- data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReview.js +3 -3
- data/webpack/scenes/ContentViews/Delete/Steps/CVEnvironmentSelectionForm.scss +1 -1
- data/webpack/scenes/ContentViews/Delete/__tests__/CvData.fixtures.json +2 -1
- data/webpack/scenes/ContentViews/Delete/__tests__/affectedHosts.fixtures.json +3 -2
- data/webpack/scenes/ContentViews/Delete/__tests__/contentViewDelete.test.js +10 -8
- data/webpack/scenes/ContentViews/Delete/__tests__/cvDetails.fixtures.json +2 -1
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewAddModal.js +16 -5
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewBulkAddModal.js +19 -5
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentEnvironments.js +1 -1
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +11 -2
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/compositeCVDetails.fixtures.json +2 -1
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +69 -27
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/publishedContentViewDetails.fixtures.json +2 -1
- data/webpack/scenes/ContentViews/Details/ContentViewDetails.js +22 -29
- data/webpack/scenes/ContentViews/Details/ContentViewInfo.js +6 -2
- data/webpack/scenes/ContentViews/Details/Filters/Add/CVFilterAddModal.js +20 -7
- data/webpack/scenes/ContentViews/Details/Filters/Add/__tests__/cvFilterAdd.test.js +4 -2
- data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositorySelection.js +5 -2
- data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositoryTable.js +3 -1
- data/webpack/scenes/ContentViews/Details/Filters/ArtifactsWithNoErrata.js +1 -1
- data/webpack/scenes/ContentViews/Details/Filters/CVContainerImageFilterContent.js +4 -2
- data/webpack/scenes/ContentViews/Details/Filters/CVDebFilterContent.js +13 -1
- data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +23 -7
- data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +23 -5
- data/webpack/scenes/ContentViews/Details/Filters/CVModuleStreamFilterContent.js +15 -3
- data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +15 -3
- data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +13 -1
- data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetailsHeader.js +6 -4
- data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +11 -1
- data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContentModal.test.js +4 -2
- data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/matchContentModal.scss +1 -1
- data/webpack/scenes/ContentViews/Details/Filters/Rules/DebPackage/AddEditDebPackageRuleModal.js +2 -2
- data/webpack/scenes/ContentViews/Details/Filters/Rules/Package/AddEditPackageRuleModal.js +4 -4
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVContainerImageFilterContent.test.js +18 -12
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVRpmFilterContent.test.js +7 -11
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/ContentViewPackageGroupFilter.test.js +81 -70
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewErrataByDateDetails.fixtures.json +1 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilterDetails.test.js +4 -2
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.test.js +52 -38
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataDateFilterContent.test.js +9 -4
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataIDFilter.test.js +18 -12
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErratumFilterDetails.fixtures.json +1 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvFilterDetailModuleAffectedRepos.fixtures.json +1 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvFilterDetailWithAffectedRepos.fixtures.json +1 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvFilterFixutre.fixture.json +2 -1
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvModuleStreamFilter.test.js +77 -67
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvModuleStreamFilterDetails.fixtures.json +1 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvPackageFilterDetail.fixtures.json +1 -0
- data/webpack/scenes/ContentViews/Details/Histories/ContentViewHistories.js +2 -2
- data/webpack/scenes/ContentViews/Details/Histories/__tests__/contentViewHistory.test.js +4 -2
- data/webpack/scenes/ContentViews/Details/Promote/ContentViewVersionPromote.js +1 -1
- data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +7 -5
- data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +6 -3
- data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewRepoAdd.fixture.json +1 -0
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/ActionSummary.js +3 -2
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/BulkDeleteModal.js +3 -1
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ConfirmBulkDelete.js +2 -2
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReassignActivationKeys.js +3 -1
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReassignHosts.js +3 -1
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReviewEnvironments.js +4 -4
- data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompare.scss +11 -11
- data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareHeader.js +15 -5
- data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionEnvironments.js +1 -1
- data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +13 -3
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveCVVersionWizard.js +3 -1
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVEnvironmentSelectionForm.js +17 -13
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignActivationKeysForm.js +12 -7
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignHostsForm.js +64 -7
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionRemoveReview.js +52 -21
- data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemove.test.js +30 -16
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.scss +7 -7
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsHeader.js +5 -3
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsTable.js +4 -2
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.test.js +6 -3
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetailsEmpty.test.js +2 -1
- data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +6 -6
- data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetail.test.js +35 -4
- data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetails.fixtures.json +1 -0
- data/webpack/scenes/ContentViews/Details/__tests__/contentViewRollingDetail.test.js +197 -0
- data/webpack/scenes/ContentViews/Details/__tests__/contentViewRollingDetails.fixtures.json +82 -0
- data/webpack/scenes/ContentViews/Publish/CVPublishFinish.js +3 -7
- data/webpack/scenes/ContentViews/Publish/CVPublishForm.js +2 -2
- data/webpack/scenes/ContentViews/Publish/CVPublishReview.js +6 -5
- data/webpack/scenes/ContentViews/Publish/PublishContentViewWizard.js +3 -1
- data/webpack/scenes/ContentViews/Publish/__tests__/publishContentView.test.js +15 -7
- data/webpack/scenes/ContentViews/Publish/cvPublishForm.scss +4 -4
- data/webpack/scenes/ContentViews/Table/ContentViewVersionCell.js +6 -4
- data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +14 -3
- data/webpack/scenes/ContentViews/Table/tableDataGenerator.js +3 -0
- data/webpack/scenes/ContentViews/__tests__/basicContentViews.fixtures.js +1 -0
- data/webpack/scenes/ContentViews/__tests__/contentViewList.fixtures.json +89 -2
- data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +85 -14
- data/webpack/scenes/ContentViews/__tests__/mockDetails.fixtures.json +2 -1
- data/webpack/scenes/ContentViews/components/ContentViewIcon.js +20 -6
- data/webpack/scenes/ContentViews/components/ContentViewSelect/ContentViewSelect.js +4 -1
- data/webpack/scenes/ContentViews/components/ContentViewSelect/ContentViewSelectOption.js +11 -2
- data/webpack/scenes/ContentViews/components/ContentViewsCounter.js +27 -7
- data/webpack/scenes/ContentViews/components/EnvironmentLabels.js +2 -2
- data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.js +6 -2
- data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.scss +4 -1
- data/webpack/scenes/ContentViews/components/FiltersAppliedIcon.js +4 -2
- data/webpack/scenes/ContentViews/components/NeedsPublishIcon.js +7 -6
- data/webpack/scenes/ContentViews/components/NeedsPublishIcon.scss +2 -2
- data/webpack/scenes/ContentViews/components/contentViewIcon.scss +16 -3
- data/webpack/scenes/ContentViews/expansions/DetailsExpansion.js +6 -1
- data/webpack/scenes/ContentViews/expansions/RelatedCompositeContentViewsModal.js +3 -3
- data/webpack/scenes/ContentViews/expansions/__tests__/contentViewComponentsModal.test.js +2 -1
- data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceForm.js +5 -3
- data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceTemplate.js +3 -2
- data/webpack/scenes/Hosts/ChangeContentSource/components/FormField.js +1 -1
- data/webpack/scenes/Hosts/ChangeContentSource/components/HostsModal.js +1 -1
- data/webpack/scenes/RedHatRepositories/components/EnabledRepository/EnabledRepositoryContent.js +1 -1
- data/webpack/scenes/RedHatRepositories/components/EnabledRepository/__tests__/__snapshots__/EnabledRepositoryContent.test.js.snap +1 -1
- data/webpack/scenes/RedHatRepositories/index.scss +1 -1
- data/webpack/scenes/SmartProxy/ExpandableCvDetails.js +27 -7
- data/webpack/scenes/SmartProxy/ExpandedSmartProxyRepositories.js +51 -2
- data/webpack/scenes/SmartProxy/SmartProxyExpandableTable.js +2 -2
- data/webpack/scenes/SmartProxy/__tests__/SmartProxyContentTest.js +14 -9
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CdnConfigurationForm.scss +1 -1
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CustomCdnTypeForm.js +2 -2
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/NetworkSyncForm.js +6 -6
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/CdnTypeForm.test.js +2 -1
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/CustomCdnTypeForm.test.js +2 -1
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/ExportSyncForm.test.js +2 -1
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/NetworkSyncForm.test.js +2 -1
- metadata +76 -53
- data/app/models/katello/yum_metadata_file.rb +0 -22
- data/app/services/katello/pulp3/yum_metadata_file.rb +0 -20
@@ -5,13 +5,11 @@ module Katello
|
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
# Class.repository_association_class
|
7
7
|
included do
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
include ::Katello::Concerns::SearchByRepositoryName
|
14
|
-
end
|
8
|
+
# rubocop:disable Rails/ReflectionClassName
|
9
|
+
has_many repository_association.to_sym, class_name: repository_association_class_name,
|
10
|
+
dependent: :delete_all, inverse_of: association_name
|
11
|
+
has_many :repositories, through: repository_association.to_sym, class_name: "Katello::Repository"
|
12
|
+
include ::Katello::Concerns::SearchByRepositoryName
|
15
13
|
end
|
16
14
|
|
17
15
|
def backend_data
|
@@ -50,10 +48,6 @@ module Katello
|
|
50
48
|
"::Katello::Pulp::#{self.name.demodulize}".constantize
|
51
49
|
end
|
52
50
|
|
53
|
-
def many_repository_associations
|
54
|
-
self != YumMetadataFile
|
55
|
-
end
|
56
|
-
|
57
51
|
def repository_association
|
58
52
|
repository_association_class_name.demodulize.pluralize.underscore
|
59
53
|
end
|
@@ -86,27 +80,11 @@ module Katello
|
|
86
80
|
end
|
87
81
|
|
88
82
|
def copy_repository_associations(source_repo, dest_repo)
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
ActiveRecord::Base.
|
93
|
-
|
94
|
-
self.repository_association_class.import(db_columns_copy, db_values_copy(source_repo, dest_repo), validate: false)
|
95
|
-
end
|
96
|
-
else
|
97
|
-
columns = column_names - ["id", "pulp_id", "created_at", "updated_at", "repository_id"]
|
98
|
-
queries = []
|
99
|
-
queries << "delete from #{self.table_name} where repository_id = #{dest_repo.id} and
|
100
|
-
pulp_id not in (select pulp_id from #{self.table_name} where repository_id = #{source_repo.id})"
|
101
|
-
queries << "insert into #{self.table_name} (repository_id, pulp_id, #{columns.join(',')})
|
102
|
-
select #{dest_repo.id} as repository_id, pulp_id, #{columns.join(',')} from #{self.table_name}
|
103
|
-
where repository_id = #{source_repo.id} and pulp_id not in (select pulp_id
|
104
|
-
from #{self.table_name} where repository_id = #{dest_repo.id})"
|
105
|
-
ActiveRecord::Base.transaction do
|
106
|
-
queries.each do |query|
|
107
|
-
ActiveRecord::Base.connection.execute(query)
|
108
|
-
end
|
109
|
-
end
|
83
|
+
delete_query = "delete from #{repository_association_class.table_name} where repository_id = #{dest_repo.id} and
|
84
|
+
#{unit_id_field} not in (select #{unit_id_field} from #{repository_association_class.table_name} where repository_id = #{source_repo.id})"
|
85
|
+
ActiveRecord::Base.transaction do
|
86
|
+
ActiveRecord::Base.connection.execute(delete_query)
|
87
|
+
self.repository_association_class.import(db_columns_copy, db_values_copy(source_repo, dest_repo), validate: false)
|
110
88
|
end
|
111
89
|
end
|
112
90
|
|
@@ -168,19 +146,11 @@ module Katello
|
|
168
146
|
end
|
169
147
|
|
170
148
|
def orphaned
|
171
|
-
|
172
|
-
left_joins(repository_association.to_sym).where("#{repository_association_class.table_name}.#{unit_id_field}" => nil)
|
173
|
-
else
|
174
|
-
where.not(:repository_id => ::Katello::Repository.select(:id))
|
175
|
-
end
|
149
|
+
left_joins(repository_association.to_sym).where("#{repository_association_class.table_name}.#{unit_id_field}" => nil)
|
176
150
|
end
|
177
151
|
|
178
152
|
def in_repositories(repos)
|
179
|
-
|
180
|
-
where(:id => repository_association_class.where(:repository_id => repos).select(unit_id_field))
|
181
|
-
else
|
182
|
-
where(:repository_id => repos)
|
183
|
-
end
|
153
|
+
where(:id => repository_association_class.where(:repository_id => repos).select(unit_id_field))
|
184
154
|
end
|
185
155
|
|
186
156
|
def pulp_data(pulp_id)
|
@@ -602,6 +602,14 @@ module Katello
|
|
602
602
|
repos_in_env_cv(environment, content_view) - repos_in_sync_history
|
603
603
|
end
|
604
604
|
|
605
|
+
def up_to_date?(environment = nil, content_view = nil)
|
606
|
+
total_repos = repos_in_env_cv(environment, content_view)&.count
|
607
|
+
pending_sync = repos_pending_sync(environment, content_view)&.count
|
608
|
+
return true if pending_sync&.zero? && total_repos&.positive?
|
609
|
+
return false if total_repos.to_i == pending_sync.to_i
|
610
|
+
return 'partial'
|
611
|
+
end
|
612
|
+
|
605
613
|
def rhsm_url
|
606
614
|
# Since Foreman 3.1 this setting is set
|
607
615
|
if (rhsm_url = setting(SmartProxy::PULP3_FEATURE, 'rhsm_url'))
|
@@ -71,6 +71,16 @@ module Katello
|
|
71
71
|
validates :composite,
|
72
72
|
inclusion: { in: [false], message: "Composite Content Views can not solve dependencies" },
|
73
73
|
if: :solve_dependencies
|
74
|
+
validates :rolling, :inclusion => [true, false]
|
75
|
+
validates :rolling,
|
76
|
+
inclusion: { in: [false], message: "Rolling content views can not solve dependencies" },
|
77
|
+
if: :solve_dependencies
|
78
|
+
validates :rolling,
|
79
|
+
inclusion: { in: [false], message: "Rolling content views can not be composite" },
|
80
|
+
if: :composite
|
81
|
+
validates :rolling,
|
82
|
+
inclusion: { in: [false], message: "Rolling content views can not be import only" },
|
83
|
+
if: :import_only
|
74
84
|
validates :import_only, :inclusion => [true, false]
|
75
85
|
validates :import_only,
|
76
86
|
inclusion: { in: [false], message: "Import-only Content Views can not be Composite" },
|
@@ -93,6 +103,8 @@ module Katello
|
|
93
103
|
scope :non_default, -> { where(:default => false) }
|
94
104
|
scope :composite, -> { where(:composite => true) }
|
95
105
|
scope :non_composite, -> { where(:composite => [nil, false]) }
|
106
|
+
scope :rolling, -> { where(:rolling => true) }
|
107
|
+
scope :non_rolling, -> { where(:rolling => [nil, false]) }
|
96
108
|
scope :generated, -> { where.not(:generated_for => :none) }
|
97
109
|
scope :generated_for_repository, -> {
|
98
110
|
where(:generated_for => [:repository_export,
|
@@ -113,6 +125,7 @@ module Katello
|
|
113
125
|
scoped_search :on => :organization_id, :complete_value => true, :only_explicit => true, :validator => ScopedSearch::Validators::INTEGER
|
114
126
|
scoped_search :on => :label, :complete_value => true
|
115
127
|
scoped_search :on => :composite, :complete_value => { :true => true, :false => false }
|
128
|
+
scoped_search :on => :rolling, :complete_value => { :true => true, :false => false }
|
116
129
|
scoped_search :on => :generated_for, :complete_value => true
|
117
130
|
scoped_search :on => :default # just for ordering
|
118
131
|
scoped_search :on => :name, :complete_value => true,
|
@@ -804,7 +817,7 @@ module Katello
|
|
804
817
|
end
|
805
818
|
|
806
819
|
def unpublishable?
|
807
|
-
default? || import_only? || generated?
|
820
|
+
default? || import_only? || generated? || rolling?
|
808
821
|
end
|
809
822
|
|
810
823
|
def needs_publish?
|
@@ -53,6 +53,10 @@ module Katello
|
|
53
53
|
errors.add(:base, _("Cannot add default content view to composite content view"))
|
54
54
|
end
|
55
55
|
|
56
|
+
if view.rolling?
|
57
|
+
errors.add(:base, _("Cannot add rolling content view to composite content view"))
|
58
|
+
end
|
59
|
+
|
56
60
|
if attached_content_view_ids.include?(view.id)
|
57
61
|
errors.add(:base, _("Another component already includes content view with ID %s" % view.id))
|
58
62
|
end
|
@@ -21,6 +21,7 @@ module Katello
|
|
21
21
|
validates_lengths_from_database
|
22
22
|
validates :environment_id, uniqueness: {scope: :content_view_id}, presence: true
|
23
23
|
validates :content_view_id, presence: true
|
24
|
+
validates :content_view_version_id, presence: true
|
24
25
|
validates_with Validators::ContentViewEnvironmentOrgValidator
|
25
26
|
validates_with Validators::ContentViewEnvironmentCoherentDefaultValidator
|
26
27
|
|
@@ -45,6 +45,7 @@ module Katello
|
|
45
45
|
:class_name => "Katello::ContentViewVersion", :inverse_of => :components
|
46
46
|
has_many :published_in_composite_content_views, through: :composites, source: :content_view
|
47
47
|
delegate :default, :default?, to: :content_view
|
48
|
+
delegate :rolling, :rolling?, to: :content_view
|
48
49
|
|
49
50
|
validates_lengths_from_database
|
50
51
|
|
@@ -185,7 +186,7 @@ module Katello
|
|
185
186
|
end
|
186
187
|
|
187
188
|
def archived_repos
|
188
|
-
self.default? ? self.repositories : self.repos(nil)
|
189
|
+
(self.default? || self.rolling?) ? self.repositories : self.repos(nil)
|
189
190
|
end
|
190
191
|
|
191
192
|
def non_archive_repos
|
@@ -389,7 +390,7 @@ module Katello
|
|
389
390
|
end
|
390
391
|
|
391
392
|
def check_ready_to_promote!(to_env)
|
392
|
-
fail _("Default content view versions cannot be promoted") if default?
|
393
|
+
fail _("Default and Rolling content view versions cannot be promoted") if default? || rolling?
|
393
394
|
content_view.check_composite_action_allowed!(to_env)
|
394
395
|
content_view.check_docker_repository_names!(to_env)
|
395
396
|
content_view.check_orphaned_content_facets!(environments: [to_env])
|
@@ -105,6 +105,14 @@ module Katello
|
|
105
105
|
bootc_booted_image.present?
|
106
106
|
end
|
107
107
|
|
108
|
+
def yum_or_yum_transient
|
109
|
+
if image_mode_host?
|
110
|
+
'dnf --transient'
|
111
|
+
else
|
112
|
+
'yum'
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
108
116
|
def cves_changed?
|
109
117
|
cves_changed
|
110
118
|
end
|
@@ -149,6 +157,7 @@ module Katello
|
|
149
157
|
end
|
150
158
|
|
151
159
|
# rubocop:disable Metrics/CyclomaticComplexity
|
160
|
+
# rubocop:disable Metrics/PerceivedComplexity
|
152
161
|
def assign_single_environment(
|
153
162
|
content_view_id: nil, lifecycle_environment_id: nil, environment_id: nil,
|
154
163
|
content_view: nil, lifecycle_environment: nil, environment: nil
|
@@ -165,11 +174,15 @@ module Katello
|
|
165
174
|
end
|
166
175
|
|
167
176
|
content_view_environment = ::Katello::ContentViewEnvironment
|
168
|
-
.
|
169
|
-
|
170
|
-
|
177
|
+
.find_by(:content_view_id => content_view_id, :environment_id => lifecycle_environment_id)
|
178
|
+
if content_view_environment.nil?
|
179
|
+
env_label = ::Katello::KTEnvironment.find_by(:id => lifecycle_environment_id)&.label
|
180
|
+
fail ::Katello::Errors::ContentViewEnvironmentError, _("Unable to find a lifecycle environment with ID %s") % lifecycle_environment_id if env_label.nil?
|
181
|
+
cv_label = ::Katello::ContentView.find_by(:id => content_view_id)&.label
|
182
|
+
fail ::Katello::Errors::ContentViewEnvironmentError, _("Unable to find a content view with ID %s") % content_view_id if cv_label.nil?
|
183
|
+
hypothetical_cve_label = "%s/%s" % [env_label, cv_label]
|
184
|
+
fail ::Katello::Errors::ContentViewEnvironmentError, _("Cannot assign content view environment %s: The content view has either not been published or has not been promoted to that lifecycle environment.") % hypothetical_cve_label
|
171
185
|
end
|
172
|
-
fail _("Unable to create ContentViewEnvironment. Check the logs for more information.") if content_view_environment.nil?
|
173
186
|
|
174
187
|
self.content_view_environments = [content_view_environment]
|
175
188
|
end
|
@@ -453,7 +466,7 @@ module Katello
|
|
453
466
|
:errata_counts, :id, :kickstart_repository, :kickstart_repository_id, :kickstart_repository_name,
|
454
467
|
:upgradable_deb_count, :upgradable_module_stream_count, :upgradable_rpm_count, :uuid,
|
455
468
|
:installable_security_errata_count, :installable_bugfix_errata_count, :installable_enhancement_errata_count,
|
456
|
-
:single_content_view, :single_lifecycle_environment, :content_view_environment_labels
|
469
|
+
:single_content_view, :single_lifecycle_environment, :content_view_environment_labels, :yum_or_yum_transient
|
457
470
|
end
|
458
471
|
end
|
459
472
|
end
|
@@ -45,7 +45,9 @@ module Katello
|
|
45
45
|
end
|
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
|
+
structured_apt_content_ids = Katello::Repository.in_organization(organization).library.pluck(:content_id)
|
50
|
+
joins(:content).where("#{self.content_table_name}.cp_content_id" => content_ids + structured_apt_content_ids)
|
49
51
|
end
|
50
52
|
|
51
53
|
def self.with_valid_subscription(organization)
|
@@ -72,8 +72,6 @@ module Katello
|
|
72
72
|
has_many :repository_docker_manifest_lists, :class_name => "Katello::RepositoryDockerManifestList", :dependent => :delete_all
|
73
73
|
has_many :docker_manifest_lists, :through => :repository_docker_manifest_lists
|
74
74
|
|
75
|
-
has_many :yum_metadata_files, :dependent => :destroy, :class_name => "Katello::YumMetadataFile"
|
76
|
-
|
77
75
|
has_many :repository_docker_tags, :class_name => "Katello::RepositoryDockerTag", :dependent => :delete_all
|
78
76
|
has_many :docker_tags, :through => :repository_docker_tags
|
79
77
|
|
@@ -718,6 +716,8 @@ module Katello
|
|
718
716
|
def archived_instance
|
719
717
|
if self.environment_id.nil? || self.library_instance_id.nil?
|
720
718
|
self
|
719
|
+
elsif self.content_view.rolling?
|
720
|
+
self.library_instance
|
721
721
|
else
|
722
722
|
self.content_view_version.archived_repos.where(:root_id => self.root_id).first
|
723
723
|
end
|
@@ -1057,7 +1057,7 @@ module Katello
|
|
1057
1057
|
return [] if version_href.blank?
|
1058
1058
|
|
1059
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.
|
1060
|
+
pulp_api.list({:repository_version => version_href}).results.map { |x| x.plain_component }.uniq
|
1061
1061
|
end
|
1062
1062
|
|
1063
1063
|
def deb_sanitize_pulp_distribution(distribution)
|
@@ -211,6 +211,12 @@ module Katello
|
|
211
211
|
self.class.fetch_from_list { |page_opts| repository_versions_api.list(repository_href, page_opts.merge(options)) }
|
212
212
|
end
|
213
213
|
|
214
|
+
def publications_list_all(args = {})
|
215
|
+
self.class.fetch_from_list do |page_opts|
|
216
|
+
publications_api.list(page_opts.merge(args))
|
217
|
+
end
|
218
|
+
end
|
219
|
+
|
214
220
|
def distributions_list_all(args = {})
|
215
221
|
self.class.fetch_from_list do |page_opts|
|
216
222
|
distributions_api.list(page_opts.merge(args))
|
@@ -37,6 +37,62 @@ module Katello
|
|
37
37
|
repo_version_map
|
38
38
|
end
|
39
39
|
|
40
|
+
def report_misconfigured_repository_version(api, href)
|
41
|
+
# Reasons for distributions distributing orphaned repository versions:
|
42
|
+
# 1. The sync succeeded but Pulp did not update the publication (yum content)
|
43
|
+
# - Fix: completely resync the repository to the smart proxy (need to verify)
|
44
|
+
# 2. The sync suceeded but metadata was not generated (non-yum content)
|
45
|
+
# - Fix: completely resync the repository on the smart proxy (need to verify)
|
46
|
+
# 3. A repository, distribution, and publication was lost track of
|
47
|
+
# - Fix: same as 4
|
48
|
+
# 4. Pulp content was modified outside of Katello
|
49
|
+
# - Fix: find repositories outside of Katello and delete them. Deleting the entire repo works and leaves an orphaned distribution.
|
50
|
+
# - If RemoveUnneededRepos goes first, this should be taken care of.
|
51
|
+
# 5. An older repository version has a distribution, but the repository is not an orphan
|
52
|
+
# - Fix: delete the orphan distribution
|
53
|
+
errors = []
|
54
|
+
related_distributions = if api.repository_type.publications_api_class.present?
|
55
|
+
publication_hrefs = api.publications_list_all(repository_version: href).map(&:pulp_href)
|
56
|
+
# Searching distributions by publication isn't supported
|
57
|
+
api.distributions_list_all.select { |dist| publication_hrefs.include? dist.publication }
|
58
|
+
else
|
59
|
+
# Searching distributions by repository version isn't supported
|
60
|
+
api.distributions_list_all.select { |dist| dist.repository_version == href }
|
61
|
+
end
|
62
|
+
repositories_to_redistribute = ::Katello::Repository.where(pulp_id: related_distributions.map(&:name))
|
63
|
+
if repositories_to_redistribute.present?
|
64
|
+
warning = "Completely resync (skip metadata check) repositories with the following paths to the smart proxy with ID #{smart_proxy.id}: " \
|
65
|
+
"#{repositories_to_redistribute.map(&:relative_path).join(', ')}. " \
|
66
|
+
"Orphan cleanup is skipped for these repositories until they are fixed on smart proxy with ID #{smart_proxy.id}. " \
|
67
|
+
"Try `hammer capsule content synchronize --id #{smart_proxy.id} --skip-metadata-check 1 ...` using " \
|
68
|
+
"--repository-id with #{repositories_to_redistribute.map(&:id).join(', ')}."
|
69
|
+
errors << warning
|
70
|
+
Rails.logger.warn(warning)
|
71
|
+
end
|
72
|
+
Rails.logger.debug("Orphan cleanup error: investigate the version_href #{href} on the smart proxy with ID #{smart_proxy.id} " \
|
73
|
+
"and the related distributions #{related_distributions.map(&:pulp_href)}")
|
74
|
+
Rails.logger.debug('It is likely that the related distributions are distributing an older version of the repository.')
|
75
|
+
errors
|
76
|
+
end
|
77
|
+
|
78
|
+
# See app/services/katello/pulp3/smart_proxy_repository.rb#delete_orphan_repository_versions for foreman orphan cleanup
|
79
|
+
def delete_orphan_repository_versions
|
80
|
+
tasks = []
|
81
|
+
errors = []
|
82
|
+
orphan_repository_versions.each do |api, version_hrefs|
|
83
|
+
version_hrefs.each do |href|
|
84
|
+
tasks << api.repository_versions_api.delete(href)
|
85
|
+
rescue => e
|
86
|
+
if e.message.include?('Please update the necessary distributions first.')
|
87
|
+
errors << report_misconfigured_repository_version(api, href)
|
88
|
+
else
|
89
|
+
raise e
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
{ pulp_tasks: tasks.flatten, errors: errors.flatten }
|
94
|
+
end
|
95
|
+
|
40
96
|
def delete_orphan_repositories
|
41
97
|
tasks = []
|
42
98
|
|
@@ -70,7 +126,8 @@ module Katello
|
|
70
126
|
def self.orphan_distribution?(distribution)
|
71
127
|
distribution.try(:publication).nil? &&
|
72
128
|
distribution.try(:repository).nil? &&
|
73
|
-
distribution.try(:repository_version).nil?
|
129
|
+
distribution.try(:repository_version).nil? ||
|
130
|
+
::Katello::Repository.pluck(:pulp_id).exclude?(distribution.name)
|
74
131
|
end
|
75
132
|
|
76
133
|
def delete_orphan_alternate_content_sources
|
@@ -33,14 +33,53 @@ module Katello
|
|
33
33
|
katello_repos.select { |repo| repo_ids.include? repo.pulp_id }
|
34
34
|
end
|
35
35
|
|
36
|
+
def report_misconfigured_repository_version(api, href)
|
37
|
+
errors = []
|
38
|
+
related_distributions = if api.repository_type.publications_api_class.present?
|
39
|
+
publication_hrefs = api.publications_list_all(repository_version: href).map(&:pulp_href)
|
40
|
+
# Searching distributions by publication isn't supported
|
41
|
+
api.distributions_list_all.select { |dist| publication_hrefs.include? dist.publication }
|
42
|
+
else
|
43
|
+
# Searching distributions by repository version isn't supported
|
44
|
+
api.distributions_list_all.select { |dist| dist.repository_version == href }
|
45
|
+
end
|
46
|
+
repositories_to_redistribute = ::Katello::Repository.joins(:distribution_references)
|
47
|
+
.where(:distribution_references => { :href => related_distributions.map(&:pulp_href) })
|
48
|
+
if repositories_to_redistribute.present?
|
49
|
+
warning = 'Completely resync (skip metadata check) or regenerate metadata for repositories with the following paths: ' \
|
50
|
+
"#{repositories_to_redistribute.map(&:relative_path).join(', ')}. " \
|
51
|
+
"Orphan cleanup is skipped for these repositories until they are fixed on smart proxy with ID #{smart_proxy.id}. "
|
52
|
+
if repositories_to_redistribute.in_default_view.any?
|
53
|
+
warning += "Try `hammer repository synchronize --skip-metadata-check 1 ...` using --id with #{repositories_to_redistribute.in_default_view.map(&:id).join(', ')}. " \
|
54
|
+
end
|
55
|
+
if repositories_to_redistribute.in_non_default_view.any?
|
56
|
+
warning += "Try `hammer content-view version republish-repositories ...` using --id with #{repositories_to_redistribute.in_non_default_view.pluck(:content_view_version_id).uniq.join(', ')}." \
|
57
|
+
end
|
58
|
+
errors << warning
|
59
|
+
Rails.logger.warn(warning)
|
60
|
+
end
|
61
|
+
Rails.logger.debug("Orphan cleanup error: investigate the version_href #{href} " \
|
62
|
+
"and the related distributions #{related_distributions.map(&:pulp_href)}")
|
63
|
+
Rails.logger.debug('It is likely that the related distributions are distributing an older version of the repository.')
|
64
|
+
errors
|
65
|
+
end
|
66
|
+
|
67
|
+
# See app/services/katello/pulp3/smart_proxy_mirror_repository.rb#delete_orphan_repository_versions for content proxy orphan cleanup
|
36
68
|
def delete_orphan_repository_versions
|
37
69
|
tasks = []
|
70
|
+
errors = []
|
38
71
|
orphan_repository_versions.each do |api, version_hrefs|
|
39
|
-
|
40
|
-
api.repository_versions_api.delete(href)
|
72
|
+
version_hrefs.each do |href|
|
73
|
+
tasks << api.repository_versions_api.delete(href)
|
74
|
+
rescue => e
|
75
|
+
if e.message.include?('Please update the necessary distributions first.')
|
76
|
+
errors << report_misconfigured_repository_version(api, href)
|
77
|
+
else
|
78
|
+
raise e
|
79
|
+
end
|
41
80
|
end
|
42
81
|
end
|
43
|
-
tasks.flatten
|
82
|
+
{ pulp_tasks: tasks.flatten, errors: errors.flatten }
|
44
83
|
end
|
45
84
|
|
46
85
|
def pulp3_enabled_repo_types
|
@@ -49,6 +88,31 @@ module Katello
|
|
49
88
|
end
|
50
89
|
end
|
51
90
|
|
91
|
+
def orphan_distributions
|
92
|
+
# Each key is a Pulp 3 plugin API and each value is the list of version_hrefs
|
93
|
+
distribution_map = {}
|
94
|
+
pulp3_enabled_repo_types.each do |repo_type|
|
95
|
+
api = repo_type.pulp3_api(smart_proxy)
|
96
|
+
katello_dist_hrefs = ::Katello::RootRepository.where(content_type: repo_type.id)
|
97
|
+
.joins(:repositories => :distribution_references)
|
98
|
+
.pluck(:href)
|
99
|
+
pulp_dist_hrefs = api.distributions_list_all.map(&:pulp_href)
|
100
|
+
distribution_map[api] = pulp_dist_hrefs - katello_dist_hrefs
|
101
|
+
end
|
102
|
+
|
103
|
+
distribution_map
|
104
|
+
end
|
105
|
+
|
106
|
+
def delete_orphan_distributions
|
107
|
+
tasks = []
|
108
|
+
orphan_distributions.each do |api, hrefs|
|
109
|
+
tasks << hrefs.collect do |href|
|
110
|
+
api.distributions_api.delete(href)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
tasks.flatten
|
114
|
+
end
|
115
|
+
|
52
116
|
def orphan_repository_versions
|
53
117
|
# Each key is a Pulp 3 plugin API and each value is the list of version_hrefs
|
54
118
|
repo_version_map = {}
|
@@ -1,5 +1,6 @@
|
|
1
1
|
module Katello
|
2
2
|
class SmartProxyHelper
|
3
|
+
include ::Actions::Helpers::RollingCVRepos
|
3
4
|
attr_accessor :smart_proxy
|
4
5
|
|
5
6
|
def initialize(smart_proxy)
|
@@ -39,7 +40,11 @@ module Katello
|
|
39
40
|
def combined_repos_available_to_capsule(environment = nil, content_view = nil, repository = nil)
|
40
41
|
lifecycle_environment_check(environment, repository)
|
41
42
|
if repository && !library_export_repo(repository)
|
42
|
-
|
43
|
+
if repository.library_instance?
|
44
|
+
[repository] + find_related_rolling_repos(repository)
|
45
|
+
else
|
46
|
+
[repository]
|
47
|
+
end
|
43
48
|
else
|
44
49
|
repositories_available_to_capsule(environment, content_view)
|
45
50
|
end
|
@@ -20,6 +20,20 @@ kind: job_template
|
|
20
20
|
<%= render_template('Run Command - Ansible Default', :command => "zypper -n install -t patch #{advisories}") %>
|
21
21
|
<% else -%>
|
22
22
|
<% advisories = input(:errata).split(',').map { |e| "--advisory=#{e}" }.join(' ') -%>
|
23
|
-
|
23
|
+
---
|
24
|
+
- hosts: all
|
25
|
+
tasks:
|
26
|
+
<%= indent(4) { snippet('check_bootc_status') } %>
|
27
|
+
- name: Install errata via dnf for image mode machines
|
28
|
+
shell:
|
29
|
+
cmd: 'dnf -y --transient update-minimal <%= advisories %>'
|
30
|
+
register: out
|
31
|
+
when: is_bootc_host
|
32
|
+
- name: Install errata normally
|
33
|
+
shell:
|
34
|
+
cmd: 'yum -y update-minimal <%= advisories %>'
|
35
|
+
register: out
|
36
|
+
when: not is_bootc_host
|
37
|
+
- debug: var=out
|
24
38
|
<% end -%>
|
25
39
|
<%= snippet_if_exists(template_name + " custom post") %>
|
data/app/views/foreman/job_templates/install_errata_by_search_query_-_katello_ansible_default.erb
CHANGED
@@ -21,6 +21,20 @@ template_inputs:
|
|
21
21
|
<%= render_template('Run Command - Ansible Default', :command => "zypper -n install -t patch #{advisory_ids.join(' ')}") %>
|
22
22
|
<% else -%>
|
23
23
|
<% advisories = advisory_ids.map { |e| "--advisory=#{e}" }.join(' ') -%>
|
24
|
-
|
24
|
+
---
|
25
|
+
- hosts: all
|
26
|
+
tasks:
|
27
|
+
<%= indent(4) { snippet('check_bootc_status') } %>
|
28
|
+
- name: Install errata via dnf for image mode machines
|
29
|
+
shell:
|
30
|
+
cmd: 'dnf -y --transient update-minimal <%= advisories %>'
|
31
|
+
register: out
|
32
|
+
when: is_bootc_host
|
33
|
+
- name: Install errata normally
|
34
|
+
shell:
|
35
|
+
cmd: 'yum -y update-minimal <%= advisories %>'
|
36
|
+
register: out
|
37
|
+
when: not is_bootc_host
|
38
|
+
- debug: var=out
|
25
39
|
<% end -%>
|
26
40
|
<%= snippet_if_exists(template_name + " custom post") %>
|
@@ -12,5 +12,18 @@ template_inputs:
|
|
12
12
|
provider_type: Ansible
|
13
13
|
kind: job_template
|
14
14
|
%>
|
15
|
-
|
16
|
-
|
15
|
+
---
|
16
|
+
- hosts: all
|
17
|
+
tasks:
|
18
|
+
<%= indent(4) { snippet('check_bootc_status') } %>
|
19
|
+
- name: Install groups via dnf for image mode machines
|
20
|
+
shell:
|
21
|
+
cmd: 'dnf -y --transient groupinstall <%= input('package') %>'
|
22
|
+
register: out
|
23
|
+
when: is_bootc_host
|
24
|
+
- name: Install groups normally
|
25
|
+
shell:
|
26
|
+
cmd: 'yum -y groupinstall <%= input('package') %>'
|
27
|
+
register: out
|
28
|
+
when: not is_bootc_host
|
29
|
+
- debug: var=out
|
data/app/views/foreman/job_templates/install_packages_by_search_query_-_katello_ansible_default.erb
CHANGED
@@ -18,11 +18,30 @@ template_inputs:
|
|
18
18
|
---
|
19
19
|
- hosts: all
|
20
20
|
tasks:
|
21
|
-
|
21
|
+
<%= indent(4) { snippet('check_bootc_status') } %>
|
22
|
+
- name: Enable bootc overlay
|
23
|
+
shell:
|
24
|
+
cmd: 'bootc usr-overlay'
|
25
|
+
register: out
|
26
|
+
ignore_errors: true
|
27
|
+
when: is_bootc_host
|
28
|
+
- debug: var=out
|
29
|
+
- name: Install packages via dnf for image mode machines
|
30
|
+
package:
|
31
|
+
use: 'dnf'
|
22
32
|
<% if package_names.empty? -%>
|
23
33
|
name: []
|
24
34
|
<% else -%>
|
25
35
|
name: <%= indent(10) { to_yaml(package_names).gsub(/---/, "") } -%>
|
26
36
|
state: present
|
27
37
|
<% end -%>
|
28
|
-
|
38
|
+
when: is_bootc_host
|
39
|
+
- name: Install packages normally
|
40
|
+
package:
|
41
|
+
<% if package_names.empty? -%>
|
42
|
+
name: []
|
43
|
+
<% else -%>
|
44
|
+
name: <%= indent(10) { to_yaml(package_names).gsub(/---/, "") } -%>
|
45
|
+
state: present
|
46
|
+
<% end -%>
|
47
|
+
when: not is_bootc_host
|
@@ -13,4 +13,18 @@ provider_type: Ansible
|
|
13
13
|
kind: job_template
|
14
14
|
%>
|
15
15
|
|
16
|
-
|
16
|
+
---
|
17
|
+
- hosts: all
|
18
|
+
tasks:
|
19
|
+
<%= indent(4) { snippet('check_bootc_status') } %>
|
20
|
+
- name: Remove groups via dnf for image mode machines
|
21
|
+
shell:
|
22
|
+
cmd: 'dnf -y --transient group remove <%= input('package') %>'
|
23
|
+
register: out
|
24
|
+
when: is_bootc_host
|
25
|
+
- name: Remove groups normally
|
26
|
+
shell:
|
27
|
+
cmd: 'yum -y group remove <%= input('package') %>'
|
28
|
+
register: out
|
29
|
+
when: not is_bootc_host
|
30
|
+
- debug: var=out
|
data/app/views/foreman/job_templates/remove_packages_by_search_query_-_katello_ansible_default.erb
CHANGED
@@ -18,9 +18,28 @@ template_inputs:
|
|
18
18
|
---
|
19
19
|
- hosts: all
|
20
20
|
tasks:
|
21
|
-
|
21
|
+
<%= indent(4) { snippet('check_bootc_status') } %>
|
22
|
+
- name: Enable bootc overlay
|
23
|
+
shell:
|
24
|
+
cmd: 'bootc usr-overlay'
|
25
|
+
register: out
|
26
|
+
ignore_errors: true
|
27
|
+
when: is_bootc_host
|
28
|
+
- debug: var=out
|
29
|
+
- name: Remove packages via dnf for image mode machines
|
30
|
+
package:
|
22
31
|
name:
|
23
32
|
<% package_names.each do |package_name| -%>
|
24
33
|
- <%= package_name %>
|
25
34
|
<% end -%>
|
26
35
|
state: absent
|
36
|
+
use: 'dnf'
|
37
|
+
when: is_bootc_host
|
38
|
+
- name: Remove packages normally
|
39
|
+
package:
|
40
|
+
name:
|
41
|
+
<% package_names.each do |package_name| -%>
|
42
|
+
- <%= package_name %>
|
43
|
+
<% end -%>
|
44
|
+
state: absent
|
45
|
+
when: not is_bootc_host
|