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
data/config/routes.rb
CHANGED
@@ -32,6 +32,9 @@ Katello::Engine.routes.draw do
|
|
32
32
|
|
33
33
|
match '/content' => 'react#index', :via => [:get]
|
34
34
|
|
35
|
+
match '/alternate_content_sources' => 'react#index', :via => [:get]
|
36
|
+
match '/alternate_content_sources/*page' => 'react#index', :via => [:get]
|
37
|
+
|
35
38
|
Katello::RepositoryTypeManager.generic_ui_content_types(false).each do |type|
|
36
39
|
get "/#{type.pluralize}", to: redirect("/content/#{type.pluralize}")
|
37
40
|
get "/#{type.pluralize}/:page", to: redirect("/content/#{type.pluralize}/%{page}")
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class UpdateCustomCdn < ActiveRecord::Migration[6.1]
|
2
|
+
class FakeCdnConfiguration < Katello::Model
|
3
|
+
self.table_name = 'katello_cdn_configurations'
|
4
|
+
self.inheritance_column = nil
|
5
|
+
end
|
6
|
+
|
7
|
+
def change
|
8
|
+
FakeCdnConfiguration.reset_column_information
|
9
|
+
FakeCdnConfiguration.where(type: 'redhat_cdn').each do |config|
|
10
|
+
config.update!(type: 'custom_cdn') unless Katello::Resources::CDN::CdnResource.redhat_cdn?(config.url)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -32,6 +32,6 @@ angular.module('Bastion.components').service("Notification", ['$interpolate', 'f
|
|
32
32
|
};
|
33
33
|
|
34
34
|
this.setErrorMessage = function (message, context) {
|
35
|
-
foreman.toastNotifications.notify({message: interpolateIfNeeded(message, context), type: '
|
35
|
+
foreman.toastNotifications.notify({message: interpolateIfNeeded(message, context), type: 'danger'});
|
36
36
|
};
|
37
37
|
}]);
|
@@ -21,17 +21,17 @@
|
|
21
21
|
angular.module('Bastion').value('simpleContentAccessEnabled', <%= Organization.current.simple_content_access? if Organization.current %>);
|
22
22
|
angular.module('Bastion').value('isManifestImported', <%= !!Organization.current&.manifest_imported?(cached: true) %>)
|
23
23
|
angular.module('Bastion').value('foreman', tfm);
|
24
|
-
angular.module('Bastion').value('repositoryTypes', angular.fromJson(
|
25
|
-
angular.module('Bastion').value('deleteHostOnUnregister', angular.fromJson(
|
26
|
-
angular.module('Bastion').value('globalContentProxy', angular.fromJson(
|
24
|
+
angular.module('Bastion').value('repositoryTypes', angular.fromJson('<%= Katello::RepositoryTypeManager.enabled_repository_types.values.to_json.html_safe %>'));
|
25
|
+
angular.module('Bastion').value('deleteHostOnUnregister', angular.fromJson('<%= Setting[:unregister_delete_host] %>'));
|
26
|
+
angular.module('Bastion').value('globalContentProxy', angular.fromJson('<%= Setting[:content_default_http_proxy].empty? ? nil.to_json : Setting[:content_default_http_proxy].to_json.html_safe %>'));
|
27
27
|
angular.module('Bastion').value('entriesPerPage', "<%= Setting[:entries_per_page] %>");
|
28
28
|
angular.module('Bastion').value('contentViewSolveDependencies', "<%= Setting[:content_view_solve_dependencies] %>");
|
29
|
-
angular.module('Bastion').constant('BastionConfig', angular.fromJson(
|
29
|
+
angular.module('Bastion').constant('BastionConfig', angular.fromJson('<%= Bastion.config.to_json.html_safe %>'));
|
30
30
|
angular.module('Bastion.auth').value('CurrentUser', {
|
31
31
|
id: <%= User.current.id %>,
|
32
32
|
admin: <%= User.current.admin || User.current.usergroups.any? { |group| group.admin } %>
|
33
33
|
});
|
34
|
-
angular.module('Bastion.auth').value('Permissions', angular.fromJson(
|
34
|
+
angular.module('Bastion.auth').value('Permissions', angular.fromJson('<%= User.current.cached_roles.collect { |role| role.permissions }.flatten.to_json.html_safe %>'));
|
35
35
|
angular.module('Bastion').value('newHostDetailsUI', "<%= Setting[:host_details_ui] %>");
|
36
36
|
</script>
|
37
37
|
<% Bastion.plugins.each do |name, plugin| %>
|
@@ -17941,7 +17941,7 @@ function $ParseProvider() {
|
|
17941
17941
|
* @description
|
17942
17942
|
*/
|
17943
17943
|
function $QProvider() {
|
17944
|
-
var errorOnUnhandledRejections =
|
17944
|
+
var errorOnUnhandledRejections = false;
|
17945
17945
|
this.$get = ['$rootScope', '$exceptionHandler', function($rootScope, $exceptionHandler) {
|
17946
17946
|
return qFactory(function(callback) {
|
17947
17947
|
$rootScope.$evalAsync(callback);
|
@@ -25,6 +25,12 @@ angular.module("Bastion.content-credentials").factory("ContentCredential", [
|
|
25
25
|
"ssl_key_products": "SSL Client Key"
|
26
26
|
};
|
27
27
|
|
28
|
+
var acsTypeMap = {
|
29
|
+
"ssl_ca_alternate_content_sources": "SSL CA Cert",
|
30
|
+
"ssl_client_alternate_content_sources": "SSL Client Cert",
|
31
|
+
"ssl_key_alternate_content_sources": "SSL Client Key"
|
32
|
+
};
|
33
|
+
|
28
34
|
function appendData(allData, fullCredential, usedAs) {
|
29
35
|
angular.forEach(fullCredential, function(data) {
|
30
36
|
data.usedAs = usedAs;
|
@@ -53,6 +59,17 @@ angular.module("Bastion.content-credentials").factory("ContentCredential", [
|
|
53
59
|
params: { id: "auto_complete_search" }
|
54
60
|
},
|
55
61
|
update: { method: "PUT" },
|
62
|
+
acs: {
|
63
|
+
method: "GET",
|
64
|
+
transformResponse: function(data) {
|
65
|
+
var allAcs = parseContentCredentialData(data, acsTypeMap);
|
66
|
+
return {
|
67
|
+
total: allAcs.length,
|
68
|
+
subtotal: allAcs.length,
|
69
|
+
results: allAcs
|
70
|
+
};
|
71
|
+
}
|
72
|
+
},
|
56
73
|
products: {
|
57
74
|
method: "GET",
|
58
75
|
transformResponse: function(data) {
|
@@ -52,6 +52,16 @@ angular.module('Bastion.content-credentials').config(['$stateProvider', function
|
|
52
52
|
parent: 'content-credentials'
|
53
53
|
}
|
54
54
|
})
|
55
|
+
.state('content-credential.acs', {
|
56
|
+
url: '/alternate_content_sources',
|
57
|
+
permission: 'view_content_credentials',
|
58
|
+
controller: 'ContentCredentialACSController',
|
59
|
+
templateUrl: 'content-credentials/details/views/content-credential-acs.html',
|
60
|
+
ncyBreadcrumb: {
|
61
|
+
label: "{{ 'Alternate Content Sources' | translate }}",
|
62
|
+
parent: 'content-credential.info'
|
63
|
+
}
|
64
|
+
})
|
55
65
|
.state('content-credential.products', {
|
56
66
|
url: '/products',
|
57
67
|
permission: 'view_content_credentials',
|
@@ -0,0 +1,36 @@
|
|
1
|
+
/**
|
2
|
+
* @ngdoc object
|
3
|
+
* @name Bastion.content-credentials.controller:ContentCredentialACSController
|
4
|
+
*
|
5
|
+
* @requires $scope
|
6
|
+
* @requires Nutupane
|
7
|
+
* @requires ContentCredential
|
8
|
+
* @requires ApiErrorHandler
|
9
|
+
*
|
10
|
+
* @description
|
11
|
+
* Page for Content Credential acs
|
12
|
+
*/
|
13
|
+
(function () {
|
14
|
+
function ContentCredentialACSController($scope, Nutupane, ContentCredential, ApiErrorHandler) {
|
15
|
+
var nutupane = new Nutupane(ContentCredential, {
|
16
|
+
id: $scope.$stateParams.contentCredentialId
|
17
|
+
}, 'acs');
|
18
|
+
$scope.controllerName = 'katello_content_credentials';
|
19
|
+
nutupane.primaryOnly = true;
|
20
|
+
|
21
|
+
$scope.panel = $scope.panel || {error: false, loading: false};
|
22
|
+
|
23
|
+
$scope.contentCredential = ContentCredential.get({id: $scope.$stateParams.contentCredentialId}, function () {
|
24
|
+
$scope.panel.error = false;
|
25
|
+
$scope.panel.loading = false;
|
26
|
+
}, function (response) {
|
27
|
+
$scope.panel.loading = false;
|
28
|
+
ApiErrorHandler.handleGETRequestErrors(response, $scope);
|
29
|
+
});
|
30
|
+
|
31
|
+
$scope.table = nutupane.table;
|
32
|
+
}
|
33
|
+
|
34
|
+
angular.module('Bastion.content-credentials').controller('ContentCredentialACSController', ContentCredentialACSController);
|
35
|
+
ContentCredentialACSController.$inject = ['$scope', 'Nutupane', 'ContentCredential', 'ApiErrorHandler'];
|
36
|
+
})();
|
@@ -40,9 +40,15 @@ angular.module('Bastion.content-credentials').controller('ContentCredentialDetai
|
|
40
40
|
};
|
41
41
|
|
42
42
|
$scope.removeContentCredential = function (contentCredential) {
|
43
|
-
|
43
|
+
var deferred = $q.defer();
|
44
|
+
contentCredential.$delete(function (response) {
|
45
|
+
deferred.resolve(response);
|
44
46
|
$scope.transitionTo('content-credentials');
|
47
|
+
}, function (response) {
|
48
|
+
deferred.reject(response);
|
49
|
+
Notification.setErrorMessage(response.data.displayMessage);
|
45
50
|
});
|
51
|
+
return deferred.promise;
|
46
52
|
};
|
47
53
|
}]
|
48
54
|
);
|
@@ -0,0 +1,38 @@
|
|
1
|
+
<span page-title ng-model="contentCredential">{{ 'Alternate Content Sources for ' | translate }} {{ contentCredential.name }}</span>
|
2
|
+
|
3
|
+
<div data-extend-template="layouts/partials/table.html">
|
4
|
+
<span data-block="no-rows-message" translate>
|
5
|
+
You currently don't have any Alternate Content Sources associated with this Content Credential.
|
6
|
+
</span>
|
7
|
+
|
8
|
+
<div data-block="search">
|
9
|
+
<input type="text" class="form-control" stop-event="click"
|
10
|
+
placeholder="{{ 'Filter...' | translate }}"
|
11
|
+
ng-model="contentCredentialACSFilter"/>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
|
15
|
+
<div data-block="table">
|
16
|
+
<table bst-table="table" class="table table-striped table-bordered">
|
17
|
+
<thead>
|
18
|
+
<tr bst-table-head>
|
19
|
+
<th bst-table-column="name" sortable><span translate>Name</span></th>
|
20
|
+
<th bst-table-column="usedAs" sortable><span translate>Used as</span></th>
|
21
|
+
</tr>
|
22
|
+
</thead>
|
23
|
+
|
24
|
+
<tbody>
|
25
|
+
<tr bst-table-row ng-repeat="alternate_content_source in table.rows | filter:contentCredentialACSFilter">
|
26
|
+
<td bst-table-cell>
|
27
|
+
<a href="/alternate_content_sources/{{ alternate_content_source.id }}/details" target="_self">
|
28
|
+
{{ alternate_content_source.name }}
|
29
|
+
</a>
|
30
|
+
</td>
|
31
|
+
<td bst-table-cell>
|
32
|
+
{{ alternate_content_source.usedAs }}
|
33
|
+
</td>
|
34
|
+
</tr>
|
35
|
+
</tbody>
|
36
|
+
</table>
|
37
|
+
</div>
|
38
|
+
</div>
|
@@ -27,6 +27,9 @@
|
|
27
27
|
<li ng-class="{active: stateIncludes('content-credential.repositories')}">
|
28
28
|
<a ui-sref="content-credential.repositories" translate>Repositories</a>
|
29
29
|
</li>
|
30
|
+
<li ng-class="{active: stateIncludes('content-credential.acs')}">
|
31
|
+
<a ui-sref="content-credential.acs" translate>Alternate Content Sources</a>
|
32
|
+
</li>
|
30
33
|
</ul>
|
31
34
|
</nav>
|
32
35
|
|
@@ -26,8 +26,9 @@
|
|
26
26
|
<th bst-table-column="name" sortable><span translate>Name</span></th>
|
27
27
|
<th bst-table-column="organization"><span translate>Organization</span></th>
|
28
28
|
<th bst-table-column="content_type"><span translate>Type</span></th>
|
29
|
-
<th bst-table-column="products" class="number-cell"><span translate>
|
30
|
-
<th bst-table-column class="number-cell"><span translate>
|
29
|
+
<th bst-table-column="products" class="number-cell"><span translate>Products</span></th>
|
30
|
+
<th bst-table-column class="number-cell"><span translate>Repositories</span></th>
|
31
|
+
<th bst-table-column class="acs"><span translate>Alternate Content Sources</span></th>
|
31
32
|
</tr>
|
32
33
|
</thead>
|
33
34
|
|
@@ -47,6 +48,10 @@
|
|
47
48
|
contentCredential.ssl_client_root_repos.length +
|
48
49
|
contentCredential.ssl_key_root_repos.length || 0 }}
|
49
50
|
</td>
|
51
|
+
<td bst-table-cell class="number-cell">{{ contentCredential.ssl_ca_alternate_content_sources.length +
|
52
|
+
contentCredential.ssl_client_alternate_content_sources.length +
|
53
|
+
contentCredential.ssl_client_key_alternate_content_sources.length || 0 }}
|
54
|
+
</td>
|
50
55
|
</tr>
|
51
56
|
</tbody>
|
52
57
|
</table>
|
@@ -14,6 +14,7 @@
|
|
14
14
|
* @requires CurrentOrganization
|
15
15
|
* @requires ContentHostsHelper
|
16
16
|
* @requires simpleContentAccessEnabled
|
17
|
+
* @requires newHostDetailsUI
|
17
18
|
*
|
18
19
|
* @description
|
19
20
|
* Provides the functionality specific to Content Hosts for use with the Nutupane UI pattern.
|
@@ -21,8 +22,8 @@
|
|
21
22
|
* within the table.
|
22
23
|
*/
|
23
24
|
angular.module('Bastion.content-hosts').controller('ContentHostsController',
|
24
|
-
['$scope', '$q', '$state', '$location', '$uibModal', 'translate', 'Nutupane', 'Host', 'HostBulkAction', 'Notification', 'CurrentOrganization', 'ContentHostsHelper', 'ContentHostsModalHelper', '$httpParamSerializer', 'simpleContentAccessEnabled',
|
25
|
-
function ($scope, $q, $state, $location, $uibModal, translate, Nutupane, Host, HostBulkAction, Notification, CurrentOrganization, ContentHostsHelper, ContentHostsModalHelper, $httpParamSerializer, simpleContentAccessEnabled) {
|
25
|
+
['$scope', '$q', '$state', '$location', '$uibModal', 'translate', 'Nutupane', 'Host', 'HostBulkAction', 'Notification', 'CurrentOrganization', 'ContentHostsHelper', 'ContentHostsModalHelper', '$httpParamSerializer', 'simpleContentAccessEnabled', 'newHostDetailsUI',
|
26
|
+
function ($scope, $q, $state, $location, $uibModal, translate, Nutupane, Host, HostBulkAction, Notification, CurrentOrganization, ContentHostsHelper, ContentHostsModalHelper, $httpParamSerializer, simpleContentAccessEnabled, newHostDetailsUI) {
|
26
27
|
var nutupane, params, query;
|
27
28
|
|
28
29
|
if ($location.search().search) {
|
@@ -49,6 +50,7 @@ angular.module('Bastion.content-hosts').controller('ContentHostsController',
|
|
49
50
|
$scope.table = nutupane.table;
|
50
51
|
$scope.nutupane = nutupane;
|
51
52
|
$scope.simpleContentAccessEnabled = simpleContentAccessEnabled;
|
53
|
+
$scope.newHostDetailsUI = newHostDetailsUI;
|
52
54
|
|
53
55
|
// @TODO begin hack necessary because of foreman API bug http://projects.theforeman.org/issues/13877
|
54
56
|
$scope.table.sortBy = function (column) {
|
@@ -115,7 +115,7 @@
|
|
115
115
|
<div class="divider"></div>
|
116
116
|
|
117
117
|
<div style="display: inline-block"><h4 translate>System Purpose</h4></div>
|
118
|
-
<div style="display: inline-block"><i class="pficon-info" title="{{ 'System
|
118
|
+
<div style="display: inline-block"><i class="pficon-info" title="{{ 'System purpose enables you to set the system\'s intended use on your network and improves reporting accuracy in the Subscriptions service of the Red Hat Hybrid Cloud Console.' | translate }}"></i></div>
|
119
119
|
|
120
120
|
<dl class="dl-horizontal dl-horizontal-left">
|
121
121
|
<dt translate ng-hide="simpleContentAccessEnabled">System Purpose Status</dt>
|
@@ -99,9 +99,10 @@
|
|
99
99
|
<tr bst-table-row ng-repeat="host in table.rows" row-select="host"
|
100
100
|
ng-controller="ContentHostStatusController">
|
101
101
|
<td bst-table-cell>
|
102
|
-
<
|
103
|
-
{{ host.name }}
|
104
|
-
|
102
|
+
<span ng-switch="newHostDetailsUI">
|
103
|
+
<a ng-switch-when="true" ng-href="/new/hosts/{{host.name}}">{{ host.name }}</a>
|
104
|
+
<a ng-switch-when="false" ui-sref="content-host.info({hostId: host.id})">{{ host.name }}</a>
|
105
|
+
</span>
|
105
106
|
</td>
|
106
107
|
<td bst-table-cell ng-hide="simpleContentAccessEnabled">
|
107
108
|
<span ng-class="table.getHostStatusIcon(host.subscription_global_status)">
|