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
@@ -109,7 +109,12 @@ const CVErrataDateFilterContent = ({
|
|
109
109
|
const invalidDateFormat = __('Enter a valid date: MM/DD/YYYY');
|
110
110
|
|
111
111
|
return (
|
112
|
-
<Tabs
|
112
|
+
<Tabs
|
113
|
+
className="margin-0-24"
|
114
|
+
ouiaId="errata-date-filter-tabs"
|
115
|
+
activeKey={activeTabKey}
|
116
|
+
onSelect={(_event, eventKey) => setActiveTabKey(eventKey)}
|
117
|
+
>
|
113
118
|
<Tab eventKey={0} title={<TabTitleText>{tabTitle}</TabTitleText>}>
|
114
119
|
<div className="margin-24">
|
115
120
|
<Form onSubmit={(e) => {
|
@@ -125,6 +130,7 @@ const CVErrataDateFilterContent = ({
|
|
125
130
|
onSelect={(_event, selection) => onTypeSelect(selection)}
|
126
131
|
selections={selectedTypes}
|
127
132
|
isOpen={typeSelectOpen}
|
133
|
+
ouiaId="errata-type-selector"
|
128
134
|
placeholderText={__('Errata type')}
|
129
135
|
isCheckboxSelectionBadgeHidden
|
130
136
|
>
|
@@ -180,6 +186,7 @@ const CVErrataDateFilterContent = ({
|
|
180
186
|
isOpen={dateTypeSelectOpen}
|
181
187
|
onToggle={setDateTypeSelectOpen}
|
182
188
|
id="date_type_selector"
|
189
|
+
ouiaId="date_type_selector"
|
183
190
|
name="date_type_selector"
|
184
191
|
aria-label="date_type_selector"
|
185
192
|
isDisabled={!hasPermission(permissions, 'edit_content_views')}
|
@@ -207,7 +214,7 @@ const CVErrataDateFilterContent = ({
|
|
207
214
|
</FlexItem>
|
208
215
|
<FlexItem spacer={{ default: 'spacerNone' }}>
|
209
216
|
<Bullseye style={{ padding: '0 5px' }}>
|
210
|
-
<Text>{__('to')}</Text>
|
217
|
+
<Text ouiaId="to-text">{__('to')}</Text>
|
211
218
|
</Bullseye>
|
212
219
|
</FlexItem>
|
213
220
|
<FlexItem span={2}>
|
@@ -230,9 +237,10 @@ const CVErrataDateFilterContent = ({
|
|
230
237
|
</Flex>
|
231
238
|
<Flex>
|
232
239
|
<FlexItem>
|
233
|
-
<ChipGroup categoryName={__('Type')}>
|
240
|
+
<ChipGroup ouiaId="chipgroup-type" categoryName={__('Type')}>
|
234
241
|
{selectedTypes.map(type => (
|
235
242
|
<Chip
|
243
|
+
ouiaId={type}
|
236
244
|
key={type}
|
237
245
|
onClick={() => onTypeSelect(type)}
|
238
246
|
isReadOnly={singleSelection(type) || !hasPermission(permissions, 'edit_content_views')}
|
@@ -243,12 +251,20 @@ const CVErrataDateFilterContent = ({
|
|
243
251
|
</ChipGroup>
|
244
252
|
</FlexItem>
|
245
253
|
<FlexItem>
|
246
|
-
<ChipGroup
|
247
|
-
|
254
|
+
<ChipGroup
|
255
|
+
ouiaId="chip-issued"
|
256
|
+
categoryName={dateType === 'issued' ? __('Issued from') : __('Updated from')}
|
257
|
+
>
|
258
|
+
<Chip
|
259
|
+
ouiaId="startDate"
|
260
|
+
key="startDate"
|
261
|
+
onClick={() => setStartDate('')}
|
262
|
+
isReadOnly={!startDate || !hasPermission(permissions, 'edit_content_views')}
|
263
|
+
>
|
248
264
|
{startDate || __('ANY')}
|
249
265
|
</Chip>
|
250
266
|
{__('to')}
|
251
|
-
<Chip key="endDate" onClick={() => setEndDate('')} isReadOnly={!endDate || !hasPermission(permissions, 'edit_content_views')}>
|
267
|
+
<Chip ouiaId="startDate" key="endDate" onClick={() => setEndDate('')} isReadOnly={!endDate || !hasPermission(permissions, 'edit_content_views')}>
|
252
268
|
{endDate || __('ANY')}
|
253
269
|
</Chip>
|
254
270
|
</ChipGroup>
|
@@ -247,7 +247,12 @@ const CVErrataIDFilterContent = ({
|
|
247
247
|
const invalidDateFormat = __('Enter a valid date: MM/DD/YYYY');
|
248
248
|
|
249
249
|
return (
|
250
|
-
<Tabs
|
250
|
+
<Tabs
|
251
|
+
className="margin-0-24"
|
252
|
+
ouiaId="errata-filter-tabs"
|
253
|
+
activeKey={activeTabKey}
|
254
|
+
onSelect={(_event, eventKey) => setActiveTabKey(eventKey)}
|
255
|
+
>
|
251
256
|
<Tab eventKey={0} title={<TabTitleText>{__('Errata')}</TabTitleText>}>
|
252
257
|
<div className="margin-24-0">
|
253
258
|
<TableWrapper
|
@@ -286,11 +291,13 @@ const CVErrataIDFilterContent = ({
|
|
286
291
|
setSelected={setStatusSelected}
|
287
292
|
placeholderText={__('Status')}
|
288
293
|
aria-label="status_selector"
|
294
|
+
ouiaId="status-selector"
|
289
295
|
/>
|
290
296
|
</SplitItem>
|
291
297
|
<SplitItem>
|
292
298
|
<Select
|
293
299
|
aria-label="errata_type_selector"
|
300
|
+
ouiaId="errata_type_selector"
|
294
301
|
variant={SelectVariant.checkbox}
|
295
302
|
onToggle={setTypeSelectOpen}
|
296
303
|
onSelect={(_event, selection) => onTypeSelect(selection)}
|
@@ -328,9 +335,10 @@ const CVErrataIDFilterContent = ({
|
|
328
335
|
<Dropdown
|
329
336
|
toggle={<KebabToggle aria-label="bulk_actions" onToggle={toggleBulkAction} />}
|
330
337
|
isOpen={bulkActionOpen}
|
338
|
+
ouiaId="cv-errata-id-bulk-action-dropdown"
|
331
339
|
isPlain
|
332
340
|
dropdownItems={[
|
333
|
-
<DropdownItem aria-label="bulk_remove" key="bulk_remove" isDisabled={!hasAddedSelected} component="button" onClick={bulkRemove}>
|
341
|
+
<DropdownItem ouiaId="bulk-remove" aria-label="bulk_remove" key="bulk_remove" isDisabled={!hasAddedSelected} component="button" onClick={bulkRemove}>
|
334
342
|
{__('Remove')}
|
335
343
|
</DropdownItem>]
|
336
344
|
}
|
@@ -353,6 +361,7 @@ const CVErrataIDFilterContent = ({
|
|
353
361
|
onToggle={setDateTypeSelectOpen}
|
354
362
|
id="date_type_selector"
|
355
363
|
name="date_type_selector"
|
364
|
+
ouiaId="date_type_selector"
|
356
365
|
aria-label="date_type_selector"
|
357
366
|
>
|
358
367
|
<SelectOption key="issued" value="issued">{__('Issued from')}</SelectOption>
|
@@ -377,7 +386,7 @@ const CVErrataIDFilterContent = ({
|
|
377
386
|
</FlexItem>
|
378
387
|
<FlexItem spacer={{ default: 'spacerNone' }}>
|
379
388
|
<Bullseye style={{ padding: '0 5px' }}>
|
380
|
-
<Text>{__('to')}</Text>
|
389
|
+
<Text ouiaId="to-text">{__('to')}</Text>
|
381
390
|
</Bullseye>
|
382
391
|
</FlexItem>
|
383
392
|
<FlexItem span={2}>
|
@@ -399,27 +408,28 @@ const CVErrataIDFilterContent = ({
|
|
399
408
|
</Flex>
|
400
409
|
<Flex>
|
401
410
|
<FlexItem>
|
402
|
-
<ChipGroup categoryName={__('Status')}>
|
403
|
-
<Chip key="status" onClick={() => setStatusSelected(ALL_STATUSES)} isReadOnly={statusSelected === ALL_STATUSES}>
|
411
|
+
<ChipGroup ouiaId="status-chipgroup" categoryName={__('Status')}>
|
412
|
+
<Chip ouiaId="status" key="status" onClick={() => setStatusSelected(ALL_STATUSES)} isReadOnly={statusSelected === ALL_STATUSES}>
|
404
413
|
{statusSelected}
|
405
414
|
</Chip>
|
406
415
|
</ChipGroup>
|
407
416
|
</FlexItem>
|
408
417
|
<FlexItem>
|
409
|
-
<ChipGroup categoryName={dateType === 'issued' ? __('Issued from') : __('Updated from')}>
|
410
|
-
<Chip key="startDate" onClick={() => setValidStartDate('')} isReadOnly={startDate === ''}>
|
418
|
+
<ChipGroup ouiaId="issued-chipgroup" categoryName={dateType === 'issued' ? __('Issued from') : __('Updated from')}>
|
419
|
+
<Chip ouiaId="startDate" key="startDate" onClick={() => setValidStartDate('')} isReadOnly={startDate === ''}>
|
411
420
|
{startDate || __('ANY')}
|
412
421
|
</Chip>
|
413
422
|
{__('to')}
|
414
|
-
<Chip key="endDate" onClick={() => setValidEndDate('')} isReadOnly={endDate === ''}>
|
423
|
+
<Chip ouiaId="endDate" key="endDate" onClick={() => setValidEndDate('')} isReadOnly={endDate === ''}>
|
415
424
|
{endDate || __('ANY')}
|
416
425
|
</Chip>
|
417
426
|
</ChipGroup>
|
418
427
|
</FlexItem>
|
419
428
|
<FlexItem>
|
420
|
-
<ChipGroup categoryName={__('Type')}>
|
429
|
+
<ChipGroup ouiaId="type-chipgroup" categoryName={__('Type')}>
|
421
430
|
{selectedTypes.map(type => (
|
422
431
|
<Chip
|
432
|
+
ouiaId={`chip-${type}`}
|
423
433
|
key={type}
|
424
434
|
onClick={() => onTypeSelect(type)}
|
425
435
|
isReadOnly={singleSelection(type)}
|
@@ -202,7 +202,12 @@ const CVModuleStreamFilterContent = ({
|
|
202
202
|
|
203
203
|
|
204
204
|
return (
|
205
|
-
<Tabs
|
205
|
+
<Tabs
|
206
|
+
className="margin-0-24"
|
207
|
+
ouiaId="module-stream-filter-content-tabs"
|
208
|
+
activeKey={activeTabKey}
|
209
|
+
onSelect={(_event, eventKey) => setActiveTabKey(eventKey)}
|
210
|
+
>
|
206
211
|
<Tab eventKey={0} title={<TabTitleText>{__('Module Streams')}</TabTitleText>}>
|
207
212
|
<div className="margin-24-0">
|
208
213
|
<TableWrapper
|
@@ -235,6 +240,7 @@ const CVModuleStreamFilterContent = ({
|
|
235
240
|
<Select
|
236
241
|
variant={SelectVariant.single}
|
237
242
|
onToggle={setSelectOpen}
|
243
|
+
ouiaId="added-notAdded-selector"
|
238
244
|
onSelect={(_event, selection) => {
|
239
245
|
setSelectedIndex(allAddedNotAdded.indexOf(selection));
|
240
246
|
setSelectOpen(false);
|
@@ -262,9 +268,10 @@ const CVModuleStreamFilterContent = ({
|
|
262
268
|
<Dropdown
|
263
269
|
toggle={<KebabToggle aria-label="bulk_actions" onToggle={toggleBulkAction} />}
|
264
270
|
isOpen={bulkActionOpen}
|
271
|
+
ouiaId="bulk-actions-dropdown"
|
265
272
|
isPlain
|
266
273
|
dropdownItems={[
|
267
|
-
<DropdownItem aria-label="bulk_remove" key="bulk_remove" isDisabled={!hasAddedSelected} component="button" onClick={bulkRemove}>
|
274
|
+
<DropdownItem ouiaId="bulk-remove" aria-label="bulk_remove" key="bulk_remove" isDisabled={!hasAddedSelected} component="button" onClick={bulkRemove}>
|
268
275
|
{__('Remove')}
|
269
276
|
</DropdownItem>]
|
270
277
|
}
|
@@ -191,7 +191,12 @@ const CVPackageGroupFilterContent = ({
|
|
191
191
|
const resetFilters = () => setSelectedIndex(0);
|
192
192
|
|
193
193
|
return (
|
194
|
-
<Tabs
|
194
|
+
<Tabs
|
195
|
+
ouiaId="cv-package-group-filter-content"
|
196
|
+
className="margin-0-24"
|
197
|
+
activeKey={activeTabKey}
|
198
|
+
onSelect={(_event, eventKey) => setActiveTabKey(eventKey)}
|
199
|
+
>
|
195
200
|
<Tab eventKey={0} title={<TabTitleText>{__('Package groups')}</TabTitleText>}>
|
196
201
|
<div className="margin-24-0">
|
197
202
|
<TableWrapper
|
@@ -224,6 +229,7 @@ const CVPackageGroupFilterContent = ({
|
|
224
229
|
<Select
|
225
230
|
variant={SelectVariant.single}
|
226
231
|
onToggle={setSelectOpen}
|
232
|
+
ouiaId="allAddedNotAdded"
|
227
233
|
onSelect={(_event, selection) => {
|
228
234
|
setSelectedIndex(allAddedNotAdded.indexOf(selection));
|
229
235
|
setSelectOpen(false);
|
@@ -251,9 +257,10 @@ const CVPackageGroupFilterContent = ({
|
|
251
257
|
<Dropdown
|
252
258
|
toggle={<KebabToggle aria-label="bulk_actions" onToggle={toggleBulkAction} />}
|
253
259
|
isOpen={bulkActionOpen}
|
260
|
+
ouiaId="cv-package-group-filter-bulk-actions-dropdown"
|
254
261
|
isPlain
|
255
262
|
dropdownItems={[
|
256
|
-
<DropdownItem aria-label="bulk_remove" key="bulk_remove" isDisabled={!hasAddedSelected} component="button" onClick={bulkRemove}>
|
263
|
+
<DropdownItem ouiaId="bulk_remove" aria-label="bulk_remove" key="bulk_remove" isDisabled={!hasAddedSelected} component="button" onClick={bulkRemove}>
|
257
264
|
{__('Remove')}
|
258
265
|
</DropdownItem>]
|
259
266
|
}
|
@@ -157,7 +157,12 @@ const CVRpmFilterContent = ({
|
|
157
157
|
</Button>);
|
158
158
|
|
159
159
|
return (
|
160
|
-
<Tabs
|
160
|
+
<Tabs
|
161
|
+
className="margin-0-24"
|
162
|
+
ouiaId="cv-rpm-filter-content-tabs"
|
163
|
+
activeKey={activeTabKey}
|
164
|
+
onSelect={(_event, eventKey) => setActiveTabKey(eventKey)}
|
165
|
+
>
|
161
166
|
<Tab eventKey={0} title={<TabTitleText>{tabTitle}</TabTitleText>}>
|
162
167
|
<div className="margin-24-0">
|
163
168
|
<TableWrapper
|
@@ -205,11 +210,12 @@ const CVRpmFilterContent = ({
|
|
205
210
|
</SplitItem>
|
206
211
|
<SplitItem>
|
207
212
|
<Dropdown
|
213
|
+
ouiaId="rpm-filter-content-bulk-actions"
|
208
214
|
toggle={<KebabToggle aria-label="bulk_actions" onToggle={toggleBulkAction} />}
|
209
215
|
isOpen={bulkActionOpen}
|
210
216
|
isPlain
|
211
217
|
dropdownItems={[
|
212
|
-
<DropdownItem aria-label="bulk_remove" key="bulk_remove" isDisabled={!hasSelected} component="button" onClick={bulkRemove}>
|
218
|
+
<DropdownItem ouiaId="bulk-remove" aria-label="bulk_remove" key="bulk_remove" isDisabled={!hasSelected} component="button" onClick={bulkRemove}>
|
213
219
|
{__('Remove')}
|
214
220
|
</DropdownItem>]
|
215
221
|
}
|
@@ -90,7 +90,7 @@ const ContentViewFilterDetailsHeader = ({
|
|
90
90
|
<RepoIcon type={repositoryType} />
|
91
91
|
</SplitItem>
|
92
92
|
<SplitItem>
|
93
|
-
<Text component={TextVariants.p}>
|
93
|
+
<Text ouiaId={`text-${displayedType()}`} component={TextVariants.p}>
|
94
94
|
{displayedType()}
|
95
95
|
</Text>
|
96
96
|
</SplitItem>
|
@@ -157,9 +157,10 @@ const ContentViewFilters = ({ cvId, details }) => {
|
|
157
157
|
<Dropdown
|
158
158
|
toggle={<KebabToggle aria-label="bulk_actions" onToggle={toggleBulkAction} />}
|
159
159
|
isOpen={bulkActionOpen}
|
160
|
+
ouiaId="cv-filters-bulk-action"
|
160
161
|
isPlain
|
161
162
|
dropdownItems={[
|
162
|
-
<DropdownItem aria-label="bulk_remove" key="bulk_remove" isDisabled={!bulkActionEnabled} component="button" onClick={bulkRemove}>
|
163
|
+
<DropdownItem ouiaId="bulk-remove" aria-label="bulk_remove" key="bulk_remove" isDisabled={!bulkActionEnabled} component="button" onClick={bulkRemove}>
|
163
164
|
{__('Remove')}
|
164
165
|
</DropdownItem>]
|
165
166
|
}
|
data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/CVRpmMatchContentModal.js
CHANGED
@@ -36,6 +36,7 @@ const CVRpmMatchContentModal = ({ filterId, onClose, filterRuleId }) => {
|
|
36
36
|
return (
|
37
37
|
<Modal
|
38
38
|
title={__('Matching content')}
|
39
|
+
ouiaId="rpm-matching-content"
|
39
40
|
variant={ModalVariant.medium}
|
40
41
|
isOpen
|
41
42
|
onClose={onClose}
|
@@ -58,7 +59,7 @@ const CVRpmMatchContentModal = ({ filterId, onClose, filterRuleId }) => {
|
|
58
59
|
variant={TableVariant.compact}
|
59
60
|
>
|
60
61
|
<Thead>
|
61
|
-
<Tr>
|
62
|
+
<Tr ouiaId="column-headers">
|
62
63
|
{columnHeaders.map(col =>
|
63
64
|
<Th key={col}>{col}</Th>)}
|
64
65
|
</Tr>
|
@@ -69,7 +70,7 @@ const CVRpmMatchContentModal = ({ filterId, onClose, filterRuleId }) => {
|
|
69
70
|
nvra, summary = '-', id,
|
70
71
|
} = result;
|
71
72
|
return (
|
72
|
-
<Tr key={`${nvra}_${summary}_${id}`}>
|
73
|
+
<Tr key={`${nvra}_${summary}_${id}`} ouiaId={`${nvra}_${summary}_${id}`}>
|
73
74
|
<Td>
|
74
75
|
<a rel="noreferrer" target="_blank" href={urlBuilder(`packages/${id}`, '')}>{nvra}</a>
|
75
76
|
</Td>
|
@@ -73,7 +73,7 @@ test('Can search with filter', async (done) => {
|
|
73
73
|
expect(queryByText(secondMatchContentName)).toBeInTheDocument();
|
74
74
|
});
|
75
75
|
|
76
|
-
fireEvent.change(getByLabelText(/text input for search/i), { target: { value: firstMatchContent.nvra } });
|
76
|
+
fireEvent.change(getByLabelText(/text input for search/i), { target: { value: `nvra = ${firstMatchContent.nvra}` } });
|
77
77
|
|
78
78
|
await patientlyWaitFor(() => {
|
79
79
|
expect(queryByText('Matching content')).toBeInTheDocument();
|
data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVContainerImageFilterContent.test.js
CHANGED
@@ -179,7 +179,7 @@ test('Can add filter rules', async (done) => {
|
|
179
179
|
expect(getAllByLabelText('text input for search')[0]).toBeInTheDocument();
|
180
180
|
});
|
181
181
|
|
182
|
-
fireEvent.change(getAllByLabelText('text input for search')[0], { target: { value: addedRule.name } });
|
182
|
+
fireEvent.change(getAllByLabelText('text input for search')[0], { target: { value: `name = ${addedRule.name}` } });
|
183
183
|
|
184
184
|
await patientlyWaitFor(() => {
|
185
185
|
expect(getByLabelText('add_edit_filter_rule')).toBeInTheDocument();
|
@@ -255,7 +255,7 @@ test('Can edit filter rules', async (done) => {
|
|
255
255
|
fireEvent.click(queryByText('Edit'));
|
256
256
|
});
|
257
257
|
|
258
|
-
fireEvent.change(getAllByLabelText('text input for search')[0], { target: { value: addedRule.name } });
|
258
|
+
fireEvent.change(getAllByLabelText('text input for search')[0], { target: { value: `name = ${addedRule.name}` } });
|
259
259
|
|
260
260
|
await patientlyWaitFor(() => {
|
261
261
|
expect(getByLabelText('add_edit_filter_rule')).toBeInTheDocument();
|
@@ -117,7 +117,7 @@ test('Can search for package rules in package filter details', async (done) => {
|
|
117
117
|
});
|
118
118
|
|
119
119
|
// Search and only searched result shows
|
120
|
-
fireEvent.change(getByLabelText(/text input for search/i), { target: { value: lastPackageRuleName } });
|
120
|
+
fireEvent.change(getByLabelText(/text input for search/i), { target: { value: `name = ${lastPackageRuleName}` } });
|
121
121
|
await patientlyWaitFor(() => {
|
122
122
|
expect(getByText(lastPackageRuleName)).toBeInTheDocument();
|
123
123
|
expect(queryByText(firstPackageRuleName)).not.toBeInTheDocument();
|
@@ -118,7 +118,7 @@ test('Can search for package groups in package group filter', async (done) => {
|
|
118
118
|
});
|
119
119
|
|
120
120
|
// Search and only searched result shows
|
121
|
-
fireEvent.change(getByLabelText(/text input for search/i), { target: { value: lastPackageGroupName } });
|
121
|
+
fireEvent.change(getByLabelText(/text input for search/i), { target: { value: `name = ${lastPackageGroupName}` } });
|
122
122
|
await patientlyWaitFor(() => {
|
123
123
|
expect(getByText(lastPackageGroupName)).toBeInTheDocument();
|
124
124
|
expect(queryByText(firstPackageGroupName)).not.toBeInTheDocument();
|
@@ -88,7 +88,7 @@ test('Can search for filter', async (done) => {
|
|
88
88
|
// Looking for description because the name is in the search bar and could match
|
89
89
|
await patientlyWaitFor(() => expect(getByText(description)).toBeInTheDocument());
|
90
90
|
// Search for a filter by name
|
91
|
-
fireEvent.change(getByLabelText(/text input for search/i), { target: { value: name } });
|
91
|
+
fireEvent.change(getByLabelText(/text input for search/i), { target: { value: `name = ${name}` } });
|
92
92
|
// Only the first filter should be showing, not the last one
|
93
93
|
await patientlyWaitFor(() => {
|
94
94
|
expect(getByText(description)).toBeInTheDocument();
|
@@ -87,7 +87,7 @@ const ContentViewHistories = ({ cvId }) => {
|
|
87
87
|
fetchItems={useCallback(params => getContentViewHistories(cvId, params), [cvId])}
|
88
88
|
>
|
89
89
|
<Thead>
|
90
|
-
<Tr>
|
90
|
+
<Tr ouiaId="column-headers">
|
91
91
|
{columnHeaders.map(col =>
|
92
92
|
<Th key={col}>{col}</Th>)}
|
93
93
|
</Tr>
|
@@ -103,7 +103,7 @@ const ContentViewHistories = ({ cvId }) => {
|
|
103
103
|
user,
|
104
104
|
} = history;
|
105
105
|
return (
|
106
|
-
<Tr key={index}>
|
106
|
+
<Tr key={index} ouiaId={`history-row-${index}`}>
|
107
107
|
<Td><LongDateTime date={createdAt} showRelativeTimeTooltip /></Td>
|
108
108
|
<Td>
|
109
109
|
<Link to={`/versions/${versionId}`}>{`Version ${version}`}</Link>
|
@@ -111,6 +111,7 @@ const ContentViewVersionPromote = ({
|
|
111
111
|
<Modal
|
112
112
|
title={__(`Promote version ${versionNameToPromote}`)}
|
113
113
|
isOpen
|
114
|
+
ouiaId="promote-version"
|
114
115
|
variant={ModalVariant.large}
|
115
116
|
onClose={() => {
|
116
117
|
setIsOpen(false);
|
@@ -137,6 +138,7 @@ const ContentViewVersionPromote = ({
|
|
137
138
|
</FormGroup>
|
138
139
|
{!alertDismissed && forcePromote.length > 0 && (
|
139
140
|
<Alert
|
141
|
+
ouiaId="force-promotion-alert"
|
140
142
|
variant="info"
|
141
143
|
isInline
|
142
144
|
title={__('Force promotion')}
|
@@ -301,7 +301,7 @@ const ContentViewRepositories = ({ cvId, details }) => {
|
|
301
301
|
}
|
302
302
|
>
|
303
303
|
<Thead>
|
304
|
-
<Tr key="version-header">
|
304
|
+
<Tr key="version-header" ouiaId="version-header">
|
305
305
|
{hasPermission(permissions, 'edit_content_views') && <Th key="select-all" />}
|
306
306
|
{columnHeaders.map((title, index) => {
|
307
307
|
if (index === 0) {
|
@@ -329,6 +329,7 @@ const ContentViewRepositories = ({ cvId, details }) => {
|
|
329
329
|
<Td>
|
330
330
|
<Checkbox
|
331
331
|
id={id}
|
332
|
+
ouiaId={`repository-checkbox-${id}`}
|
332
333
|
isChecked={isSelected(id)}
|
333
334
|
onChange={selected =>
|
334
335
|
selectOne(selected, id, repo)
|
@@ -64,9 +64,9 @@ export default () => {
|
|
64
64
|
__('{versionOrVersions} {versionList} will be removed from the listed environment and will no longer be available for promotion.')}
|
65
65
|
/>}
|
66
66
|
/>
|
67
|
-
<TableComposable variant={TableVariant.compact}>
|
67
|
+
<TableComposable ouiaId="bulk-delete-env-table" variant={TableVariant.compact}>
|
68
68
|
<Thead>
|
69
|
-
<Tr>
|
69
|
+
<Tr ouiaId="bulk-delete-env-header">
|
70
70
|
{columnHeaders.map(col =>
|
71
71
|
<Th key={col}>{col}</Th>)}
|
72
72
|
</Tr>
|
@@ -80,7 +80,7 @@ export default () => {
|
|
80
80
|
activation_key_count: akCount,
|
81
81
|
host_count: hostCount,
|
82
82
|
}) => (
|
83
|
-
<Tr key={`${name}_${id}`}>
|
83
|
+
<Tr ouiaId={`${name}_${id}`} key={`${name}_${id}`}>
|
84
84
|
<Td>
|
85
85
|
<Label
|
86
86
|
/* TODO: Add "isCompact" to this on update of patternfly */
|
@@ -11,6 +11,7 @@ import CVVersionCompareTable from './CVVersionCompareTable';
|
|
11
11
|
import getContentViewDetails, { getContentViewVersionDetails } from '../../ContentViewDetailActions';
|
12
12
|
import Loading from '../../../../../components/Loading';
|
13
13
|
import './CVVersionCompare.scss';
|
14
|
+
import EmptyStateMessage from '../../../../../components/Table/EmptyStateMessage';
|
14
15
|
|
15
16
|
const CVVersionCompare = ({
|
16
17
|
cvId,
|
@@ -51,7 +52,7 @@ const CVVersionCompare = ({
|
|
51
52
|
selectCVVersionDetailsStatus(state, String(getIdFromVersion(versionTwo)
|
52
53
|
?? initialVersionTwoId), cvId));
|
53
54
|
|
54
|
-
const [currentActiveTab, setCurrentActiveTab] = useState(__('
|
55
|
+
const [currentActiveTab, setCurrentActiveTab] = useState(__('Repositories'));
|
55
56
|
const onSelect = (_e, eventKey) => {
|
56
57
|
// This prevents needless pushing on repeated clicks of a tab
|
57
58
|
if (currentActiveTab !== eventKey) {
|
@@ -126,6 +127,13 @@ const CVVersionCompare = ({
|
|
126
127
|
</div>
|
127
128
|
</div >) || <Loading />)
|
128
129
|
}
|
130
|
+
{!showTabs &&
|
131
|
+
<EmptyStateMessage
|
132
|
+
title={__('Empty content view versions')}
|
133
|
+
body={__('No content in selected versions.')}
|
134
|
+
search
|
135
|
+
/>
|
136
|
+
}
|
129
137
|
</>
|
130
138
|
);
|
131
139
|
};
|
@@ -23,6 +23,8 @@ import {
|
|
23
23
|
selectDockerTagsComparisonStatus,
|
24
24
|
selectGenericContentComparison,
|
25
25
|
selectGenericContentComparisonStatus,
|
26
|
+
selectRepositoriesComparison,
|
27
|
+
selectRepositoriesComparisonStatus,
|
26
28
|
} from '../../ContentViewDetailSelectors';
|
27
29
|
import {
|
28
30
|
getPackageGroupsComparison,
|
@@ -33,9 +35,11 @@ import {
|
|
33
35
|
getDebPackagesComparison,
|
34
36
|
getDockerTagsComparison,
|
35
37
|
getGenericContentComparison,
|
38
|
+
getRepositoriesComparison,
|
36
39
|
} from '../../ContentViewDetailActions';
|
37
40
|
|
38
41
|
import ContentConfig from '../../../../Content/ContentConfig';
|
42
|
+
import RepoIcon from '../../Repositories/RepoIcon';
|
39
43
|
|
40
44
|
export const TableType = PropTypes.shape({
|
41
45
|
name: PropTypes.string,
|
@@ -77,6 +81,50 @@ export default ({
|
|
77
81
|
};
|
78
82
|
|
79
83
|
return ([
|
84
|
+
{
|
85
|
+
name: __('Repositories'),
|
86
|
+
route: 'repositories',
|
87
|
+
getCountKey: (itemVersionOne, itemVersionTwo) =>
|
88
|
+
itemVersionOne?.repositories?.length || itemVersionTwo?.repositories?.length,
|
89
|
+
responseSelector: state =>
|
90
|
+
selectRepositoriesComparison(state, versionOneId, versionTwoId, viewBy),
|
91
|
+
statusSelector: state =>
|
92
|
+
selectRepositoriesComparisonStatus(state, versionOneId, versionTwoId, viewBy),
|
93
|
+
autocompleteEndpoint: '/repositories/auto_complete_search?archived=true',
|
94
|
+
fetchItems: params => getRepositoriesComparison(
|
95
|
+
versionOneId,
|
96
|
+
versionTwoId,
|
97
|
+
viewBy,
|
98
|
+
params,
|
99
|
+
),
|
100
|
+
columnHeaders: [
|
101
|
+
{
|
102
|
+
title: __('Name'),
|
103
|
+
getProperty: item => (
|
104
|
+
<a href={urlBuilder(`products/${item?.product?.id}/repositories/${item?.id}`, '')}>
|
105
|
+
{item?.name}
|
106
|
+
</a>),
|
107
|
+
},
|
108
|
+
{
|
109
|
+
title: __('Type'),
|
110
|
+
modifier: 'fitContent',
|
111
|
+
getProperty: item => (<RepoIcon type={item?.content_type} />),
|
112
|
+
},
|
113
|
+
{
|
114
|
+
title: __('Product'),
|
115
|
+
getProperty: item => (
|
116
|
+
<a href={urlBuilder(`products/${item?.product?.id}`, '')}>
|
117
|
+
{item?.product?.name}
|
118
|
+
</a>),
|
119
|
+
},
|
120
|
+
{ title: __(`Version ${versionOne}`), getProperty: item => compareContent(item, versionOneId) },
|
121
|
+
{ title: __(`Version ${versionTwo}`), getProperty: item => compareContent(item, versionTwoId) },
|
122
|
+
],
|
123
|
+
sortConfig: {
|
124
|
+
[__('Name')]: 'name',
|
125
|
+
[__('Type')]: 'content_type',
|
126
|
+
},
|
127
|
+
},
|
80
128
|
{
|
81
129
|
name: __('RPM packages'),
|
82
130
|
getCountKey: (itemVersionOne, itemVersionTwo) =>
|
@@ -107,6 +155,12 @@ export default ({
|
|
107
155
|
{ title: __(`Version ${versionOne}`), getProperty: item => compareContent(item, versionOneId) },
|
108
156
|
{ title: __(`Version ${versionTwo}`), getProperty: item => compareContent(item, versionTwoId) },
|
109
157
|
],
|
158
|
+
sortConfig: {
|
159
|
+
[__('Name')]: 'nvra',
|
160
|
+
[__('Version')]: 'version',
|
161
|
+
[__('Release')]: 'release',
|
162
|
+
[__('Arch')]: 'arch',
|
163
|
+
},
|
110
164
|
},
|
111
165
|
{
|
112
166
|
name: __('RPM package groups'),
|
@@ -124,6 +178,9 @@ export default ({
|
|
124
178
|
{ title: __(`Version ${versionOne}`), getProperty: item => compareContent(item, versionOneId) },
|
125
179
|
{ title: __(`Version ${versionTwo}`), getProperty: item => compareContent(item, versionTwoId) },
|
126
180
|
],
|
181
|
+
sortConfig: {
|
182
|
+
[__('Name')]: 'name',
|
183
|
+
},
|
127
184
|
},
|
128
185
|
{
|
129
186
|
name: __('Files'),
|
@@ -146,6 +203,9 @@ export default ({
|
|
146
203
|
{ title: __(`Version ${versionOne}`), getProperty: item => compareContent(item, versionOneId) },
|
147
204
|
{ title: __(`Version ${versionTwo}`), getProperty: item => compareContent(item, versionTwoId) },
|
148
205
|
],
|
206
|
+
sortConfig: {
|
207
|
+
[__('Name')]: 'name',
|
208
|
+
},
|
149
209
|
},
|
150
210
|
{
|
151
211
|
name: __('Errata'),
|
@@ -203,6 +263,11 @@ export default ({
|
|
203
263
|
{ title: __(`Version ${versionOne}`), getProperty: item => compareContent(item, versionOneId) },
|
204
264
|
{ title: __(`Version ${versionTwo}`), getProperty: item => compareContent(item, versionTwoId) },
|
205
265
|
],
|
266
|
+
sortConfig: {
|
267
|
+
[__('Errata ID')]: 'errata_id',
|
268
|
+
[__('Title')]: 'title',
|
269
|
+
[__('Type')]: 'type',
|
270
|
+
},
|
206
271
|
},
|
207
272
|
{
|
208
273
|
name: __('Module streams'),
|
@@ -229,6 +294,13 @@ export default ({
|
|
229
294
|
{ title: __(`Version ${versionOne}`), getProperty: item => compareContent(item, versionOneId) },
|
230
295
|
{ title: __(`Version ${versionTwo}`), getProperty: item => compareContent(item, versionTwoId) },
|
231
296
|
],
|
297
|
+
sortConfig: {
|
298
|
+
[__('Name')]: 'name',
|
299
|
+
[__('Stream')]: 'stream',
|
300
|
+
[__('Version')]: 'version',
|
301
|
+
[__('Context')]: 'context',
|
302
|
+
[__('Arch')]: 'arch',
|
303
|
+
},
|
232
304
|
},
|
233
305
|
{
|
234
306
|
name: __('Deb packages'),
|
@@ -253,6 +325,11 @@ export default ({
|
|
253
325
|
{ title: __(`Version ${versionOne}`), getProperty: item => compareContent(item, versionOneId) },
|
254
326
|
{ title: __(`Version ${versionTwo}`), getProperty: item => compareContent(item, versionTwoId) },
|
255
327
|
],
|
328
|
+
sortConfig: {
|
329
|
+
[__('Name')]: 'name',
|
330
|
+
[__('Version')]: 'version',
|
331
|
+
[__('Architecture')]: 'architecture',
|
332
|
+
},
|
256
333
|
},
|
257
334
|
{
|
258
335
|
name: __('Container tags'),
|
@@ -283,6 +360,9 @@ export default ({
|
|
283
360
|
{ title: __(`Version ${versionOne}`), getProperty: item => compareContent(item, versionOneId) },
|
284
361
|
{ title: __(`Version ${versionTwo}`), getProperty: item => compareContent(item, versionTwoId) },
|
285
362
|
],
|
363
|
+
sortConfig: {
|
364
|
+
[__('Name')]: 'name',
|
365
|
+
},
|
286
366
|
},
|
287
367
|
...ContentConfig.filter(config => !(config.names.pluralLabel === 'ostree_refs')).map(({
|
288
368
|
names: { pluralLowercase, pluralLabel, singularLabel },
|
@@ -309,6 +389,9 @@ export default ({
|
|
309
389
|
{ title: __(`Version ${versionOne}`), getProperty: item => compareContent(item, versionOneId) },
|
310
390
|
{ title: __(`Version ${versionTwo}`), getProperty: item => compareContent(item, versionTwoId) },
|
311
391
|
],
|
392
|
+
sortConfig: {
|
393
|
+
[__('Name')]: 'name',
|
394
|
+
},
|
312
395
|
})),
|
313
396
|
]);
|
314
397
|
};
|