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
data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVEnvironmentSelectionForm.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
import React, { useContext, useState } from 'react';
|
2
2
|
import useDeepCompareEffect from 'use-deep-compare-effect';
|
3
|
-
import { Alert, Checkbox, EmptyState, EmptyStateVariant,
|
4
|
-
import { TableVariant,
|
3
|
+
import { Alert, Checkbox, EmptyState, EmptyStateVariant, EmptyStateBody, AlertActionCloseButton, EmptyStateHeader } from '@patternfly/react-core';
|
4
|
+
import { TableVariant, Table /* data-codemods */, Thead, Tbody, Tr, Th, Td } from '@patternfly/react-table';
|
5
5
|
import { translate as __ } from 'foremanReact/common/I18n';
|
6
6
|
import DeleteContext from '../DeleteContext';
|
7
7
|
|
@@ -25,9 +25,15 @@ const CVEnvironmentSelectionForm = () => {
|
|
25
25
|
|
26
26
|
// Based on env selected for removal, decide if we need to reassign hosts and activation keys.
|
27
27
|
useDeepCompareEffect(() => {
|
28
|
-
const
|
29
|
-
|
30
|
-
|
28
|
+
const selectedEnvironments = versionEnvironments.filter(env => selectedEnvSet.has(env.id));
|
29
|
+
|
30
|
+
const needsHostReassignment = selectedEnvironments.some(env =>
|
31
|
+
(env.host_count || 0) > (env.multi_env_host_count || 0));
|
32
|
+
setAffectedHosts(needsHostReassignment);
|
33
|
+
|
34
|
+
const needsAKReassignment = selectedEnvironments.some(env =>
|
35
|
+
(env.activation_key_count || 0) > (env.multi_env_ak_count || 0));
|
36
|
+
setAffectedActivationKeys(needsAKReassignment);
|
31
37
|
}, [setAffectedActivationKeys, setAffectedHosts,
|
32
38
|
versionEnvironments, selectedEnvSet, selectedEnvSet.size]);
|
33
39
|
|
@@ -73,12 +79,12 @@ const CVEnvironmentSelectionForm = () => {
|
|
73
79
|
id="delete_version"
|
74
80
|
label={__('Delete version')}
|
75
81
|
isChecked={removeDeletionFlow}
|
76
|
-
onChange={checked => setRemoveDeletionFlow(checked)}
|
82
|
+
onChange={(_event, checked) => setRemoveDeletionFlow(checked)}
|
77
83
|
style={{ margin: 0 }}
|
78
84
|
/>
|
79
85
|
</Alert>)}
|
80
86
|
{(versionEnvironments.length !== 0) &&
|
81
|
-
<
|
87
|
+
<Table ouiaId="version-delete-env-table" variant={TableVariant.compact}>
|
82
88
|
<Thead>
|
83
89
|
<Tr ouiaId="version-delete-env-table-header">
|
84
90
|
<Td
|
@@ -86,7 +92,7 @@ const CVEnvironmentSelectionForm = () => {
|
|
86
92
|
rowIndex: 0,
|
87
93
|
onSelect: onSelectAll,
|
88
94
|
isSelected: areAllSelected() || deleteFlow || removeDeletionFlow,
|
89
|
-
|
95
|
+
isDisabled: deleteFlow || removeDeletionFlow,
|
90
96
|
}}
|
91
97
|
/>
|
92
98
|
{columnHeaders.map(col =>
|
@@ -106,7 +112,7 @@ const CVEnvironmentSelectionForm = () => {
|
|
106
112
|
rowIndex,
|
107
113
|
onSelect: (event, isSelected) => onSelect(event, isSelected, id),
|
108
114
|
isSelected: selectedEnvSet.has(id) || deleteFlow || removeDeletionFlow,
|
109
|
-
|
115
|
+
isDisabled: deleteFlow || removeDeletionFlow,
|
110
116
|
}}
|
111
117
|
/>
|
112
118
|
<Td>
|
@@ -118,12 +124,10 @@ const CVEnvironmentSelectionForm = () => {
|
|
118
124
|
))
|
119
125
|
}
|
120
126
|
</Tbody>
|
121
|
-
</
|
127
|
+
</Table>}
|
122
128
|
{(versionEnvironments.length === 0) &&
|
123
129
|
<EmptyState variant={EmptyStateVariant.xs}>
|
124
|
-
<
|
125
|
-
{__('This version has not been promoted to any environments.')}
|
126
|
-
</Title>
|
130
|
+
<EmptyStateHeader titleText={<>{__('This version has not been promoted to any environments.')}</>} headingLevel="h4" />
|
127
131
|
<EmptyStateBody>
|
128
132
|
{versionEnvironmentsEmptyInfo}
|
129
133
|
</EmptyStateBody>
|
data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignActivationKeysForm.js
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
import React, { useState, useContext } from 'react';
|
2
2
|
import { useDispatch, useSelector } from 'react-redux';
|
3
3
|
import useDeepCompareEffect from 'use-deep-compare-effect';
|
4
|
-
import {
|
4
|
+
import {
|
5
|
+
ExpandableSection, Alert, AlertActionCloseButton,
|
6
|
+
} from '@patternfly/react-core';
|
7
|
+
import {
|
8
|
+
SelectOption,
|
9
|
+
} from '@patternfly/react-core/deprecated';
|
5
10
|
import { STATUS } from 'foremanReact/constants';
|
6
11
|
import { translate as __ } from 'foremanReact/common/I18n';
|
7
12
|
import EnvironmentPaths from '../../../../components/EnvironmentPaths/EnvironmentPaths';
|
@@ -75,7 +80,7 @@ const CVReassignActivationKeysForm = () => {
|
|
75
80
|
contentViewsInEnvError, selectedEnvForAK, setSelectedCVForAK, setSelectedCVNameForAK,
|
76
81
|
cvInEnvLoading, selectedCVForAK, cvId, versionEnvironments, selectedEnvSet]);
|
77
82
|
|
78
|
-
const
|
83
|
+
const multiCVInfo = activationKeysResponse?.results?.some?.(key =>
|
79
84
|
key.multi_content_view_environment);
|
80
85
|
|
81
86
|
const fetchSelectedCVName = (id) => {
|
@@ -112,12 +117,12 @@ const CVReassignActivationKeysForm = () => {
|
|
112
117
|
|
113
118
|
return (
|
114
119
|
<>
|
115
|
-
{!alertDismissed &&
|
120
|
+
{!alertDismissed && multiCVInfo && (
|
116
121
|
<Alert
|
117
|
-
ouiaId="multi-cv-
|
118
|
-
variant="
|
122
|
+
ouiaId="multi-cv-info-alert"
|
123
|
+
variant="info"
|
119
124
|
isInline
|
120
|
-
title={__('
|
125
|
+
title={__('Multi-environment activation key(s) affected')}
|
121
126
|
actionClose={<AlertActionCloseButton onClose={() => setAlertDismissed(true)} />}
|
122
127
|
>
|
123
128
|
<p>{multiCVRemovalInfo}</p>
|
@@ -145,7 +150,7 @@ const CVReassignActivationKeysForm = () => {
|
|
145
150
|
toggleText={showActivationKeys ?
|
146
151
|
'Hide activation keys' :
|
147
152
|
'Show activation keys'}
|
148
|
-
onToggle={expanded => setShowActivationKeys(expanded)}
|
153
|
+
onToggle={(_event, expanded) => setShowActivationKeys(expanded)}
|
149
154
|
isExpanded={showActivationKeys}
|
150
155
|
>
|
151
156
|
<AffectedActivationKeys
|
@@ -1,9 +1,11 @@
|
|
1
1
|
import React, { useState, useContext } from 'react';
|
2
2
|
import { useDispatch, useSelector } from 'react-redux';
|
3
3
|
import useDeepCompareEffect from 'use-deep-compare-effect';
|
4
|
-
import { ExpandableSection,
|
4
|
+
import { ExpandableSection, Alert, AlertActionCloseButton } from '@patternfly/react-core';
|
5
|
+
import { SelectOption } from '@patternfly/react-core/deprecated';
|
5
6
|
import { STATUS } from 'foremanReact/constants';
|
6
7
|
import { translate as __ } from 'foremanReact/common/I18n';
|
8
|
+
import { FormattedMessage } from 'react-intl';
|
7
9
|
import EnvironmentPaths from '../../../../components/EnvironmentPaths/EnvironmentPaths';
|
8
10
|
import getContentViews from '../../../../ContentViewsActions';
|
9
11
|
import { selectContentViewError, selectContentViews, selectContentViewStatus } from '../../../../ContentViewSelectors';
|
@@ -12,6 +14,7 @@ import AffectedHosts from '../affectedHosts';
|
|
12
14
|
import DeleteContext from '../DeleteContext';
|
13
15
|
import ContentViewSelect from '../../../../components/ContentViewSelect/ContentViewSelect';
|
14
16
|
import { getCVPlaceholderText, shouldDisableCVSelect } from '../../../../components/ContentViewSelect/helpers';
|
17
|
+
import { selectEnvironmentPaths } from '../../../../components/EnvironmentPaths/EnvironmentPathSelectors';
|
15
18
|
|
16
19
|
const CVReassignHostsForm = () => {
|
17
20
|
const dispatch = useDispatch();
|
@@ -28,8 +31,40 @@ const CVReassignHostsForm = () => {
|
|
28
31
|
} = useContext(DeleteContext);
|
29
32
|
const [alertDismissed, setAlertDismissed] = useState(false);
|
30
33
|
const hostResponse = useSelector(selectCVHosts);
|
34
|
+
const environmentPathResponse = useSelector(state => selectEnvironmentPaths(state));
|
31
35
|
|
32
|
-
const
|
36
|
+
const contentSourceIds = new Set((hostResponse?.results || [])
|
37
|
+
.map(host => host.content_facet_attributes?.content_source_id)
|
38
|
+
.filter(id => id));
|
39
|
+
|
40
|
+
const lifecycleEnvironments = environmentPathResponse?.results?.map(path =>
|
41
|
+
path.environments).flat() || [];
|
42
|
+
|
43
|
+
const enabledLifecycleEnvironmentIds = new Set();
|
44
|
+
|
45
|
+
if (lifecycleEnvironments) {
|
46
|
+
lifecycleEnvironments.forEach((env) => {
|
47
|
+
if (env.capsules) {
|
48
|
+
env.capsules.forEach((capsule) => {
|
49
|
+
if (contentSourceIds.has(capsule.id) && capsule.lifecycle_environments) {
|
50
|
+
capsule.lifecycle_environments.forEach((le) => {
|
51
|
+
enabledLifecycleEnvironmentIds.add(le.id);
|
52
|
+
});
|
53
|
+
}
|
54
|
+
});
|
55
|
+
}
|
56
|
+
});
|
57
|
+
}
|
58
|
+
|
59
|
+
const disabledEnvs = enabledLifecycleEnvironmentIds.size
|
60
|
+
? lifecycleEnvironments.filter(env => !enabledLifecycleEnvironmentIds.has(env.id))
|
61
|
+
: [];
|
62
|
+
|
63
|
+
const showAlert = disabledEnvs.length > 0;
|
64
|
+
|
65
|
+
const affectedHostIds = (hostResponse?.results || []).map(host => host.id).join(',');
|
66
|
+
|
67
|
+
const multiCVInfo = hostResponse?.results?.some?.(host =>
|
33
68
|
host.content_facet_attributes?.multi_content_view_environment);
|
34
69
|
|
35
70
|
const multiCVRemovalInfo = __('This content view version is used in one or more multi-environment hosts. The version will simply be removed from the multi-environment hosts. The content view and lifecycle environment you select here will only apply to single-environment hosts. See hammer activation-key --help for more details.');
|
@@ -111,23 +146,45 @@ const CVReassignHostsForm = () => {
|
|
111
146
|
|
112
147
|
return (
|
113
148
|
<>
|
114
|
-
{!alertDismissed &&
|
149
|
+
{!alertDismissed && multiCVInfo && (
|
115
150
|
<Alert
|
116
|
-
ouiaId="multi-cv-
|
117
|
-
variant="
|
151
|
+
ouiaId="multi-cv-info-alert"
|
152
|
+
variant="info"
|
118
153
|
isInline
|
119
|
-
title={__('
|
154
|
+
title={__('Multi-environment host(s) affected')}
|
120
155
|
actionClose={<AlertActionCloseButton onClose={() => setAlertDismissed(true)} />}
|
121
156
|
>
|
122
157
|
<p>{multiCVRemovalInfo}</p>
|
123
158
|
</Alert>
|
124
159
|
)}
|
160
|
+
{showAlert && (
|
161
|
+
<Alert
|
162
|
+
variant="info"
|
163
|
+
ouiaId="disabled-environments-alert"
|
164
|
+
isInline
|
165
|
+
title={__('Some environments are disabled because they are not associated with all of the affected hosts\' content sources.')}
|
166
|
+
style={{ marginBottom: '1rem' }}
|
167
|
+
>
|
168
|
+
<FormattedMessage
|
169
|
+
id="hosts.changeContentSourcePrompt"
|
170
|
+
defaultMessage="To enable them, add the environment to the hosts' content sources, or {link}."
|
171
|
+
values={{
|
172
|
+
link: (
|
173
|
+
<a href={`/change_host_content_source?search=id ^ (${affectedHostIds})`}>
|
174
|
+
{__('assign a new content source to the hosts')}
|
175
|
+
</a>
|
176
|
+
),
|
177
|
+
}}
|
178
|
+
/>
|
179
|
+
</Alert>
|
180
|
+
)}
|
125
181
|
<EnvironmentPaths
|
126
182
|
userCheckedItems={selectedEnvForHost}
|
127
183
|
setUserCheckedItems={setSelectedEnvForHost}
|
128
184
|
publishing={false}
|
129
185
|
headerText={__('Select lifecycle environment')}
|
130
186
|
multiSelect={false}
|
187
|
+
enabledLifecycleEnvironmentIds={enabledLifecycleEnvironmentIds}
|
131
188
|
/>
|
132
189
|
<ContentViewSelect
|
133
190
|
onClear={onClear}
|
@@ -146,7 +203,7 @@ const CVReassignHostsForm = () => {
|
|
146
203
|
</ContentViewSelect>
|
147
204
|
<ExpandableSection
|
148
205
|
toggleText={showHosts ? 'Hide hosts' : 'Show hosts'}
|
149
|
-
onToggle={expanded => setShowHosts(expanded)}
|
206
|
+
onToggle={(_event, expanded) => setShowHosts(expanded)}
|
150
207
|
isExpanded={showHosts}
|
151
208
|
>
|
152
209
|
<AffectedHosts
|
data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionRemoveReview.js
CHANGED
@@ -1,24 +1,24 @@
|
|
1
1
|
import React, { useContext, useState } from 'react';
|
2
2
|
import { useSelector } from 'react-redux';
|
3
|
-
import { Alert, Flex, FlexItem, Label, AlertActionCloseButton } from '@patternfly/react-core';
|
3
|
+
import { Alert, Flex, FlexItem, Label, AlertActionCloseButton, ExpandableSection } from '@patternfly/react-core';
|
4
4
|
import { ExclamationTriangleIcon } from '@patternfly/react-icons';
|
5
5
|
import { FormattedMessage } from 'react-intl';
|
6
6
|
import { translate as __ } from 'foremanReact/common/I18n';
|
7
|
-
import {
|
7
|
+
import { selectCVVersions } from '../../../ContentViewDetailSelectors';
|
8
8
|
import DeleteContext from '../DeleteContext';
|
9
9
|
import WizardHeader from '../../../../components/WizardHeader';
|
10
|
+
import AffectedHosts from '../affectedHosts';
|
11
|
+
import AffectedActivationKeys from '../affectedActivationKeys';
|
10
12
|
|
11
13
|
const CVVersionRemoveReview = () => {
|
12
14
|
const [alertDismissed, setAlertDismissed] = useState(false);
|
15
|
+
const [showHosts, setShowHosts] = useState(false);
|
16
|
+
const [showAKs, setShowAKs] = useState(false);
|
13
17
|
const {
|
14
|
-
cvId, versionIdToRemove, versionNameToRemove, selectedEnvSet,
|
18
|
+
cvId, versionEnvironments, versionIdToRemove, versionNameToRemove, selectedEnvSet,
|
15
19
|
selectedEnvForAK, selectedCVNameForAK, selectedCVNameForHosts,
|
16
|
-
selectedEnvForHost,
|
20
|
+
selectedEnvForHost, deleteFlow, removeDeletionFlow,
|
17
21
|
} = useContext(DeleteContext);
|
18
|
-
const activationKeysResponse = useSelector(state => selectCVActivationKeys(state, cvId));
|
19
|
-
const hostsResponse = useSelector(state => selectCVHosts(state, cvId));
|
20
|
-
const { results: hostResponse = [] } = hostsResponse || {};
|
21
|
-
const { results: akResponse = [] } = activationKeysResponse || {};
|
22
22
|
const cvVersions = useSelector(state => selectCVVersions(state, cvId));
|
23
23
|
const versionDeleteInfo = __(`Version ${versionNameToRemove} will be deleted from all environments. It will no longer be available for promotion.`);
|
24
24
|
const removalNotice = __(`Version ${versionNameToRemove} will be removed from the environments listed below, and will remain available for later promotion. ` +
|
@@ -29,16 +29,19 @@ const CVVersionRemoveReview = () => {
|
|
29
29
|
.flatMap(cv => cv.content_view_environments || [])
|
30
30
|
.filter(env => selectedEnvSet.has(env.environment_id));
|
31
31
|
|
32
|
-
const
|
33
|
-
host.content_facet_attributes?.multi_content_view_environment) || [];
|
34
|
-
const multiCVHostsCount = multiCVHosts.length;
|
32
|
+
const selectedEnvs = versionEnvironments.filter(env => selectedEnvSet.has(env.id));
|
35
33
|
|
36
|
-
const
|
34
|
+
const hostCount = selectedEnvs.reduce((sum, env) =>
|
35
|
+
sum + (env.host_count || 0), 0);
|
36
|
+
const multiCVHostsCount = selectedEnvs.reduce((sum, env) =>
|
37
|
+
sum + (env.multi_env_host_count || 0), 0);
|
38
|
+
const singleCVHostsCount = hostCount - multiCVHostsCount;
|
37
39
|
|
38
|
-
const
|
39
|
-
|
40
|
-
|
41
|
-
|
40
|
+
const akCount = selectedEnvs.reduce((sum, env) =>
|
41
|
+
sum + (env.activation_key_count || 0), 0);
|
42
|
+
const multiCVActivationKeysCount = selectedEnvs.reduce((sum, env) =>
|
43
|
+
sum + (env.multi_env_ak_count || 0), 0);
|
44
|
+
const singleCVActivationKeysCount = akCount - multiCVActivationKeysCount;
|
42
45
|
|
43
46
|
return (
|
44
47
|
<>
|
@@ -63,10 +66,10 @@ const CVVersionRemoveReview = () => {
|
|
63
66
|
</Flex>
|
64
67
|
<Flex>
|
65
68
|
{selectedCVE?.map(({ environment_name: name, environment_id: id }) =>
|
66
|
-
<FlexItem key={name}><Label
|
69
|
+
<FlexItem key={name}><Label color="purple" href={`/lifecycle_environments/${id}`}>{name}</Label></FlexItem>)}
|
67
70
|
</Flex>
|
68
71
|
</>}
|
69
|
-
{
|
72
|
+
{hostCount > 0 &&
|
70
73
|
<>
|
71
74
|
<h3>{__('Content hosts')}</h3>
|
72
75
|
{singleCVHostsCount > 0 && (
|
@@ -82,7 +85,7 @@ const CVVersionRemoveReview = () => {
|
|
82
85
|
plural: __('hosts'),
|
83
86
|
cvName: selectedCVNameForHosts,
|
84
87
|
envName: selectedEnvForHost[0] && (
|
85
|
-
<Label
|
88
|
+
<Label color="purple" href={`/lifecycle_environments/${selectedEnvForHost[0].id}`}>
|
86
89
|
{selectedEnvForHost[0].name}
|
87
90
|
</Label>
|
88
91
|
),
|
@@ -121,8 +124,22 @@ const CVVersionRemoveReview = () => {
|
|
121
124
|
</FlexItem>
|
122
125
|
</Flex>
|
123
126
|
)}
|
127
|
+
<ExpandableSection
|
128
|
+
toggleText={showHosts ? 'Hide hosts' : 'Show hosts'}
|
129
|
+
onToggle={() => setShowHosts(prev => !prev)}
|
130
|
+
isExpanded={showHosts}
|
131
|
+
>
|
132
|
+
<AffectedHosts
|
133
|
+
{...{
|
134
|
+
cvId,
|
135
|
+
versionEnvironments,
|
136
|
+
selectedEnvSet,
|
137
|
+
}}
|
138
|
+
deleteCV={false}
|
139
|
+
/>
|
140
|
+
</ExpandableSection>
|
124
141
|
</>}
|
125
|
-
{
|
142
|
+
{akCount > 0 &&
|
126
143
|
<>
|
127
144
|
<h3>{__('Activation keys')}</h3>
|
128
145
|
{singleCVActivationKeysCount > 0 && (
|
@@ -138,7 +155,7 @@ const CVVersionRemoveReview = () => {
|
|
138
155
|
plural: __('activation keys'),
|
139
156
|
cvName: selectedCVNameForAK,
|
140
157
|
envName: selectedEnvForAK[0] && (
|
141
|
-
<Label
|
158
|
+
<Label color="purple" href={`/lifecycle_environments/${selectedEnvForAK[0].id}`}>
|
142
159
|
{selectedEnvForAK[0].name}
|
143
160
|
</Label>
|
144
161
|
),
|
@@ -177,6 +194,20 @@ const CVVersionRemoveReview = () => {
|
|
177
194
|
</FlexItem>
|
178
195
|
</Flex>
|
179
196
|
)}
|
197
|
+
<ExpandableSection
|
198
|
+
toggleText={showAKs ? 'Hide activation keys' : 'Show activation keys'}
|
199
|
+
onToggle={() => setShowAKs(prev => !prev)}
|
200
|
+
isExpanded={showAKs}
|
201
|
+
>
|
202
|
+
<AffectedActivationKeys
|
203
|
+
{...{
|
204
|
+
cvId,
|
205
|
+
versionEnvironments,
|
206
|
+
selectedEnvSet,
|
207
|
+
}}
|
208
|
+
deleteCV={false}
|
209
|
+
/>
|
210
|
+
</ExpandableSection>
|
180
211
|
</>}
|
181
212
|
</>
|
182
213
|
);
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
import { renderWithRedux, patientlyWaitFor, fireEvent } from 'react-testing-lib-wrapper';
|
3
|
-
import { nockInstance, assertNockRequest, mockAutocomplete
|
3
|
+
import { nockInstance, assertNockRequest, mockAutocomplete } from '../../../../../../test-utils/nockWrapper';
|
4
4
|
import api, { foremanApi } from '../../../../../../services/api';
|
5
5
|
import CONTENT_VIEWS_KEY from '../../../../ContentViewsConstants';
|
6
6
|
import ContentViewVersions from '../../ContentViewVersions';
|
@@ -61,7 +61,8 @@ test('Can call API and show versions on page load', async (done) => {
|
|
61
61
|
expect(getByText(`Version ${firstVersion.version}`)).toBeTruthy();
|
62
62
|
});
|
63
63
|
assertNockRequest(autocompleteScope);
|
64
|
-
assertNockRequest(scope
|
64
|
+
assertNockRequest(scope);
|
65
|
+
done();
|
65
66
|
});
|
66
67
|
|
67
68
|
test('Can open Remove wizard and remove version from simple environment', async (done) => {
|
@@ -97,9 +98,9 @@ test('Can open Remove wizard and remove version from simple environment', async
|
|
97
98
|
expect(getByText(`Version ${firstVersion.version}`)).toBeTruthy();
|
98
99
|
});
|
99
100
|
// Expand Row Action
|
100
|
-
expect(getAllByLabelText('
|
101
|
-
fireEvent.click(getAllByLabelText('
|
102
|
-
expect(getAllByLabelText('
|
101
|
+
expect(getAllByLabelText('Kebab toggle')[0]).toHaveAttribute('aria-expanded', 'false');
|
102
|
+
fireEvent.click(getAllByLabelText('Kebab toggle')[0]);
|
103
|
+
expect(getAllByLabelText('Kebab toggle')[0]).toHaveAttribute('aria-expanded', 'true');
|
103
104
|
fireEvent.click(getByText('Remove from environments'));
|
104
105
|
await patientlyWaitFor(() => {
|
105
106
|
expect(getByText('Remove Version')).toBeInTheDocument();
|
@@ -115,13 +116,18 @@ test('Can open Remove wizard and remove version from simple environment', async
|
|
115
116
|
assertNockRequest(scope);
|
116
117
|
assertNockRequest(autocompleteScope);
|
117
118
|
assertNockRequest(envPathRemovalScope);
|
118
|
-
assertNockRequest(versionRemovalScope
|
119
|
+
assertNockRequest(versionRemovalScope);
|
120
|
+
done();
|
119
121
|
});
|
120
122
|
|
121
123
|
test('Can open Remove wizard and remove version from environment with hosts', async (done) => {
|
122
124
|
const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl);
|
123
125
|
const hostAutocompleteUrl = '/hosts/auto_complete_search';
|
124
|
-
const hostAutocompleteScope =
|
126
|
+
const hostAutocompleteScope = nockInstance
|
127
|
+
.get(foremanApi.getApiUrl(hostAutocompleteUrl))
|
128
|
+
.query(true)
|
129
|
+
.times(2)
|
130
|
+
.reply(200, []);
|
125
131
|
|
126
132
|
const scope = nockInstance
|
127
133
|
.get(cvVersions)
|
@@ -136,6 +142,7 @@ test('Can open Remove wizard and remove version from environment with hosts', as
|
|
136
142
|
const hostScope = nockInstance
|
137
143
|
.get(hostURL)
|
138
144
|
.query(true)
|
145
|
+
.times(2)
|
139
146
|
.reply(200, affectedHostData);
|
140
147
|
|
141
148
|
const cVDropDownOptionsScope = nockInstance
|
@@ -166,9 +173,9 @@ test('Can open Remove wizard and remove version from environment with hosts', as
|
|
166
173
|
expect(getByText(`Version ${firstVersion.version}`)).toBeTruthy();
|
167
174
|
});
|
168
175
|
// Expand Row Action
|
169
|
-
expect(getAllByLabelText('
|
170
|
-
fireEvent.click(getAllByLabelText('
|
171
|
-
expect(getAllByLabelText('
|
176
|
+
expect(getAllByLabelText('Kebab toggle')[0]).toHaveAttribute('aria-expanded', 'false');
|
177
|
+
fireEvent.click(getAllByLabelText('Kebab toggle')[0]);
|
178
|
+
expect(getAllByLabelText('Kebab toggle')[0]).toHaveAttribute('aria-expanded', 'true');
|
172
179
|
fireEvent.click(getByText('Remove from environments'));
|
173
180
|
await patientlyWaitFor(() => {
|
174
181
|
expect(getByText('Remove Version')).toBeInTheDocument();
|
@@ -202,13 +209,18 @@ test('Can open Remove wizard and remove version from environment with hosts', as
|
|
202
209
|
assertNockRequest(hostScope);
|
203
210
|
assertNockRequest(cVDropDownOptionsScope);
|
204
211
|
assertNockRequest(envPathRemovalScope);
|
205
|
-
assertNockRequest(versionRemovalScope
|
212
|
+
assertNockRequest(versionRemovalScope);
|
213
|
+
done();
|
206
214
|
});
|
207
215
|
|
208
216
|
test('Can open Remove wizard and remove version from environment with activation keys', async (done) => {
|
209
217
|
const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl);
|
210
218
|
const akAutocompleteUrl = '/activation_keys/auto_complete_search';
|
211
|
-
const akAutocompleteScope =
|
219
|
+
const akAutocompleteScope = nockInstance
|
220
|
+
.get(api.getApiUrl(akAutocompleteUrl))
|
221
|
+
.query(true)
|
222
|
+
.times(2)
|
223
|
+
.reply(200, []);
|
212
224
|
|
213
225
|
const scope = nockInstance
|
214
226
|
.get(cvVersions)
|
@@ -223,6 +235,7 @@ test('Can open Remove wizard and remove version from environment with activation
|
|
223
235
|
const activationKeysScope = nockInstance
|
224
236
|
.get(activationKeyURL)
|
225
237
|
.query(true)
|
238
|
+
.times(2)
|
226
239
|
.reply(200, affectedActivationKeysData);
|
227
240
|
|
228
241
|
const cVDropDownOptionsScope = nockInstance
|
@@ -253,9 +266,9 @@ test('Can open Remove wizard and remove version from environment with activation
|
|
253
266
|
expect(getByText(`Version ${firstVersion.version}`)).toBeTruthy();
|
254
267
|
});
|
255
268
|
// Expand Row Action
|
256
|
-
expect(getAllByLabelText('
|
257
|
-
fireEvent.click(getAllByLabelText('
|
258
|
-
expect(getAllByLabelText('
|
269
|
+
expect(getAllByLabelText('Kebab toggle')[0]).toHaveAttribute('aria-expanded', 'false');
|
270
|
+
fireEvent.click(getAllByLabelText('Kebab toggle')[0]);
|
271
|
+
expect(getAllByLabelText('Kebab toggle')[0]).toHaveAttribute('aria-expanded', 'true');
|
259
272
|
fireEvent.click(getByText('Remove from environments'));
|
260
273
|
await patientlyWaitFor(() => {
|
261
274
|
expect(getByText('Remove Version')).toBeInTheDocument();
|
@@ -290,5 +303,6 @@ test('Can open Remove wizard and remove version from environment with activation
|
|
290
303
|
assertNockRequest(activationKeysScope);
|
291
304
|
assertNockRequest(cVDropDownOptionsScope);
|
292
305
|
assertNockRequest(envPathRemovalScope);
|
293
|
-
assertNockRequest(versionRemovalScope
|
306
|
+
assertNockRequest(versionRemovalScope);
|
307
|
+
done();
|
294
308
|
});
|
data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.scss
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
.content-view-header-content {
|
2
2
|
padding-top: 24px;
|
3
3
|
|
4
|
-
.pf-c-content {
|
4
|
+
.pf-v5-c-content {
|
5
5
|
dl {
|
6
6
|
margin: 0;
|
7
7
|
}
|
8
8
|
}
|
9
9
|
|
10
|
-
.pf-l-flex {
|
10
|
+
.pf-v5-l-flex {
|
11
11
|
padding-top: 24px;
|
12
12
|
}
|
13
13
|
}
|
@@ -17,30 +17,30 @@
|
|
17
17
|
margin-top: 24px;
|
18
18
|
display: flex;
|
19
19
|
|
20
|
-
.pf-c-tabs.pf-m-vertical {
|
20
|
+
.pf-v5-c-tabs.pf-m-vertical {
|
21
21
|
max-width: 230px;
|
22
22
|
border-right: 1px solid #d2d2d2;
|
23
23
|
|
24
|
-
.pf-c-tabs__item {
|
24
|
+
.pf-v5-c-tabs__item {
|
25
25
|
margin-top: 0;
|
26
26
|
|
27
27
|
button {
|
28
28
|
align-items: center;
|
29
29
|
|
30
|
-
.pf-c-label__content {
|
30
|
+
.pf-v5-c-label__content {
|
31
31
|
&::before {
|
32
32
|
border: none;
|
33
33
|
}
|
34
34
|
}
|
35
35
|
}
|
36
36
|
|
37
|
-
&.pf-m-current .pf-c-label__content {
|
37
|
+
&.pf-m-current .pf-v5-c-label__content {
|
38
38
|
font-weight: bold;
|
39
39
|
}
|
40
40
|
}
|
41
41
|
}
|
42
42
|
|
43
|
-
.pf-l-grid.pf-m-gutter {
|
43
|
+
.pf-v5-l-grid.pf-m-gutter {
|
44
44
|
display: initial;
|
45
45
|
width: 100%;
|
46
46
|
}
|
data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsHeader.js
CHANGED
@@ -11,11 +11,13 @@ import {
|
|
11
11
|
Label,
|
12
12
|
Flex,
|
13
13
|
FlexItem,
|
14
|
+
} from '@patternfly/react-core';
|
15
|
+
import {
|
14
16
|
Dropdown,
|
15
17
|
DropdownItem,
|
16
18
|
KebabToggle,
|
17
19
|
DropdownPosition,
|
18
|
-
} from '@patternfly/react-core';
|
20
|
+
} from '@patternfly/react-core/deprecated';
|
19
21
|
import { useHistory } from 'react-router-dom';
|
20
22
|
import { translate as __ } from 'foremanReact/common/I18n';
|
21
23
|
import { hasPermission } from '../../../helpers';
|
@@ -131,7 +133,7 @@ const ContentViewVersionDetailsHeader = ({
|
|
131
133
|
style={{ width: 'inherit' }}
|
132
134
|
position={DropdownPosition.right}
|
133
135
|
toggle={
|
134
|
-
<KebabToggle onToggle={setDropdownOpen} id="toggle-dropdown" />
|
136
|
+
<KebabToggle onToggle={(_event, val) => setDropdownOpen(val)} id="toggle-dropdown" />
|
135
137
|
}
|
136
138
|
isOpen={dropdownOpen}
|
137
139
|
dropdownItems={dropDownItems}
|
@@ -153,7 +155,7 @@ const ContentViewVersionDetailsHeader = ({
|
|
153
155
|
<Flex>
|
154
156
|
{environments?.map(({ name, id: envId }) => (
|
155
157
|
<FlexItem key={name}>
|
156
|
-
<Label
|
158
|
+
<Label color="purple" href={`/lifecycle_environments/${envId}`}>{name}</Label>
|
157
159
|
</FlexItem>))}
|
158
160
|
</Flex>
|
159
161
|
</GridItem>
|
data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsTable.js
CHANGED
@@ -9,10 +9,12 @@ import {
|
|
9
9
|
} from 'react-redux';
|
10
10
|
import {
|
11
11
|
Grid,
|
12
|
+
} from '@patternfly/react-core';
|
13
|
+
import {
|
12
14
|
Select,
|
13
15
|
SelectOption,
|
14
16
|
SelectVariant,
|
15
|
-
} from '@patternfly/react-core';
|
17
|
+
} from '@patternfly/react-core/deprecated';
|
16
18
|
import {
|
17
19
|
TableVariant,
|
18
20
|
Tbody,
|
@@ -94,7 +96,7 @@ const ContentViewVersionDetailsTable = ({
|
|
94
96
|
actionButtons={
|
95
97
|
repoType &&
|
96
98
|
<Select
|
97
|
-
onToggle={setOpen}
|
99
|
+
onToggle={(_event, val) => setOpen(val)}
|
98
100
|
isOpen={open}
|
99
101
|
ouiaId="repo-type-selector"
|
100
102
|
variant={SelectVariant.single}
|
@@ -108,7 +108,8 @@ test('Can show versions details - Components Tab', async (done) => {
|
|
108
108
|
|
109
109
|
assertNockRequest(scope);
|
110
110
|
assertNockRequest(scope);
|
111
|
-
assertNockRequest(componentScope
|
111
|
+
assertNockRequest(componentScope);
|
112
|
+
done();
|
112
113
|
});
|
113
114
|
|
114
115
|
const testConfig = [
|
@@ -255,7 +256,8 @@ testConfig.forEach(({
|
|
255
256
|
assertNockRequest(autocompleteScope);
|
256
257
|
assertNockRequest(scope);
|
257
258
|
assertNockRequest(tabScope);
|
258
|
-
assertNockRequest(scope
|
259
|
+
assertNockRequest(scope);
|
260
|
+
done();
|
259
261
|
}));
|
260
262
|
|
261
263
|
test('Can change repository selector', async (done) => {
|
@@ -317,5 +319,6 @@ test('Can change repository selector', async (done) => {
|
|
317
319
|
assertNockRequest(autocompleteScope);
|
318
320
|
assertNockRequest(scope);
|
319
321
|
assertNockRequest(tabScope);
|
320
|
-
assertNockRequest(scope
|
322
|
+
assertNockRequest(scope);
|
323
|
+
done();
|
321
324
|
});
|
@@ -59,6 +59,7 @@ test('Can show versions detail header', async (done) => {
|
|
59
59
|
await patientlyWaitFor(() => {
|
60
60
|
expect(getByText(`Version ${version}`)).toBeInTheDocument();
|
61
61
|
});
|
62
|
-
assertNockRequest(scope
|
62
|
+
assertNockRequest(scope);
|
63
|
+
done();
|
63
64
|
act(done);// Need to tell the test to stahp!
|
64
65
|
});
|