katello 4.16.0 → 4.17.0.rc1
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/candlepin/environment/set_content.rb +2 -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/orchestration/repository/trigger_update_repo_cert_guard.rb +1 -1
- 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/candlepin/repository_mapper.rb +1 -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/flatpak_install.erb +10 -2
- data/app/views/foreman/job_templates/flatpak_login_action.erb +2 -5
- 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/repository_types/python.rb +1 -1
- data/lib/katello/tasks/repository.rake +1 -1
- data/lib/katello/version.rb +1 -1
- data/locale/action_names.rb +186 -0
- data/locale/bn/LC_MESSAGES/katello.mo +0 -0
- data/locale/bn/katello.po +82 -31
- data/locale/bn/katello.po.time_stamp +0 -0
- data/locale/bn_IN/LC_MESSAGES/katello.mo +0 -0
- data/locale/bn_IN/katello.po +82 -31
- data/locale/bn_IN/katello.po.time_stamp +0 -0
- data/locale/ca/LC_MESSAGES/katello.mo +0 -0
- data/locale/ca/katello.po +82 -31
- data/locale/ca/katello.po.time_stamp +0 -0
- data/locale/cs/LC_MESSAGES/katello.mo +0 -0
- data/locale/cs/katello.po +82 -31
- data/locale/cs/katello.po.time_stamp +0 -0
- data/locale/cs_CZ/LC_MESSAGES/katello.mo +0 -0
- data/locale/cs_CZ/katello.po +83 -32
- data/locale/cs_CZ/katello.po.time_stamp +0 -0
- data/locale/de/LC_MESSAGES/katello.mo +0 -0
- data/locale/de/katello.po +82 -31
- data/locale/de/katello.po.time_stamp +0 -0
- data/locale/de_AT/LC_MESSAGES/katello.mo +0 -0
- data/locale/de_AT/katello.po +82 -31
- data/locale/de_AT/katello.po.time_stamp +0 -0
- data/locale/de_DE/LC_MESSAGES/katello.mo +0 -0
- data/locale/de_DE/katello.po +82 -31
- data/locale/de_DE/katello.po.time_stamp +0 -0
- data/locale/el/LC_MESSAGES/katello.mo +0 -0
- data/locale/el/katello.po +82 -31
- data/locale/el/katello.po.time_stamp +0 -0
- data/locale/en/LC_MESSAGES/katello.mo +0 -0
- data/locale/en/katello.po +82 -31
- data/locale/en/katello.po.time_stamp +0 -0
- data/locale/en_GB/LC_MESSAGES/katello.mo +0 -0
- data/locale/en_GB/katello.po +84 -33
- data/locale/en_GB/katello.po.time_stamp +0 -0
- data/locale/en_US/LC_MESSAGES/katello.mo +0 -0
- data/locale/en_US/katello.po +82 -31
- data/locale/en_US/katello.po.time_stamp +0 -0
- data/locale/es/LC_MESSAGES/katello.mo +0 -0
- data/locale/es/katello.po +82 -31
- data/locale/es/katello.po.time_stamp +0 -0
- data/locale/et_EE/LC_MESSAGES/katello.mo +0 -0
- data/locale/et_EE/katello.po +82 -31
- data/locale/et_EE/katello.po.time_stamp +0 -0
- data/locale/fr/LC_MESSAGES/katello.mo +0 -0
- data/locale/fr/katello.po +83 -32
- data/locale/fr/katello.po.time_stamp +0 -0
- data/locale/gl/LC_MESSAGES/katello.mo +0 -0
- data/locale/gl/katello.po +82 -31
- data/locale/gl/katello.po.time_stamp +0 -0
- data/locale/gu/LC_MESSAGES/katello.mo +0 -0
- data/locale/gu/katello.po +84 -33
- data/locale/gu/katello.po.time_stamp +0 -0
- data/locale/he_IL/LC_MESSAGES/katello.mo +0 -0
- data/locale/he_IL/katello.po +82 -31
- data/locale/he_IL/katello.po.time_stamp +0 -0
- data/locale/hi/LC_MESSAGES/katello.mo +0 -0
- data/locale/hi/katello.po +82 -31
- data/locale/hi/katello.po.time_stamp +0 -0
- data/locale/id/LC_MESSAGES/katello.mo +0 -0
- data/locale/id/katello.po +82 -31
- data/locale/id/katello.po.time_stamp +0 -0
- data/locale/it/LC_MESSAGES/katello.mo +0 -0
- data/locale/it/katello.po +85 -34
- data/locale/it/katello.po.time_stamp +0 -0
- data/locale/ja/LC_MESSAGES/katello.mo +0 -0
- data/locale/ja/katello.po +83 -32
- data/locale/ja/katello.po.time_stamp +0 -0
- data/locale/ka/LC_MESSAGES/katello.mo +0 -0
- data/locale/ka/katello.po +82 -31
- data/locale/ka/katello.po.time_stamp +0 -0
- data/locale/katello.pot +1232 -1140
- data/locale/kn/LC_MESSAGES/katello.mo +0 -0
- data/locale/kn/katello.po +82 -31
- data/locale/kn/katello.po.time_stamp +0 -0
- data/locale/ko/LC_MESSAGES/katello.mo +0 -0
- data/locale/ko/katello.po +82 -31
- data/locale/ko/katello.po.time_stamp +0 -0
- data/locale/ml_IN/LC_MESSAGES/katello.mo +0 -0
- data/locale/ml_IN/katello.po +82 -31
- data/locale/ml_IN/katello.po.time_stamp +0 -0
- data/locale/mr/LC_MESSAGES/katello.mo +0 -0
- data/locale/mr/katello.po +82 -31
- data/locale/mr/katello.po.time_stamp +0 -0
- data/locale/nl_NL/LC_MESSAGES/katello.mo +0 -0
- data/locale/nl_NL/katello.po +82 -31
- data/locale/nl_NL/katello.po.time_stamp +0 -0
- data/locale/or/LC_MESSAGES/katello.mo +0 -0
- data/locale/or/katello.po +82 -31
- data/locale/or/katello.po.time_stamp +0 -0
- data/locale/pa/LC_MESSAGES/katello.mo +0 -0
- data/locale/pa/katello.po +82 -31
- data/locale/pa/katello.po.time_stamp +0 -0
- data/locale/pl/LC_MESSAGES/katello.mo +0 -0
- data/locale/pl/katello.po +84 -33
- data/locale/pl/katello.po.time_stamp +0 -0
- data/locale/pl_PL/LC_MESSAGES/katello.mo +0 -0
- data/locale/pl_PL/katello.po +82 -31
- data/locale/pl_PL/katello.po.time_stamp +0 -0
- data/locale/pt/LC_MESSAGES/katello.mo +0 -0
- data/locale/pt/katello.po +82 -31
- data/locale/pt/katello.po.time_stamp +0 -0
- data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
- data/locale/pt_BR/katello.po +82 -31
- data/locale/pt_BR/katello.po.time_stamp +0 -0
- data/locale/ro/LC_MESSAGES/katello.mo +0 -0
- data/locale/ro/katello.po +82 -31
- data/locale/ro/katello.po.time_stamp +0 -0
- data/locale/ro_RO/LC_MESSAGES/katello.mo +0 -0
- data/locale/ro_RO/katello.po +82 -31
- data/locale/ro_RO/katello.po.time_stamp +0 -0
- data/locale/ru/LC_MESSAGES/katello.mo +0 -0
- data/locale/ru/katello.po +85 -34
- data/locale/ru/katello.po.time_stamp +0 -0
- data/locale/sl/LC_MESSAGES/katello.mo +0 -0
- data/locale/sl/katello.po +82 -31
- data/locale/sl/katello.po.time_stamp +0 -0
- data/locale/sv_SE/LC_MESSAGES/katello.mo +0 -0
- data/locale/sv_SE/katello.po +84 -33
- data/locale/sv_SE/katello.po.time_stamp +0 -0
- data/locale/ta/LC_MESSAGES/katello.mo +0 -0
- data/locale/ta/katello.po +82 -31
- data/locale/ta/katello.po.time_stamp +0 -0
- data/locale/ta_IN/LC_MESSAGES/katello.mo +0 -0
- data/locale/ta_IN/katello.po +82 -31
- data/locale/ta_IN/katello.po.time_stamp +0 -0
- data/locale/te/LC_MESSAGES/katello.mo +0 -0
- data/locale/te/katello.po +82 -31
- data/locale/te/katello.po.time_stamp +0 -0
- data/locale/tr/LC_MESSAGES/katello.mo +0 -0
- data/locale/tr/katello.po +82 -31
- data/locale/tr/katello.po.time_stamp +0 -0
- data/locale/vi/LC_MESSAGES/katello.mo +0 -0
- data/locale/vi/katello.po +82 -31
- data/locale/vi/katello.po.time_stamp +0 -0
- data/locale/vi_VN/LC_MESSAGES/katello.mo +0 -0
- data/locale/vi_VN/katello.po +82 -31
- data/locale/vi_VN/katello.po.time_stamp +0 -0
- data/locale/zh/LC_MESSAGES/katello.mo +0 -0
- data/locale/zh/katello.po +82 -31
- data/locale/zh/katello.po.time_stamp +0 -0
- data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
- data/locale/zh_CN/katello.po +83 -32
- data/locale/zh_CN/katello.po.time_stamp +0 -0
- data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
- data/locale/zh_TW/katello.po +85 -34
- data/locale/zh_TW/katello.po.time_stamp +0 -0
- 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 +2 -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 +122 -41
- data/app/models/katello/yum_metadata_file.rb +0 -22
- data/app/services/katello/pulp3/yum_metadata_file.rb +0 -20
@@ -1,5 +1,5 @@
|
|
1
1
|
import React from 'react';
|
2
|
-
import { renderWithRedux, patientlyWaitFor, fireEvent } from 'react-testing-lib-wrapper';
|
2
|
+
import { renderWithRedux, patientlyWaitFor, fireEvent, act } from 'react-testing-lib-wrapper';
|
3
3
|
import * as hooks from 'foremanReact/components/PF4/TableIndexPage/Table/TableHooks';
|
4
4
|
import { nockInstance, assertNockRequest, mockForemanAutocomplete } from '../../../../../test-utils/nockWrapper';
|
5
5
|
import { foremanApi } from '../../../../../services/api';
|
@@ -79,7 +79,8 @@ test('Can call API for packages and show on screen on page load', async (done) =
|
|
79
79
|
await patientlyWaitFor(() => expect(getAllByText(firstPackage.name)[0]).toBeInTheDocument());
|
80
80
|
// Assert request was made and completed, see helper function
|
81
81
|
assertNockRequest(autocompleteScope);
|
82
|
-
assertNockRequest(scope
|
82
|
+
assertNockRequest(scope);
|
83
|
+
act(done); // Pass jest callback to confirm test is done
|
83
84
|
});
|
84
85
|
|
85
86
|
test('Can handle no packages being present', async (done) => {
|
@@ -105,7 +106,8 @@ test('Can handle no packages being present', async (done) => {
|
|
105
106
|
await patientlyWaitFor(() => expect(queryByText('This host does not have any packages.')).toBeInTheDocument());
|
106
107
|
// Assert request was made and completed, see helper function
|
107
108
|
assertNockRequest(autocompleteScope);
|
108
|
-
assertNockRequest(scope
|
109
|
+
assertNockRequest(scope);
|
110
|
+
act(done); // Pass jest callback to confirm test is done
|
109
111
|
});
|
110
112
|
|
111
113
|
test('Can filter by package status', async (done) => {
|
@@ -145,7 +147,8 @@ test('Can filter by package status', async (done) => {
|
|
145
147
|
|
146
148
|
assertNockRequest(autocompleteScope);
|
147
149
|
assertNockRequest(scope);
|
148
|
-
assertNockRequest(scope2
|
150
|
+
assertNockRequest(scope2);
|
151
|
+
act(done); // Pass jest callback to confirm test is done
|
149
152
|
});
|
150
153
|
|
151
154
|
test('Can upgrade a package via remote execution', async (done) => {
|
@@ -191,17 +194,20 @@ test('Can upgrade a package via remote execution', async (done) => {
|
|
191
194
|
expect(getByText('coreutils')).toBeInTheDocument();
|
192
195
|
});
|
193
196
|
|
194
|
-
const kebabDropdown = getByLabelText('
|
197
|
+
const kebabDropdown = getByLabelText('Kebab toggle');
|
195
198
|
kebabDropdown.click();
|
196
199
|
|
200
|
+
await patientlyWaitFor(() => expect(getByText('Upgrade via remote execution')).toBeInTheDocument());
|
197
201
|
const rexAction = getByText('Upgrade via remote execution');
|
198
|
-
await
|
199
|
-
|
202
|
+
await act(async () => {
|
203
|
+
fireEvent.click(rexAction);
|
204
|
+
});
|
200
205
|
|
201
206
|
assertNockRequest(autocompleteScope);
|
202
207
|
assertNockRequest(scope);
|
203
208
|
assertNockRequest(statusScope);
|
204
209
|
assertNockRequest(upgradeScope, done);
|
210
|
+
act(done);
|
205
211
|
});
|
206
212
|
|
207
213
|
test('Can upgrade a package via customized remote execution', async (done) => {
|
@@ -235,7 +241,7 @@ test('Can upgrade a package via customized remote execution', async (done) => {
|
|
235
241
|
expect(getByText('coreutils')).toBeInTheDocument();
|
236
242
|
});
|
237
243
|
|
238
|
-
const kebabDropdown = getByLabelText('
|
244
|
+
const kebabDropdown = getByLabelText('Kebab toggle');
|
239
245
|
kebabDropdown.click();
|
240
246
|
|
241
247
|
const rexAction = getByText('Upgrade via customized remote execution');
|
@@ -247,12 +253,14 @@ test('Can upgrade a package via customized remote execution', async (done) => {
|
|
247
253
|
'href',
|
248
254
|
`/job_invocations/new?feature=${feature}&search=name%20%5E%20(${hostname})&inputs%5Bpackage%5D=${packageName}`,
|
249
255
|
);
|
250
|
-
|
251
|
-
|
256
|
+
await act(async () => {
|
257
|
+
fireEvent.click(rexAction);
|
258
|
+
});
|
252
259
|
|
253
260
|
assertNockRequest(autocompleteScope);
|
254
261
|
assertNockRequest(scope);
|
255
262
|
assertNockRequest(statusScope, done);
|
263
|
+
act(done);
|
256
264
|
});
|
257
265
|
|
258
266
|
test('Can remove a package via remote execution', async (done) => {
|
@@ -283,13 +291,14 @@ test('Can remove a package via remote execution', async (done) => {
|
|
283
291
|
|
284
292
|
await patientlyWaitFor(() => expect(getAllByText(firstPackage.name)[0]).toBeInTheDocument());
|
285
293
|
|
286
|
-
const kebabDropdown = getByLabelText('
|
287
|
-
|
294
|
+
const kebabDropdown = getByLabelText('Kebab toggle');
|
295
|
+
fireEvent.click(kebabDropdown);
|
296
|
+
await patientlyWaitFor(() => expect(getByText('Remove')).toBeInTheDocument());
|
288
297
|
|
289
298
|
const rexAction = getByText('Remove');
|
290
|
-
await
|
291
|
-
|
292
|
-
|
299
|
+
await act(async () => {
|
300
|
+
fireEvent.click(rexAction);
|
301
|
+
});
|
293
302
|
assertNockRequest(autocompleteScope);
|
294
303
|
assertNockRequest(scope);
|
295
304
|
assertNockRequest(removeScope, done);
|
@@ -336,11 +345,13 @@ test('Can bulk remove a package via remote execution', async (done) => {
|
|
336
345
|
|
337
346
|
const rexAction = getByText('Remove');
|
338
347
|
await patientlyWaitFor(() => expect(rexAction).toBeInTheDocument());
|
339
|
-
|
340
|
-
|
348
|
+
await act(async () => {
|
349
|
+
fireEvent.click(rexAction);
|
350
|
+
});
|
341
351
|
assertNockRequest(autocompleteScope);
|
342
352
|
assertNockRequest(scope);
|
343
353
|
assertNockRequest(removeScope, done);
|
354
|
+
act(done);
|
344
355
|
});
|
345
356
|
|
346
357
|
test('Can bulk upgrade via remote execution', async (done) => {
|
@@ -381,14 +392,16 @@ test('Can bulk upgrade via remote execution', async (done) => {
|
|
381
392
|
|
382
393
|
const upgradeDropdown = getAllByRole('button', { name: 'Select' })[1];
|
383
394
|
fireEvent.click(upgradeDropdown);
|
384
|
-
|
385
395
|
const rexAction = getByLabelText('bulk_upgrade_rex');
|
386
396
|
expect(rexAction).toBeInTheDocument();
|
387
|
-
|
397
|
+
await act(async () => {
|
398
|
+
fireEvent.click(rexAction);
|
399
|
+
});
|
388
400
|
|
389
401
|
assertNockRequest(autocompleteScope);
|
390
402
|
assertNockRequest(scope);
|
391
|
-
assertNockRequest(upgradeScope
|
403
|
+
assertNockRequest(upgradeScope);
|
404
|
+
act(done);
|
392
405
|
});
|
393
406
|
|
394
407
|
test('Can bulk upgrade via customized remote execution', async (done) => {
|
@@ -427,7 +440,8 @@ test('Can bulk upgrade via customized remote execution', async (done) => {
|
|
427
440
|
expect(rexAction).toHaveAttribute('href', job);
|
428
441
|
|
429
442
|
assertNockRequest(autocompleteScope);
|
430
|
-
assertNockRequest(scope
|
443
|
+
assertNockRequest(scope);
|
444
|
+
act(done);
|
431
445
|
});
|
432
446
|
|
433
447
|
test('Upgrade is disabled when there are non-upgradable packages selected', async (done) => {
|
@@ -457,7 +471,8 @@ test('Upgrade is disabled when there are non-upgradable packages selected', asyn
|
|
457
471
|
expect(upgradeDropdown).toHaveAttribute('disabled');
|
458
472
|
|
459
473
|
assertNockRequest(autocompleteScope);
|
460
|
-
assertNockRequest(scope
|
474
|
+
assertNockRequest(scope);
|
475
|
+
act(done);
|
461
476
|
});
|
462
477
|
|
463
478
|
test('Remove is disabled when in select all mode', async (done) => {
|
@@ -483,7 +498,8 @@ test('Remove is disabled when in select all mode', async (done) => {
|
|
483
498
|
expect(removeButton).toHaveAttribute('aria-disabled', 'true');
|
484
499
|
|
485
500
|
assertNockRequest(autocompleteScope);
|
486
|
-
assertNockRequest(scope
|
501
|
+
assertNockRequest(scope);
|
502
|
+
act(done);
|
487
503
|
});
|
488
504
|
|
489
505
|
test('Sets initial search query from url params', async (done) => {
|
@@ -504,6 +520,7 @@ test('Sets initial search query from url params', async (done) => {
|
|
504
520
|
expect(queryByText(secondPackage.name)).not.toBeInTheDocument();
|
505
521
|
|
506
522
|
assertNockRequest(autocompleteScope);
|
507
|
-
assertNockRequest(scope
|
523
|
+
assertNockRequest(scope);
|
524
|
+
act(done); // Pass jest callback to confirm test is done
|
508
525
|
});
|
509
526
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import React from 'react';
|
2
|
-
import { renderWithRedux, patientlyWaitFor, within, fireEvent } from 'react-testing-lib-wrapper';
|
2
|
+
import { renderWithRedux, patientlyWaitFor, within, fireEvent, act } from 'react-testing-lib-wrapper';
|
3
3
|
import { nockInstance, assertNockRequest, mockAutocomplete } from '../../../../../test-utils/nockWrapper';
|
4
4
|
import katelloApi, { foremanApi } from '../../../../../services/api';
|
5
5
|
import { REPOSITORY_SETS_KEY } from '../RepositorySetsTab/RepositorySetsConstants';
|
@@ -83,7 +83,8 @@ test('Can call API for repository sets and show basic table', async (done) => {
|
|
83
83
|
// Assert that the repository sets are now showing on the screen, but wait for them to appear.
|
84
84
|
await patientlyWaitFor(() => expect(getByText(firstRepoSet.contentUrl)).toBeInTheDocument());
|
85
85
|
assertNockRequest(autocompleteScope);
|
86
|
-
assertNockRequest(scope
|
86
|
+
assertNockRequest(scope);
|
87
|
+
done(); // Pass jest callback to confirm test is done
|
87
88
|
});
|
88
89
|
|
89
90
|
test('Can handle no repository sets being present', async (done) => {
|
@@ -108,7 +109,8 @@ test('Can handle no repository sets being present', async (done) => {
|
|
108
109
|
await patientlyWaitFor(() => expect(queryByText('No repository sets to show.')).toBeInTheDocument());
|
109
110
|
// Assert request was made and completed, see helper function
|
110
111
|
assertNockRequest(autocompleteScope);
|
111
|
-
assertNockRequest(scope
|
112
|
+
assertNockRequest(scope);
|
113
|
+
done(); // Pass jest callback to confirm test is done
|
112
114
|
});
|
113
115
|
|
114
116
|
test('Toggle Group shows if it\'s not the default content view or library enviroment', async (done) => {
|
@@ -127,7 +129,8 @@ test('Toggle Group shows if it\'s not the default content view or library enviro
|
|
127
129
|
await patientlyWaitFor(() => expect(getByText(firstRepoSet.contentUrl)).toBeInTheDocument());
|
128
130
|
expect(queryByLabelText('Limit to environment')).toBeInTheDocument();
|
129
131
|
assertNockRequest(autocompleteScope);
|
130
|
-
assertNockRequest(scope
|
132
|
+
assertNockRequest(scope);
|
133
|
+
done(); // Pass jest callback to confirm test is done
|
131
134
|
});
|
132
135
|
|
133
136
|
test('Toggle Group shows if it\'s the default content view but non-library environment', async (done) => {
|
@@ -151,7 +154,8 @@ test('Toggle Group shows if it\'s the default content view but non-library envir
|
|
151
154
|
await patientlyWaitFor(() => expect(getByText(firstRepoSet.contentUrl)).toBeInTheDocument());
|
152
155
|
expect(queryByLabelText('Limit to environment')).toBeInTheDocument();
|
153
156
|
assertNockRequest(autocompleteScope);
|
154
|
-
assertNockRequest(scope
|
157
|
+
assertNockRequest(scope);
|
158
|
+
done(); // Pass jest callback to confirm test is done
|
155
159
|
});
|
156
160
|
|
157
161
|
test('Toggle Group shows if it\'s the library environment but a non-default content view', async (done) => {
|
@@ -174,7 +178,8 @@ test('Toggle Group shows if it\'s the library environment but a non-default cont
|
|
174
178
|
await patientlyWaitFor(() => expect(getByText(firstRepoSet.contentUrl)).toBeInTheDocument());
|
175
179
|
expect(queryByLabelText('Limit to environment')).toBeInTheDocument();
|
176
180
|
assertNockRequest(autocompleteScope);
|
177
|
-
assertNockRequest(scope
|
181
|
+
assertNockRequest(scope);
|
182
|
+
done(); // Pass jest callback to confirm test is done
|
178
183
|
});
|
179
184
|
|
180
185
|
test('Toggle Group does not show if it\'s the library environment and default content view', async (done) => {
|
@@ -199,7 +204,8 @@ test('Toggle Group does not show if it\'s the library environment and default co
|
|
199
204
|
await patientlyWaitFor(() => expect(getByText(firstRepoSet.contentUrl)).toBeInTheDocument());
|
200
205
|
expect(queryByLabelText('Limit to environment')).not.toBeInTheDocument();
|
201
206
|
assertNockRequest(autocompleteScope);
|
202
|
-
assertNockRequest(scope
|
207
|
+
assertNockRequest(scope);
|
208
|
+
done(); // Pass jest callback to confirm test is done
|
203
209
|
});
|
204
210
|
|
205
211
|
test('Can toggle with the Toggle Group ', async (done) => {
|
@@ -221,7 +227,8 @@ test('Can toggle with the Toggle Group ', async (done) => {
|
|
221
227
|
expect(queryByLabelText('Limit to environment')).toHaveAttribute('aria-pressed', 'true');
|
222
228
|
expect(queryByLabelText('No limit')).toHaveAttribute('aria-pressed', 'false');
|
223
229
|
assertNockRequest(autocompleteScope);
|
224
|
-
assertNockRequest(scope
|
230
|
+
assertNockRequest(scope);
|
231
|
+
done(); // Pass jest callback to confirm test is done
|
225
232
|
});
|
226
233
|
|
227
234
|
test('Can override to disabled', async (done) => {
|
@@ -244,9 +251,10 @@ test('Can override to disabled', async (done) => {
|
|
244
251
|
expect(getAllByText('Enabled')).toHaveLength(2);
|
245
252
|
expect(getAllByText('Disabled')).toHaveLength(1);
|
246
253
|
// Find the first action menu and click it
|
247
|
-
const actionMenu = getAllByLabelText('
|
248
|
-
|
249
|
-
|
254
|
+
const actionMenu = getAllByLabelText('Kebab toggle')[0].closest('button');
|
255
|
+
await act(async () => {
|
256
|
+
fireEvent.click(actionMenu);
|
257
|
+
});
|
250
258
|
const overrideMenuItem = getByText('Override to disabled');
|
251
259
|
expect(overrideMenuItem).toBeInTheDocument();
|
252
260
|
fireEvent.click(overrideMenuItem);
|
@@ -259,7 +267,8 @@ test('Can override to disabled', async (done) => {
|
|
259
267
|
|
260
268
|
assertNockRequest(autocompleteScope);
|
261
269
|
assertNockRequest(scope);
|
262
|
-
assertNockRequest(contentOverrideScope
|
270
|
+
assertNockRequest(contentOverrideScope);
|
271
|
+
done(); // Pass jest callback to confirm test is done
|
263
272
|
});
|
264
273
|
|
265
274
|
test('Can override to enabled', async (done) => {
|
@@ -284,8 +293,10 @@ test('Can override to enabled', async (done) => {
|
|
284
293
|
expect(getAllByText('Enabled')).toHaveLength(2);
|
285
294
|
expect(getAllByText('Disabled')).toHaveLength(1);
|
286
295
|
// The second item is overridden to disabled; we're going to override to enabled
|
287
|
-
const actionMenu = getAllByLabelText('
|
288
|
-
|
296
|
+
const actionMenu = getAllByLabelText('Kebab toggle')[1].closest('button');
|
297
|
+
await act(async () => {
|
298
|
+
fireEvent.click(actionMenu);
|
299
|
+
});
|
289
300
|
|
290
301
|
const overrideMenuItem = getByText('Override to enabled');
|
291
302
|
expect(overrideMenuItem).toBeInTheDocument();
|
@@ -298,7 +309,8 @@ test('Can override to enabled', async (done) => {
|
|
298
309
|
|
299
310
|
assertNockRequest(autocompleteScope);
|
300
311
|
assertNockRequest(scope);
|
301
|
-
assertNockRequest(contentOverrideScope
|
312
|
+
assertNockRequest(contentOverrideScope);
|
313
|
+
done(); // Pass jest callback to confirm test is done
|
302
314
|
});
|
303
315
|
|
304
316
|
test('Can reset to default', async (done) => {
|
@@ -323,8 +335,10 @@ test('Can reset to default', async (done) => {
|
|
323
335
|
expect(getAllByText('Disabled')).toHaveLength(1);
|
324
336
|
|
325
337
|
// The second item is overridden to disabled but would normally be enabled; we're going to reset
|
326
|
-
const actionMenu = getAllByLabelText('
|
327
|
-
|
338
|
+
const actionMenu = getAllByLabelText('Kebab toggle')[1].closest('button');
|
339
|
+
await act(async () => {
|
340
|
+
fireEvent.click(actionMenu);
|
341
|
+
});
|
328
342
|
|
329
343
|
const overrideMenuItem = getByText('Reset to default');
|
330
344
|
expect(overrideMenuItem).toBeInTheDocument();
|
@@ -337,7 +351,8 @@ test('Can reset to default', async (done) => {
|
|
337
351
|
|
338
352
|
assertNockRequest(autocompleteScope);
|
339
353
|
assertNockRequest(scope);
|
340
|
-
assertNockRequest(contentOverrideScope
|
354
|
+
assertNockRequest(contentOverrideScope);
|
355
|
+
done(); // Pass jest callback to confirm test is done
|
341
356
|
});
|
342
357
|
|
343
358
|
test('Can override in bulk', async (done) => {
|
@@ -358,14 +373,17 @@ test('Can override in bulk', async (done) => {
|
|
358
373
|
getByLabelText('Select row 0').click();
|
359
374
|
getByLabelText('Select row 1').click();
|
360
375
|
const actionMenu = getByLabelText('bulk_actions');
|
361
|
-
|
376
|
+
await act(async () => {
|
377
|
+
fireEvent.click(actionMenu);
|
378
|
+
});
|
362
379
|
const resetToDefault = queryByText('Reset to default');
|
363
380
|
expect(resetToDefault).toBeInTheDocument();
|
364
381
|
resetToDefault.click();
|
365
382
|
|
366
383
|
assertNockRequest(autocompleteScope);
|
367
384
|
assertNockRequest(scope);
|
368
|
-
assertNockRequest(contentOverrideScope
|
385
|
+
assertNockRequest(contentOverrideScope);
|
386
|
+
done(); // Pass jest callback to confirm test is done});
|
369
387
|
});
|
370
388
|
test('Can override in bulk when limited to environment', async (done) => {
|
371
389
|
const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl);
|
@@ -391,14 +409,17 @@ test('Can override in bulk when limited to environment', async (done) => {
|
|
391
409
|
await patientlyWaitFor(() => expect(getByText(firstRepoSet.contentUrl)).toBeInTheDocument());
|
392
410
|
getByLabelText('Select all').click();
|
393
411
|
const actionMenu = getByLabelText('bulk_actions');
|
394
|
-
|
412
|
+
await act(async () => {
|
413
|
+
fireEvent.click(actionMenu);
|
414
|
+
});
|
395
415
|
const resetToDefault = queryByText('Reset to default');
|
396
416
|
expect(resetToDefault).toBeInTheDocument();
|
397
417
|
resetToDefault.click();
|
398
418
|
|
399
419
|
assertNockRequest(autocompleteScope);
|
400
420
|
assertNockRequest(scope);
|
401
|
-
assertNockRequest(contentOverrideScope
|
421
|
+
assertNockRequest(contentOverrideScope);
|
422
|
+
done();
|
402
423
|
});
|
403
424
|
|
404
425
|
test('Can filter by status', async (done) => {
|
@@ -422,7 +443,9 @@ test('Can filter by status', async (done) => {
|
|
422
443
|
const statusContainer = queryByLabelText('select Status container', { ignore: 'th' });
|
423
444
|
const statusDropdown = within(statusContainer).queryByText('Status');
|
424
445
|
expect(statusDropdown).toBeInTheDocument();
|
425
|
-
|
446
|
+
await act(async () => {
|
447
|
+
fireEvent.click(statusDropdown);
|
448
|
+
});
|
426
449
|
const overridden = getByRole('option', { name: 'select Overridden' });
|
427
450
|
fireEvent.click(overridden);
|
428
451
|
await patientlyWaitFor(() => {
|
@@ -430,7 +453,8 @@ test('Can filter by status', async (done) => {
|
|
430
453
|
});
|
431
454
|
assertNockRequest(autocompleteScope);
|
432
455
|
assertNockRequest(scope);
|
433
|
-
assertNockRequest(scope2
|
456
|
+
assertNockRequest(scope2);
|
457
|
+
done(); // Pass jest callback to confirm test is done
|
434
458
|
});
|
435
459
|
|
436
460
|
test('Can display restrictions as labels', async (done) => {
|
@@ -448,5 +472,6 @@ test('Can display restrictions as labels', async (done) => {
|
|
448
472
|
expect(secondRepoSet.archRestricted).not.toBeNull();
|
449
473
|
expect(getByText(secondRepoSet.archRestricted)).toBeInTheDocument();
|
450
474
|
assertNockRequest(autocompleteScope);
|
451
|
-
assertNockRequest(scope
|
475
|
+
assertNockRequest(scope);
|
476
|
+
done(); // Pass jest callback to confirm test is done
|
452
477
|
});
|
@@ -49,7 +49,7 @@ const renderOptions = isTracerInstalled => ({ // sets initial Redux state
|
|
49
49
|
},
|
50
50
|
});
|
51
51
|
|
52
|
-
const actionMenuToTheRightOf = node => node.nextElementSibling.firstElementChild
|
52
|
+
const actionMenuToTheRightOf = node => node.nextElementSibling.firstElementChild;
|
53
53
|
|
54
54
|
const hostTraces = foremanApi.getApiUrl('/hosts/1/traces');
|
55
55
|
const autocompleteUrl = '/hosts/1/traces/auto_complete_search';
|
@@ -80,7 +80,8 @@ describe('With tracer installed', () => {
|
|
80
80
|
await patientlyWaitFor(() => expect(queryByText(firstTrace.application)).toBeInTheDocument());
|
81
81
|
// Assert request was made and completed, see helper function
|
82
82
|
assertNockRequest(autocompleteScope);
|
83
|
-
assertNockRequest(scope
|
83
|
+
assertNockRequest(scope);
|
84
|
+
done();
|
84
85
|
});
|
85
86
|
|
86
87
|
test('Can handle no traces being present', async (done) => {
|
@@ -99,7 +100,8 @@ describe('With tracer installed', () => {
|
|
99
100
|
await patientlyWaitFor(() => expect(queryByText('No applications to restart')).toBeInTheDocument());
|
100
101
|
// Assert request was made and completed, see helper function
|
101
102
|
assertNockRequest(autocompleteScope);
|
102
|
-
assertNockRequest(scope
|
103
|
+
assertNockRequest(scope);
|
104
|
+
done();
|
103
105
|
});
|
104
106
|
|
105
107
|
test('Can bulk restart traces via Restart App button', async (done) => {
|
@@ -137,7 +139,8 @@ describe('With tracer installed', () => {
|
|
137
139
|
|
138
140
|
assertNockRequest(autocompleteScope);
|
139
141
|
assertNockRequest(resolveTracesScope);
|
140
|
-
assertNockRequest(scope
|
142
|
+
assertNockRequest(scope);
|
143
|
+
done();
|
141
144
|
});
|
142
145
|
|
143
146
|
test('Warns you when one of the selected traces requires reboot', async (done) => {
|
@@ -167,7 +170,8 @@ describe('With tracer installed', () => {
|
|
167
170
|
expect(queryByText('At least one of the selected items requires the host to reboot')).toBeInTheDocument();
|
168
171
|
});
|
169
172
|
assertNockRequest(autocompleteScope);
|
170
|
-
assertNockRequest(scope
|
173
|
+
assertNockRequest(scope);
|
174
|
+
done();
|
171
175
|
});
|
172
176
|
|
173
177
|
test('Warns about reboot when using select all', async (done) => {
|
@@ -197,7 +201,8 @@ describe('With tracer installed', () => {
|
|
197
201
|
expect(queryByText('At least one of the selected items requires the host to reboot')).toBeInTheDocument();
|
198
202
|
});
|
199
203
|
assertNockRequest(autocompleteScope);
|
200
|
-
assertNockRequest(scope
|
204
|
+
assertNockRequest(scope);
|
205
|
+
done();
|
201
206
|
});
|
202
207
|
|
203
208
|
test('Can bulk restart traces via remote execution', async (done) => {
|
@@ -227,14 +232,18 @@ describe('With tracer installed', () => {
|
|
227
232
|
fireEvent.click(traceCheckbox);
|
228
233
|
expect(traceCheckbox.checked).toEqual(true);
|
229
234
|
const actionMenu = getByLabelText('bulk_actions');
|
230
|
-
|
235
|
+
|
236
|
+
await act(async () => {
|
237
|
+
actionMenu.click();
|
238
|
+
});
|
231
239
|
const viaRexAction = queryByText('Restart via remote execution');
|
232
240
|
expect(viaRexAction).toBeInTheDocument();
|
233
241
|
viaRexAction.click();
|
234
242
|
|
235
243
|
assertNockRequest(autocompleteScope);
|
236
244
|
assertNockRequest(resolveTracesScope);
|
237
|
-
assertNockRequest(scope
|
245
|
+
assertNockRequest(scope);
|
246
|
+
done();
|
238
247
|
});
|
239
248
|
|
240
249
|
test('Can select all, exclude and bulk restart traces via remote execution', async (done) => {
|
@@ -268,17 +277,23 @@ describe('With tracer installed', () => {
|
|
268
277
|
|
269
278
|
|
270
279
|
const selectAllCheckbox = getByLabelText('Select all');
|
271
|
-
|
280
|
+
|
281
|
+
await act(async () => {
|
282
|
+
fireEvent.click(selectAllCheckbox);
|
283
|
+
});
|
272
284
|
expect(traceCheckbox.checked).toEqual(true);
|
273
285
|
|
274
286
|
fireEvent.click(getByLabelText('Select row 0')); // de select
|
275
287
|
fireEvent.click(getByLabelText('Select row 2')); // de select
|
276
288
|
|
277
|
-
|
289
|
+
await act(async () => {
|
290
|
+
fireEvent.click(getByText('Reboot host'));
|
291
|
+
});
|
278
292
|
|
279
293
|
assertNockRequest(autocompleteScope);
|
280
294
|
assertNockRequest(resolveTracesScope);
|
281
|
-
assertNockRequest(scope
|
295
|
+
assertNockRequest(scope);
|
296
|
+
done();
|
282
297
|
});
|
283
298
|
|
284
299
|
test('Can restart a single trace via remote execution', async (done) => {
|
@@ -301,20 +316,23 @@ describe('With tracer installed', () => {
|
|
301
316
|
await patientlyWaitFor(() => {
|
302
317
|
const traceNameNode = getByText(firstTrace.helper);
|
303
318
|
traceActionMenu = actionMenuToTheRightOf(traceNameNode);
|
304
|
-
expect(traceActionMenu).toHaveAttribute('aria-label', '
|
319
|
+
expect(traceActionMenu).toHaveAttribute('aria-label', 'Kebab toggle');
|
320
|
+
});
|
321
|
+
await act(async () => {
|
322
|
+
traceActionMenu.click();
|
305
323
|
});
|
306
|
-
traceActionMenu.click();
|
307
|
-
|
308
324
|
let viaRexAction;
|
309
325
|
await patientlyWaitFor(() => {
|
310
326
|
viaRexAction = getByText('Restart via remote execution');
|
311
327
|
expect(viaRexAction).toBeInTheDocument();
|
312
328
|
});
|
313
|
-
|
314
|
-
|
329
|
+
await act(async () => {
|
330
|
+
viaRexAction.click();
|
331
|
+
});
|
315
332
|
assertNockRequest(autocompleteScope);
|
316
333
|
assertNockRequest(resolveTracesScope);
|
317
|
-
assertNockRequest(scope
|
334
|
+
assertNockRequest(scope);
|
335
|
+
done();
|
318
336
|
});
|
319
337
|
|
320
338
|
test('Can restart a single trace via customized remote execution', async (done) => {
|
@@ -334,10 +352,11 @@ describe('With tracer installed', () => {
|
|
334
352
|
await patientlyWaitFor(() => {
|
335
353
|
const traceNameNode = getByText(firstTrace.helper);
|
336
354
|
traceActionMenu = actionMenuToTheRightOf(traceNameNode);
|
337
|
-
expect(traceActionMenu).toHaveAttribute('aria-label', '
|
355
|
+
expect(traceActionMenu).toHaveAttribute('aria-label', 'Kebab toggle');
|
356
|
+
});
|
357
|
+
await act(async () => {
|
358
|
+
fireEvent.click(traceActionMenu);
|
338
359
|
});
|
339
|
-
fireEvent.click(traceActionMenu);
|
340
|
-
|
341
360
|
let viaCustomizedRexAction;
|
342
361
|
await patientlyWaitFor(() => {
|
343
362
|
viaCustomizedRexAction = getByText('Restart via customized remote execution');
|
@@ -349,7 +368,8 @@ describe('With tracer installed', () => {
|
|
349
368
|
);
|
350
369
|
|
351
370
|
assertNockRequest(autocompleteScope);
|
352
|
-
assertNockRequest(scope
|
371
|
+
assertNockRequest(scope);
|
372
|
+
done();
|
353
373
|
});
|
354
374
|
|
355
375
|
test('Can bulk restart traces via customized remote execution', async (done) => {
|
@@ -372,7 +392,9 @@ describe('With tracer installed', () => {
|
|
372
392
|
expect(traceCheckbox.checked).toEqual(true);
|
373
393
|
|
374
394
|
const actionMenu = getByLabelText('bulk_actions');
|
375
|
-
|
395
|
+
await act(async () => {
|
396
|
+
fireEvent.click(actionMenu);
|
397
|
+
});
|
376
398
|
const viaCustomizedRexAction = queryByText('Restart via customized remote execution');
|
377
399
|
|
378
400
|
expect(viaCustomizedRexAction).toBeInTheDocument();
|
@@ -382,7 +404,8 @@ describe('With tracer installed', () => {
|
|
382
404
|
);
|
383
405
|
|
384
406
|
assertNockRequest(autocompleteScope);
|
385
|
-
assertNockRequest(scope
|
407
|
+
assertNockRequest(scope);
|
408
|
+
done();
|
386
409
|
});
|
387
410
|
|
388
411
|
describe('Remote execution URL helper logic', () => {
|
@@ -410,7 +433,8 @@ describe('With tracer installed', () => {
|
|
410
433
|
expect(traceCheckbox.disabled).toEqual(true);
|
411
434
|
|
412
435
|
assertNockRequest(autocompleteScope);
|
413
|
-
assertNockRequest(scope
|
436
|
+
assertNockRequest(scope);
|
437
|
+
done();
|
414
438
|
});
|
415
439
|
});
|
416
440
|
});
|
@@ -453,7 +477,8 @@ describe('Without tracer installed', () => {
|
|
453
477
|
fireEvent.click(enableTracesModalButton);
|
454
478
|
expect(queryByText('via remote execution')).not.toBeInTheDocument();
|
455
479
|
|
456
|
-
assertNockRequest(jobInvocationScope
|
480
|
+
assertNockRequest(jobInvocationScope);
|
481
|
+
done();
|
457
482
|
});
|
458
483
|
|
459
484
|
test('Detects if tracer package is not available to install', async () => {
|
@@ -24,3 +24,6 @@ export const hasRequiredPermissions = (requiredPermissions = [], userPermissions
|
|
24
24
|
|
25
25
|
export const missingRequiredPermissions = (requiredPermissions = [], userPermissions) =>
|
26
26
|
!hasRequiredPermissions(requiredPermissions, userPermissions);
|
27
|
+
|
28
|
+
export const hostIsImageMode = ({ hostDetails }) =>
|
29
|
+
hostDetails?.content_facet_attributes?.bootc_booted_image;
|
@@ -1,8 +1,22 @@
|
|
1
1
|
import React, { useContext, useState } from 'react';
|
2
2
|
import { translate as __ } from 'foremanReact/common/I18n';
|
3
3
|
import { FormattedMessage } from 'react-intl';
|
4
|
-
import {
|
5
|
-
|
4
|
+
import {
|
5
|
+
TreeView,
|
6
|
+
Button,
|
7
|
+
Text,
|
8
|
+
TextContent,
|
9
|
+
TextVariants,
|
10
|
+
Flex,
|
11
|
+
FlexItem,
|
12
|
+
useWizardContext,
|
13
|
+
} from '@patternfly/react-core';
|
14
|
+
import {
|
15
|
+
Dropdown,
|
16
|
+
DropdownItem,
|
17
|
+
DropdownToggle,
|
18
|
+
} from '@patternfly/react-core/deprecated';
|
19
|
+
|
6
20
|
import { CaretDownIcon } from '@patternfly/react-icons';
|
7
21
|
import { BulkErrataWizardContext } from './BulkErrataWizard';
|
8
22
|
|
@@ -1,7 +1,11 @@
|
|
1
1
|
import React, { useContext } from 'react';
|
2
2
|
import { translate as __ } from 'foremanReact/common/I18n';
|
3
|
-
import {
|
4
|
-
|
3
|
+
import {
|
4
|
+
Button,
|
5
|
+
WizardFooterWrapper,
|
6
|
+
useWizardContext,
|
7
|
+
} from '@patternfly/react-core';
|
8
|
+
|
5
9
|
import { BulkErrataWizardContext } from './BulkErrataWizard';
|
6
10
|
import { dropdownOptions } from './04_Review';
|
7
11
|
import { errataInstallUrl } from '../../../HostDetails/Tabs/customizedRexUrlHelpers';
|
@@ -1,5 +1,9 @@
|
|
1
1
|
import React, { useState, createContext, useContext } from 'react';
|
2
|
-
import {
|
2
|
+
import {
|
3
|
+
Wizard,
|
4
|
+
WizardHeader,
|
5
|
+
WizardStep,
|
6
|
+
} from '@patternfly/react-core';
|
3
7
|
import { translate as __ } from 'foremanReact/common/I18n';
|
4
8
|
import { useForemanModal } from 'foremanReact/components/ForemanModal/ForemanModalHooks';
|
5
9
|
import { useBulkSelect } from 'foremanReact/components/PF4/TableIndexPage/Table/TableHooks';
|
@@ -1,8 +1,22 @@
|
|
1
1
|
import React, { useContext, useState } from 'react';
|
2
2
|
import { translate as __ } from 'foremanReact/common/I18n';
|
3
3
|
import { FormattedMessage } from 'react-intl';
|
4
|
-
import {
|
5
|
-
|
4
|
+
import {
|
5
|
+
TreeView,
|
6
|
+
Button,
|
7
|
+
Text,
|
8
|
+
TextContent,
|
9
|
+
TextVariants,
|
10
|
+
Flex,
|
11
|
+
FlexItem,
|
12
|
+
useWizardContext, /* data-codemods */
|
13
|
+
} from '@patternfly/react-core';
|
14
|
+
import {
|
15
|
+
Dropdown,
|
16
|
+
DropdownItem,
|
17
|
+
DropdownToggle,
|
18
|
+
} from '@patternfly/react-core/deprecated';
|
19
|
+
|
6
20
|
import { CaretDownIcon } from '@patternfly/react-icons';
|
7
21
|
import { BulkPackagesWizardContext, UPGRADE_ALL, INSTALL, REMOVE, UPGRADE } from './BulkPackagesWizard';
|
8
22
|
|