katello 4.5.0 → 4.6.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of katello might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/app/controllers/katello/api/rhsm/candlepin_dynflow_proxy_controller.rb +10 -0
- data/app/controllers/katello/api/v2/activation_keys_controller.rb +7 -0
- data/app/controllers/katello/api/v2/alternate_content_sources_controller.rb +52 -22
- data/app/controllers/katello/api/v2/content_exports_controller.rb +33 -3
- data/app/controllers/katello/api/v2/content_uploads_controller.rb +2 -0
- data/app/controllers/katello/api/v2/content_view_filter_rules_controller.rb +1 -1
- data/app/controllers/katello/api/v2/content_view_filters_controller.rb +1 -1
- data/app/controllers/katello/api/v2/debs_controller.rb +42 -10
- data/app/controllers/katello/api/v2/host_collections_controller.rb +5 -1
- data/app/controllers/katello/api/v2/host_errata_controller.rb +1 -0
- data/app/controllers/katello/api/v2/host_module_streams_controller.rb +9 -1
- data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +8 -1
- data/app/controllers/katello/api/v2/organizations_controller.rb +3 -1
- data/app/controllers/katello/api/v2/simple_content_access_controller.rb +8 -0
- data/app/controllers/katello/concerns/api/v2/repository_content_controller.rb +34 -11
- data/app/controllers/katello/concerns/organizations_controller_extensions.rb +7 -16
- data/app/lib/actions/katello/alternate_content_source/alternate_content_source_common.rb +16 -0
- data/app/lib/actions/katello/alternate_content_source/create.rb +11 -5
- data/app/lib/actions/katello/alternate_content_source/destroy.rb +3 -4
- data/app/lib/actions/katello/alternate_content_source/refresh.rb +3 -5
- data/app/lib/actions/katello/alternate_content_source/update.rb +57 -13
- data/app/lib/actions/katello/applicability/hosts/bulk_generate.rb +2 -2
- data/app/lib/actions/katello/content_view/promote_to_environment.rb +4 -2
- data/app/lib/actions/katello/content_view/publish.rb +5 -2
- data/app/lib/actions/katello/organization/environment_contents_refresh.rb +20 -0
- data/app/lib/actions/katello/organization/manifest_refresh.rb +10 -4
- data/app/lib/actions/katello/organization/simple_content_access/toggle.rb +1 -9
- data/app/lib/actions/katello/repository/create.rb +9 -0
- data/app/lib/actions/katello/repository/destroy.rb +21 -0
- data/app/lib/actions/katello/repository/errata_mail.rb +3 -3
- data/app/lib/actions/katello/repository/refresh_repository.rb +3 -0
- data/app/lib/actions/katello/repository/update.rb +33 -0
- data/app/lib/actions/katello/repository/update_redhat_repository.rb +1 -1
- data/app/lib/actions/pulp3/alternate_content_source/create.rb +5 -4
- data/app/lib/actions/pulp3/alternate_content_source/create_remote.rb +5 -4
- data/app/lib/actions/pulp3/alternate_content_source/delete.rb +4 -4
- data/app/lib/actions/pulp3/alternate_content_source/delete_remote.rb +4 -4
- data/app/lib/actions/pulp3/alternate_content_source/refresh.rb +4 -4
- data/app/lib/actions/pulp3/alternate_content_source/update.rb +4 -4
- data/app/lib/actions/pulp3/alternate_content_source/update_remote.rb +5 -5
- data/app/lib/actions/pulp3/capsule_content/reclaim_space.rb +1 -0
- data/app/lib/actions/pulp3/content_view_version/create_export_history.rb +3 -1
- data/app/lib/actions/pulp3/content_view_version/create_exporter.rb +9 -2
- data/app/lib/actions/pulp3/content_view_version/create_syncable_export_history.rb +45 -0
- data/app/lib/actions/pulp3/content_view_version/destroy_exporter.rb +6 -1
- data/app/lib/actions/pulp3/content_view_version/export.rb +8 -3
- data/app/lib/actions/pulp3/orchestration/alternate_content_source/create.rb +3 -3
- data/app/lib/actions/pulp3/orchestration/alternate_content_source/delete.rb +6 -7
- data/app/lib/actions/pulp3/orchestration/alternate_content_source/refresh.rb +2 -2
- data/app/lib/actions/pulp3/orchestration/alternate_content_source/refresh_remote.rb +18 -0
- data/app/lib/actions/pulp3/orchestration/alternate_content_source/update.rb +3 -3
- data/app/lib/actions/pulp3/orchestration/content_view_version/export.rb +28 -13
- data/app/lib/actions/pulp3/orchestration/content_view_version/export_library.rb +4 -2
- data/app/lib/actions/pulp3/orchestration/content_view_version/export_repository.rb +4 -2
- data/app/lib/actions/pulp3/orchestration/content_view_version/syncable_export.rb +82 -0
- data/app/lib/actions/pulp3/orchestration/repository/generate_metadata.rb +1 -1
- data/app/lib/katello/concerns/base_template_scope_extensions.rb +1 -1
- data/app/lib/katello/errors.rb +1 -1
- data/app/lib/katello/resources/candlepin/owner.rb +9 -2
- data/app/lib/katello/validators/alternate_content_source_products_validator.rb +17 -0
- data/app/models/katello/alternate_content_source.rb +39 -8
- data/app/models/katello/alternate_content_source_product.rb +13 -0
- data/app/models/katello/concerns/host_managed_extensions.rb +13 -2
- data/app/models/katello/concerns/pulp_database_unit.rb +2 -2
- data/app/models/katello/concerns/smart_proxy_extensions.rb +5 -6
- data/app/models/katello/content_view.rb +41 -29
- data/app/models/katello/content_view_deb_filter.rb +51 -0
- data/app/models/katello/content_view_deb_filter_rule.rb +24 -0
- data/app/models/katello/content_view_filter.rb +10 -3
- data/app/models/katello/glue/candlepin/owner.rb +0 -1
- data/app/models/katello/installed_package.rb +1 -0
- data/app/models/katello/product.rb +3 -0
- data/app/models/katello/repository.rb +2 -0
- data/app/models/katello/smart_proxy_alternate_content_source.rb +6 -0
- data/app/services/cert/certs.rb +8 -16
- data/app/services/katello/organization_creator.rb +18 -7
- data/app/services/katello/pulp/server.rb +2 -2
- data/app/services/katello/pulp3/alternate_content_source.rb +22 -4
- data/app/services/katello/pulp3/api/apt.rb +12 -0
- data/app/services/katello/pulp3/api/core.rb +8 -0
- data/app/services/katello/pulp3/content_view_version/export.rb +38 -11
- data/app/services/katello/pulp3/content_view_version/metadata_generator.rb +3 -1
- data/app/services/katello/pulp3/content_view_version/syncable_format_export.rb +34 -0
- data/app/services/katello/pulp3/deb.rb +3 -1
- data/app/services/katello/pulp3/pulp_content_unit.rb +2 -0
- data/app/services/katello/pulp3/repository/apt.rb +186 -2
- data/app/services/katello/pulp3/repository.rb +4 -3
- data/app/services/katello/pulp3/service_common.rb +1 -1
- data/app/services/katello/pulp3/smart_proxy_mirror_repository.rb +1 -1
- data/app/views/foreman/smart_proxies/show.html.erb +3 -3
- data/app/views/katello/api/v2/alternate_content_sources/base.json.rabl +18 -3
- data/app/views/katello/api/v2/alternate_content_sources/show.json.rabl +20 -0
- data/app/views/katello/api/v2/ansible_collections/compare.json.rabl +10 -0
- data/app/views/katello/api/v2/content_view_filters/base.json.rabl +5 -0
- data/app/views/katello/api/v2/module_streams/compare.json.rabl +10 -0
- data/app/views/katello/api/v2/repository_sets/show.json.rabl +4 -0
- data/app/views/katello/layouts/foreman_with_bastion.html.erb +1 -1
- data/app/views/katello/layouts/react.html.erb +1 -1
- data/app/views/overrides/organizations/_edit_override.html.erb +5 -8
- data/app/views/overrides/organizations/_index_row_override.html.erb +1 -1
- data/app/views/overrides/organizations/_step_1_override.html.erb +5 -0
- data/ca/redhat-uep.pem +18 -23
- data/config/katello.yaml.example +0 -2
- data/config/routes/api/v2.rb +2 -0
- data/config/routes/overrides.rb +1 -0
- data/db/migrate/20201116161820_create_content_view_deb_filter_rules.rb +17 -0
- data/db/migrate/20211220185935_clean_duplicate_content_units.rb +11 -9
- data/db/migrate/20220524132259_remove_last_refreshed_from_katello_alternate_content_sources.rb +5 -0
- data/db/migrate/20220601163911_add_vendor_to_katello_installed_packages.rb +5 -0
- data/db/migrate/20220610165621_add_repositories_and_products_to_acs.rb +23 -0
- data/engines/bastion/app/views/bastion/layouts/application.html.erb +1 -1
- data/engines/bastion/app/views/bastion/layouts/application_ie.html.erb +1 -1
- data/engines/bastion/app/views/bastion/layouts/assets.html.erb +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/environment-content.controller.js +2 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/environment.controller.js +2 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-content-views.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/environments.controller.js +1 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/views/environments.html +3 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +4 -5
- data/engines/bastion_katello/lib/bastion_katello/engine.rb +0 -1
- data/lib/katello/engine.rb +1 -2
- data/lib/katello/permission_creator.rb +2 -2
- data/lib/katello/permissions/host_permissions.rb +1 -0
- data/lib/katello/plugin.rb +6 -12
- data/lib/katello/version.rb +1 -1
- data/locale/action_names.rb +49 -46
- data/locale/bn/katello.po +361 -53
- data/locale/cs/katello.po +361 -53
- data/locale/de/katello.po +366 -58
- data/locale/en/katello.po +361 -53
- data/locale/es/katello.po +364 -56
- data/locale/fr/katello.po +374 -66
- data/locale/gu/katello.po +361 -53
- data/locale/hi/katello.po +361 -53
- data/locale/it/katello.po +361 -53
- data/locale/ja/katello.po +374 -66
- data/locale/katello.pot +1626 -1079
- data/locale/kn/katello.po +361 -53
- data/locale/ko/katello.po +361 -53
- data/locale/mr/katello.po +361 -53
- data/locale/or/katello.po +361 -53
- data/locale/pa/katello.po +361 -53
- data/locale/pt/katello.po +361 -53
- data/locale/pt_BR/katello.po +364 -56
- data/locale/ru/katello.po +361 -53
- data/locale/ta/katello.po +361 -53
- data/locale/te/katello.po +361 -53
- data/locale/zh_CN/katello.po +374 -66
- data/locale/zh_TW/katello.po +361 -53
- data/webpack/components/EditableTextInput/EditableTextInput.js +3 -16
- data/webpack/components/EditableTextInput/PencilEditButton.js +33 -0
- data/webpack/components/Errata/index.js +18 -3
- data/webpack/components/Loading.js +1 -1
- data/webpack/components/RoutedTabs/index.js +1 -17
- data/webpack/components/Search/Search.js +0 -1
- data/webpack/components/Search/__tests__/search.test.js +1 -2
- data/webpack/components/SelectAllCheckbox/index.js +7 -4
- data/webpack/components/SelectableDropdown/SelectableDropdown.js +1 -0
- data/webpack/components/Table/EmptyStateMessage.js +77 -2
- data/webpack/components/Table/MainTable.js +46 -4
- data/webpack/components/Table/TableHooks.js +8 -4
- data/webpack/components/Table/TableWrapper.js +14 -8
- data/webpack/components/TypeAhead/TypeAhead.js +26 -11
- data/webpack/components/TypeAhead/pf3Search/TypeAheadItems.js +1 -1
- data/webpack/components/TypeAhead/pf4Search/TypeAheadInput.js +1 -0
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ChangeHostCVModal.js +2 -1
- data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsModal.js +9 -4
- data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeActions.js +37 -0
- data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.js +173 -0
- data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.scss +6 -0
- data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeConstants.js +6 -0
- data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeEditModal.js +301 -0
- data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeSelectors.js +25 -0
- data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeCard.test.js +108 -0
- data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeEditModal.test.js +161 -0
- data/webpack/components/extensions/HostDetails/Cards/__tests__/errataOverviewCard.test.js +12 -12
- data/webpack/components/extensions/HostDetails/DetailsTabCards/HwPropertiesCard.js +100 -0
- data/webpack/components/extensions/HostDetails/DetailsTabCards/SystemPropertiesCardExtensions.js +26 -4
- data/webpack/components/extensions/HostDetails/HostDetailsConstants.js +3 -1
- data/webpack/components/extensions/HostDetails/HostDetailsReducer.js +14 -0
- data/webpack/components/extensions/HostDetails/HostDetailsSelectors.js +8 -2
- data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.js +9 -1
- data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsTab.js +23 -8
- data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.js +11 -9
- data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +58 -8
- data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesTab.js +2 -0
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/errataTab.test.js +30 -3
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/repositorySets.fixtures.json +3 -0
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/repositorySetsTab.test.js +48 -20
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracesTab.test.js +1 -10
- data/webpack/components/extensions/HostDetails/hostDetailsHelpers.js +1 -1
- data/webpack/components/extensions/RegistrationCommands/index.js +49 -17
- data/webpack/containers/Application/config.js +5 -10
- data/webpack/global_index.js +19 -7
- data/webpack/global_test_setup.js +14 -2
- data/webpack/ouia_id_check.js +95 -0
- data/webpack/redux/actions/RedHatRepositories/helpers.js +2 -0
- data/webpack/redux/reducers/index.js +2 -4
- data/webpack/scenes/AlternateContentSources/ACSActions.js +36 -3
- data/webpack/scenes/AlternateContentSources/ACSConstants.js +3 -0
- data/webpack/scenes/AlternateContentSources/ACSSelectors.js +15 -6
- data/webpack/scenes/AlternateContentSources/Create/ACSCreateWizard.js +73 -42
- data/webpack/scenes/AlternateContentSources/Create/Steps/ACSCreateFinish.js +26 -10
- data/webpack/scenes/AlternateContentSources/Create/Steps/ACSProducts.js +44 -0
- data/webpack/scenes/AlternateContentSources/Create/Steps/ACSReview.js +59 -45
- data/webpack/scenes/AlternateContentSources/Create/Steps/ACSSmartProxies.js +4 -3
- data/webpack/scenes/AlternateContentSources/Create/Steps/AcsUrlPaths.js +0 -1
- data/webpack/scenes/AlternateContentSources/Create/Steps/SelectSource.js +35 -19
- data/webpack/scenes/AlternateContentSources/Create/__tests__/acsCreate.test.js +120 -13
- data/webpack/scenes/AlternateContentSources/Create/__tests__/products.fixtures.json +92 -0
- data/webpack/scenes/AlternateContentSources/Details/ACSExpandableDetails.js +459 -0
- data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditCredentials.js +354 -0
- data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditDetails.js +104 -0
- data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditProducts.js +120 -0
- data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditSmartProxies.js +118 -0
- data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditURLPaths.js +118 -0
- data/webpack/scenes/AlternateContentSources/Details/__tests__/ACSEdits.test.js +242 -0
- data/webpack/scenes/AlternateContentSources/Details/__tests__/ACSExpandableDetails.test.js +106 -0
- data/webpack/scenes/AlternateContentSources/Details/__tests__/acsDetails.fixtures.json +49 -0
- data/webpack/scenes/AlternateContentSources/Details/__tests__/acsProducts.fixtures.json +95 -0
- data/webpack/scenes/AlternateContentSources/Details/__tests__/simplifiedAcsDetails.fixtures.json +39 -0
- data/webpack/scenes/AlternateContentSources/MainTable/ACSTable.js +215 -87
- data/webpack/scenes/AlternateContentSources/MainTable/ACSTable.scss +3 -0
- data/webpack/scenes/AlternateContentSources/MainTable/__tests__/acsTable.test.js +1 -2
- data/webpack/scenes/Content/__tests__/contentTable.test.js +1 -2
- data/webpack/scenes/ContentViews/ContentViewsConstants.js +15 -4
- data/webpack/scenes/ContentViews/Delete/__tests__/contentViewDelete.test.js +1 -2
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +2 -0
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +1 -2
- data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +113 -0
- data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +89 -0
- data/webpack/scenes/ContentViews/Details/Filters/Add/CVFilterAddModal.js +32 -9
- data/webpack/scenes/ContentViews/Details/Filters/Add/__tests__/cvFilterAdd.test.js +13 -3
- data/webpack/scenes/ContentViews/Details/Filters/CVContainerImageFilterContent.js +39 -27
- data/webpack/scenes/ContentViews/Details/Filters/CVDebFilterContent.js +236 -0
- data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +1 -0
- data/webpack/scenes/ContentViews/Details/Filters/CVFilterDetailType.js +10 -0
- data/webpack/scenes/ContentViews/Details/Filters/CVModuleStreamFilterContent.js +3 -0
- data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +3 -1
- data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +17 -4
- data/webpack/scenes/ContentViews/Details/Filters/ContentType.js +1 -0
- data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +34 -22
- data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/CVDebMatchContentModal.js +97 -0
- data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContentModal.test.js +1 -2
- data/webpack/scenes/ContentViews/Details/Filters/Rules/DebPackage/AddEditDebPackageRuleModal.js +128 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVContainerImageFilterContent.test.js +56 -3
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVRpmFilterContent.test.js +62 -8
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/ContentViewPackageGroupFilter.test.js +1 -5
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilterDetails.test.js +1 -2
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.test.js +32 -2
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataIDFilter.test.js +1 -2
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvModuleStreamFilter.test.js +1 -2
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/emptyCVContainerImageFilterContent.fixtures.json +13 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/emptyCVPackageFilterRules.fixtures.json +13 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/emptyContentViewFilters.fixtures.json +13 -0
- data/webpack/scenes/ContentViews/Details/Histories/__tests__/contentViewHistory.test.js +1 -2
- data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +5 -1
- data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +1 -2
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/BulkDeleteModal.test.js +3 -0
- data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompare.js +143 -0
- data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompare.scss +51 -0
- data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareConfig.js +314 -0
- data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareHeader.js +186 -0
- data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareTable.js +74 -0
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/AnsibleCollectionsCompareAllContentData.fixtures.json +63 -0
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/CVVersionCompare.test.js +657 -0
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/CVVersionEmptyContentCompareData.fixtures.json +14 -0
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/ContainerTagsCompareAllContentData.fixtures.json +95 -0
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/DebPackagesCompareAllContentData.fixtures.json +87 -0
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/ErrataCompareAllContentData.fixtures.json +319 -0
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/ErrataCompareThreeContentTypesData.fixtures.json +131 -0
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/FilesCompareAllContentData.fixtures.json +51 -0
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/FilesCompareThreeContentTypesData.fixtures.json +48 -0
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/ModuleStreamsCompareAllContentData.fixtures.json +239 -0
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/PackageGroupsCompareAllContentData.fixtures.json +51 -0
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/PythonPackagesCompareAllContentData.fixtures.json +315 -0
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/RPMPackagesCompareAllContentData.fixtures.json +470 -0
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/RPMPackagesCompareThreeContentTypesData.fixtures.json +475 -0
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewDetails.fixtures.json +160 -0
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersionOneDetials.fixtures.json +161 -0
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersionThreeDetails.fixtures.json +154 -0
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersionTwoDetails.fixtures.json +211 -0
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersions.fixtures.json +1013 -0
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/emptyStateCVVersionOneDetails.fixtures.json +145 -0
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/emptyStateCVVersionTwoDetails.fixtures.json +145 -0
- data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +102 -36
- data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemove.test.js +1 -2
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailConfig.js +4 -2
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.test.js +1 -2
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetailsEmpty.test.js +1 -2
- data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +113 -40
- data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +96 -81
- data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +1 -2
- data/webpack/scenes/ContentViews/__tests__/mockDetails.fixtures.json +7 -2
- data/webpack/scenes/SmartProxy/SmartProxyContentActions.js +1 -1
- data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +0 -30
- data/webpack/test-utils/nockWrapper.js +7 -0
- metadata +82 -167
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-views.controller.js +0 -34
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-views.routes.js +0 -751
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-deletion.controller.js +0 -42
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-activation-keys.controller.js +0 -81
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-confirm.controller.js +0 -65
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-content-hosts.controller.js +0 -82
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-environments.controller.js +0 -76
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion.controller.js +0 -160
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/content-view-deletion.html +0 -58
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-activation-keys.html +0 -94
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-confirm.html +0 -76
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-content-hosts.html +0 -88
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-environments.html +0 -73
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/content-view-component.factory.js +0 -32
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/content-view-composite-available-content-views.controller.js +0 -75
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/content-view-composite-content-views-list.controller.js +0 -68
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/views/content-view-composite-available-content-views.html +0 -81
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/views/content-view-composite-content-views-list.html +0 -81
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/views/content-view-composite.html +0 -24
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-deb-repositories.controller.js +0 -50
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-docker-repositories.controller.js +0 -42
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-file-repositories.controller.js +0 -50
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-ostree-repositories.controller.js +0 -42
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-repositories.controller.js +0 -45
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-deb-repositories-list.controller.js +0 -48
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-details.controller.js +0 -100
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-docker-repositories-list.controller.js +0 -49
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-file-repositories-list.controller.js +0 -48
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-ostree-repositories-list.controller.js +0 -49
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-promotion.controller.js +0 -129
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-publish.controller.js +0 -46
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-repositories-list.controller.js +0 -42
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-repositories.service.js +0 -91
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-versions.controller.js +0 -240
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/available-errata-filter.controller.js +0 -115
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/available-module-stream-filter.controller.js +0 -68
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/available-package-group-filter.controller.js +0 -66
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/date-type-errata-filter.controller.js +0 -77
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/docker-tag-filter.controller.js +0 -137
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/edit-filter.controller.js +0 -36
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/errata-filter-list.controller.js +0 -78
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/errata-filter.controller.js +0 -74
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-content-type.filter.js +0 -21
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-details.controller.js +0 -34
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-helper.service.js +0 -30
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-repositories.controller.js +0 -86
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-rule-matching-package-modal.controller.js +0 -37
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-type.filter.js +0 -21
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter.factory.js +0 -66
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filters.controller.js +0 -85
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/module-stream-list-filter.controller.js +0 -73
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/new-filter.controller.js +0 -100
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/package-filter.controller.js +0 -179
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/package-group-list-filter.controller.js +0 -75
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/rule.factory.js +0 -21
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/date-type-errata-filter.html +0 -9
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/date-type-errata.html +0 -75
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/docker-filter.html +0 -28
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/docker-tag-filter-details.html +0 -65
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/edit-filter.html +0 -19
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/errata-filter-details.html +0 -63
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/errata-filter.html +0 -50
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/filter-details.html +0 -9
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/filter-repositories.html +0 -121
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/filter-rule-matching-package-modal.html +0 -43
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/filters.html +0 -85
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/module-stream-filter-details.html +0 -58
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/module-stream-filter.html +0 -43
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/new-filter.html +0 -62
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-filter-details.html +0 -182
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-filter.html +0 -28
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-group-filter-details.html +0 -42
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-group-filter.html +0 -43
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/partials/filter-repositories-count.html +0 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/histories/content-view-history.controller.js +0 -47
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/histories/content-view-history.factory.js +0 -22
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/histories/views/content-view-history.html +0 -36
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-copy.html +0 -20
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-deb-repositories.html +0 -87
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-details-tasks.html +0 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-details.html +0 -144
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-docker-repositories.html +0 -114
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-file-repositories.html +0 -87
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-info.html +0 -63
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-ostree-repositories.html +0 -87
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-promotion.html +0 -59
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-publish.html +0 -58
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-repositories.html +0 -116
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-versions.html +0 -126
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/new/content-view-new.controller.js +0 -78
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/new/views/content-view-new.html +0 -127
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/content-view-version-content.controller.js +0 -138
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/content-view-version.controller.js +0 -59
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-apt.html +0 -25
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-components.html +0 -19
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-deb.html +0 -19
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-details.html +0 -15
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-docker.html +0 -23
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-errata.html +0 -48
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-file.html +0 -21
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-module-streams.html +0 -8
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-package-groups.html +0 -21
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-packages.html +0 -27
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-yum.html +0 -42
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version.html +0 -83
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/views/content-views.html +0 -74
- data/lib/katello/tasks/reset.rake.bak +0 -67
- data/locale/bn/LC_MESSAGES/katello.mo +0 -0
- data/locale/cs/LC_MESSAGES/katello.mo +0 -0
- data/locale/de/LC_MESSAGES/katello.mo +0 -0
- data/locale/en/LC_MESSAGES/katello.mo +0 -0
- data/locale/es/LC_MESSAGES/katello.mo +0 -0
- data/locale/fr/LC_MESSAGES/katello.mo +0 -0
- data/locale/gu/LC_MESSAGES/katello.mo +0 -0
- data/locale/hi/LC_MESSAGES/katello.mo +0 -0
- data/locale/it/LC_MESSAGES/katello.mo +0 -0
- data/locale/ja/LC_MESSAGES/katello.mo +0 -0
- data/locale/kn/LC_MESSAGES/katello.mo +0 -0
- data/locale/ko/LC_MESSAGES/katello.mo +0 -0
- data/locale/mr/LC_MESSAGES/katello.mo +0 -0
- data/locale/or/LC_MESSAGES/katello.mo +0 -0
- data/locale/pa/LC_MESSAGES/katello.mo +0 -0
- data/locale/pt/LC_MESSAGES/katello.mo +0 -0
- data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
- data/locale/ru/LC_MESSAGES/katello.mo +0 -0
- data/locale/ta/LC_MESSAGES/katello.mo +0 -0
- data/locale/te/LC_MESSAGES/katello.mo +0 -0
- data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
- data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
- data/webpack/scenes/AnsibleCollections/AnsibleCollectionsActions.js +0 -30
- data/webpack/scenes/AnsibleCollections/AnsibleCollectionsConstants.js +0 -3
- data/webpack/scenes/AnsibleCollections/AnsibleCollectionsPage.js +0 -80
- data/webpack/scenes/AnsibleCollections/AnsibleCollectionsReducer.js +0 -39
- data/webpack/scenes/AnsibleCollections/AnsibleCollectionsTableSchema.js +0 -60
- data/webpack/scenes/AnsibleCollections/AnsibleCollectionsTables.scss +0 -0
- data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionDetails.js +0 -94
- data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionDetailsActions.js +0 -23
- data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionDetailsConstants.js +0 -3
- data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionDetailsReducer.js +0 -30
- data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionsSchema.js +0 -35
- data/webpack/scenes/AnsibleCollections/Details/__tests__/AnsibleCollectionDetailInfo.test.js +0 -16
- data/webpack/scenes/AnsibleCollections/Details/__tests__/AnsibleCollectionDetails.fixtures.js +0 -25
- data/webpack/scenes/AnsibleCollections/Details/__tests__/AnsibleCollectionDetails.test.js +0 -27
- data/webpack/scenes/AnsibleCollections/Details/__tests__/AnsibleCollectionDetailsActions.test.js +0 -41
- data/webpack/scenes/AnsibleCollections/Details/__tests__/AnsibleCollectionDetailsReducer.test.js +0 -33
- data/webpack/scenes/AnsibleCollections/Details/__tests__/__snapshots__/AnsibleCollectionDetailInfo.test.js.snap +0 -83
- data/webpack/scenes/AnsibleCollections/Details/__tests__/__snapshots__/AnsibleCollectionDetails.test.js.snap +0 -190
- data/webpack/scenes/AnsibleCollections/Details/__tests__/__snapshots__/AnsibleCollectionDetailsActions.test.js.snap +0 -58
- data/webpack/scenes/AnsibleCollections/Details/__tests__/__snapshots__/AnsibleCollectionDetailsReducer.test.js.snap +0 -50
- data/webpack/scenes/AnsibleCollections/Details/index.js +0 -17
- data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollectionPage.test.js +0 -23
- data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollections.fixtures.js +0 -52
- data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollectionsActions.test.js +0 -48
- data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollectionsReducer.test.js +0 -46
- data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollectionsTable.test.js +0 -25
- data/webpack/scenes/AnsibleCollections/__tests__/__snapshots__/AnsibleCollectionPage.test.js.snap +0 -73
- data/webpack/scenes/AnsibleCollections/__tests__/__snapshots__/AnsibleCollectionsTable.test.js.snap +0 -81
- data/webpack/scenes/AnsibleCollections/index.js +0 -17
- data/webpack/scenes/Subscriptions/Manifest/__tests__/ManageManifestModal.test.js +0 -123
@@ -12,7 +12,6 @@ import {
|
|
12
12
|
Skeleton,
|
13
13
|
Split,
|
14
14
|
SplitItem,
|
15
|
-
Spinner,
|
16
15
|
} from '@patternfly/react-core';
|
17
16
|
import { TableVariant, Thead, Tbody, Tr, Th, Td } from '@patternfly/react-table';
|
18
17
|
import { translate as __ } from 'foremanReact/common/I18n';
|
@@ -358,14 +357,12 @@ export const PackagesTab = () => {
|
|
358
357
|
/>
|
359
358
|
</ActionListItem>
|
360
359
|
<ActionListItem>
|
361
|
-
|
362
|
-
<
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
/>
|
368
|
-
)}
|
360
|
+
<Dropdown
|
361
|
+
toggle={<KebabToggle aria-label="bulk_actions" onToggle={toggleBulkAction} />}
|
362
|
+
isOpen={isBulkActionOpen}
|
363
|
+
isPlain
|
364
|
+
dropdownItems={dropdownRemoveItems}
|
365
|
+
/>
|
369
366
|
</ActionListItem>
|
370
367
|
</ActionList>
|
371
368
|
</SplitItem>
|
@@ -387,6 +384,8 @@ export const PackagesTab = () => {
|
|
387
384
|
</Split>
|
388
385
|
);
|
389
386
|
|
387
|
+
const resetFilters = () => setPackageStatusSelected(PACKAGE_STATUS);
|
388
|
+
|
390
389
|
return (
|
391
390
|
<div>
|
392
391
|
<div id="packages-tab">
|
@@ -409,6 +408,7 @@ export const PackagesTab = () => {
|
|
409
408
|
selectedCount,
|
410
409
|
selectNone,
|
411
410
|
areAllRowsSelected,
|
411
|
+
resetFilters,
|
412
412
|
}
|
413
413
|
}
|
414
414
|
ouiaId="host-packages-table"
|
@@ -425,6 +425,8 @@ export const PackagesTab = () => {
|
|
425
425
|
variant={TableVariant.compact}
|
426
426
|
{...selectAll}
|
427
427
|
displaySelectAllCheckbox={showActions}
|
428
|
+
requestKey={HOST_PACKAGES_KEY}
|
429
|
+
alwaysShowActionButtons={false}
|
428
430
|
>
|
429
431
|
<Thead>
|
430
432
|
<Tr>
|
@@ -111,6 +111,29 @@ EnabledIcon.propTypes = {
|
|
111
111
|
isOverridden: PropTypes.bool.isRequired,
|
112
112
|
};
|
113
113
|
|
114
|
+
const ArchRestrictedIcon = ({ archRestricted }) => (
|
115
|
+
<Tooltip
|
116
|
+
position="right"
|
117
|
+
content={<FormattedMessage
|
118
|
+
id="arch-restricted-tooltip"
|
119
|
+
defaultMessage={__('Architecture restricted to {archRestricted}. If host architecture does not match, the repository will not be available on this host.')}
|
120
|
+
values={{ archRestricted }}
|
121
|
+
/>}
|
122
|
+
>
|
123
|
+
<Label color="orange" className="arch-restricted-label" style={{ marginLeft: '8px' }}>
|
124
|
+
{__(archRestricted)}
|
125
|
+
</Label>
|
126
|
+
</Tooltip>
|
127
|
+
);
|
128
|
+
|
129
|
+
ArchRestrictedIcon.propTypes = {
|
130
|
+
archRestricted: PropTypes.string,
|
131
|
+
};
|
132
|
+
|
133
|
+
ArchRestrictedIcon.defaultProps = {
|
134
|
+
archRestricted: null,
|
135
|
+
};
|
136
|
+
|
114
137
|
const OsRestrictedIcon = ({ osRestricted }) => (
|
115
138
|
<Tooltip
|
116
139
|
position="right"
|
@@ -154,7 +177,7 @@ const RepositorySetsTab = () => {
|
|
154
177
|
contentViewName,
|
155
178
|
lifecycleEnvironmentName,
|
156
179
|
} = contentFacet;
|
157
|
-
const nonLibraryHost = contentViewDefault === false
|
180
|
+
const nonLibraryHost = contentViewDefault === false ||
|
158
181
|
lifecycleEnvironmentLibrary === false;
|
159
182
|
const simpleContentAccess = (Number(subscriptionStatus) === 5);
|
160
183
|
const [isBulkActionOpen, setIsBulkActionOpen] = useState(false);
|
@@ -174,9 +197,15 @@ const RepositorySetsTab = () => {
|
|
174
197
|
|
175
198
|
const [alertShowing, setAlertShowing] = useState(false);
|
176
199
|
const emptyContentTitle = __('No repository sets to show.');
|
177
|
-
const emptyContentBody = __('Repository sets will appear here
|
200
|
+
const emptyContentBody = __('Repository sets will appear here after enabling Red Hat repositories or creating custom products.');
|
178
201
|
const emptySearchTitle = __('No matching repository sets found');
|
179
202
|
const emptySearchBody = __('Try changing your search query.');
|
203
|
+
const showPrimaryAction = true;
|
204
|
+
const showSecondaryAction = true;
|
205
|
+
const primaryActionTitle = __('Enable Red Hat repositories');
|
206
|
+
const secondaryActionTitle = __('Create a custom product');
|
207
|
+
const primaryActionLink = '/redhat_repositories';
|
208
|
+
const secondaryActionLink = '/products/new';
|
180
209
|
const errorSearchTitle = __('Problem searching repository sets');
|
181
210
|
const columnHeaders = useMemo(() => [
|
182
211
|
__('Repository'),
|
@@ -233,6 +262,10 @@ const RepositorySetsTab = () => {
|
|
233
262
|
|
234
263
|
const hostDetailsStatus = useSelector(state => selectHostDetailsStatus(state));
|
235
264
|
|
265
|
+
const resetFilters = () => {
|
266
|
+
setStatusSelected(STATUS_LABEL);
|
267
|
+
setToggleGroupState(defaultToggleGroupState);
|
268
|
+
};
|
236
269
|
useEffect(() => {
|
237
270
|
// wait until host details are loaded to set alertShowing
|
238
271
|
if (hostDetailsStatus === STATUS.RESOLVED) {
|
@@ -306,13 +339,13 @@ const RepositorySetsTab = () => {
|
|
306
339
|
cannot(createBookmarks, userPermissionsFromHostDetails({ hostDetails }));
|
307
340
|
|
308
341
|
const dropdownItems = [
|
309
|
-
<DropdownItem aria-label="bulk_enable" key="bulk_enable" component="button" onClick={enableRepoSets} isDisabled={selectedCount === 0}>
|
342
|
+
<DropdownItem aria-label="bulk_enable" key="bulk_enable" ouiaId="bulk_enable" component="button" onClick={enableRepoSets} isDisabled={selectedCount === 0}>
|
310
343
|
{__('Override to enabled')}
|
311
344
|
</DropdownItem>,
|
312
|
-
<DropdownItem aria-label="bulk_disable" key="bulk_disable" component="button" onClick={disableRepoSets} isDisabled={selectedCount === 0}>
|
345
|
+
<DropdownItem aria-label="bulk_disable" key="bulk_disable" ouiaId="bulk_disable" component="button" onClick={disableRepoSets} isDisabled={selectedCount === 0}>
|
313
346
|
{__('Override to disabled')}
|
314
347
|
</DropdownItem>,
|
315
|
-
<DropdownItem aria-label="bulk_reset_default" key="bulk_reset_default" component="button" onClick={resetToDefaultRepoSets} isDisabled={selectedCount === 0}>
|
348
|
+
<DropdownItem aria-label="bulk_reset_default" key="bulk_reset_default" ouiaId="bulk_reset_default" component="button" onClick={resetToDefaultRepoSets} isDisabled={selectedCount === 0}>
|
316
349
|
{__('Reset to default')}
|
317
350
|
</DropdownItem>,
|
318
351
|
];
|
@@ -342,6 +375,7 @@ const RepositorySetsTab = () => {
|
|
342
375
|
<SplitItem>
|
343
376
|
<SelectableDropdown
|
344
377
|
id="status-dropdown"
|
378
|
+
ouiaId="status-dropdown"
|
345
379
|
title={STATUS_LABEL}
|
346
380
|
showTitle={false}
|
347
381
|
items={Object.values(STATUSES)}
|
@@ -362,6 +396,7 @@ const RepositorySetsTab = () => {
|
|
362
396
|
isOpen={isBulkActionOpen}
|
363
397
|
isPlain
|
364
398
|
dropdownItems={dropdownItems}
|
399
|
+
ouiaId="repository-sets-bulk-actions"
|
365
400
|
/>
|
366
401
|
</ActionListItem>
|
367
402
|
</ActionList>
|
@@ -403,6 +438,7 @@ const RepositorySetsTab = () => {
|
|
403
438
|
<Alert
|
404
439
|
variant="info"
|
405
440
|
className="repo-sets-alert"
|
441
|
+
ouiaId="repo-sets-alert"
|
406
442
|
isInline
|
407
443
|
title={
|
408
444
|
<FormattedMessage
|
@@ -415,7 +451,7 @@ const RepositorySetsTab = () => {
|
|
415
451
|
}}
|
416
452
|
/>
|
417
453
|
}
|
418
|
-
actionClose={<AlertActionCloseButton onClose={() => setAlertShowing(false)} />}
|
454
|
+
actionClose={<AlertActionCloseButton ouiaId="alert-close-button" onClose={() => setAlertShowing(false)} />}
|
419
455
|
/>
|
420
456
|
}
|
421
457
|
</div>
|
@@ -435,6 +471,13 @@ const RepositorySetsTab = () => {
|
|
435
471
|
emptySearchBody,
|
436
472
|
activeFilters,
|
437
473
|
defaultFilters,
|
474
|
+
showPrimaryAction,
|
475
|
+
showSecondaryAction,
|
476
|
+
primaryActionLink,
|
477
|
+
secondaryActionLink,
|
478
|
+
primaryActionTitle,
|
479
|
+
secondaryActionTitle,
|
480
|
+
resetFilters,
|
438
481
|
}
|
439
482
|
}
|
440
483
|
ouiaId="host-repository-sets-table"
|
@@ -449,10 +492,12 @@ const RepositorySetsTab = () => {
|
|
449
492
|
rowsCount={results?.length}
|
450
493
|
variant={TableVariant.compact}
|
451
494
|
{...selectAll}
|
495
|
+
requestKey={REPOSITORY_SETS_KEY}
|
452
496
|
displaySelectAllCheckbox={canDoContentOverrides}
|
497
|
+
alwaysShowActionButtons={false}
|
453
498
|
>
|
454
499
|
<Thead>
|
455
|
-
<Tr>
|
500
|
+
<Tr ouiaId="header-tr">
|
456
501
|
<Th key="select-all" />
|
457
502
|
<SortableColumnHeaders
|
458
503
|
columnHeaders={columnHeaders}
|
@@ -473,11 +518,13 @@ const RepositorySetsTab = () => {
|
|
473
518
|
contentUrl: repoPath,
|
474
519
|
product: { name: productName, id: productId },
|
475
520
|
osRestricted,
|
521
|
+
archRestricted,
|
476
522
|
} = repoSet;
|
477
523
|
const { isEnabled, isOverridden } =
|
478
524
|
getEnabledValue({ enabled, enabledContentOverride });
|
525
|
+
const showArchRestricted = archRestricted !== 'noarch';
|
479
526
|
return (
|
480
|
-
<Tr key={id}>
|
527
|
+
<Tr key={id} ouiaId={`tr-${rowIndex}`}>
|
481
528
|
{canDoContentOverrides ? (
|
482
529
|
<Td select={{
|
483
530
|
disable: !isSelectable(id),
|
@@ -499,6 +546,9 @@ const RepositorySetsTab = () => {
|
|
499
546
|
</Td>
|
500
547
|
<Td>
|
501
548
|
<span><EnabledIcon key={`enabled-icon-${id}`} {...{ isEnabled, isOverridden }} /></span>
|
549
|
+
{showArchRestricted &&
|
550
|
+
<span><ArchRestrictedIcon key={`arch-restricted-icon-${id}`} {...{ archRestricted }} /></span>
|
551
|
+
}
|
502
552
|
{osRestricted &&
|
503
553
|
<span><OsRestrictedIcon key={`os-restricted-icon-${id}`} {...{ osRestricted }} /></span>
|
504
554
|
}
|
@@ -22,6 +22,7 @@ import { useRexJobPolling } from '../RemoteExecutionHooks';
|
|
22
22
|
import { hasRequiredPermissions as can,
|
23
23
|
missingRequiredPermissions as cannot,
|
24
24
|
userPermissionsFromHostDetails } from '../../hostDetailsHelpers';
|
25
|
+
import { HOST_TRACES_KEY } from './HostTracesConstants';
|
25
26
|
|
26
27
|
const invokeRexJobs = ['create_job_invocations'];
|
27
28
|
const createBookmarks = ['create_bookmarks'];
|
@@ -201,6 +202,7 @@ const TracesTab = () => {
|
|
201
202
|
lastCompletedAppRestart, lastCompletedBulkRestart]}
|
202
203
|
displaySelectAllCheckbox={showActions}
|
203
204
|
{...selectAll}
|
205
|
+
requestKey={HOST_TRACES_KEY}
|
204
206
|
>
|
205
207
|
<Thead>
|
206
208
|
<Tr>
|
@@ -577,7 +577,7 @@ test('Toggle Group shows if it\'s not the default content view or library enviro
|
|
577
577
|
assertNockRequest(scope, done); // Pass jest callback to confirm test is done
|
578
578
|
});
|
579
579
|
|
580
|
-
test('Toggle Group
|
580
|
+
test('Toggle Group shows if it\'s the default content view but non-library environment', async (done) => {
|
581
581
|
const options = renderOptions({
|
582
582
|
...contentFacetAttributes,
|
583
583
|
content_view_default: true,
|
@@ -598,14 +598,41 @@ test('Toggle Group does not show if it\'s the default content view ', async (don
|
|
598
598
|
|
599
599
|
// Assert that the errata are now showing on the screen, but wait for them to appear.
|
600
600
|
await patientlyWaitFor(() => expect(getAllByText('Important')[0]).toBeInTheDocument());
|
601
|
-
expect(queryByLabelText('Installable Errata')).
|
601
|
+
expect(queryByLabelText('Installable Errata')).toBeInTheDocument();
|
602
|
+
assertNockRequest(autocompleteScope);
|
603
|
+
assertNockRequest(scope, done); // Pass jest callback to confirm test is done
|
604
|
+
});
|
605
|
+
|
606
|
+
test('Toggle Group shows if it\'s the library environment but non-default content view', async (done) => {
|
607
|
+
const options = renderOptions({
|
608
|
+
...contentFacetAttributes,
|
609
|
+
lifecycle_environment_library: true,
|
610
|
+
});
|
611
|
+
// Setup autocomplete with mockForemanAutoComplete since we aren't adding /katello
|
612
|
+
const autocompleteScope = mockForemanAutocomplete(nockInstance, autocompleteUrl);
|
613
|
+
const mockErrata = makeMockErrata({});
|
614
|
+
// return errata data results when we look for errata
|
615
|
+
const scope = nockInstance
|
616
|
+
.get(hostErrata)
|
617
|
+
.query(defaultQuery)
|
618
|
+
.reply(200, mockErrata);
|
619
|
+
|
620
|
+
const {
|
621
|
+
queryByLabelText,
|
622
|
+
getAllByText,
|
623
|
+
} = renderWithRedux(<ErrataTab />, options);
|
624
|
+
|
625
|
+
// Assert that the errata are now showing on the screen, but wait for them to appear.
|
626
|
+
await patientlyWaitFor(() => expect(getAllByText('Important')[0]).toBeInTheDocument());
|
627
|
+
expect(queryByLabelText('Installable Errata')).toBeInTheDocument();
|
602
628
|
assertNockRequest(autocompleteScope);
|
603
629
|
assertNockRequest(scope, done); // Pass jest callback to confirm test is done
|
604
630
|
});
|
605
631
|
|
606
|
-
test('Toggle Group does not show if it\'s the
|
632
|
+
test('Toggle Group does not show if it\'s the default content view and library environment', async (done) => {
|
607
633
|
const options = renderOptions({
|
608
634
|
...contentFacetAttributes,
|
635
|
+
content_view_default: true,
|
609
636
|
lifecycle_environment_library: true,
|
610
637
|
});
|
611
638
|
// Setup autocomplete with mockForemanAutoComplete since we aren't adding /katello
|
@@ -42,6 +42,7 @@
|
|
42
42
|
"gpgUrl": null,
|
43
43
|
"contentUrl": "/custom/ParthaProduct/empty_repo",
|
44
44
|
"osRestricted": null,
|
45
|
+
"archRestricted": "noarch",
|
45
46
|
"override": "default",
|
46
47
|
"overrides": [],
|
47
48
|
"enabled_content_override": null
|
@@ -77,6 +78,7 @@
|
|
77
78
|
"gpgUrl": null,
|
78
79
|
"contentUrl": "/custom/ParthaProduct/partha_multi-errata",
|
79
80
|
"osRestricted": "rhel-7",
|
81
|
+
"archRestricted": "x86_64",
|
80
82
|
"override": "0",
|
81
83
|
"overrides": [
|
82
84
|
{
|
@@ -110,6 +112,7 @@
|
|
110
112
|
"gpgUrl": null,
|
111
113
|
"contentUrl": "/custom/Pull_Provider/yggdrasil",
|
112
114
|
"osRestricted": null,
|
115
|
+
"archRestricted": "noarch",
|
113
116
|
"override": "1",
|
114
117
|
"overrides": [
|
115
118
|
{
|
@@ -8,6 +8,7 @@ import mockRepoSetData from './repositorySets.fixtures.json';
|
|
8
8
|
import mockBookmarkData from './bookmarks.fixtures.json';
|
9
9
|
import mockContentOverride from './contentOverrides.fixtures.json';
|
10
10
|
|
11
|
+
|
11
12
|
jest.mock('../../hostDetailsHelpers', () => ({
|
12
13
|
...jest.requireActual('../../hostDetailsHelpers'),
|
13
14
|
userPermissionsFromHostDetails: () => ({
|
@@ -46,7 +47,7 @@ const autocompleteUrl = '/repository_sets/auto_complete_search';
|
|
46
47
|
const repositorySetBookmarks = foremanApi.getApiUrl('/bookmarks?search=controller%3Dkatello_product_contents');
|
47
48
|
const contentOverride = foremanApi.getApiUrl('/hosts/1/subscriptions/content_override');
|
48
49
|
|
49
|
-
const
|
50
|
+
const limitToEnvQuery = {
|
50
51
|
content_access_mode_env: true,
|
51
52
|
content_access_mode_all: true,
|
52
53
|
host_id: 1,
|
@@ -56,8 +57,8 @@ const defaultQuery = {
|
|
56
57
|
sort_by: 'name',
|
57
58
|
sort_order: 'asc',
|
58
59
|
};
|
59
|
-
const
|
60
|
-
...
|
60
|
+
const showAllQuery = {
|
61
|
+
...limitToEnvQuery,
|
61
62
|
content_access_mode_env: false,
|
62
63
|
};
|
63
64
|
|
@@ -86,7 +87,7 @@ test('Can call API for repository sets and show basic table', async (done) => {
|
|
86
87
|
const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl);
|
87
88
|
const scope = nockInstance
|
88
89
|
.get(hostRepositorySets)
|
89
|
-
.query(
|
90
|
+
.query(limitToEnvQuery)
|
90
91
|
.reply(200, mockRepoSetData);
|
91
92
|
|
92
93
|
const { getByText } = renderWithRedux(<RepositorySetsTab />, renderOptions());
|
@@ -110,7 +111,7 @@ test('Can handle no repository sets being present', async (done) => {
|
|
110
111
|
|
111
112
|
const scope = nockInstance
|
112
113
|
.get(hostRepositorySets)
|
113
|
-
.query(
|
114
|
+
.query(limitToEnvQuery)
|
114
115
|
.reply(200, noResults);
|
115
116
|
|
116
117
|
const { queryByText } = renderWithRedux(<RepositorySetsTab />, renderOptions());
|
@@ -126,7 +127,7 @@ test('Toggle Group shows if it\'s not the default content view or library enviro
|
|
126
127
|
const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl);
|
127
128
|
const scope = nockInstance
|
128
129
|
.get(hostRepositorySets)
|
129
|
-
.query(
|
130
|
+
.query(limitToEnvQuery)
|
130
131
|
.reply(200, mockRepoSetData);
|
131
132
|
|
132
133
|
const {
|
@@ -141,7 +142,7 @@ test('Toggle Group shows if it\'s not the default content view or library enviro
|
|
141
142
|
assertNockRequest(scope, done); // Pass jest callback to confirm test is done
|
142
143
|
});
|
143
144
|
|
144
|
-
test('Toggle Group
|
145
|
+
test('Toggle Group shows if it\'s the default content view but non-library environment', async (done) => {
|
145
146
|
const options = renderOptions({
|
146
147
|
...contentFacetAttributes,
|
147
148
|
content_view_default: true,
|
@@ -150,7 +151,7 @@ test('Toggle Group does not show if it\'s the default content view ', async (don
|
|
150
151
|
const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl);
|
151
152
|
const scope = nockInstance
|
152
153
|
.get(hostRepositorySets)
|
153
|
-
.query(
|
154
|
+
.query(limitToEnvQuery)
|
154
155
|
.reply(200, mockRepoSetData);
|
155
156
|
|
156
157
|
const {
|
@@ -160,21 +161,46 @@ test('Toggle Group does not show if it\'s the default content view ', async (don
|
|
160
161
|
|
161
162
|
// Assert that the errata are now showing on the screen, but wait for them to appear.
|
162
163
|
await patientlyWaitFor(() => expect(getByText(firstRepoSet.contentUrl)).toBeInTheDocument());
|
163
|
-
expect(queryByLabelText('Limit to environment')).
|
164
|
+
expect(queryByLabelText('Limit to environment')).toBeInTheDocument();
|
165
|
+
assertNockRequest(autocompleteScope);
|
166
|
+
assertNockRequest(scope, done); // Pass jest callback to confirm test is done
|
167
|
+
});
|
168
|
+
|
169
|
+
test('Toggle Group shows if it\'s the library environment but a non-default content view', async (done) => {
|
170
|
+
const options = renderOptions({
|
171
|
+
...contentFacetAttributes,
|
172
|
+
lifecycle_environment_library: true,
|
173
|
+
});
|
174
|
+
const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl);
|
175
|
+
// return errata data results when we look for errata
|
176
|
+
const scope = nockInstance
|
177
|
+
.get(hostRepositorySets)
|
178
|
+
.query(limitToEnvQuery)
|
179
|
+
.reply(200, mockRepoSetData);
|
180
|
+
|
181
|
+
const {
|
182
|
+
queryByLabelText,
|
183
|
+
getByText,
|
184
|
+
} = renderWithRedux(<RepositorySetsTab />, options);
|
185
|
+
|
186
|
+
// Assert that the errata are now showing on the screen, but wait for them to appear.
|
187
|
+
await patientlyWaitFor(() => expect(getByText(firstRepoSet.contentUrl)).toBeInTheDocument());
|
188
|
+
expect(queryByLabelText('Limit to environment')).toBeInTheDocument();
|
164
189
|
assertNockRequest(autocompleteScope);
|
165
190
|
assertNockRequest(scope, done); // Pass jest callback to confirm test is done
|
166
191
|
});
|
167
192
|
|
168
|
-
test('Toggle Group does not show if it\'s the library environment', async (done) => {
|
193
|
+
test('Toggle Group does not show if it\'s the library environment and default content view', async (done) => {
|
169
194
|
const options = renderOptions({
|
170
195
|
...contentFacetAttributes,
|
171
196
|
lifecycle_environment_library: true,
|
197
|
+
content_view_default: true,
|
172
198
|
});
|
173
199
|
const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl);
|
174
200
|
// return errata data results when we look for errata
|
175
201
|
const scope = nockInstance
|
176
202
|
.get(hostRepositorySets)
|
177
|
-
.query(
|
203
|
+
.query(showAllQuery)
|
178
204
|
.reply(200, mockRepoSetData);
|
179
205
|
|
180
206
|
const {
|
@@ -195,7 +221,7 @@ test('Can toggle with the Toggle Group ', async (done) => {
|
|
195
221
|
// return errata data results when we look for errata
|
196
222
|
const scope = nockInstance
|
197
223
|
.get(hostRepositorySets)
|
198
|
-
.query(
|
224
|
+
.query(limitToEnvQuery)
|
199
225
|
.reply(200, mockRepoSetData);
|
200
226
|
|
201
227
|
const {
|
@@ -215,7 +241,7 @@ test('Can override to disabled', async (done) => {
|
|
215
241
|
const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl);
|
216
242
|
const scope = nockInstance
|
217
243
|
.get(hostRepositorySets)
|
218
|
-
.query(
|
244
|
+
.query(limitToEnvQuery)
|
219
245
|
.reply(200, mockRepoSetData);
|
220
246
|
const overrides = JSON.parse(JSON.stringify(mockContentOverride));
|
221
247
|
overrides.results[0].enabled_content_override = false;
|
@@ -253,7 +279,7 @@ test('Can override to enabled', async (done) => {
|
|
253
279
|
const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl);
|
254
280
|
const scope = nockInstance
|
255
281
|
.get(hostRepositorySets)
|
256
|
-
.query(
|
282
|
+
.query(limitToEnvQuery)
|
257
283
|
.reply(200, mockRepoSetData);
|
258
284
|
const overrides = JSON.parse(JSON.stringify(mockContentOverride));
|
259
285
|
overrides.results[1].enabled_content_override = true;
|
@@ -292,7 +318,7 @@ test('Can reset to default', async (done) => {
|
|
292
318
|
const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl);
|
293
319
|
const scope = nockInstance
|
294
320
|
.get(hostRepositorySets)
|
295
|
-
.query(
|
321
|
+
.query(limitToEnvQuery)
|
296
322
|
.reply(200, mockRepoSetData);
|
297
323
|
const overrides = JSON.parse(JSON.stringify(mockContentOverride));
|
298
324
|
overrides.results[1].enabled_content_override = null;
|
@@ -331,7 +357,7 @@ test('Can override in bulk', async (done) => {
|
|
331
357
|
const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl);
|
332
358
|
const scope = nockInstance
|
333
359
|
.get(hostRepositorySets)
|
334
|
-
.query(
|
360
|
+
.query(limitToEnvQuery)
|
335
361
|
.reply(200, mockRepoSetData);
|
336
362
|
const contentOverrideScope = nockInstance
|
337
363
|
.put(contentOverride)
|
@@ -359,12 +385,12 @@ test('Can filter by status', async (done) => {
|
|
359
385
|
const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl);
|
360
386
|
const scope = nockInstance
|
361
387
|
.get(hostRepositorySets)
|
362
|
-
.query(
|
388
|
+
.query(limitToEnvQuery)
|
363
389
|
.reply(200, mockRepoSetData);
|
364
390
|
|
365
391
|
const scope2 = nockInstance
|
366
392
|
.get(hostRepositorySets)
|
367
|
-
.query({ ...
|
393
|
+
.query({ ...limitToEnvQuery, status: 'overridden' })
|
368
394
|
.reply(200, { ...mockRepoSetData, results: [secondRepoSet] });
|
369
395
|
|
370
396
|
const {
|
@@ -389,11 +415,11 @@ test('Can filter by status', async (done) => {
|
|
389
415
|
assertNockRequest(scope2, done); // Pass jest callback to confirm test is done
|
390
416
|
});
|
391
417
|
|
392
|
-
test('Can display
|
418
|
+
test('Can display restrictions as labels', async (done) => {
|
393
419
|
const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl);
|
394
420
|
const scope = nockInstance
|
395
421
|
.get(hostRepositorySets)
|
396
|
-
.query(
|
422
|
+
.query(limitToEnvQuery)
|
397
423
|
.reply(200, mockRepoSetData);
|
398
424
|
|
399
425
|
const { getByText } = renderWithRedux(<RepositorySetsTab />, renderOptions());
|
@@ -401,6 +427,8 @@ test('Can display osRestricted as a label', async (done) => {
|
|
401
427
|
await patientlyWaitFor(() => expect(getByText(secondRepoSet.contentUrl)).toBeInTheDocument());
|
402
428
|
expect(secondRepoSet.osRestricted).not.toBeNull();
|
403
429
|
expect(getByText(secondRepoSet.osRestricted)).toBeInTheDocument();
|
430
|
+
expect(secondRepoSet.archRestricted).not.toBeNull();
|
431
|
+
expect(getByText(secondRepoSet.archRestricted)).toBeInTheDocument();
|
404
432
|
assertNockRequest(autocompleteScope);
|
405
433
|
assertNockRequest(scope, done); // Pass jest callback to confirm test is done
|
406
434
|
});
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
import { renderWithRedux, waitFor, patientlyWaitFor, fireEvent, act } from 'react-testing-lib-wrapper';
|
3
|
-
import
|
3
|
+
import { nockInstance, assertNockRequest, mockForemanAutocomplete, mockSetting } from '../../../../../test-utils/nockWrapper';
|
4
4
|
import { foremanApi } from '../../../../../services/api';
|
5
5
|
import { REX_FEATURES } from '../RemoteExecutionConstants';
|
6
6
|
import { HOST_TRACES_KEY, TRACES_SEARCH_QUERY } from '../TracesTab/HostTracesConstants';
|
@@ -74,7 +74,6 @@ describe('With tracer installed', () => {
|
|
74
74
|
assertNockRequest(searchDelayScope);
|
75
75
|
assertNockRequest(autoSearchScope);
|
76
76
|
assertNockRequest(bookmarkScope);
|
77
|
-
nock.cleanAll();
|
78
77
|
});
|
79
78
|
|
80
79
|
test('Can call API for traces and show on screen on page load', async (done) => {
|
@@ -345,10 +344,6 @@ describe('With tracer installed', () => {
|
|
345
344
|
[firstTrace] = results;
|
346
345
|
});
|
347
346
|
|
348
|
-
afterEach(() => {
|
349
|
-
nock.cleanAll();
|
350
|
-
});
|
351
|
-
|
352
347
|
test('Does not allow selection of session type traces', async (done) => {
|
353
348
|
const autocompleteScope = mockForemanAutocomplete(nockInstance, autocompleteUrl);
|
354
349
|
|
@@ -374,10 +369,6 @@ describe('With tracer installed', () => {
|
|
374
369
|
});
|
375
370
|
|
376
371
|
describe('Without tracer installed', () => {
|
377
|
-
afterEach(() => {
|
378
|
-
nock.cleanAll();
|
379
|
-
});
|
380
|
-
|
381
372
|
test('Shows Enable Tracer empty state', async () => {
|
382
373
|
const { queryByText } = renderWithRedux(<TracesTab />, renderOptions(false));
|
383
374
|
|
@@ -35,7 +35,7 @@ export const userPermissionsFromHostDetails = ({ hostDetails }) => {
|
|
35
35
|
|
36
36
|
// requiredPermissions is an array
|
37
37
|
// userPermissions is an object, e.g. { view_hosts: true }
|
38
|
-
export const hasRequiredPermissions = (requiredPermissions = [], userPermissions) => {
|
38
|
+
export const hasRequiredPermissions = (requiredPermissions = [], userPermissions = {}) => {
|
39
39
|
const permittedActions = Object.keys(userPermissions).filter(key => userPermissions[key]);
|
40
40
|
return requiredPermissions.every(permission => permittedActions.includes(permission));
|
41
41
|
};
|
@@ -7,32 +7,20 @@ import LifecycleEnvironment from './fields/LifecycleEnvironment';
|
|
7
7
|
import IgnoreSubmanErrors from './fields/IgnoreSubmanErrors';
|
8
8
|
import Force from './fields/Force';
|
9
9
|
|
10
|
-
const RegistrationCommands = ({
|
10
|
+
export const RegistrationCommands = ({
|
11
11
|
organizationId,
|
12
12
|
hostGroupId,
|
13
13
|
pluginValues,
|
14
14
|
pluginData,
|
15
15
|
onChange,
|
16
|
-
handleInvalidField,
|
17
16
|
isLoading,
|
18
17
|
}) => {
|
19
18
|
useEffect(() => {
|
20
|
-
onChange({
|
19
|
+
onChange({ lifecycleEnvironmentId: '' });
|
21
20
|
}, [onChange, organizationId, hostGroupId]);
|
22
21
|
|
23
22
|
return (
|
24
23
|
<>
|
25
|
-
<ActivationKeys
|
26
|
-
activationKeys={pluginData?.activationKeys}
|
27
|
-
organizationId={organizationId}
|
28
|
-
selectedKeys={(pluginValues?.activationKeys || [])}
|
29
|
-
hostGroupActivationKeys={pluginData?.hostGroupActivationKeys}
|
30
|
-
hostGroupId={hostGroupId}
|
31
|
-
pluginValues={pluginValues}
|
32
|
-
onChange={onChange}
|
33
|
-
handleInvalidField={handleInvalidField}
|
34
|
-
isLoading={isLoading}
|
35
|
-
/>
|
36
24
|
<LifecycleEnvironment
|
37
25
|
pluginValues={pluginValues}
|
38
26
|
lifecycleEnvironments={pluginData?.lifecycleEnvironments}
|
@@ -63,7 +51,6 @@ RegistrationCommands.propTypes = {
|
|
63
51
|
pluginValues: PropTypes.object, // eslint-disable-line react/forbid-prop-types
|
64
52
|
pluginData: PropTypes.object, // eslint-disable-line react/forbid-prop-types
|
65
53
|
onChange: PropTypes.func,
|
66
|
-
handleInvalidField: PropTypes.func,
|
67
54
|
isLoading: PropTypes.bool,
|
68
55
|
};
|
69
56
|
|
@@ -74,7 +61,52 @@ RegistrationCommands.defaultProps = {
|
|
74
61
|
pluginData: {},
|
75
62
|
isLoading: false,
|
76
63
|
onChange: noop,
|
77
|
-
handleInvalidField: noop,
|
78
64
|
};
|
79
65
|
|
80
|
-
export
|
66
|
+
export const RegistrationActivationKeys = ({
|
67
|
+
organizationId,
|
68
|
+
hostGroupId,
|
69
|
+
pluginValues,
|
70
|
+
pluginData,
|
71
|
+
onChange,
|
72
|
+
handleInvalidField,
|
73
|
+
isLoading,
|
74
|
+
}) => {
|
75
|
+
useEffect(() => {
|
76
|
+
onChange({ activationKeys: [] });
|
77
|
+
}, [onChange, organizationId, hostGroupId]);
|
78
|
+
|
79
|
+
return (
|
80
|
+
<ActivationKeys
|
81
|
+
activationKeys={pluginData?.activationKeys}
|
82
|
+
organizationId={organizationId}
|
83
|
+
selectedKeys={(pluginValues?.activationKeys || [])}
|
84
|
+
hostGroupActivationKeys={pluginData?.hostGroupActivationKeys}
|
85
|
+
hostGroupId={hostGroupId}
|
86
|
+
pluginValues={pluginValues}
|
87
|
+
onChange={onChange}
|
88
|
+
handleInvalidField={handleInvalidField}
|
89
|
+
isLoading={isLoading}
|
90
|
+
/>
|
91
|
+
);
|
92
|
+
};
|
93
|
+
|
94
|
+
RegistrationActivationKeys.propTypes = {
|
95
|
+
organizationId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
96
|
+
hostGroupId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
97
|
+
pluginValues: PropTypes.object, // eslint-disable-line react/forbid-prop-types
|
98
|
+
pluginData: PropTypes.object, // eslint-disable-line react/forbid-prop-types
|
99
|
+
onChange: PropTypes.func,
|
100
|
+
handleInvalidField: PropTypes.func,
|
101
|
+
isLoading: PropTypes.bool,
|
102
|
+
};
|
103
|
+
|
104
|
+
RegistrationActivationKeys.defaultProps = {
|
105
|
+
organizationId: undefined,
|
106
|
+
hostGroupId: undefined,
|
107
|
+
pluginValues: {},
|
108
|
+
pluginData: {},
|
109
|
+
isLoading: false,
|
110
|
+
onChange: noop,
|
111
|
+
handleInvalidField: noop,
|
112
|
+
};
|