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
@@ -7,6 +7,7 @@ import { translate as __ } from 'foremanReact/common/I18n';
|
|
7
7
|
import { TableVariant, Tr, Th, Tbody, Td, Thead } from '@patternfly/react-table';
|
8
8
|
import { TableType } from './CVVersionCompareConfig';
|
9
9
|
import TableWrapper from '../../../../../components/Table/TableWrapper';
|
10
|
+
import { useTableSort } from '../../../../../components/Table/TableHooks';
|
10
11
|
|
11
12
|
const CVVersionCompareTable = ({
|
12
13
|
tableConfig: {
|
@@ -14,16 +15,30 @@ const CVVersionCompareTable = ({
|
|
14
15
|
responseSelector,
|
15
16
|
statusSelector,
|
16
17
|
autocompleteEndpoint,
|
17
|
-
fetchItems,
|
18
|
+
fetchItems: fetchItemsSorted,
|
18
19
|
columnHeaders,
|
19
|
-
|
20
|
+
hideSearch,
|
21
|
+
sortConfig,
|
20
22
|
}, versionOne, versionTwo, currentActiveKey, selectedViewBy,
|
21
23
|
}) => {
|
22
24
|
const [searchQuery, updateSearchQuery] = useState('');
|
25
|
+
const {
|
26
|
+
pfSortParams, apiSortParams,
|
27
|
+
activeSortColumn, activeSortDirection,
|
28
|
+
} = useTableSort({
|
29
|
+
allColumns: columnHeaders.map(header => header?.title),
|
30
|
+
columnsToSortParams: sortConfig,
|
31
|
+
initialSortColumnName: Object.keys(sortConfig)[0],
|
32
|
+
});
|
23
33
|
|
24
34
|
const response = useSelector(responseSelector);
|
25
35
|
const { results, ...metadata } = response;
|
26
36
|
const status = useSelector(statusSelector);
|
37
|
+
const fetchItems = params =>
|
38
|
+
fetchItemsSorted({
|
39
|
+
...apiSortParams,
|
40
|
+
...params,
|
41
|
+
});
|
27
42
|
return (
|
28
43
|
<TableWrapper
|
29
44
|
{...{
|
@@ -32,11 +47,13 @@ const CVVersionCompareTable = ({
|
|
32
47
|
updateSearchQuery,
|
33
48
|
status,
|
34
49
|
autocompleteEndpoint,
|
35
|
-
|
50
|
+
hideSearch,
|
36
51
|
}}
|
37
|
-
|
52
|
+
key={`cvv-comparison-table-${name}`}
|
53
|
+
ouiaId={`cvv-comparison-table-${name}`}
|
38
54
|
fetchItems={fetchItems}
|
39
|
-
additionalListeners={[versionOne, versionTwo, currentActiveKey,
|
55
|
+
additionalListeners={[versionOne, versionTwo, currentActiveKey,
|
56
|
+
selectedViewBy, activeSortColumn, activeSortDirection]}
|
40
57
|
emptySearchTitle={__(`Your search returned no matching ${name}.`)}
|
41
58
|
emptySearchBody={__('Try changing your search criteria.')}
|
42
59
|
emptyContentTitle={__(`No matching ${name} found.`)}
|
@@ -44,15 +61,22 @@ const CVVersionCompareTable = ({
|
|
44
61
|
variant={TableVariant.compact}
|
45
62
|
>
|
46
63
|
<Thead>
|
47
|
-
<Tr>
|
64
|
+
<Tr ouiaId="column-headers">
|
48
65
|
{columnHeaders.map(({ title }) =>
|
49
|
-
|
66
|
+
(
|
67
|
+
<Th
|
68
|
+
key={`${title}-header`}
|
69
|
+
sort={sortConfig[title] ? pfSortParams(title) : undefined}
|
70
|
+
>
|
71
|
+
{title}
|
72
|
+
</Th>
|
73
|
+
))}
|
50
74
|
</Tr>
|
51
75
|
</Thead>
|
52
76
|
<Tbody>
|
53
77
|
{results?.map(result =>
|
54
78
|
(
|
55
|
-
<Tr key={`column-${result.id}`}>
|
79
|
+
<Tr key={`column-${result.id}`} ouiaId={`column-${result.id}`}>
|
56
80
|
{columnHeaders.map(({ getProperty }, colIndex) =>
|
57
81
|
// eslint-disable-next-line react/no-array-index-key
|
58
82
|
<Td key={`cell-${colIndex}`}>{getProperty(result)} </Td>)}
|
data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/CVVersionCompare.test.js
CHANGED
@@ -10,6 +10,7 @@ import cvVersionsData from './contentViewVersions.fixtures.json';
|
|
10
10
|
import cvDetailsData from './contentViewDetails.fixtures.json';
|
11
11
|
import environmentPathsData from '../../../../Publish/__tests__/environmentPaths.fixtures.json';
|
12
12
|
import CVVersionCompare from '../CVVersionCompare';
|
13
|
+
import cvCompareRepositoriesData from './cvCompareRepositories.fixtures.json';
|
13
14
|
import cvVersionRPMPackagesCompareAllContentData from './RPMPackagesCompareAllContentData.fixtures.json';
|
14
15
|
import cvVersionErrataCompareAllContentData from './ErrataCompareAllContentData.fixtures.json';
|
15
16
|
import cvVersionPackageGroupsCompareAllContentData from './PackageGroupsCompareAllContentData.fixtures.json';
|
@@ -35,6 +36,7 @@ const versionDetails = versionId => api.getApiUrl(`/content_view_versions/${vers
|
|
35
36
|
const autocompleteUrl = '/content_view_versions/auto_complete_search';
|
36
37
|
const withCVRoute = component => <Route path="/content_views/:id">{component}</Route>;
|
37
38
|
const environmentPathsPath = api.getApiUrl('/organizations/1/environments/paths');
|
39
|
+
const sortedRpmPackagesPath = api.getApiUrl('/packages/compare?content_view_version_ids[]=15&content_view_version_ids[]=17&restrict_comparison=all&sort_by=nvra&sort_order=desc&per_page=20&page=1');
|
38
40
|
const renderOptions = {
|
39
41
|
initialState: {
|
40
42
|
API: {
|
@@ -88,6 +90,15 @@ afterEach(() => {
|
|
88
90
|
});
|
89
91
|
|
90
92
|
const testConfigAllContentTypes = [
|
93
|
+
{
|
94
|
+
name: 'Repositories',
|
95
|
+
autoCompleteUrl: '/repositories/auto_complete_search',
|
96
|
+
dataUrl: api.getApiUrl('/repositories/compare'),
|
97
|
+
data: cvCompareRepositoriesData,
|
98
|
+
textQuery: [
|
99
|
+
head(cvCompareRepositoriesData.results).name,
|
100
|
+
last(cvCompareRepositoriesData.results).name],
|
101
|
+
},
|
91
102
|
{
|
92
103
|
name: 'RPM packages',
|
93
104
|
countKey: 'rpm_count',
|
@@ -181,6 +192,15 @@ const testConfigAllContentTypes = [
|
|
181
192
|
];
|
182
193
|
|
183
194
|
const testConfigThreeContentTypes = [
|
195
|
+
{
|
196
|
+
name: 'Repositories',
|
197
|
+
autoCompleteUrl: '/repositories/auto_complete_search',
|
198
|
+
dataUrl: api.getApiUrl('/repositories/compare'),
|
199
|
+
data: cvCompareRepositoriesData,
|
200
|
+
textQuery: [
|
201
|
+
head(cvCompareRepositoriesData.results).name,
|
202
|
+
last(cvCompareRepositoriesData.results).name],
|
203
|
+
},
|
184
204
|
{
|
185
205
|
name: 'RPM packages',
|
186
206
|
countKey: 'rpm_count',
|
@@ -215,6 +235,13 @@ const testConfigThreeContentTypes = [
|
|
215
235
|
const emptyContentViewByText = contentType => `No matching ${contentType} found.`;
|
216
236
|
|
217
237
|
const testConfigViewByDifferent = [
|
238
|
+
{
|
239
|
+
name: 'Repositories',
|
240
|
+
autoCompleteUrl: '/repositories/auto_complete_search',
|
241
|
+
dataUrl: api.getApiUrl('/repositories/compare'),
|
242
|
+
data: cvVersionEmptyContent,
|
243
|
+
textQuery: emptyContentViewByText('Repositories'),
|
244
|
+
},
|
218
245
|
{
|
219
246
|
name: 'RPM packages',
|
220
247
|
countKey: 'rpm_count',
|
@@ -244,6 +271,15 @@ const testConfigViewByDifferent = [
|
|
244
271
|
];
|
245
272
|
|
246
273
|
const testConfigViewBySame = [
|
274
|
+
{
|
275
|
+
name: 'Repositories',
|
276
|
+
autoCompleteUrl: '/repositories/auto_complete_search',
|
277
|
+
dataUrl: api.getApiUrl('/repositories/compare'),
|
278
|
+
data: cvCompareRepositoriesData,
|
279
|
+
textQuery: [
|
280
|
+
head(cvCompareRepositoriesData.results).name,
|
281
|
+
last(cvCompareRepositoriesData.results).name],
|
282
|
+
},
|
247
283
|
{
|
248
284
|
name: 'RPM packages',
|
249
285
|
countKey: 'rpm_count',
|
@@ -274,7 +310,7 @@ const testConfigViewBySame = [
|
|
274
310
|
},
|
275
311
|
];
|
276
312
|
|
277
|
-
test('Can make an API call and show comparison of two versions with all content types', async (done) => {
|
313
|
+
test('Can make an API call and show comparison of two versions with all content types and sort tables', async (done) => {
|
278
314
|
const autoCompleteContentTypesScope = testConfigAllContentTypes.map(({ autoCompleteUrl }) =>
|
279
315
|
mockAutocomplete(nockInstance, autoCompleteUrl));
|
280
316
|
|
@@ -294,6 +330,10 @@ test('Can make an API call and show comparison of two versions with all content
|
|
294
330
|
.get(versionDetails(17))
|
295
331
|
.query(true)
|
296
332
|
.reply(200, versionTwoDetailsData);
|
333
|
+
const sortedRpmTabScope = nockInstance
|
334
|
+
.get(sortedRpmPackagesPath)
|
335
|
+
.reply(200, cvCompareRepositoriesData);
|
336
|
+
|
297
337
|
const { queryByText, queryAllByText, getAllByText } = renderWithRedux(
|
298
338
|
withCVRoute(<CVVersionCompare
|
299
339
|
cvId={4}
|
@@ -327,12 +367,20 @@ test('Can make an API call and show comparison of two versions with all content
|
|
327
367
|
});
|
328
368
|
});
|
329
369
|
|
370
|
+
// Can sort rendered table
|
371
|
+
const rpmTab = queryByText('RPM packages');
|
372
|
+
fireEvent.click(rpmTab);
|
373
|
+
await patientlyWaitFor(() => {
|
374
|
+
expect(queryByText('Name')).toBeTruthy();
|
375
|
+
});
|
376
|
+
fireEvent.click(queryByText('Name'));
|
330
377
|
|
331
378
|
assertNockRequest(scopeCVDetails);
|
332
379
|
assertNockRequest(scopeVersionOneDetails);
|
333
380
|
assertNockRequest(scopeVersionTwoDetails);
|
334
381
|
scopeContentTypes.map(cv => assertNockRequest(cv));
|
335
382
|
autoCompleteContentTypesScope.map(cv => assertNockRequest(cv));
|
383
|
+
assertNockRequest(sortedRpmTabScope);
|
336
384
|
assertNockRequest(searchDelayScope);
|
337
385
|
assertNockRequest(autoSearchScope);
|
338
386
|
act(done);
|
@@ -564,10 +612,15 @@ test('Can select viewing by "Different" in the dropdown and see the content in e
|
|
564
612
|
testConfigViewByDifferent.forEach(({ name }) => {
|
565
613
|
expect(queryByText(name)).toBeTruthy();
|
566
614
|
});
|
567
|
-
expect(getByText('No matching
|
568
|
-
(testConfigViewByDifferent.find(({ name }) => name === 'Files')).textQuery.forEach(query => expect(queryAllByText(query)).toBeTruthy());
|
615
|
+
expect(getByText('No matching Repositories found.')).toBeTruthy();
|
569
616
|
});
|
570
617
|
|
618
|
+
(testConfigViewByDifferent.find(({ name }) => name === 'Files')).textQuery.forEach(query => expect(queryAllByText(query)).toBeTruthy());
|
619
|
+
|
620
|
+
fireEvent.click(getByText('RPM packages'));
|
621
|
+
await patientlyWaitFor(() => {
|
622
|
+
expect(getByText('No matching RPM packages found.')).toBeTruthy();
|
623
|
+
});
|
571
624
|
fireEvent.click(getByText('Errata'));
|
572
625
|
await patientlyWaitFor(() => {
|
573
626
|
expect(getByText('No matching Errata found.')).toBeTruthy();
|
@@ -0,0 +1,175 @@
|
|
1
|
+
{
|
2
|
+
"total": 2,
|
3
|
+
"subtotal": 2,
|
4
|
+
"selectable": 2,
|
5
|
+
"page": "1",
|
6
|
+
"per_page": "20",
|
7
|
+
"error": null,
|
8
|
+
"search": null,
|
9
|
+
"sort": {
|
10
|
+
"by": "name",
|
11
|
+
"order": "asc"
|
12
|
+
},
|
13
|
+
"results": [
|
14
|
+
{
|
15
|
+
"backend_identifier": "51816595-8c1e-4726-b4d1-0bccc1cd377b",
|
16
|
+
"relative_path": "Default_Organization/Library/custom/prod/modular",
|
17
|
+
"container_repository_name": null,
|
18
|
+
"full_path": "https://centos8-katello-devel.sajha.example.com/pulp/content/Default_Organization/Library/custom/prod/modular/",
|
19
|
+
"library_instance_id": null,
|
20
|
+
"version_href": "/pulp/api/v3/repositories/rpm/rpm/1bb2b611-bf6e-442f-9b2b-2b2cd6f13e33/versions/1/",
|
21
|
+
"remote_href": "/pulp/api/v3/remotes/rpm/rpm/82bdbc37-bd6f-4a2d-9c28-3f15b52328de/",
|
22
|
+
"publication_href": "/pulp/api/v3/publications/rpm/rpm/4ea0da80-829b-4d49-9f92-a479e9e3682b/",
|
23
|
+
"content_counts": {
|
24
|
+
"rpm": 22,
|
25
|
+
"erratum": 7,
|
26
|
+
"package_group": 2,
|
27
|
+
"srpm": 0,
|
28
|
+
"module_stream": 14
|
29
|
+
},
|
30
|
+
"mirroring_policy": "mirror_content_only",
|
31
|
+
"id": 2,
|
32
|
+
"name": "modular",
|
33
|
+
"label": "modular",
|
34
|
+
"description": null,
|
35
|
+
"content_view_versions": [
|
36
|
+
{
|
37
|
+
"id": 2,
|
38
|
+
"version": "1.0",
|
39
|
+
"content_view_id": 2,
|
40
|
+
"content_view_name": "cv1"
|
41
|
+
},
|
42
|
+
{
|
43
|
+
"id": 3,
|
44
|
+
"version": "2.0",
|
45
|
+
"content_view_id": 2,
|
46
|
+
"content_view_name": "cv1"
|
47
|
+
}
|
48
|
+
],
|
49
|
+
"last_sync": {
|
50
|
+
"id": "0ef7ac00-fc64-4661-afe2-1c5d31ef518a",
|
51
|
+
"username": "admin",
|
52
|
+
"started_at": "2022-10-05 14:41:35 -0400",
|
53
|
+
"ended_at": "2022-10-05 14:41:41 -0400",
|
54
|
+
"state": "stopped",
|
55
|
+
"result": "success",
|
56
|
+
"progress": 1
|
57
|
+
},
|
58
|
+
"content_view": {
|
59
|
+
"id": 1,
|
60
|
+
"name": "Default Organization View"
|
61
|
+
},
|
62
|
+
"content_view_version": {
|
63
|
+
"id": 1,
|
64
|
+
"name": "Default Organization View 1.0",
|
65
|
+
"content_view_id": 1
|
66
|
+
},
|
67
|
+
"kt_environment": {
|
68
|
+
"id": 1,
|
69
|
+
"name": "Library"
|
70
|
+
},
|
71
|
+
"content_type": "yum",
|
72
|
+
"url": "https://partha.fedorapeople.org/test-repos/pteradactyl/",
|
73
|
+
"arch": "noarch",
|
74
|
+
"os_versions": [],
|
75
|
+
"content_id": "1664981685026",
|
76
|
+
"generic_remote_options": null,
|
77
|
+
"major": null,
|
78
|
+
"minor": null,
|
79
|
+
"product": {
|
80
|
+
"id": 1,
|
81
|
+
"cp_id": "275319913074",
|
82
|
+
"name": "prod",
|
83
|
+
"orphaned": false,
|
84
|
+
"redhat": false,
|
85
|
+
"sync_plan": null
|
86
|
+
},
|
87
|
+
"content_label": "Default_Organization_prod_modular",
|
88
|
+
"last_sync_words": "2 days",
|
89
|
+
"comparison": [
|
90
|
+
3,
|
91
|
+
2
|
92
|
+
]
|
93
|
+
},
|
94
|
+
{
|
95
|
+
"backend_identifier": "bbdf8206-e62d-4faa-a36f-0a060d059a64",
|
96
|
+
"relative_path": "Default_Organization/Library/custom/prod/needed_errata",
|
97
|
+
"container_repository_name": null,
|
98
|
+
"full_path": "https://centos8-katello-devel.sajha.example.com/pulp/content/Default_Organization/Library/custom/prod/needed_errata/",
|
99
|
+
"library_instance_id": null,
|
100
|
+
"version_href": "/pulp/api/v3/repositories/rpm/rpm/6159f08c-5c82-4e69-a31d-3215ccc56c2f/versions/2/",
|
101
|
+
"remote_href": "/pulp/api/v3/remotes/rpm/rpm/0f906008-ab61-4b05-a192-a42787d4b0a6/",
|
102
|
+
"publication_href": "/pulp/api/v3/publications/rpm/rpm/af8612cc-746b-49eb-bfd2-fcbecc79f3fa/",
|
103
|
+
"content_counts": {
|
104
|
+
"rpm": 33,
|
105
|
+
"erratum": 4,
|
106
|
+
"package_group": 0,
|
107
|
+
"srpm": 0,
|
108
|
+
"module_stream": 0
|
109
|
+
},
|
110
|
+
"mirroring_policy": "mirror_content_only",
|
111
|
+
"id": 1,
|
112
|
+
"name": "needed_errata",
|
113
|
+
"label": "needed_errata",
|
114
|
+
"description": null,
|
115
|
+
"content_view_versions": [
|
116
|
+
{
|
117
|
+
"id": 2,
|
118
|
+
"version": "1.0",
|
119
|
+
"content_view_id": 2,
|
120
|
+
"content_view_name": "cv1"
|
121
|
+
},
|
122
|
+
{
|
123
|
+
"id": 3,
|
124
|
+
"version": "2.0",
|
125
|
+
"content_view_id": 2,
|
126
|
+
"content_view_name": "cv1"
|
127
|
+
}
|
128
|
+
],
|
129
|
+
"last_sync": {
|
130
|
+
"id": "14deabd5-a5a0-49dd-8091-fac74749ef66",
|
131
|
+
"username": "admin",
|
132
|
+
"started_at": "2022-10-05 10:54:15 -0400",
|
133
|
+
"ended_at": "2022-10-05 10:54:22 -0400",
|
134
|
+
"state": "stopped",
|
135
|
+
"result": "success",
|
136
|
+
"progress": 1
|
137
|
+
},
|
138
|
+
"content_view": {
|
139
|
+
"id": 1,
|
140
|
+
"name": "Default Organization View"
|
141
|
+
},
|
142
|
+
"content_view_version": {
|
143
|
+
"id": 1,
|
144
|
+
"name": "Default Organization View 1.0",
|
145
|
+
"content_view_id": 1
|
146
|
+
},
|
147
|
+
"kt_environment": {
|
148
|
+
"id": 1,
|
149
|
+
"name": "Library"
|
150
|
+
},
|
151
|
+
"content_type": "yum",
|
152
|
+
"url": "https://jlsherrill.fedorapeople.org/fake-repos/needed-errata/",
|
153
|
+
"arch": "noarch",
|
154
|
+
"os_versions": [],
|
155
|
+
"content_id": "1664981648561",
|
156
|
+
"generic_remote_options": null,
|
157
|
+
"major": null,
|
158
|
+
"minor": null,
|
159
|
+
"product": {
|
160
|
+
"id": 1,
|
161
|
+
"cp_id": "275319913074",
|
162
|
+
"name": "prod",
|
163
|
+
"orphaned": false,
|
164
|
+
"redhat": false,
|
165
|
+
"sync_plan": null
|
166
|
+
},
|
167
|
+
"content_label": "Default_Organization_prod_needed_errata",
|
168
|
+
"last_sync_words": "2 days",
|
169
|
+
"comparison": [
|
170
|
+
3,
|
171
|
+
2
|
172
|
+
]
|
173
|
+
}
|
174
|
+
]
|
175
|
+
}
|
@@ -141,6 +141,7 @@ const ContentViewVersions = ({ cvId, details }) => {
|
|
141
141
|
|
142
142
|
return [
|
143
143
|
<Checkbox
|
144
|
+
ouiaId={`select-version-${versionId}`}
|
144
145
|
id={versionId}
|
145
146
|
aria-label={`Select version ${versionId}`}
|
146
147
|
isChecked={isSelected(versionId)}
|
@@ -271,6 +272,7 @@ const ContentViewVersions = ({ cvId, details }) => {
|
|
271
272
|
<Grid>
|
272
273
|
<GridItem md={8} sm={12}>
|
273
274
|
<Button
|
275
|
+
ouiaId="compare"
|
274
276
|
variant="primary"
|
275
277
|
onClick={() => setHasTwoVersions(true)}
|
276
278
|
isDisabled={selectedCount !== 2}
|
@@ -283,10 +285,12 @@ const ContentViewVersions = ({ cvId, details }) => {
|
|
283
285
|
<Dropdown
|
284
286
|
toggle={<KebabToggle aria-label="bulk_actions" onToggle={setKebabOpen} />}
|
285
287
|
isOpen={kebabOpen}
|
288
|
+
ouiaId="cv-versions-bulk-actions"
|
286
289
|
isPlain
|
287
290
|
dropdownItems={[
|
288
291
|
<DropdownItem
|
289
292
|
aria-label="bulk_delete"
|
293
|
+
ouiaId="bulk_delete"
|
290
294
|
key="bulk_delete"
|
291
295
|
isDisabled={selectedCount < 1}
|
292
296
|
component="button"
|
@@ -339,7 +343,7 @@ const ContentViewVersions = ({ cvId, details }) => {
|
|
339
343
|
aria-label="remove_content_view_version_modal"
|
340
344
|
/>
|
341
345
|
}
|
342
|
-
<Tr key="version-header">
|
346
|
+
<Tr key="version-header" ouiaId="version-header">
|
343
347
|
{columnHeaders.map((title, index) => {
|
344
348
|
if (index === 0 && !hasActionPermissions) return undefined;
|
345
349
|
return <Th key={`col-header-${title}`}>{title}</Th>;
|
@@ -351,7 +355,7 @@ const ContentViewVersions = ({ cvId, details }) => {
|
|
351
355
|
const hasHistory = !!cvVersion?.active_history?.length;
|
352
356
|
const cells = buildCells(cvVersion);
|
353
357
|
return (
|
354
|
-
<Tr key={`
|
358
|
+
<Tr key={`row-${cvVersion.id}`} ouiaId={`row-${cvVersion.id}`}>
|
355
359
|
{cells.map((cell, index) => {
|
356
360
|
if (index === 0 && !hasActionPermissions) return undefined;
|
357
361
|
return (
|
data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVEnvironmentSelectionForm.js
CHANGED
@@ -76,9 +76,9 @@ const CVEnvironmentSelectionForm = () => {
|
|
76
76
|
/>
|
77
77
|
</Alert>)}
|
78
78
|
{(versionEnvironments.length !== 0) &&
|
79
|
-
<TableComposable variant={TableVariant.compact}>
|
79
|
+
<TableComposable ouiaId="version-delete-env-table" variant={TableVariant.compact}>
|
80
80
|
<Thead>
|
81
|
-
<Tr>
|
81
|
+
<Tr ouiaId="version-delete-env-table-header">
|
82
82
|
<Td
|
83
83
|
select={{
|
84
84
|
rowIndex: 0,
|
@@ -97,7 +97,7 @@ const CVEnvironmentSelectionForm = () => {
|
|
97
97
|
host_count: hostCount,
|
98
98
|
}, rowIndex) =>
|
99
99
|
(
|
100
|
-
<Tr key={`${name}_${id}`}>
|
100
|
+
<Tr ouiaId={`${name}_${id}`} key={`${name}_${id}`}>
|
101
101
|
<Td
|
102
102
|
key={`${name}__${id}_select`}
|
103
103
|
select={{
|
data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignActivationKeysForm.js
CHANGED
@@ -102,6 +102,7 @@ const CVReassignActivationKeysForm = () => {
|
|
102
102
|
id="selectCV"
|
103
103
|
name="selectCV"
|
104
104
|
aria-label="selectCV"
|
105
|
+
ouiaId="selectCV"
|
105
106
|
placeholderText={(cvSelectOptions.length === 0) ? __('No content views available') : __('Select a content view')}
|
106
107
|
>
|
107
108
|
{cvSelectOptions}
|
@@ -99,6 +99,7 @@ const CVReassignHostsForm = () => {
|
|
99
99
|
isDisabled={cvSelectOptions.length === 0}
|
100
100
|
onToggle={isExpanded => setCVSelectOpen(isExpanded)}
|
101
101
|
id="selectCV"
|
102
|
+
ouiaId="selectCV"
|
102
103
|
name="selectCV"
|
103
104
|
aria-label="selectCV"
|
104
105
|
placeholderText={(cvSelectOptions.length === 0) ? __('No content views available') : __('Select a content view')}
|
@@ -59,14 +59,14 @@ const AffectedActivationKeys = ({
|
|
59
59
|
variant={TableVariant.compact}
|
60
60
|
>
|
61
61
|
<Thead>
|
62
|
-
<Tr>
|
62
|
+
<Tr ouiaId="affected-activation-keys-header">
|
63
63
|
{columnHeaders.map(col =>
|
64
64
|
<Th key={col}>{col}</Th>)}
|
65
65
|
</Tr>
|
66
66
|
</Thead>
|
67
67
|
<Tbody>
|
68
68
|
{results?.map(({ name, id, environment }) => (
|
69
|
-
<Tr key={`${id}`}>
|
69
|
+
<Tr ouiaId={`${id}`} key={`${id}`}>
|
70
70
|
<Td>
|
71
71
|
<a rel="noreferrer" target="_blank" href={urlBuilder(`activation_keys/${id}`, '')}>{name}</a>
|
72
72
|
</Td>
|
@@ -55,7 +55,7 @@ const AffectedHosts = ({
|
|
55
55
|
variant={TableVariant.compact}
|
56
56
|
>
|
57
57
|
<Thead>
|
58
|
-
<Tr>
|
58
|
+
<Tr ouiaId="affected-hosts-table-headers">
|
59
59
|
{columnHeaders.map(col =>
|
60
60
|
<Th key={col}>{col}</Th>)}
|
61
61
|
</Tr>
|
@@ -66,7 +66,7 @@ const AffectedHosts = ({
|
|
66
66
|
id,
|
67
67
|
content_facet_attributes: { lifecycle_environment: environment },
|
68
68
|
}) => (
|
69
|
-
<Tr key={`${id}`}>
|
69
|
+
<Tr ouiaId={`${id}`} key={`${id}`}>
|
70
70
|
<Td>
|
71
71
|
<a rel="noreferrer" target="_blank" href={urlBuilder(`hosts/${id}`, '')}>{name}</a>
|
72
72
|
</Td>
|
data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailConfig.js
CHANGED
@@ -91,7 +91,7 @@ export default ({ cvId, versionId }) => [
|
|
91
91
|
<LongDateTime date={item.updated_at} showRelativeTimeTooltip />,
|
92
92
|
},
|
93
93
|
],
|
94
|
-
|
94
|
+
hideSearch: true,
|
95
95
|
},
|
96
96
|
{
|
97
97
|
name: __('Repositories'),
|
@@ -109,7 +109,7 @@ export default ({ cvId, versionId }) => [
|
|
109
109
|
{
|
110
110
|
title: __('Name'),
|
111
111
|
getProperty: item => (
|
112
|
-
<a href={urlBuilder(`products/${item?.product?.id}/repositories/${item?.id}`, '')}>
|
112
|
+
<a href={urlBuilder(`products/${item?.product?.id}/repositories/${item?.library_instance_id ?? item?.id}`, '')}>
|
113
113
|
{item?.name}
|
114
114
|
</a>),
|
115
115
|
},
|
data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsHeader.js
CHANGED
@@ -49,6 +49,7 @@ const ContentViewVersionDetailsHeader = ({
|
|
49
49
|
const [bulkDeleteOpen, setBulkDeleteOpen] = useState(false);
|
50
50
|
const dropDownItems = [
|
51
51
|
<DropdownItem
|
52
|
+
ouiaId="remove"
|
52
53
|
key="remove"
|
53
54
|
onClick={() => {
|
54
55
|
setRemovingFromEnv(true);
|
@@ -57,6 +58,7 @@ const ContentViewVersionDetailsHeader = ({
|
|
57
58
|
{__('Remove from environment')}
|
58
59
|
</DropdownItem>,
|
59
60
|
<DropdownItem
|
61
|
+
ouiaId="delete"
|
60
62
|
key="delete"
|
61
63
|
onClick={() =>
|
62
64
|
setBulkDeleteOpen(true)
|
@@ -70,7 +72,7 @@ const ContentViewVersionDetailsHeader = ({
|
|
70
72
|
<Grid className="margin-0-24">
|
71
73
|
<GridItem sm={6} >
|
72
74
|
<TextContent>
|
73
|
-
<Text component={TextVariants.h2}>{__('Version ')}{version}</Text>
|
75
|
+
<Text ouiaId="cv-version" component={TextVariants.h2}>{__('Version ')}{version}</Text>
|
74
76
|
</TextContent>
|
75
77
|
</GridItem>
|
76
78
|
<GridItem sm={6} style={{ display: 'flex' }}>
|
@@ -85,6 +87,7 @@ const ContentViewVersionDetailsHeader = ({
|
|
85
87
|
</Button>
|
86
88
|
<Dropdown
|
87
89
|
isPlain
|
90
|
+
ouiaId="cv-version-header-actions-dropdown"
|
88
91
|
style={{ width: 'inherit' }}
|
89
92
|
position={DropdownPosition.right}
|
90
93
|
toggle={
|
data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsTable.js
CHANGED
@@ -34,7 +34,7 @@ const ContentViewVersionDetailsTable = ({
|
|
34
34
|
autocompleteEndpoint,
|
35
35
|
fetchItems,
|
36
36
|
columnHeaders,
|
37
|
-
|
37
|
+
hideSearch,
|
38
38
|
route,
|
39
39
|
}, repositories,
|
40
40
|
}) => {
|
@@ -77,7 +77,7 @@ const ContentViewVersionDetailsTable = ({
|
|
77
77
|
updateSearchQuery,
|
78
78
|
status,
|
79
79
|
autocompleteEndpoint,
|
80
|
-
|
80
|
+
hideSearch,
|
81
81
|
}}
|
82
82
|
ouiaId={`content-view-version-details-${kebabCase(route)}-table`}
|
83
83
|
additionalListeners={[selected]}
|
@@ -92,6 +92,7 @@ const ContentViewVersionDetailsTable = ({
|
|
92
92
|
<Select
|
93
93
|
onToggle={setOpen}
|
94
94
|
isOpen={open}
|
95
|
+
ouiaId="repo-type-selector"
|
95
96
|
variant={SelectVariant.single}
|
96
97
|
onSelect={(_e, selection) => {
|
97
98
|
const index = selectedList
|
@@ -108,14 +109,14 @@ const ContentViewVersionDetailsTable = ({
|
|
108
109
|
}
|
109
110
|
>
|
110
111
|
<Thead>
|
111
|
-
<Tr>
|
112
|
+
<Tr ouiaId="column-headers">
|
112
113
|
{columnHeaders.map(({ title, width }) =>
|
113
114
|
<Th width={width} key={`${title}-header`}>{title}</Th>)}
|
114
115
|
</Tr>
|
115
116
|
</Thead>
|
116
117
|
<Tbody>
|
117
118
|
{results?.map((result, index) => (
|
118
|
-
<Tr key={`column-${index}`}>
|
119
|
+
<Tr key={`column-${index}`} ouiaId={`column-${index}`}>
|
119
120
|
{columnHeaders.map(({ getProperty }, colIndex) =>
|
120
121
|
<Td key={`cell-${colIndex}`}>{getProperty(result)} </Td>)}
|
121
122
|
</Tr>
|
@@ -43,7 +43,9 @@ const CVPublishForm = ({
|
|
43
43
|
</>}
|
44
44
|
/>
|
45
45
|
<TextContent>
|
46
|
-
<Text component={TextVariants.h3}>
|
46
|
+
<Text ouiaId="next-version-text" component={TextVariants.h3}>
|
47
|
+
{__('Publish new version - ')}{nextVersion || '1.0'}
|
48
|
+
</Text>
|
47
49
|
</TextContent>
|
48
50
|
<Form>
|
49
51
|
<FormGroup label={__('Description')} fieldId="description">
|
@@ -60,6 +62,7 @@ const CVPublishForm = ({
|
|
60
62
|
<FormGroup label={__('Promote')} fieldId="promote">
|
61
63
|
<Switch
|
62
64
|
id="promote-switch"
|
65
|
+
ouiaId="promote-switch"
|
63
66
|
aria-label="promote-switch"
|
64
67
|
isChecked={promote}
|
65
68
|
onChange={checkPromote}
|
@@ -68,6 +71,7 @@ const CVPublishForm = ({
|
|
68
71
|
</Form>
|
69
72
|
{!alertDismissed && promote && forcePromote.length > 0 && (
|
70
73
|
<Alert
|
74
|
+
ouiaId="force-promotion-alert"
|
71
75
|
variant="info"
|
72
76
|
isInline
|
73
77
|
title={__('Force promotion')}
|
@@ -42,16 +42,16 @@ const CVPublishReview = ({
|
|
42
42
|
{__('Review your currently selected changes for ')}<b>{composite ? <RegistryIcon /> : <EnterpriseIcon />} {name}.</b>
|
43
43
|
</>}
|
44
44
|
/>
|
45
|
-
<TableComposable aria-label="Review Table">
|
45
|
+
<TableComposable ouiaId="cv-publish-review-table" aria-label="Review Table">
|
46
46
|
<Thead>
|
47
|
-
<Tr>
|
47
|
+
<Tr ouiaId="cv-publish-review-table-headers">
|
48
48
|
<Th>{__('Content view name')}</Th>
|
49
49
|
<Th>{__('Version')}</Th>
|
50
50
|
<Th>{__('Environments')}</Th>
|
51
51
|
</Tr>
|
52
52
|
</Thead>
|
53
53
|
<Tbody>
|
54
|
-
<Tr>
|
54
|
+
<Tr ouiaId="cv-publish-review-table-row">
|
55
55
|
<Td>
|
56
56
|
<><ContentViewIcon composite={composite} description={name} /><InactiveText text={__('Newly published')} /></>
|
57
57
|
</Td>
|