katello 4.6.2.1 → 4.7.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/assets/javascripts/katello/common/vendor.js +0 -1
- data/app/controllers/katello/api/v2/activation_keys_controller.rb +1 -0
- data/app/controllers/katello/api/v2/alternate_content_sources_controller.rb +4 -4
- data/app/controllers/katello/api/v2/capsule_content_controller.rb +5 -0
- data/app/controllers/katello/api/v2/content_imports_controller.rb +1 -0
- data/app/controllers/katello/api/v2/content_view_components_controller.rb +1 -1
- data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +2 -1
- data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +1 -1
- data/app/controllers/katello/api/v2/organizations_controller.rb +1 -0
- data/app/controllers/katello/api/v2/repositories_controller.rb +78 -12
- data/app/controllers/katello/api/v2/upstream_subscriptions_controller.rb +1 -1
- data/app/controllers/katello/concerns/api/v2/registration_controller_extensions.rb +7 -1
- data/app/controllers/katello/concerns/api/v2/smart_proxies_controller_extensions.rb +1 -0
- data/app/controllers/katello/concerns/hosts_controller_extensions.rb +11 -9
- data/app/helpers/katello/content_source_helper.rb +9 -0
- data/app/helpers/katello/hosts_and_hostgroups_helper.rb +31 -0
- data/app/lib/actions/katello/activation_key/destroy.rb +1 -0
- data/app/lib/actions/katello/agent_action.rb +1 -0
- data/app/lib/actions/katello/alternate_content_source/create.rb +1 -1
- data/app/lib/actions/katello/alternate_content_source/update.rb +2 -2
- data/app/lib/actions/katello/capsule_content/sync.rb +10 -2
- data/app/lib/actions/katello/cdn_configuration/update.rb +1 -1
- data/app/lib/actions/katello/content_view/promote.rb +1 -0
- data/app/lib/actions/katello/content_view/publish.rb +5 -2
- data/app/lib/actions/katello/content_view_version/auto_create_redhat_repositories.rb +7 -3
- data/app/lib/actions/katello/content_view_version/auto_create_repositories.rb +4 -2
- data/app/lib/actions/katello/content_view_version/import.rb +22 -10
- data/app/lib/actions/katello/product/destroy.rb +1 -1
- data/app/lib/actions/katello/repository/destroy.rb +3 -3
- data/app/lib/actions/katello/repository/errata_mail.rb +9 -6
- data/app/lib/actions/katello/repository/refresh_repository.rb +1 -1
- data/app/lib/actions/katello/repository/sync.rb +13 -6
- data/app/lib/actions/katello/repository_set/enable_repository.rb +6 -2
- data/app/lib/actions/pulp3/alternate_content_source/refresh_remote.rb +16 -0
- data/app/lib/actions/pulp3/orchestration/alternate_content_source/refresh.rb +1 -0
- data/app/lib/actions/pulp3/orchestration/content_view_version/export_library.rb +1 -1
- data/app/lib/actions/pulp3/orchestration/content_view_version/export_repository.rb +10 -2
- data/app/lib/katello/concerns/renderer_extensions.rb +2 -1
- data/app/lib/katello/errors.rb +2 -2
- data/app/lib/katello/resources/candlepin.rb +7 -1
- data/app/lib/katello/resources/cdn/katello_cdn.rb +3 -13
- data/app/lib/katello/resources/cdn.rb +14 -9
- data/app/lib/katello/util/candlepin_repository_checker.rb +73 -0
- data/app/models/katello/activation_key.rb +12 -1
- data/app/models/katello/alternate_content_source.rb +15 -4
- data/app/models/katello/alternate_content_source_product.rb +1 -1
- data/app/models/katello/authorization/repository.rb +2 -2
- data/app/models/katello/cdn_configuration.rb +12 -3
- data/app/models/katello/concerns/host_managed_extensions.rb +15 -2
- data/app/models/katello/concerns/http_proxy_extensions.rb +5 -10
- data/app/models/katello/concerns/smart_proxy_extensions.rb +30 -15
- data/app/models/katello/content.rb +15 -0
- data/app/models/katello/content_credential.rb +8 -9
- data/app/models/katello/content_view.rb +7 -3
- data/app/models/katello/content_view_component.rb +4 -0
- data/app/models/katello/content_view_version.rb +1 -1
- data/app/models/katello/erratum.rb +6 -2
- data/app/models/katello/host/content_facet.rb +13 -3
- data/app/models/katello/repository.rb +15 -1
- data/app/models/katello/root_repository.rb +0 -2
- data/app/overrides/add_smart_proxy_form.rb +5 -0
- data/app/presenters/katello/content_view_version_compare_presenter.rb +5 -0
- data/app/presenters/katello/host_package_presenter.rb +4 -4
- data/app/services/katello/pulp3/alternate_content_source.rb +23 -15
- data/app/services/katello/pulp3/ansible_collection.rb +7 -10
- data/app/services/katello/pulp3/content_view_version/export.rb +19 -6
- data/app/services/katello/pulp3/content_view_version/import.rb +2 -0
- data/app/services/katello/pulp3/content_view_version/import_validator.rb +21 -5
- data/app/services/katello/pulp3/content_view_version/importable_products.rb +11 -1
- data/app/services/katello/pulp3/content_view_version/importable_repositories.rb +38 -9
- data/app/services/katello/pulp3/content_view_version/metadata_generator.rb +12 -5
- data/app/services/katello/pulp3/content_view_version/metadata_map.rb +13 -2
- data/app/services/katello/pulp3/content_view_version/syncable_format_export.rb +5 -1
- data/app/services/katello/pulp3/pulp_content_unit.rb +3 -0
- data/app/services/katello/pulp3/repository.rb +18 -6
- data/app/services/katello/pulp3/repository_mirror.rb +0 -1
- data/app/services/katello/pulp3/smart_proxy_mirror_repository.rb +2 -2
- data/app/services/katello/pulp3/task_group.rb +18 -1
- data/app/services/katello/repository_type.rb +5 -2
- data/app/services/katello/repository_type_manager.rb +4 -3
- data/app/views/dashboard/_content_views_widget.html.erb +1 -1
- data/app/views/foreman/job_templates/change_content_source.erb +6 -0
- data/app/views/foreman/job_templates/update_packages_by_search_query.erb +7 -1
- data/app/views/katello/api/v2/alternate_content_sources/base.json.rabl +4 -4
- data/app/views/katello/api/v2/alternate_content_sources/index.json.rabl +1 -0
- data/app/views/katello/api/v2/alternate_content_sources/permissions.rabl +11 -0
- data/app/views/katello/api/v2/content_credentials/show.json.rabl +12 -0
- data/app/views/katello/api/v2/content_views/permissions.rabl +1 -0
- data/app/views/katello/api/v2/host_packages/base.json.rabl +1 -1
- data/app/views/katello/api/v2/module_streams/show.json.rabl +7 -0
- data/app/views/katello/api/v2/repositories/compare.json.rabl +10 -0
- data/app/views/katello/api/v2/smart_proxies/pulp_info.json.rabl +1 -0
- data/app/views/katello/hosts/_errata_counts.html.erb +46 -0
- data/app/views/overrides/activation_keys/_host_synced_content_select.html.erb +1 -0
- data/app/views/overrides/smart_proxies/_acs_http_proxy.html.erb +6 -0
- data/config/initializers/monkeys.rb +1 -0
- data/config/routes/api/v2.rb +2 -0
- data/config/routes.rb +3 -0
- data/db/migrate/20220730033504_update_custom_cdn.rb +13 -0
- data/db/migrate/20220920173656_add_http_proxy_to_smart_proxy.rb +7 -0
- data/db/migrate/20220920180858_remove_http_proxy_from_katello_alternate_content_sources.rb +6 -0
- data/engines/bastion/app/assets/javascripts/bastion/components/notification.service.js +1 -1
- data/engines/bastion/app/views/bastion/layouts/assets.html.erb +5 -5
- data/engines/bastion/vendor/assets/javascripts/bastion/angular/angular.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/content-credential.factory.js +17 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/content-credentials.routes.js +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/details/content-credential-acs.controller.js +36 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/details/content-credential-details.controller.js +7 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/details/views/content-credential-acs.html +38 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/details/views/content-credential-details.html +3 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/views/content-credentials.html +7 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.controller.js +4 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +4 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +14 -1392
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/katello-features.run.js +1 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details.controller.js +7 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-details.html +1 -1
- data/lib/katello/permission_creator.rb +1 -0
- data/lib/katello/plugin.rb +34 -11
- data/lib/katello/repository_types/deb.rb +1 -1
- data/lib/katello/repository_types/docker.rb +1 -1
- data/lib/katello/repository_types/python.rb +3 -3
- data/lib/katello/tasks/check_candlepin_content.rake +16 -0
- data/lib/katello/tasks/reset.rake +1 -1
- data/lib/katello/version.rb +1 -1
- data/lib/monkeys/try_pulp_container_path.rb +35 -0
- data/locale/action_names.rb +7 -7
- data/locale/bn/katello.po +395 -63
- data/locale/cs/katello.po +396 -64
- data/locale/de/katello.po +399 -67
- data/locale/en/katello.po +395 -63
- data/locale/es/katello.po +399 -67
- data/locale/fr/katello.po +400 -68
- data/locale/gu/katello.po +395 -63
- data/locale/hi/katello.po +395 -63
- data/locale/it/katello.po +396 -64
- data/locale/ja/katello.po +400 -68
- data/locale/katello.pot +1916 -1213
- data/locale/kn/katello.po +395 -63
- data/locale/ko/katello.po +396 -64
- data/locale/mr/katello.po +395 -63
- data/locale/or/katello.po +395 -63
- data/locale/pa/katello.po +395 -63
- data/locale/pt/katello.po +395 -63
- data/locale/pt_BR/katello.po +399 -67
- data/locale/ru/katello.po +396 -64
- data/locale/ta/katello.po +395 -63
- data/locale/te/katello.po +395 -63
- data/locale/zh_CN/katello.po +400 -68
- data/locale/zh_TW/katello.po +396 -64
- data/webpack/components/Bookmark/index.js +5 -1
- data/webpack/components/Content/Details/ContentDetails.js +1 -1
- data/webpack/components/Content/Details/__tests__/__snapshots__/ContentDetails.test.js.snap +6 -0
- data/webpack/components/EditableSwitch.js +1 -0
- data/webpack/components/EditableTextInput/EditableTextInput.js +3 -3
- data/webpack/components/Errata/errataHelpers.js +33 -0
- data/webpack/components/Errata/index.js +45 -12
- data/webpack/components/Loading.js +18 -8
- data/webpack/components/Packages/index.js +8 -24
- data/webpack/components/RoutedTabs/index.js +1 -0
- data/webpack/components/Search/Search.js +20 -2
- data/webpack/components/Search/__tests__/search.test.js +3 -3
- data/webpack/components/Table/EmptyStateMessage.js +1 -1
- data/webpack/components/Table/PageControls.js +1 -0
- data/webpack/components/Table/TableHooks.js +4 -0
- data/webpack/components/Table/TableWrapper.js +7 -7
- data/webpack/components/TypeAhead/pf4Search/TypeAheadInput.js +1 -0
- data/webpack/components/TypeAhead/pf4Search/TypeAheadItems.js +2 -0
- data/webpack/components/TypeAhead/pf4Search/TypeAheadSearch.js +1 -1
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ChangeHostCVModal.js +3 -1
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ContentViewDetailsCard.js +2 -1
- data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.js +124 -68
- data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.scss +5 -0
- data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsCard.js +30 -4
- data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsCard.scss +23 -0
- data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsModal.js +5 -4
- data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/__tests__/hostCollectionsCard.test.js +25 -10
- data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.js +3 -3
- data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeEditModal.js +6 -0
- data/webpack/components/extensions/HostDetails/Cards/__tests__/errataOverviewCard.test.js +145 -32
- data/webpack/components/extensions/HostDetails/DetailsTabCards/RegistrationCard.js +3 -1
- data/webpack/components/extensions/HostDetails/Tabs/ContentTab/constants.js +2 -1
- data/webpack/components/extensions/HostDetails/Tabs/ContentTab/index.js +1 -0
- data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.js +78 -26
- data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsTab.js +23 -10
- data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/HostPackagesConstants.js +1 -0
- data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackageInstallModal.js +9 -4
- data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.js +141 -23
- data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.scss +6 -1
- data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionActions.js +9 -8
- data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +24 -3
- data/webpack/components/extensions/HostDetails/Tabs/TracesTab/EnableTracerModal.js +7 -2
- data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesEnabler.js +2 -1
- data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesTab.js +20 -4
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/errataTab.test.js +56 -38
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/packages.fixtures.json +3 -3
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/packagesTab.test.js +5 -4
- data/webpack/components/extensions/HostDetails/Tabs/customizedRexUrlHelpers.js +3 -3
- data/webpack/containers/Application/config.js +2 -2
- data/webpack/containers/Application/overrides.scss +12 -0
- data/webpack/global_test_setup.js +19 -1
- data/webpack/ouia_id_check.js +0 -2
- data/webpack/redux/actions/RedHatRepositories/helpers.js +4 -8
- data/webpack/scenes/AlternateContentSources/ACSActions.js +37 -6
- data/webpack/scenes/AlternateContentSources/ACSConstants.js +2 -0
- data/webpack/scenes/AlternateContentSources/ACSIndexPage.js +1 -1
- data/webpack/scenes/AlternateContentSources/ACSSelectors.js +6 -6
- data/webpack/scenes/AlternateContentSources/Acs.scss +3 -0
- data/webpack/scenes/AlternateContentSources/Create/ACSCreateWizard.js +24 -3
- data/webpack/scenes/AlternateContentSources/Create/Steps/ACSCreateFinish.js +10 -8
- data/webpack/scenes/AlternateContentSources/Create/Steps/ACSCredentials.js +25 -4
- data/webpack/scenes/AlternateContentSources/Create/Steps/ACSReview.js +22 -11
- data/webpack/scenes/AlternateContentSources/Create/Steps/ACSSmartProxies.js +27 -2
- data/webpack/scenes/AlternateContentSources/Create/Steps/AcsUrlPaths.js +49 -17
- data/webpack/scenes/AlternateContentSources/Create/Steps/SelectSource.js +76 -23
- data/webpack/scenes/AlternateContentSources/Create/__tests__/acsCreate.test.js +159 -11
- data/webpack/scenes/AlternateContentSources/Details/ACSExpandableDetails.js +83 -29
- data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditCredentials.js +9 -8
- data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditDetails.js +2 -2
- data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditProducts.js +2 -2
- data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditSmartProxies.js +39 -7
- data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditURLPaths.js +27 -11
- data/webpack/scenes/AlternateContentSources/Details/__tests__/ACSEdits.test.js +58 -55
- data/webpack/scenes/AlternateContentSources/Details/__tests__/ACSExpandableDetails.test.js +35 -32
- data/webpack/scenes/AlternateContentSources/MainTable/ACSTable.js +323 -150
- data/webpack/scenes/AlternateContentSources/MainTable/__tests__/acsIndex.fixtures.json +5 -1
- data/webpack/scenes/AlternateContentSources/MainTable/__tests__/acsTable.test.js +10 -11
- data/webpack/scenes/AlternateContentSources/helpers.js +26 -0
- data/webpack/scenes/ContentViews/ContentViewsConstants.js +1 -0
- data/webpack/scenes/ContentViews/ContentViewsPage.js +1 -1
- data/webpack/scenes/ContentViews/Copy/CopyContentViewForm.js +1 -0
- data/webpack/scenes/ContentViews/Copy/CopyContentViewModal.js +1 -0
- data/webpack/scenes/ContentViews/Create/ContentViewFormComponents.js +10 -5
- data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +30 -7
- data/webpack/scenes/ContentViews/Create/CreateContentViewModal.js +1 -0
- data/webpack/scenes/ContentViews/Create/__tests__/createContentView.test.js +21 -6
- data/webpack/scenes/ContentViews/Delete/Steps/CVDeleteEnvironmentsSelection.js +3 -3
- data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignActivationKeysForm.js +1 -0
- data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignHostsForm.js +1 -0
- data/webpack/scenes/ContentViews/Delete/__tests__/CvData.fixtures.json +2 -0
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewAddModal.js +3 -0
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewBulkAddModal.js +4 -1
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentVersion.js +1 -1
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +2 -1
- data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +14 -0
- data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +11 -1
- data/webpack/scenes/ContentViews/Details/ContentViewDetails.js +1 -1
- data/webpack/scenes/ContentViews/Details/ContentViewInfo.js +2 -0
- data/webpack/scenes/ContentViews/Details/Filters/Add/CVFilterAddModal.js +5 -0
- data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositorySelection.js +1 -0
- data/webpack/scenes/ContentViews/Details/Filters/ArtifactsWithNoErrata.js +1 -0
- data/webpack/scenes/ContentViews/Details/Filters/CVContainerImageFilterContent.js +8 -2
- data/webpack/scenes/ContentViews/Details/Filters/CVDebFilterContent.js +5 -1
- data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +22 -6
- data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +19 -9
- data/webpack/scenes/ContentViews/Details/Filters/CVModuleStreamFilterContent.js +9 -2
- data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +9 -2
- data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +8 -2
- data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetailsHeader.js +1 -1
- data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +2 -1
- data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/CVRpmMatchContentModal.js +3 -2
- data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContentModal.test.js +1 -1
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVContainerImageFilterContent.test.js +2 -2
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVRpmFilterContent.test.js +1 -1
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilterDetails.test.js +1 -1
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.test.js +1 -1
- data/webpack/scenes/ContentViews/Details/Histories/ContentViewHistories.js +2 -2
- data/webpack/scenes/ContentViews/Details/Promote/ContentViewVersionPromote.js +2 -0
- data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +2 -1
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReviewEnvironments.js +3 -3
- data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompare.js +9 -1
- data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareConfig.js +83 -0
- data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareTable.js +32 -8
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/CVVersionCompare.test.js +56 -3
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/cvCompareRepositories.fixtures.json +175 -0
- data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +6 -2
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVEnvironmentSelectionForm.js +3 -3
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignActivationKeysForm.js +1 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignHostsForm.js +1 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedActivationKeys.js +2 -2
- data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedHosts.js +2 -2
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailConfig.js +2 -2
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.js +1 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsHeader.js +4 -1
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsTable.js +5 -4
- data/webpack/scenes/ContentViews/Publish/CVPublishForm.js +5 -1
- data/webpack/scenes/ContentViews/Publish/CVPublishReview.js +3 -3
- data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +10 -5
- data/webpack/scenes/ContentViews/__tests__/basicContentViews.fixtures.js +2 -0
- data/webpack/scenes/ContentViews/__tests__/contentViewList.fixtures.json +1 -0
- data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +81 -19
- data/webpack/scenes/ContentViews/components/CVBreadCrumb.js +1 -1
- data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.js +1 -0
- data/webpack/scenes/ContentViews/components/InactiveText.js +9 -1
- data/webpack/scenes/ContentViews/expansions/RelatedCompositeContentViewsModal.js +4 -2
- data/webpack/scenes/ContentViews/expansions/RelatedContentViewComponentsModal.js +3 -2
- data/webpack/scenes/Hosts/ChangeContentSource/actions.js +18 -11
- data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceForm.js +15 -8
- data/webpack/scenes/Hosts/ChangeContentSource/components/FormField.js +3 -4
- data/webpack/scenes/Hosts/ChangeContentSource/components/Hosts.js +55 -0
- data/webpack/scenes/Hosts/ChangeContentSource/components/HostsModal.js +59 -0
- data/webpack/scenes/Hosts/ChangeContentSource/constants.js +1 -0
- data/webpack/scenes/Hosts/ChangeContentSource/helpers.js +2 -5
- data/webpack/scenes/Hosts/ChangeContentSource/index.js +46 -41
- data/webpack/scenes/Hosts/ChangeContentSource/selectors.js +5 -5
- data/webpack/scenes/ModuleStreams/Details/ModuleDetailsSchema.js +10 -1
- data/webpack/scenes/ModuleStreams/Details/ModuleStreamDetails.js +1 -1
- data/webpack/scenes/ModuleStreams/Details/__tests__/__snapshots__/ModuleStreamDetails.test.js.snap +97 -2
- data/webpack/scenes/Organizations/OrganizationSelectors.js +1 -0
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CdnConfigurationConstants.js +2 -1
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CdnTypeForm.js +10 -25
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CustomCdnTypeForm.js +154 -0
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/ExportSyncForm.js +4 -4
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/NetworkSyncForm.js +59 -44
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/CdnTypeForm.test.js +3 -28
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/CustomCdnTypeForm.test.js +97 -0
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/ExportSyncForm.test.js +1 -1
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/NetworkSyncForm.test.js +4 -4
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/index.js +23 -10
- data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +1 -1
- data/webpack/scenes/Subscriptions/SubscriptionConstants.js +2 -1
- data/webpack/scenes/Subscriptions/SubscriptionsPage.js +5 -5
- data/webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsPage.js +3 -3
- data/webpack/scenes/Subscriptions/UpstreamSubscriptions/__tests__/__snapshots__/UpstreamSubscriptionsPage.test.js.snap +2 -2
- data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsPage.test.js.snap +3 -3
- data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/SubscriptionsToolbar.js +3 -3
- data/webpack/scenes/Tasks/helpers.js +14 -7
- metadata +54 -35
- data/app/lib/actions/pulp3/orchestration/alternate_content_source/refresh_remote.rb +0 -18
- data/db/migrate/20221206170122_update_ignore_srpm_to_false_for_mirror_complete.rb +0 -5
- data/vendor/assets/javascripts/katello/jquery.trunk8.js +0 -203
@@ -37,6 +37,7 @@ const Bookmark = ({
|
|
37
37
|
const dropDownItems = [
|
38
38
|
...results.map(({ name, id, query }) => (
|
39
39
|
<DropdownItem
|
40
|
+
ouiaId={`bookmarkItem-${id}`}
|
40
41
|
onClick={() => setSelectItem(query)}
|
41
42
|
key={id}
|
42
43
|
tooltip={query}
|
@@ -46,8 +47,9 @@ const Bookmark = ({
|
|
46
47
|
];
|
47
48
|
if (showActions) {
|
48
49
|
dropDownItems.push(
|
49
|
-
<DropdownSeparator key="separator" />,
|
50
|
+
<DropdownSeparator key="separator" ouiaId="bookmark-separator" />,
|
50
51
|
<DropdownItem
|
52
|
+
ouiaId="add-bookmark"
|
51
53
|
onClick={() => {
|
52
54
|
setDropdownOpen(false);
|
53
55
|
setModalOpen(true);
|
@@ -63,9 +65,11 @@ const Bookmark = ({
|
|
63
65
|
return (
|
64
66
|
<>
|
65
67
|
<Dropdown
|
68
|
+
ouiaId="bookmark-dropdown"
|
66
69
|
aria-label="bookmark-dropdown"
|
67
70
|
toggle={
|
68
71
|
<DropdownToggle
|
72
|
+
ouiaId="bookmark-toggle"
|
69
73
|
isDisabled={isDisabled || status !== STATUS.RESOLVED}
|
70
74
|
onToggle={setDropdownOpen}
|
71
75
|
id="toggle-id"
|
@@ -36,7 +36,7 @@ const ContentDetails = (props) => {
|
|
36
36
|
loading={loading}
|
37
37
|
loadingText={__('Loading')}
|
38
38
|
>
|
39
|
-
<TabContainer id="content-tabs-container" defaultActiveKey={1}>
|
39
|
+
<TabContainer id="content-tabs-container" defaultActiveKey={1} style={{ margin: '0', padding: '0' }}>
|
40
40
|
<Grid>
|
41
41
|
<Row>
|
42
42
|
<Col sm={12}>
|
@@ -10,6 +10,12 @@ exports[`Content Details Info should render and contain appropriate components 1
|
|
10
10
|
<ForwardRef
|
11
11
|
defaultActiveKey={1}
|
12
12
|
id="content-tabs-container"
|
13
|
+
style={
|
14
|
+
Object {
|
15
|
+
"margin": "0",
|
16
|
+
"padding": "0",
|
17
|
+
}
|
18
|
+
}
|
13
19
|
>
|
14
20
|
<Grid
|
15
21
|
bsClass="container"
|
@@ -76,7 +76,7 @@ const EditableTextInput = ({
|
|
76
76
|
<Split>
|
77
77
|
<SplitItem>
|
78
78
|
{textArea ?
|
79
|
-
(<TextArea {...inputProps} aria-label={`${attribute} text area`}
|
79
|
+
(<TextArea {...inputProps} aria-label={`${attribute} text area`} />) :
|
80
80
|
(<TextInput
|
81
81
|
{...inputProps}
|
82
82
|
type={(isPassword && !showPassword) ? 'password' : 'text'}
|
@@ -120,10 +120,10 @@ const EditableTextInput = ({
|
|
120
120
|
<Split>
|
121
121
|
<SplitItem>
|
122
122
|
{inputValue ?
|
123
|
-
<Text aria-label={`${attribute} text value`} component={component}>
|
123
|
+
<Text ouiaId={`${attribute}-text-value`} aria-label={`${attribute} text value`} component={component}>
|
124
124
|
{editing ? inputValue : passwordPlaceholder || inputValue}
|
125
125
|
</Text> :
|
126
|
-
<Text className="textInput-placeholder" aria-label={`${attribute} text value`} component={component}>
|
126
|
+
<Text ouiaId={`${attribute}-text-value`} className="textInput-placeholder" aria-label={`${attribute} text value`} component={component}>
|
127
127
|
{passwordPlaceholder || placeholder}
|
128
128
|
</Text>}
|
129
129
|
</SplitItem >
|
@@ -0,0 +1,33 @@
|
|
1
|
+
export const errataStatusContemplation = (errataStatus) => {
|
2
|
+
// from backend errata_status.rb:
|
3
|
+
// NEEDED_SECURITY_ERRATA = 3
|
4
|
+
// NEEDED_ERRATA = 2
|
5
|
+
// UNKNOWN = 1
|
6
|
+
// UP_TO_DATE = 0
|
7
|
+
const neededErrata = ([2, 3].includes(Number(errataStatus)));
|
8
|
+
const allUpToDate = (errataStatus === 0);
|
9
|
+
const otherErrataStatus = (!allUpToDate && !neededErrata);
|
10
|
+
|
11
|
+
return {
|
12
|
+
neededErrata,
|
13
|
+
allUpToDate,
|
14
|
+
otherErrataStatus,
|
15
|
+
};
|
16
|
+
};
|
17
|
+
|
18
|
+
export const friendlyErrataStatus = (errataStatus) => {
|
19
|
+
switch (errataStatus) {
|
20
|
+
case 0:
|
21
|
+
return 'All up to date';
|
22
|
+
case 1:
|
23
|
+
return 'Unknown';
|
24
|
+
// eslint-disable-next-line no-sequences
|
25
|
+
case 2:
|
26
|
+
case 3:
|
27
|
+
return 'Needed';
|
28
|
+
default:
|
29
|
+
return 'Unknown';
|
30
|
+
}
|
31
|
+
};
|
32
|
+
|
33
|
+
export default errataStatusContemplation;
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
import PropTypes from 'prop-types';
|
3
3
|
import { TableText } from '@patternfly/react-table';
|
4
|
-
import { Tooltip } from '@patternfly/react-core';
|
4
|
+
import { Tooltip, ToggleGroupItem } from '@patternfly/react-core';
|
5
5
|
import {
|
6
6
|
chart_color_black_500 as pfBlack,
|
7
7
|
chart_color_gold_400 as pfGold,
|
@@ -17,9 +17,11 @@ import {
|
|
17
17
|
} from '@patternfly/react-icons';
|
18
18
|
import { TranslatedAnchor } from '../Table/components/TranslatedPlural';
|
19
19
|
|
20
|
-
export const ErrataMapper = ({ data, id
|
20
|
+
export const ErrataMapper = ({ data, id, errataCategory }) =>
|
21
|
+
data.map(({ x: type, y: count }) =>
|
22
|
+
<ErrataSummary count={count} type={type} key={`${count} ${type}`} id={id} errataCategory={errataCategory} />);
|
21
23
|
|
22
|
-
export const ErrataSummary = ({ type, count }) => {
|
24
|
+
export const ErrataSummary = ({ type, count, errataCategory }) => {
|
23
25
|
let ErrataIcon;
|
24
26
|
let label;
|
25
27
|
let url;
|
@@ -33,7 +35,7 @@ export const ErrataSummary = ({ type, count }) => {
|
|
33
35
|
<TranslatedAnchor
|
34
36
|
id="errata-card-security-count"
|
35
37
|
style={{ marginLeft: '0.4rem' }}
|
36
|
-
href=
|
38
|
+
href={`#/Content/errata?type=security&show=${errataCategory}`}
|
37
39
|
count={count}
|
38
40
|
plural="security advisories"
|
39
41
|
singular="security advisory"
|
@@ -51,7 +53,7 @@ export const ErrataSummary = ({ type, count }) => {
|
|
51
53
|
<TranslatedAnchor
|
52
54
|
id="errata-card-bugfix-count"
|
53
55
|
style={{ marginLeft: '0.4rem' }}
|
54
|
-
href=
|
56
|
+
href={`#/Content/errata?type=bugfix&show=${errataCategory}`}
|
55
57
|
count={count}
|
56
58
|
plural="bug fixes"
|
57
59
|
singular="bug fix"
|
@@ -69,7 +71,7 @@ export const ErrataSummary = ({ type, count }) => {
|
|
69
71
|
<TranslatedAnchor
|
70
72
|
id="errata-card-enhancement-count"
|
71
73
|
style={{ marginLeft: '0.4rem' }}
|
72
|
-
href=
|
74
|
+
href={`#/Content/errata?type=enhancement&show=${errataCategory}`}
|
73
75
|
count={count}
|
74
76
|
plural="enhancements"
|
75
77
|
singular="enhancement"
|
@@ -100,15 +102,18 @@ export const ErrataSummary = ({ type, count }) => {
|
|
100
102
|
ErrataSummary.propTypes = {
|
101
103
|
type: PropTypes.string.isRequired,
|
102
104
|
count: PropTypes.number.isRequired,
|
105
|
+
errataCategory: PropTypes.string.isRequired,
|
103
106
|
};
|
104
107
|
|
105
108
|
export const ErrataType = ({ type }) => {
|
106
109
|
let ErrataIcon;
|
107
110
|
let label;
|
111
|
+
let verticalAlign = '-0.125em';
|
108
112
|
switch (type) {
|
109
113
|
case 'security':
|
110
114
|
label = __('Security');
|
111
115
|
ErrataIcon = SecurityIcon;
|
116
|
+
verticalAlign = '-0.2em';
|
112
117
|
break;
|
113
118
|
case 'recommended':
|
114
119
|
case 'bugfix':
|
@@ -127,9 +132,11 @@ export const ErrataType = ({ type }) => {
|
|
127
132
|
|
128
133
|
return (
|
129
134
|
<TableText wrapModifier="nowrap">
|
130
|
-
<
|
131
|
-
<
|
132
|
-
|
135
|
+
<span style={{ marginRight: '4px' }}>
|
136
|
+
<Tooltip content={label}>
|
137
|
+
<ErrataIcon style={{ verticalAlign }} />
|
138
|
+
</Tooltip>
|
139
|
+
</span>
|
133
140
|
{label}
|
134
141
|
</TableText>
|
135
142
|
);
|
@@ -166,9 +173,11 @@ export const ErrataSeverity = ({ severity }) => {
|
|
166
173
|
return (
|
167
174
|
<TableText wrapModifier="nowrap">
|
168
175
|
{color &&
|
169
|
-
<
|
170
|
-
<
|
171
|
-
|
176
|
+
<span style={{ marginRight: '4px' }}>
|
177
|
+
<Tooltip content={label} >
|
178
|
+
<SecurityIcon color={color} style={{ verticalAlign: '-0.2em' }} />
|
179
|
+
</Tooltip>
|
180
|
+
</span>
|
172
181
|
}
|
173
182
|
{label}
|
174
183
|
</TableText>
|
@@ -178,3 +187,27 @@ export const ErrataSeverity = ({ severity }) => {
|
|
178
187
|
ErrataSeverity.propTypes = {
|
179
188
|
severity: PropTypes.string.isRequired,
|
180
189
|
};
|
190
|
+
|
191
|
+
export const ErrataToggleGroupItem = ({
|
192
|
+
text, tooltipText, isSelected, onChange, ...toggleGroupItemProps
|
193
|
+
}) => (
|
194
|
+
<Tooltip
|
195
|
+
content={tooltipText}
|
196
|
+
position="top"
|
197
|
+
enableFlip
|
198
|
+
>
|
199
|
+
<ToggleGroupItem
|
200
|
+
text={text}
|
201
|
+
isSelected={isSelected}
|
202
|
+
onChange={onChange}
|
203
|
+
{...toggleGroupItemProps}
|
204
|
+
/>
|
205
|
+
</Tooltip>
|
206
|
+
);
|
207
|
+
|
208
|
+
ErrataToggleGroupItem.propTypes = {
|
209
|
+
text: PropTypes.string.isRequired,
|
210
|
+
tooltipText: PropTypes.string.isRequired,
|
211
|
+
isSelected: PropTypes.bool.isRequired,
|
212
|
+
onChange: PropTypes.func.isRequired,
|
213
|
+
};
|
@@ -6,31 +6,41 @@ import {
|
|
6
6
|
EmptyState,
|
7
7
|
EmptyStateIcon,
|
8
8
|
Spinner,
|
9
|
+
Skeleton,
|
9
10
|
} from '@patternfly/react-core';
|
10
11
|
import { translate as __ } from 'foremanReact/common/I18n';
|
11
12
|
|
12
|
-
const Loading = ({
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
13
|
+
const Loading = ({
|
14
|
+
size, showText, loadingText, skeleton,
|
15
|
+
}) => {
|
16
|
+
if (skeleton) {
|
17
|
+
return <Skeleton height="100%" />;
|
18
|
+
}
|
19
|
+
return (
|
20
|
+
<Bullseye>
|
21
|
+
<EmptyState>
|
22
|
+
<EmptyStateIcon size={size} variant="container" component={Spinner} />
|
23
|
+
{showText && (
|
17
24
|
<Title size={size} headingLevel="h4" ouiaId="loading-title">
|
18
25
|
{loadingText || __('Loading')}
|
19
26
|
</Title>)}
|
20
|
-
|
21
|
-
|
22
|
-
);
|
27
|
+
</EmptyState>
|
28
|
+
</Bullseye>
|
29
|
+
);
|
30
|
+
};
|
23
31
|
|
24
32
|
Loading.propTypes = {
|
25
33
|
size: PropTypes.string,
|
26
34
|
showText: PropTypes.bool,
|
27
35
|
loadingText: PropTypes.string,
|
36
|
+
skeleton: PropTypes.bool,
|
28
37
|
};
|
29
38
|
|
30
39
|
Loading.defaultProps = {
|
31
40
|
size: 'lg',
|
32
41
|
showText: true,
|
33
42
|
loadingText: null,
|
43
|
+
skeleton: false,
|
34
44
|
};
|
35
45
|
|
36
46
|
|
@@ -7,12 +7,12 @@ import {
|
|
7
7
|
} from '@patternfly/react-icons';
|
8
8
|
import PropTypes from 'prop-types';
|
9
9
|
|
10
|
-
|
10
|
+
const PackagesStatus = ({ upgradable_versions: upgradableVersions }) => {
|
11
11
|
let PackagesIcon;
|
12
12
|
let label;
|
13
13
|
let color;
|
14
14
|
|
15
|
-
if (
|
15
|
+
if (upgradableVersions === null) {
|
16
16
|
color = 'green';
|
17
17
|
label = __('Up-to date');
|
18
18
|
PackagesIcon = CheckIcon;
|
@@ -31,30 +31,14 @@ export const PackagesStatus = ({ upgradable_version: upgradableVersion }) => {
|
|
31
31
|
};
|
32
32
|
|
33
33
|
PackagesStatus.propTypes = {
|
34
|
-
|
34
|
+
upgradable_versions: PropTypes.arrayOf(PropTypes.oneOfType([
|
35
|
+
PropTypes.string,
|
36
|
+
PropTypes.arrayOf(PropTypes.string),
|
37
|
+
])),
|
35
38
|
};
|
36
39
|
|
37
40
|
PackagesStatus.defaultProps = {
|
38
|
-
|
41
|
+
upgradable_versions: null,
|
39
42
|
};
|
40
43
|
|
41
|
-
export
|
42
|
-
let label;
|
43
|
-
|
44
|
-
if (upgradableVersion == null) {
|
45
|
-
label = '';
|
46
|
-
} else {
|
47
|
-
label = upgradableVersion.replace(`${name}-`, '');
|
48
|
-
}
|
49
|
-
|
50
|
-
return <TableText wrapModifier="nowrap">{label || '—'} </TableText>;
|
51
|
-
};
|
52
|
-
|
53
|
-
PackagesLatestVersion.propTypes = {
|
54
|
-
name: PropTypes.string.isRequired,
|
55
|
-
upgradable_version: PropTypes.string,
|
56
|
-
};
|
57
|
-
|
58
|
-
PackagesLatestVersion.defaultProps = {
|
59
|
-
upgradable_version: null,
|
60
|
-
};
|
44
|
+
export default PackagesStatus;
|
@@ -12,6 +12,25 @@ import {
|
|
12
12
|
AUTOSEARCH_WHILE_TYPING,
|
13
13
|
} from '../../scenes/Settings/SettingsConstants';
|
14
14
|
|
15
|
+
// Don't trigger auto-search until you've typed an operator and begun to type a value
|
16
|
+
const searchContainsOperator = (search = '') => {
|
17
|
+
const operators = ['>=', '<=', '>', '<', '~', '^', '!^', '=', '!=', '~', '!~'];
|
18
|
+
return operators.some(operator => search.includes(operator) && !search.trim().endsWith(operator));
|
19
|
+
};
|
20
|
+
// Apply the above function only to the last 'key = value' pair, if there are multiple
|
21
|
+
const allowSearch = (originalSearch = '') => {
|
22
|
+
const search = originalSearch.toLowerCase().trim();
|
23
|
+
// find the last occurrence of 'or' or 'and'
|
24
|
+
const lastOr = originalSearch.lastIndexOf(' or ');
|
25
|
+
const lastAnd = originalSearch.lastIndexOf(' and ');
|
26
|
+
if (lastOr === -1 && lastAnd === -1) {
|
27
|
+
return searchContainsOperator(search);
|
28
|
+
}
|
29
|
+
const winningOperator = lastOr > lastAnd ? ' or ' : ' and ';
|
30
|
+
const lastSearch = search.split(winningOperator);
|
31
|
+
return searchContainsOperator(lastSearch[lastSearch.length - 1]);
|
32
|
+
};
|
33
|
+
|
15
34
|
const Search = ({
|
16
35
|
onSearch,
|
17
36
|
updateSearchQuery,
|
@@ -61,8 +80,7 @@ const Search = ({
|
|
61
80
|
})));
|
62
81
|
}
|
63
82
|
}
|
64
|
-
|
65
|
-
if (autoSearchEnabled && patternfly4) {
|
83
|
+
if (autoSearchEnabled && patternfly4 && allowSearch(searchTerm)) {
|
66
84
|
onSearch(searchTerm || '');
|
67
85
|
}
|
68
86
|
};
|
@@ -77,8 +77,8 @@ test('search function is called when search is typed into with autosearch', asyn
|
|
77
77
|
const mockSearch = jest.fn();
|
78
78
|
|
79
79
|
const { getByLabelText } = renderWithRedux(<Search {...{ ...props, onSearch: mockSearch }} />);
|
80
|
-
fireEvent.change(getByLabelText(/text input for search/i), { target: { value: 'foo' } });
|
81
|
-
await patientlyWaitFor(() => expect(mockSearch.mock.calls).toHaveLength(
|
80
|
+
fireEvent.change(getByLabelText(/text input for search/i), { target: { value: 'name = foo' } });
|
81
|
+
await patientlyWaitFor(() => expect(mockSearch.mock.calls).toHaveLength(1));
|
82
82
|
|
83
83
|
assertNockRequest(autoSearchScope);
|
84
84
|
assertNockRequest(autocompleteScope, done);
|
@@ -98,7 +98,7 @@ test('search function is called by clicking search button without autosearch', a
|
|
98
98
|
expect(searchButton).toBeInTheDocument();
|
99
99
|
});
|
100
100
|
searchButton.click();
|
101
|
-
expect(mockSearch.mock.calls).toHaveLength(
|
101
|
+
expect(mockSearch.mock.calls).toHaveLength(1);
|
102
102
|
assertNockRequest(autoSearchScope);
|
103
103
|
assertNockRequest(autocompleteScope, done);
|
104
104
|
});
|
@@ -281,6 +281,10 @@ export const useTableSort = ({
|
|
281
281
|
const [activeSortColumn, setActiveSortColumn] = useState(translatedInitialSortColumnName);
|
282
282
|
const [activeSortDirection, setActiveSortDirection] = useState('asc');
|
283
283
|
|
284
|
+
if (!allColumns.includes(activeSortColumn)) {
|
285
|
+
setActiveSortColumn(translatedInitialSortColumnName);
|
286
|
+
}
|
287
|
+
|
284
288
|
// Patternfly sort function
|
285
289
|
const onSort = (_event, index, direction) => {
|
286
290
|
setActiveSortColumn(allColumns?.[index]);
|
@@ -42,7 +42,7 @@ const TableWrapper = ({
|
|
42
42
|
selectedResults,
|
43
43
|
clearSelectedResults,
|
44
44
|
emptySearchBody,
|
45
|
-
|
45
|
+
hideSearch,
|
46
46
|
nodesBelowSearch,
|
47
47
|
bookmarkController,
|
48
48
|
readOnlyBookmarks,
|
@@ -101,8 +101,8 @@ const TableWrapper = ({
|
|
101
101
|
let paramsOverride;
|
102
102
|
const activeFiltersHaveChanged = hasChanged(activeFilters, prevActiveFilters.current);
|
103
103
|
const searchQueryHasChanged = hasChanged(searchQuery, prevSearch.current);
|
104
|
-
if (searchQuery && !
|
105
|
-
if (!
|
104
|
+
if (searchQuery && !hideSearch) paramsOverride = { search: searchQuery };
|
105
|
+
if (!hideSearch && (searchQueryHasChanged || activeFiltersHaveChanged)) {
|
106
106
|
// Reset page back to 1 when filter or search changes
|
107
107
|
prevSearch.current = searchQuery;
|
108
108
|
prevActiveFilters.current = activeFilters;
|
@@ -118,7 +118,7 @@ const TableWrapper = ({
|
|
118
118
|
fetchWithParams();
|
119
119
|
}
|
120
120
|
}, [
|
121
|
-
|
121
|
+
hideSearch,
|
122
122
|
activeFilters,
|
123
123
|
dispatch,
|
124
124
|
fetchItems,
|
@@ -184,7 +184,7 @@ const TableWrapper = ({
|
|
184
184
|
/>
|
185
185
|
</FlexItem>
|
186
186
|
}
|
187
|
-
{!
|
187
|
+
{!hideSearch && !hideToolbar &&
|
188
188
|
<FlexItem>
|
189
189
|
<Search
|
190
190
|
isDisabled={unresolvedStatusOrNoRows && !searchQuery}
|
@@ -304,7 +304,7 @@ TableWrapper.propTypes = {
|
|
304
304
|
areAllRowsOnPageSelected: PropTypes.func,
|
305
305
|
areAllRowsSelected: PropTypes.func,
|
306
306
|
emptySearchBody: PropTypes.string,
|
307
|
-
|
307
|
+
hideSearch: PropTypes.bool,
|
308
308
|
nodesBelowSearch: PropTypes.node,
|
309
309
|
bookmarkController: PropTypes.string,
|
310
310
|
readOnlyBookmarks: PropTypes.bool,
|
@@ -334,7 +334,7 @@ TableWrapper.defaultProps = {
|
|
334
334
|
areAllRowsOnPageSelected: noop,
|
335
335
|
areAllRowsSelected: noop,
|
336
336
|
emptySearchBody: __('Try changing your search settings.'),
|
337
|
-
|
337
|
+
hideSearch: false,
|
338
338
|
nodesBelowSearch: null,
|
339
339
|
bookmarkController: undefined,
|
340
340
|
readOnlyBookmarks: false,
|
@@ -25,6 +25,7 @@ const TypeAheadItems = ({
|
|
25
25
|
const { onClick, ...dropdownProps } = itemProps;
|
26
26
|
return (
|
27
27
|
<DropdownItem
|
28
|
+
ouiaId={text}
|
28
29
|
{...dropdownProps}
|
29
30
|
component={
|
30
31
|
<button onClick={onClick}>{text}</button>
|
@@ -41,6 +42,7 @@ const TypeAheadItems = ({
|
|
41
42
|
isOpen={isOpen}
|
42
43
|
dropdownItems={buildDropdownItems()}
|
43
44
|
className="typeahead-dropdown"
|
45
|
+
ouiaId="typeahead-dropdown"
|
44
46
|
/>
|
45
47
|
);
|
46
48
|
};
|
@@ -50,7 +50,7 @@ const TypeAheadSearch = ({
|
|
50
50
|
controller={bookmarkController}
|
51
51
|
/>}
|
52
52
|
{(!autoSearchEnabled && !isTextInput) &&
|
53
|
-
<Button aria-label="search button" variant="control" onClick={() => onSearch(inputValue)}>
|
53
|
+
<Button ouiaId="search-button" aria-label="search button" variant="control" onClick={() => onSearch(inputValue)}>
|
54
54
|
<SearchIcon />
|
55
55
|
</Button>}
|
56
56
|
</>
|
data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ChangeHostCVModal.js
CHANGED
@@ -138,6 +138,7 @@ const ChangeHostCVModal = ({
|
|
138
138
|
const modalActions = ([
|
139
139
|
<Button
|
140
140
|
key="add"
|
141
|
+
ouiaId="change-host-cv-modal-add-button"
|
141
142
|
variant="primary"
|
142
143
|
onClick={handleSave}
|
143
144
|
isDisabled={!canSave}
|
@@ -145,7 +146,7 @@ const ChangeHostCVModal = ({
|
|
145
146
|
>
|
146
147
|
{__('Save')}
|
147
148
|
</Button>,
|
148
|
-
<Button key="cancel" variant="link" onClick={handleModalClose}>
|
149
|
+
<Button key="cancel" ouiaId="change-host-cv-modal-cancel-button" variant="link" onClick={handleModalClose}>
|
149
150
|
Cancel
|
150
151
|
</Button>,
|
151
152
|
]);
|
@@ -159,6 +160,7 @@ const ChangeHostCVModal = ({
|
|
159
160
|
position="top"
|
160
161
|
actions={modalActions}
|
161
162
|
id="change-host-cv-modal"
|
163
|
+
ouiaId="change-host-cv-modal"
|
162
164
|
>
|
163
165
|
{contentViewsInEnvStatus === STATUS.RESOLVED &&
|
164
166
|
!!selectedEnvForHost.length && contentViewsInEnv.length === 0 &&
|
@@ -53,6 +53,7 @@ const HostContentViewDetails = ({
|
|
53
53
|
const dropdownItems = [
|
54
54
|
<DropdownItem
|
55
55
|
aria-label="change-host-content-view"
|
56
|
+
ouiaId="change-host-content-view"
|
56
57
|
key="change-host-content-view"
|
57
58
|
component="button"
|
58
59
|
onClick={openModal}
|
@@ -63,7 +64,7 @@ const HostContentViewDetails = ({
|
|
63
64
|
|
64
65
|
return (
|
65
66
|
<GridItem rowSpan={1} md={6} lg={4} xl2={3} >
|
66
|
-
<Card
|
67
|
+
<Card ouiaId="content-view-details-card">
|
67
68
|
<CardHeader>
|
68
69
|
<Flex
|
69
70
|
alignItems={{ default: 'alignItemsCenter' }}
|