katello 4.3.0.rc4 → 4.4.0.rc2
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/api_controller.rb +13 -4
- data/app/controllers/katello/api/v2/content_view_versions_controller.rb +4 -1
- data/app/controllers/katello/api/v2/content_views_controller.rb +46 -0
- data/app/controllers/katello/api/v2/host_packages_controller.rb +21 -1
- data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +30 -1
- data/app/controllers/katello/api/v2/organizations_controller.rb +10 -6
- data/app/controllers/katello/api/v2/packages_controller.rb +4 -0
- data/app/controllers/katello/api/v2/repositories_bulk_actions_controller.rb +10 -1
- data/app/controllers/katello/api/v2/repositories_controller.rb +42 -14
- data/app/controllers/katello/api/v2/repository_sets_controller.rb +7 -0
- data/app/controllers/katello/concerns/api/v2/repository_content_controller.rb +3 -0
- data/app/controllers/katello/concerns/hosts_controller_extensions.rb +32 -0
- data/app/controllers/katello/remote_execution_controller.rb +5 -4
- data/app/graphql/types/host_collection.rb +18 -0
- data/app/helpers/katello/content_source_helper.rb +43 -0
- data/app/helpers/katello/hosts_and_hostgroups_helper.rb +4 -0
- data/app/lib/actions/katello/cdn_configuration/update.rb +5 -7
- data/app/lib/actions/katello/content_view/publish.rb +5 -0
- data/app/lib/actions/katello/content_view_version/incremental_update.rb +17 -3
- data/app/lib/actions/katello/repository/discover.rb +1 -14
- data/app/lib/actions/katello/repository/errata_mail.rb +4 -5
- data/app/lib/actions/katello/repository/filtered_index_content.rb +1 -1
- data/app/lib/actions/katello/repository/sync.rb +2 -2
- data/app/lib/actions/pulp3/abstract.rb +1 -1
- data/app/lib/actions/pulp3/abstract_async_task.rb +1 -1
- data/app/lib/actions/pulp3/content_view/delete_repository_references.rb +14 -4
- data/app/lib/actions/pulp3/content_view_version/create_import_history.rb +1 -2
- data/app/lib/actions/pulp3/content_view_version/import.rb +7 -0
- data/app/lib/actions/pulp3/orchestration/content_view_version/import.rb +7 -5
- data/app/lib/actions/pulp3/repository/copy_content.rb +1 -1
- data/app/lib/actions/pulp3/repository/reclaim_space.rb +3 -10
- data/app/lib/actions/pulp3/repository/save_artifact.rb +1 -0
- data/app/lib/katello/concerns/base_template_scope_extensions.rb +11 -0
- data/app/lib/katello/errors.rb +3 -3
- data/app/lib/katello/logging.rb +6 -1
- data/app/lib/katello/repo_discovery.rb +27 -19
- data/app/lib/katello/resources/cdn/katello_cdn.rb +41 -3
- data/app/lib/katello/resources/cdn.rb +4 -2
- data/app/lib/katello/util/deduplication_migrator.rb +105 -0
- data/app/lib/katello/util/pulpcore_content_filters.rb +2 -1
- data/app/models/katello/candlepin/repository_mapper.rb +3 -2
- data/app/models/katello/cdn_configuration.rb +38 -6
- data/app/models/katello/concerns/audit_comment_extensions.rb +17 -0
- data/app/models/katello/concerns/host_managed_extensions.rb +34 -2
- data/app/models/katello/concerns/organization_extensions.rb +5 -1
- data/app/models/katello/concerns/pulp_database_unit.rb +59 -173
- data/app/models/katello/concerns/remote_execution_proxy_selector_extensions.rb +11 -0
- data/app/models/katello/concerns/smart_proxy_extensions.rb +2 -1
- data/app/models/katello/content_view.rb +4 -4
- data/app/models/katello/content_view_filter.rb +1 -1
- data/app/models/katello/content_view_history.rb +1 -1
- data/app/models/katello/content_view_version.rb +6 -2
- data/app/models/katello/content_view_version_export_history.rb +3 -2
- data/app/models/katello/content_view_version_import_history.rb +4 -4
- data/app/models/katello/deb.rb +1 -3
- data/app/models/katello/docker_meta_tag.rb +1 -1
- data/app/models/katello/erratum.rb +0 -15
- data/app/models/katello/glue/provider.rb +1 -1
- data/app/models/katello/glue/pulp/repos.rb +3 -1
- data/app/models/katello/host/content_facet.rb +2 -27
- data/app/models/katello/host/info_provider.rb +9 -0
- data/app/models/katello/host/subscription_facet.rb +2 -2
- data/app/models/katello/host_available_module_stream.rb +10 -0
- data/app/models/katello/hostgroup/content_facet.rb +2 -2
- data/app/models/katello/installed_package.rb +1 -0
- data/app/models/katello/product.rb +1 -1
- data/app/models/katello/product_content.rb +2 -2
- data/app/models/katello/repository.rb +13 -12
- data/app/models/katello/root_repository.rb +65 -16
- data/app/models/katello/rpm.rb +8 -2
- data/app/models/setting/content.rb +15 -5
- data/app/services/cert/rhsm_client.rb +1 -5
- data/app/services/katello/component_view_presenter.rb +1 -1
- data/app/services/katello/content_unit_indexer.rb +166 -0
- data/app/services/katello/organization_creator.rb +23 -8
- data/app/services/katello/pulp/repository/docker.rb +1 -1
- data/app/services/katello/pulp/repository/yum.rb +0 -54
- data/app/services/katello/pulp/repository.rb +0 -6
- data/app/services/katello/pulp3/ansible_collection.rb +26 -10
- data/app/services/katello/pulp3/api/apt.rb +7 -0
- data/app/services/katello/pulp3/api/yum.rb +4 -0
- data/app/services/katello/pulp3/content_view_version/import.rb +11 -2
- data/app/services/katello/pulp3/content_view_version/metadata_generator.rb +1 -1
- data/app/services/katello/pulp3/deb.rb +10 -9
- data/app/services/katello/pulp3/docker_manifest.rb +6 -5
- data/app/services/katello/pulp3/docker_manifest_list.rb +23 -6
- data/app/services/katello/pulp3/docker_tag.rb +16 -7
- data/app/services/katello/pulp3/erratum.rb +51 -56
- data/app/services/katello/pulp3/file_unit.rb +9 -6
- data/app/services/katello/pulp3/generic_content_unit.rb +11 -12
- data/app/services/katello/pulp3/module_stream.rb +76 -30
- data/app/services/katello/pulp3/package_group.rb +5 -5
- data/app/services/katello/pulp3/pulp_content_unit.rb +19 -11
- data/app/services/katello/pulp3/repository/apt.rb +5 -3
- data/app/services/katello/pulp3/repository/docker.rb +14 -7
- data/app/services/katello/pulp3/repository/generic.rb +1 -1
- data/app/services/katello/pulp3/repository/yum.rb +23 -16
- data/app/services/katello/pulp3/repository.rb +31 -10
- data/app/services/katello/pulp3/repository_mirror.rb +18 -4
- data/app/services/katello/pulp3/rpm.rb +13 -13
- data/app/services/katello/pulp3/srpm.rb +10 -9
- data/app/services/katello/registration_manager.rb +1 -1
- data/app/services/katello/repository_type.rb +15 -4
- data/app/services/katello/repository_type_manager.rb +1 -1
- data/app/services/katello/ui_notifications/subscriptions/manifest_expired_warning.rb +1 -1
- data/app/services/katello/upstream_connection_checker.rb +2 -2
- data/app/views/foreman/job_templates/change_content_source.erb +1 -31
- data/app/views/foreman/job_templates/install_errata.erb +6 -9
- data/app/views/foreman/job_templates/install_errata_by_search_query.erb +26 -0
- data/app/views/foreman/job_templates/install_packages_by_search_query.erb +19 -0
- data/app/views/foreman/job_templates/remove_packages_by_search_query.erb +19 -0
- data/app/views/foreman/job_templates/update_packages_by_search_query.erb +19 -0
- data/app/views/katello/api/v2/cdn_configurations/show.json.rabl +1 -1
- data/app/views/katello/api/v2/content_views/base.json.rabl +8 -4
- data/app/views/katello/api/v2/environments/show.json.rabl +9 -0
- data/app/views/katello/api/v2/host_module_streams/base.json.rabl +1 -0
- data/app/views/katello/api/v2/repositories/base.json.rabl +1 -0
- data/app/views/katello/api/v2/repositories/show.json.rabl +3 -1
- data/app/views/katello/layouts/react.html.erb +0 -1
- data/app/views/katello/sync_management/_repo.html.erb +36 -25
- data/config/initializers/monkeys.rb +0 -1
- data/config/routes/api/v2.rb +1 -0
- data/config/routes/overrides.rb +3 -0
- data/config/routes.rb +2 -0
- data/db/migrate/20150930183738_migrate_content_hosts.rb +1 -1
- data/db/migrate/20180612164926_add_content_org_id.rb +2 -2
- data/db/migrate/20210119162528_delete_puppet_and_ostree_repos.rb +2 -0
- data/db/migrate/20211019192121_create_cdn_configuration.katello.rb +11 -2
- data/db/migrate/20211201154845_add_unique_indexes.rb +20 -0
- data/db/migrate/20211202172358_add_repository_mirroring_policy.rb +26 -0
- data/db/migrate/20211208034230_add_content_view_and_lifecycle_environment.rb +6 -0
- data/db/migrate/20211220185935_clean_duplicate_content_units.rb +144 -0
- data/db/migrate/20220110223754_update_disconnected_settings.rb +20 -0
- data/db/migrate/20220120163252_fix_docker_download_policy.rb +11 -0
- data/db/migrate/20220124191056_add_type_to_cdn_configuration.rb +22 -0
- data/db/migrate/20220127120843_fix_debian_download_policy.rb +11 -0
- data/db/migrate/20220204171908_rename_docker_tags_whitelist_and_add_exclude_tags.rb +8 -0
- data/db/migrate/20220207140355_change_deb_attributes_size_limit.rb +7 -0
- data/db/migrate/20220209205137_expand_sync_timeout_settings.rb +23 -0
- data/db/seeds.d/111-upgrade_tasks.rb +2 -1
- data/engines/bastion/app/views/bastion/layouts/application.html.erb +0 -1
- data/engines/bastion/app/views/bastion/layouts/assets.html.erb +0 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/content-credentials.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/details/content-credential-products.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/details/content-credential-repositories.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-traces-modal.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment.html +26 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/apply-errata.controller.js +10 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +212 -152
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/packages.controller.js +1 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +29 -10
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-manage-content.controller.js +2 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details.controller.js +8 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +49 -35
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/mirroring-policy.service.js +30 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +29 -6
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +48 -23
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/discovery.controller.js +5 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.routes.js +4 -3
- data/lib/katello/engine.rb +4 -0
- data/lib/katello/permission_creator.rb +1 -1
- data/lib/katello/permissions/host_permissions.rb +3 -1
- data/lib/katello/plugin.rb +9 -1
- data/lib/katello/repository_types/deb.rb +0 -1
- data/lib/katello/repository_types/docker.rb +4 -4
- data/lib/katello/repository_types/file.rb +0 -1
- data/lib/katello/repository_types/ostree.rb +4 -6
- data/lib/katello/repository_types/python.rb +5 -1
- data/lib/katello/repository_types/yum.rb +2 -9
- data/lib/katello/tasks/content_view_import_only.rake +34 -0
- data/lib/katello/tasks/import_applicability.rake +1 -1
- data/lib/katello/tasks/jenkins.rake +0 -2
- data/lib/katello/tasks/repository.rake +4 -1
- data/lib/katello/tasks/upgrades/4.4/publish_import_cvvs.rake +17 -0
- data/lib/katello/version.rb +1 -1
- data/locale/action_names.rb +8 -7
- data/locale/bn/katello.po +1402 -650
- data/locale/cs/katello.po +1217 -96
- data/locale/de/katello.po +2359 -1347
- data/locale/en/katello.po +1216 -94
- data/locale/es/katello.po +2201 -1172
- data/locale/fr/katello.po +2601 -1615
- data/locale/gu/katello.po +1564 -814
- data/locale/hi/katello.po +1563 -810
- data/locale/it/katello.po +1311 -282
- data/locale/ja/katello.po +2534 -1518
- data/locale/katello.pot +3430 -1326
- data/locale/kn/katello.po +1564 -812
- data/locale/ko/katello.po +1441 -409
- data/locale/mr/katello.po +1564 -776
- data/locale/or/katello.po +1565 -813
- data/locale/pa/katello.po +1559 -792
- data/locale/pt/katello.po +1314 -277
- data/locale/pt_BR/katello.po +2226 -1181
- data/locale/ru/katello.po +1587 -563
- data/locale/ta/katello.po +1373 -619
- data/locale/te/katello.po +1564 -810
- data/locale/zh_CN/katello.po +2936 -1890
- data/locale/zh_TW/katello.po +1508 -606
- data/webpack/__mocks__/foremanReact/{redux/actions/toasts.js → components/ToastsList/index.js} +3 -2
- data/webpack/components/ActionableDetail.js +35 -21
- data/webpack/components/Content/Details/ContentDetails.js +1 -1
- data/webpack/components/Content/Details/__tests__/ContentDetailInfo.test.js +0 -2
- data/webpack/components/Content/Details/__tests__/ContentDetailRepositories.test.js +0 -2
- data/webpack/components/Content/Details/__tests__/ContentDetails.test.js +0 -2
- data/webpack/components/Content/Details/__tests__/__snapshots__/ContentDetails.test.js.snap +1 -1
- data/webpack/components/Content/__tests__/ContentPage.test.js +0 -2
- data/webpack/components/Content/__tests__/ContentTable.test.js +0 -2
- data/webpack/components/EditableSwitch.js +8 -2
- data/webpack/components/EditableTextInput/EditableTextInput.js +44 -86
- data/webpack/components/EditableTextInput/__tests__/editableTextInput.test.js +3 -3
- data/webpack/components/Errata/index.js +95 -29
- data/webpack/components/ErratumTypeLabel.js +16 -16
- data/webpack/components/MultiSelect/index.js +2 -2
- data/webpack/components/Packages/index.js +1 -1
- data/webpack/components/RoutedTabs/index.js +2 -1
- data/webpack/components/Search/Search.js +5 -2
- data/webpack/components/Search/__tests__/search.test.js +2 -3
- data/webpack/components/Select/Select.js +1 -1
- data/webpack/components/SelectOrg/SelectOrgReducer.js +15 -15
- data/webpack/components/SelectOrg/SetOrganization.js +2 -2
- data/webpack/components/Table/PageControls.js +3 -6
- data/webpack/components/Table/TableHooks.js +47 -7
- data/webpack/components/Table/TableWrapper.js +25 -7
- data/webpack/components/TypeAhead/TypeAhead.js +5 -1
- data/webpack/components/TypeAhead/helpers/commonPropTypes.js +1 -1
- data/webpack/components/TypeAhead/helpers/helpers.js +14 -14
- data/webpack/components/TypeAhead/pf3Search/TypeAheadSearch.js +1 -1
- data/webpack/components/TypeAhead/pf4Search/TypeAheadInput.js +4 -1
- data/webpack/components/TypeAhead/pf4Search/TypeAheadSearch.js +2 -1
- data/webpack/components/WithOrganization/withOrganization.js +3 -3
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard.js +1 -1
- data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.js +108 -0
- data/webpack/components/extensions/HostDetails/Cards/__tests__/errataOverviewCard.test.js +56 -0
- data/webpack/components/extensions/HostDetails/HostDetailsActions.js +2 -0
- data/webpack/components/extensions/HostDetails/HostPackages/HostPackagesActions.js +49 -2
- data/webpack/components/extensions/HostDetails/HostPackages/HostPackagesConstants.js +14 -1
- data/webpack/components/extensions/HostDetails/Tabs/ContentTab/SecondaryTabsRoutes.js +6 -4
- data/webpack/components/extensions/HostDetails/Tabs/ContentTab/constants.js +1 -0
- data/webpack/components/extensions/HostDetails/Tabs/ContentTab/index.js +1 -0
- data/webpack/components/extensions/HostDetails/Tabs/{ErrataTab.js → ErrataTab/ErrataTab.js} +86 -75
- data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.scss +11 -0
- data/webpack/components/extensions/HostDetails/Tabs/{ErratumExpansionContents.js → ErrataTab/ErratumExpansionContents.js} +3 -3
- data/webpack/components/extensions/HostDetails/Tabs/{ErratumExpansionDetail.js → ErrataTab/ErratumExpansionDetail.js} +0 -0
- data/webpack/components/extensions/HostDetails/{HostErrata → Tabs/ErrataTab}/HostErrataActions.js +3 -3
- data/webpack/components/extensions/HostDetails/{HostErrata → Tabs/ErrataTab}/HostErrataConstants.js +11 -0
- data/webpack/components/extensions/HostDetails/{HostErrata → Tabs/ErrataTab}/HostErrataSelectors.js +0 -0
- data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsActions.js +16 -0
- data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsConstants.js +3 -0
- data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsSelectors.js +19 -0
- data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsTab.js +241 -0
- data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/__tests__/moduleStreamsTab.test.js +108 -0
- data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/__tests__/modules.fixtures.json +34 -0
- data/webpack/components/extensions/HostDetails/Tabs/PackageInstallModal.js +279 -0
- data/webpack/components/extensions/HostDetails/Tabs/PackageInstallModal.scss +3 -0
- data/webpack/components/extensions/HostDetails/Tabs/PackagesTab.js +357 -64
- data/webpack/components/extensions/HostDetails/Tabs/PackagesTab.scss +3 -7
- data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionActions.js +103 -4
- data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionConstants.js +6 -1
- data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +45 -42
- data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.scss +3 -3
- data/webpack/components/extensions/HostDetails/Tabs/{EnableTracerEmptyState.js → TracesTab/EnableTracerEmptyState.js} +0 -0
- data/webpack/components/extensions/HostDetails/Tabs/{EnableTracerModal.js → TracesTab/EnableTracerModal.js} +3 -2
- data/webpack/components/extensions/HostDetails/Tabs/{HostTracesActions.js → TracesTab/HostTracesActions.js} +2 -2
- data/webpack/components/extensions/HostDetails/Tabs/{HostTracesConstants.js → TracesTab/HostTracesConstants.js} +0 -0
- data/webpack/components/extensions/HostDetails/Tabs/{HostTracesSelectors.js → TracesTab/HostTracesSelectors.js} +0 -0
- data/webpack/components/extensions/HostDetails/Tabs/{TracesTab.js → TracesTab/TracesTab.js} +66 -61
- data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesTab.scss +11 -0
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/errataTab.test.js +17 -18
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/packageInstallModal.test.js +385 -0
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/packages.fixtures.json +1 -1
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/packagesTab.test.js +312 -11
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/repositorySetsTab.test.js +2 -2
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracesTab.test.js +26 -30
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/yumInstallablePackages.fixtures.json +72 -0
- data/webpack/components/extensions/HostDetails/Tabs/customizedRexUrlHelpers.js +25 -5
- data/webpack/components/extensions/HostDetails/YumInstallablePackages/YumInstallablePackagesActions.js +18 -0
- data/webpack/components/extensions/HostDetails/YumInstallablePackages/YumInstallablePackagesConstants.js +3 -0
- data/webpack/components/extensions/HostDetails/YumInstallablePackages/YumInstallablePackagesSelectors.js +16 -0
- data/webpack/components/extensions/HostDetails/hostDetailsHelpers.js +19 -0
- data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/ActivationKeys.test.js.snap +4 -0
- data/webpack/components/extensions/RegistrationCommands/fields/ActivationKeys.js +1 -1
- data/webpack/components/extensions/RegistrationCommands/fields/LifecycleEnvironment.js +1 -1
- data/webpack/components/extensions/about/SystemStatuses.js +1 -1
- data/webpack/components/extensions/about/SystemStatusesReducer.js +10 -10
- data/webpack/components/pf3Table/components/Table.js +4 -5
- data/webpack/components/pf3Table/components/Table.test.js +0 -3
- data/webpack/components/pf3Table/components/TableBody.js +2 -2
- data/webpack/components/pf3Table/components/__snapshots__/Table.test.js.snap +9 -8
- data/webpack/containers/Application/config.js +6 -1
- data/webpack/containers/Application/overrides.scss +56 -7
- data/webpack/global_index.js +4 -1
- data/webpack/global_test_setup.js +1 -1
- data/webpack/index.js +7 -0
- data/webpack/redux/OrganizationProducts/OrganizationProductsReducer.js +15 -15
- data/webpack/redux/reducers/RedHatRepositories/enabled.js +43 -43
- data/webpack/redux/reducers/RedHatRepositories/repositorySetRepositories.js +43 -43
- data/webpack/redux/reducers/RedHatRepositories/sets.js +31 -31
- data/webpack/scenes/AnsibleCollections/AnsibleCollectionsReducer.js +26 -26
- data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionDetailsReducer.js +19 -19
- data/webpack/scenes/AnsibleCollections/Details/__tests__/AnsibleCollectionDetails.test.js +0 -2
- data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollectionPage.test.js +0 -2
- data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollectionsTable.test.js +0 -2
- data/webpack/scenes/Content/ContentConfig.js +55 -5
- data/webpack/scenes/Content/ContentPage.js +5 -5
- data/webpack/scenes/Content/Details/ContentDetails.js +23 -21
- data/webpack/scenes/Content/Details/ContentInfo.js +2 -2
- data/webpack/scenes/Content/Details/ContentRepositories.js +1 -1
- data/webpack/scenes/Content/Details/__tests__/contentDetail.test.js +4 -4
- data/webpack/scenes/Content/Table/ContentTable.js +2 -2
- data/webpack/scenes/Content/__tests__/contentTable.test.js +3 -3
- data/webpack/scenes/ContentViews/ContentViewsConstants.js +5 -4
- data/webpack/scenes/ContentViews/ContentViewsPage.js +17 -13
- data/webpack/scenes/ContentViews/Copy/CopyContentViewForm.js +1 -1
- data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +3 -2
- data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignHostsForm.js +2 -2
- data/webpack/scenes/ContentViews/Delete/__tests__/contentViewDelete.test.js +6 -6
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewAddModal.js +22 -11
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewBulkAddModal.js +31 -18
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +1 -1
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +2 -2
- data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +22 -28
- data/webpack/scenes/ContentViews/Details/ContentViewDetailReducer.js +8 -8
- data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +5 -5
- data/webpack/scenes/ContentViews/Details/ContentViewDetails.js +32 -30
- data/webpack/scenes/ContentViews/Details/ContentViewInfo.js +9 -4
- data/webpack/scenes/ContentViews/Details/DetailsContainer.js +14 -17
- data/webpack/scenes/ContentViews/Details/Filters/Add/CVFilterAddModal.js +3 -0
- data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositoryTable.js +1 -1
- data/webpack/scenes/ContentViews/Details/Filters/ArtifactsWithNoErrata.js +8 -8
- data/webpack/scenes/ContentViews/Details/Filters/CVContainerImageFilterContent.js +4 -4
- data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +6 -6
- data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +16 -9
- data/webpack/scenes/ContentViews/Details/Filters/CVFilterDetailType.js +46 -46
- data/webpack/scenes/ContentViews/Details/Filters/CVModuleStreamFilterContent.js +17 -17
- data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +17 -17
- data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +4 -4
- data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetails.js +2 -2
- data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetailsHeader.js +17 -11
- data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +1 -1
- data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContentModal.test.js +2 -2
- data/webpack/scenes/ContentViews/Details/Filters/Rules/Package/AddEditPackageRuleModal.js +17 -17
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVContainerImageFilterContent.test.js +2 -3
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVRpmFilterContent.test.js +2 -9
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilterDetails.test.js +3 -5
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.test.js +2 -10
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataIDFilter.test.js +2 -3
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvModuleStreamFilter.test.js +2 -3
- data/webpack/scenes/ContentViews/Details/Histories/__tests__/contentViewHistory.test.js +2 -2
- data/webpack/scenes/ContentViews/Details/Repositories/ContentCounts.js +1 -1
- data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +24 -3
- data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +11 -5
- data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionContent.js +28 -28
- data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +1 -1
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVEnvironmentSelectionForm.js +18 -18
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignActivationKeysForm.js +3 -3
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignHostsForm.js +3 -3
- data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemove.test.js +6 -6
- data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedActivationKeys.js +1 -1
- data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedHosts.js +1 -1
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailConfig.js +31 -35
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.js +9 -8
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.scss +5 -2
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsHeader.js +39 -40
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsTable.js +46 -34
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionRepositoryCell.js +66 -49
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.test.js +5 -5
- data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +3 -3
- data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetail.test.js +5 -3
- data/webpack/scenes/ContentViews/Publish/CVPublishFinish.js +2 -2
- data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +5 -5
- data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +3 -3
- data/webpack/scenes/ContentViews/components/CVBreadCrumb.js +1 -1
- data/webpack/scenes/ContentViews/components/ContentViewsCounter.js +1 -1
- data/webpack/scenes/ContentViews/components/EnvironmentLabels.js +18 -18
- data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.js +10 -10
- data/webpack/scenes/ContentViews/expansions/DetailsExpansion.js +2 -2
- data/webpack/scenes/ContentViews/expansions/RelatedContentViewComponentsModal.js +8 -8
- data/webpack/scenes/Hosts/ChangeContentSource/actions.js +43 -0
- data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceForm.js +87 -0
- data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceTemplate.js +90 -0
- data/webpack/scenes/Hosts/ChangeContentSource/components/FormField.js +43 -0
- data/webpack/scenes/Hosts/ChangeContentSource/constants.js +3 -0
- data/webpack/scenes/Hosts/ChangeContentSource/helpers.js +27 -0
- data/webpack/scenes/Hosts/ChangeContentSource/index.js +126 -0
- data/webpack/scenes/Hosts/ChangeContentSource/selectors.js +42 -0
- data/webpack/scenes/Hosts/ChangeContentSource/styles.scss +11 -0
- data/webpack/scenes/ModuleStreams/Details/ModuleStreamDetailsReducer.js +18 -18
- data/webpack/scenes/ModuleStreams/Details/Profiles/__tests__/ModuleStreamDetailProfiles.test.js +0 -1
- data/webpack/scenes/ModuleStreams/Details/__tests__/ModuleStreamDetails.test.js +0 -2
- data/webpack/scenes/ModuleStreams/ModuleStreamsReducer.js +26 -26
- data/webpack/scenes/ModuleStreams/__tests__/ModuleStreamPage.test.js +0 -2
- data/webpack/scenes/ModuleStreams/__tests__/ModuleStreamsTable.test.js +0 -2
- data/webpack/scenes/Organizations/OrganizationActions.js +5 -1
- data/webpack/scenes/Organizations/OrganizationReducer.js +8 -8
- data/webpack/scenes/RedHatRepositories/RedHatRepositoriesPage.js +31 -1
- data/webpack/scenes/RedHatRepositories/__tests__/RedHatRepositoriesPage.test.js +16 -0
- data/webpack/scenes/RedHatRepositories/__tests__/__snapshots__/RedHatRepositoriesPage.test.js.snap +11 -2
- data/webpack/scenes/RedHatRepositories/components/EnabledRepository/EnabledRepositoryContent.js +4 -4
- data/webpack/scenes/RedHatRepositories/components/RepositorySetRepositories.js +1 -1
- data/webpack/scenes/RedHatRepositories/helpers.js +5 -5
- data/webpack/scenes/RedHatRepositories/index.js +11 -3
- data/webpack/scenes/Settings/SettingsReducer.js +14 -14
- data/webpack/scenes/Settings/Tables/TableReducer.js +23 -23
- data/webpack/scenes/Subscriptions/Details/SubscriptionDetailInfo.js +2 -2
- data/webpack/scenes/Subscriptions/Details/SubscriptionDetailProductContent.js +15 -15
- data/webpack/scenes/Subscriptions/Details/SubscriptionDetailProducts.js +1 -1
- data/webpack/scenes/Subscriptions/Details/SubscriptionDetailReducer.js +34 -34
- data/webpack/scenes/Subscriptions/Details/SubscriptionDetails.js +13 -13
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/AirGappedTypeForm.js +81 -0
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CdnConfigurationConstants.js +13 -0
- data/webpack/scenes/Subscriptions/Manifest/{CdnConfigurationForm.scss → CdnConfigurationTab/CdnConfigurationForm.scss} +0 -0
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CdnTypeForm.js +106 -0
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/UpstreamServerTypeForm.js +259 -0
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/AirGappedTypeForm.test.js +44 -0
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/CdnTypeForm.test.js +67 -0
- data/webpack/scenes/Subscriptions/Manifest/{__tests__/CdnConfigurationForm.test.js → CdnConfigurationTab/__tests__/UpstreamServerTypeForm.test.js} +46 -17
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/index.js +97 -0
- data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +11 -6
- data/webpack/scenes/Subscriptions/Manifest/ManifestHistoryReducer.js +16 -16
- data/webpack/scenes/Subscriptions/SubscriptionReducer.js +149 -149
- data/webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsReducer.js +41 -41
- data/webpack/scenes/Subscriptions/UpstreamSubscriptions/__tests__/UpstreamSubscriptionsPage.test.js +0 -1
- data/webpack/scenes/Subscriptions/__tests__/SubscriptionsPage.test.js +0 -1
- data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsActions.test.js.snap +3 -2
- data/webpack/scenes/Subscriptions/components/SubscriptionsTable/__tests__/SubscriptionsTable.test.js +4 -0
- data/webpack/scenes/Subscriptions/components/SubscriptionsTable/__tests__/__snapshots__/SubscriptionsTable.test.js.snap +9 -0
- data/webpack/scenes/Subscriptions/components/SubscriptionsTable/components/Dialogs/DeleteDialog.js +6 -6
- data/webpack/scenes/Subscriptions/components/SubscriptionsTable/components/Table.js +12 -12
- data/webpack/scenes/Tasks/TaskActions.js +1 -1
- data/webpack/scenes/Tasks/__tests__/__snapshots__/TaskActions.test.js.snap +3 -2
- data/webpack/services/api/testHelpers.js +5 -3
- data/webpack/services/index.js +36 -36
- data/webpack/utils/helpers.js +11 -8
- metadata +98 -60
- data/app/services/katello/pulp/deb.rb +0 -55
- data/app/services/katello/pulp/distribution.rb +0 -7
- data/app/services/katello/pulp/docker_blob.rb +0 -7
- data/app/services/katello/pulp/docker_manifest.rb +0 -13
- data/app/services/katello/pulp/docker_manifest_list.rb +0 -14
- data/app/services/katello/pulp/docker_tag.rb +0 -14
- data/app/services/katello/pulp/erratum.rb +0 -129
- data/app/services/katello/pulp/file_unit.rb +0 -21
- data/app/services/katello/pulp/module_stream.rb +0 -39
- data/app/services/katello/pulp/package_category.rb +0 -7
- data/app/services/katello/pulp/package_group.rb +0 -20
- data/app/services/katello/pulp/pulp_content_unit.rb +0 -156
- data/app/services/katello/pulp/rpm.rb +0 -57
- data/app/services/katello/pulp/srpm.rb +0 -29
- data/app/services/katello/pulp/yum_metadata_file.rb +0 -30
- data/lib/monkeys/pulp3_13_checksumfix.rb +0 -17
- data/webpack/__mocks__/foremanReact/components/Pagination/PaginationHooks.js +0 -2
- data/webpack/__mocks__/foremanReact/components/Pagination/PaginationWrapper.js +0 -2
- data/webpack/components/extensions/HostDetails/Tabs/ErrataTab.scss +0 -16
- data/webpack/components/extensions/HostDetails/Tabs/TracesTab.scss +0 -12
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationForm.js +0 -185
@@ -0,0 +1,56 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { render } from 'react-testing-lib-wrapper';
|
3
|
+
import ErrataOverviewCard from '../ErrataOverviewCard';
|
4
|
+
import nock from '../../../../../test-utils/nockWrapper';
|
5
|
+
|
6
|
+
describe('Without errata', () => {
|
7
|
+
afterEach(() => {
|
8
|
+
nock.cleanAll();
|
9
|
+
});
|
10
|
+
|
11
|
+
test('does not show piechart when there are 0 errata', () => {
|
12
|
+
const hostDetails = {
|
13
|
+
id: 2,
|
14
|
+
content_facet_attributes: {
|
15
|
+
errata_counts: {
|
16
|
+
bugfix: 0,
|
17
|
+
enhancement: 0,
|
18
|
+
security: 0,
|
19
|
+
total: 0,
|
20
|
+
},
|
21
|
+
},
|
22
|
+
};
|
23
|
+
/* eslint-disable max-len */
|
24
|
+
const { queryByLabelText, getByText } = render(<ErrataOverviewCard hostDetails={hostDetails} />);
|
25
|
+
/* eslint-enable max-len */
|
26
|
+
expect(queryByLabelText('errataChart')).not.toBeInTheDocument();
|
27
|
+
expect(getByText('0 errata')).toBeInTheDocument();
|
28
|
+
});
|
29
|
+
});
|
30
|
+
|
31
|
+
describe('With errata', () => {
|
32
|
+
afterEach(() => {
|
33
|
+
nock.cleanAll();
|
34
|
+
});
|
35
|
+
|
36
|
+
test('show piechart when there are errata', () => {
|
37
|
+
const hostDetails = {
|
38
|
+
id: 2,
|
39
|
+
content_facet_attributes: {
|
40
|
+
errata_counts: {
|
41
|
+
bugfix: 10,
|
42
|
+
enhancement: 20,
|
43
|
+
security: 30,
|
44
|
+
total: 60,
|
45
|
+
},
|
46
|
+
},
|
47
|
+
};
|
48
|
+
const { getByText, container } = render(<ErrataOverviewCard hostDetails={hostDetails} />);
|
49
|
+
expect(container.getElementsByClassName('erratachart')).toHaveLength(1);
|
50
|
+
expect(container.getElementsByClassName('erratalegend')).toHaveLength(1);
|
51
|
+
expect(getByText('60 errata')).toBeInTheDocument();
|
52
|
+
expect(getByText('30 security advisories')).toBeInTheDocument();
|
53
|
+
expect(getByText('10 bug fixes')).toBeInTheDocument();
|
54
|
+
expect(getByText('20 enhancements')).toBeInTheDocument();
|
55
|
+
});
|
56
|
+
});
|
@@ -1,6 +1,18 @@
|
|
1
|
-
import { API_OPERATIONS, get } from 'foremanReact/redux/API';
|
1
|
+
import { API_OPERATIONS, get, put } from 'foremanReact/redux/API';
|
2
|
+
import { renderTaskStartedToast } from '../../../../scenes/Tasks/helpers';
|
2
3
|
import { foremanApi } from '../../../../services/api';
|
3
|
-
import {
|
4
|
+
import { getResponseErrorMsgs } from '../../../../utils/helpers';
|
5
|
+
import {
|
6
|
+
HOST_PACKAGES_INSTALL_KEY,
|
7
|
+
HOST_PACKAGES_KEY,
|
8
|
+
HOST_PACKAGES_REMOVE_KEY,
|
9
|
+
HOST_PACKAGES_UPGRADE_KEY,
|
10
|
+
} from './HostPackagesConstants';
|
11
|
+
|
12
|
+
const errorToast = (error) => {
|
13
|
+
const message = getResponseErrorMsgs(error.response);
|
14
|
+
return message;
|
15
|
+
};
|
4
16
|
|
5
17
|
export const getInstalledPackagesWithLatest = (hostId, params) => get({
|
6
18
|
type: API_OPERATIONS.GET,
|
@@ -9,3 +21,38 @@ export const getInstalledPackagesWithLatest = (hostId, params) => get({
|
|
9
21
|
params,
|
10
22
|
});
|
11
23
|
export default getInstalledPackagesWithLatest;
|
24
|
+
|
25
|
+
export const installPackageViaKatelloAgent = (hostId, params) => put({
|
26
|
+
type: API_OPERATIONS.PUT,
|
27
|
+
key: HOST_PACKAGES_INSTALL_KEY,
|
28
|
+
url: foremanApi.getApiUrl(`/hosts/${hostId}/packages/install`),
|
29
|
+
handleSuccess: ({ data }) => renderTaskStartedToast(data),
|
30
|
+
errorToast: error => errorToast(error),
|
31
|
+
params,
|
32
|
+
});
|
33
|
+
|
34
|
+
export const removePackageViaKatelloAgent = (hostId, params) => put({
|
35
|
+
type: API_OPERATIONS.PUT,
|
36
|
+
key: HOST_PACKAGES_REMOVE_KEY,
|
37
|
+
url: foremanApi.getApiUrl(`/hosts/${hostId}/packages/remove`),
|
38
|
+
handleSuccess: ({ data }) => renderTaskStartedToast(data),
|
39
|
+
errorToast: error => errorToast(error),
|
40
|
+
params,
|
41
|
+
});
|
42
|
+
|
43
|
+
export const upgradePackageViaKatelloAgent = (hostId, params) => put({
|
44
|
+
type: API_OPERATIONS.PUT,
|
45
|
+
key: HOST_PACKAGES_UPGRADE_KEY,
|
46
|
+
url: foremanApi.getApiUrl(`/hosts/${hostId}/packages/upgrade`),
|
47
|
+
handleSuccess: ({ data }) => renderTaskStartedToast(data),
|
48
|
+
errorToast: error => errorToast(error),
|
49
|
+
params,
|
50
|
+
});
|
51
|
+
|
52
|
+
export const upgradeAllViaKatelloAgent = hostId => put({
|
53
|
+
type: API_OPERATIONS.PUT,
|
54
|
+
key: HOST_PACKAGES_UPGRADE_KEY,
|
55
|
+
url: foremanApi.getApiUrl(`/hosts/${hostId}/packages/upgrade_all`),
|
56
|
+
handleSuccess: ({ data }) => renderTaskStartedToast(data),
|
57
|
+
errorToast: error => errorToast(error),
|
58
|
+
});
|
@@ -1,2 +1,15 @@
|
|
1
1
|
export const HOST_PACKAGES_KEY = 'HOST_PACKAGES';
|
2
|
-
export
|
2
|
+
export const HOST_PACKAGES_INSTALL_KEY = 'HOST_PACKAGES_KATELLO_AGENT_INSTALL';
|
3
|
+
export const HOST_PACKAGES_REMOVE_KEY = 'HOST_PACKAGES_REMOVE';
|
4
|
+
export const HOST_PACKAGES_UPGRADE_KEY = 'HOST_PACKAGES_UPGRADE';
|
5
|
+
export const PACKAGES_SEARCH_QUERY = 'Packages search query';
|
6
|
+
|
7
|
+
export const PACKAGES_VERSION_STATUSES = {
|
8
|
+
UPGRADABLE: 'Upgradable',
|
9
|
+
UP_TO_DATE: 'Up-to date',
|
10
|
+
};
|
11
|
+
|
12
|
+
export const VERSION_STATUSES_TO_PARAM = {
|
13
|
+
[PACKAGES_VERSION_STATUSES.UPGRADABLE]: 'upgradable',
|
14
|
+
[PACKAGES_VERSION_STATUSES.UP_TO_DATE]: 'up-to-date',
|
15
|
+
};
|
@@ -1,20 +1,22 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
import { Route, Switch, Redirect } from 'react-router-dom';
|
3
3
|
import { PackagesTab } from '../PackagesTab';
|
4
|
-
import { ErrataTab } from '../ErrataTab';
|
4
|
+
import { ErrataTab } from '../ErrataTab/ErrataTab.js';
|
5
|
+
import { ModuleStreamsTab } from '../ModuleStreamsTab/ModuleStreamsTab';
|
5
6
|
import { route } from './helpers';
|
6
7
|
|
7
8
|
const SecondaryTabRoutes = () => (
|
8
9
|
<Switch>
|
9
|
-
<Route exact path="/Content">
|
10
|
-
<Redirect to={route('errata')} />
|
11
|
-
</Route>
|
12
10
|
<Route path={route('packages')}>
|
13
11
|
<PackagesTab />
|
14
12
|
</Route>
|
15
13
|
<Route path={route('errata')}>
|
16
14
|
<ErrataTab />
|
17
15
|
</Route>
|
16
|
+
<Route path={route('module-streams')}>
|
17
|
+
<ModuleStreamsTab />
|
18
|
+
</Route>
|
19
|
+
<Redirect to={route('errata')} />
|
18
20
|
</Switch>
|
19
21
|
);
|
20
22
|
|
@@ -3,6 +3,7 @@ import { translate as __ } from 'foremanReact/common/I18n';
|
|
3
3
|
const SECONDARY_TABS = [
|
4
4
|
{ key: 'packages', title: __('Packages') },
|
5
5
|
{ key: 'errata', title: __('Errata') },
|
6
|
+
{ key: 'module-streams', title: __('Module streams') },
|
6
7
|
];
|
7
8
|
|
8
9
|
export default SECONDARY_TABS;
|
@@ -1,7 +1,9 @@
|
|
1
1
|
import React, { useCallback, useState } from 'react';
|
2
2
|
import { useSelector, useDispatch } from 'react-redux';
|
3
|
-
import {
|
4
|
-
|
3
|
+
import {
|
4
|
+
Button, Split, SplitItem, ActionList, ActionListItem, Dropdown,
|
5
|
+
DropdownItem, KebabToggle, Skeleton, Tooltip, ToggleGroup, ToggleGroupItem,
|
6
|
+
} from '@patternfly/react-core';
|
5
7
|
import { TimesIcon, CheckIcon } from '@patternfly/react-icons';
|
6
8
|
import {
|
7
9
|
TableVariant,
|
@@ -18,18 +20,20 @@ import { selectAPIResponse } from 'foremanReact/redux/API/APISelectors';
|
|
18
20
|
import IsoDate from 'foremanReact/components/common/dates/IsoDate';
|
19
21
|
import { urlBuilder } from 'foremanReact/common/urlHelpers';
|
20
22
|
import { propsToCamelCase } from 'foremanReact/common/helpers';
|
21
|
-
import SelectableDropdown from '
|
22
|
-
import { useSet, useBulkSelect } from '
|
23
|
-
import TableWrapper from '
|
24
|
-
import { ErrataType, ErrataSeverity } from '
|
25
|
-
import { getInstallableErrata, regenerateApplicability, applyViaKatelloAgent } from '
|
23
|
+
import SelectableDropdown from '../../../../SelectableDropdown';
|
24
|
+
import { useSet, useBulkSelect, useUrlParams } from '../../../../../components/Table/TableHooks';
|
25
|
+
import TableWrapper from '../../../../../components/Table/TableWrapper';
|
26
|
+
import { ErrataType, ErrataSeverity } from '../../../../../components/Errata';
|
27
|
+
import { getInstallableErrata, regenerateApplicability, applyViaKatelloAgent } from './HostErrataActions';
|
26
28
|
import ErratumExpansionDetail from './ErratumExpansionDetail';
|
27
29
|
import ErratumExpansionContents from './ErratumExpansionContents';
|
28
|
-
import { selectHostErrataStatus } from '
|
29
|
-
import { HOST_ERRATA_KEY, ERRATA_TYPES, ERRATA_SEVERITIES, TYPES_TO_PARAM, SEVERITIES_TO_PARAM } from '
|
30
|
-
import { installErrata } from '
|
31
|
-
import { errataInstallUrl } from '
|
30
|
+
import { selectHostErrataStatus } from './HostErrataSelectors';
|
31
|
+
import { HOST_ERRATA_KEY, ERRATA_TYPES, ERRATA_SEVERITIES, TYPES_TO_PARAM, SEVERITIES_TO_PARAM, PARAM_TO_FRIENDLY_NAME } from './HostErrataConstants';
|
32
|
+
import { installErrata } from '../RemoteExecutionActions';
|
33
|
+
import { errataInstallUrl } from '../customizedRexUrlHelpers';
|
32
34
|
import './ErrataTab.scss';
|
35
|
+
import hostIdNotReady from '../../HostDetailsActions';
|
36
|
+
import defaultRemoteActionMethod, { KATELLO_AGENT } from '../../hostDetailsHelpers';
|
33
37
|
|
34
38
|
export const ErrataTab = () => {
|
35
39
|
const hostDetails = useSelector(state => selectAPIResponse(state, 'HOST_DETAILS'));
|
@@ -44,14 +48,21 @@ export const ErrataTab = () => {
|
|
44
48
|
const [ALL, INSTALLABLE] = toggleGroupStates;
|
45
49
|
const ERRATA_TYPE = __('Type');
|
46
50
|
const ERRATA_SEVERITY = __('Severity');
|
47
|
-
const [toggleGroupState, setToggleGroupState] = useState(INSTALLABLE);
|
48
|
-
|
49
51
|
const [isBulkActionOpen, setIsBulkActionOpen] = useState(false);
|
50
52
|
const toggleBulkAction = () => setIsBulkActionOpen(prev => !prev);
|
51
53
|
const expandedErrata = useSet([]);
|
52
54
|
const erratumIsExpanded = id => expandedErrata.has(id);
|
53
|
-
const
|
54
|
-
|
55
|
+
const {
|
56
|
+
type: initialType,
|
57
|
+
severity: initialSeverity,
|
58
|
+
show,
|
59
|
+
searchParam,
|
60
|
+
} = useUrlParams();
|
61
|
+
const [toggleGroupState, setToggleGroupState] = useState(show ?? INSTALLABLE);
|
62
|
+
const [errataTypeSelected, setErrataTypeSelected]
|
63
|
+
= useState(PARAM_TO_FRIENDLY_NAME[initialType] ?? ERRATA_TYPE);
|
64
|
+
const [errataSeveritySelected, setErrataSeveritySelected]
|
65
|
+
= useState(PARAM_TO_FRIENDLY_NAME[initialSeverity] ?? ERRATA_SEVERITY);
|
55
66
|
const activeFilters = [errataTypeSelected, errataSeveritySelected];
|
56
67
|
const defaultFilters = [ERRATA_TYPE, ERRATA_SEVERITY];
|
57
68
|
|
@@ -70,7 +81,7 @@ export const ErrataTab = () => {
|
|
70
81
|
|
71
82
|
const fetchItems = useCallback(
|
72
83
|
(params) => {
|
73
|
-
if (!hostId) return
|
84
|
+
if (!hostId) return hostIdNotReady;
|
74
85
|
const modifiedParams = { ...params };
|
75
86
|
if (errataTypeSelected !== ERRATA_TYPE) {
|
76
87
|
modifiedParams.type = TYPES_TO_PARAM[errataTypeSelected];
|
@@ -102,6 +113,7 @@ export const ErrataTab = () => {
|
|
102
113
|
metadata,
|
103
114
|
idColumn: 'errata_id',
|
104
115
|
isSelectable: result => result.installable,
|
116
|
+
initialSearchQuery: searchParam || '',
|
105
117
|
});
|
106
118
|
|
107
119
|
if (!hostId) return <Skeleton />;
|
@@ -144,13 +156,12 @@ export const ErrataTab = () => {
|
|
144
156
|
{ errata_ids: [id] },
|
145
157
|
));
|
146
158
|
|
147
|
-
const
|
148
|
-
contentFacet.katelloAgentEnabled);
|
159
|
+
const defaultRemoteAction = defaultRemoteActionMethod({ hostDetails });
|
149
160
|
const apply = () => {
|
150
|
-
if (
|
151
|
-
applyViaRemoteExecution();
|
152
|
-
} else {
|
161
|
+
if (defaultRemoteAction === KATELLO_AGENT) {
|
153
162
|
applyByKatelloAgent();
|
163
|
+
} else {
|
164
|
+
applyViaRemoteExecution();
|
154
165
|
}
|
155
166
|
};
|
156
167
|
|
@@ -165,7 +176,7 @@ export const ErrataTab = () => {
|
|
165
176
|
</DropdownItem>,
|
166
177
|
];
|
167
178
|
|
168
|
-
if (
|
179
|
+
if (defaultRemoteAction === KATELLO_AGENT) {
|
169
180
|
dropdownItems.push((
|
170
181
|
<DropdownItem
|
171
182
|
aria-label="apply_via_katello_agent"
|
@@ -237,7 +248,7 @@ export const ErrataTab = () => {
|
|
237
248
|
);
|
238
249
|
|
239
250
|
const hostIsNonLibrary = (
|
240
|
-
|
251
|
+
contentFacet?.contentViewDefault === false && contentFacet.lifecycleEnvironmentLibrary === false
|
241
252
|
);
|
242
253
|
const toggleGroup = (
|
243
254
|
<Split hasGutter>
|
@@ -262,26 +273,26 @@ export const ErrataTab = () => {
|
|
262
273
|
/>
|
263
274
|
</SplitItem>
|
264
275
|
{hostIsNonLibrary &&
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
276
|
+
<SplitItem>
|
277
|
+
<ToggleGroup aria-label="Installable Errata">
|
278
|
+
<ToggleGroupItem
|
279
|
+
text={__('All')}
|
280
|
+
buttonId="allToggle"
|
281
|
+
aria-label="Show All"
|
282
|
+
isSelected={toggleGroupState === ALL}
|
283
|
+
onChange={() => setToggleGroupState(ALL)}
|
284
|
+
/>
|
274
285
|
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
286
|
+
<ToggleGroupItem
|
287
|
+
text={__('Installable')}
|
288
|
+
buttonId="installableToggle"
|
289
|
+
aria-label="Show Installable"
|
290
|
+
isSelected={toggleGroupState === INSTALLABLE}
|
291
|
+
onChange={() => setToggleGroupState(INSTALLABLE)}
|
292
|
+
/>
|
293
|
+
</ToggleGroup>
|
294
|
+
</SplitItem>
|
295
|
+
}
|
285
296
|
</Split>
|
286
297
|
);
|
287
298
|
|
@@ -290,21 +301,21 @@ export const ErrataTab = () => {
|
|
290
301
|
<div id="errata-tab">
|
291
302
|
<TableWrapper
|
292
303
|
{...{
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
304
|
+
metadata,
|
305
|
+
emptyContentTitle,
|
306
|
+
emptyContentBody,
|
307
|
+
emptySearchTitle,
|
308
|
+
emptySearchBody,
|
309
|
+
status,
|
310
|
+
activeFilters,
|
311
|
+
defaultFilters,
|
312
|
+
actionButtons,
|
313
|
+
searchQuery,
|
314
|
+
updateSearchQuery,
|
315
|
+
selectedCount,
|
316
|
+
selectNone,
|
317
|
+
toggleGroup,
|
318
|
+
}
|
308
319
|
}
|
309
320
|
additionalListeners={[
|
310
321
|
hostId, toggleGroupState, errataTypeSelected, errataSeveritySelected]}
|
@@ -352,9 +363,9 @@ export const ErrataTab = () => {
|
|
352
363
|
|
353
364
|
if (contentFacet.katelloAgentInstalled && contentFacet.katelloAgentEnabled) {
|
354
365
|
rowActions.unshift({
|
355
|
-
|
356
|
-
|
357
|
-
|
366
|
+
title: __('Apply via Katello agent'),
|
367
|
+
onClick: () => applyErratumViaKatelloAgent(errataId),
|
368
|
+
});
|
358
369
|
}
|
359
370
|
} else {
|
360
371
|
rowActions = [
|
@@ -374,15 +385,15 @@ export const ErrataTab = () => {
|
|
374
385
|
rowIndex,
|
375
386
|
isExpanded,
|
376
387
|
onToggle: (_event, _rInx, isOpen) => expandedErrata.onToggle(isOpen, id),
|
377
|
-
|
388
|
+
}}
|
378
389
|
/>
|
379
390
|
<Td select={{
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
391
|
+
disable: !isSelectable(errataId),
|
392
|
+
isSelected: isSelected(errataId),
|
393
|
+
onSelect: (event, selected) => selectOne(selected, errataId),
|
394
|
+
rowIndex,
|
395
|
+
variant: 'checkbox',
|
396
|
+
}}
|
386
397
|
/>
|
387
398
|
<Td>
|
388
399
|
<a href={urlBuilder(`errata/${id}`, '')}>{errataId}</a>
|
@@ -390,13 +401,13 @@ export const ErrataTab = () => {
|
|
390
401
|
<Td><ErrataType {...erratum} /></Td>
|
391
402
|
<Td><ErrataSeverity {...erratum} /></Td>
|
392
403
|
<Td>
|
393
|
-
{
|
404
|
+
{isInstallable ?
|
394
405
|
<span><CheckIcon /> {__('Yes')}</span> :
|
395
406
|
<span>
|
396
407
|
<Tooltip
|
397
408
|
content={
|
398
|
-
|
399
|
-
|
409
|
+
__("This erratum is not installable because it is not in this host's content view and lifecycle environment.")
|
410
|
+
}
|
400
411
|
>
|
401
412
|
|
402
413
|
<TimesIcon />
|
@@ -410,8 +421,8 @@ export const ErrataTab = () => {
|
|
410
421
|
<Td
|
411
422
|
key={`rowActions-${id}`}
|
412
423
|
actions={{
|
413
|
-
|
414
|
-
|
424
|
+
items: rowActions,
|
425
|
+
}}
|
415
426
|
|
416
427
|
/>
|
417
428
|
</Tr>
|
@@ -428,9 +439,9 @@ export const ErrataTab = () => {
|
|
428
439
|
</Td>
|
429
440
|
</Tr>
|
430
441
|
</Tbody>
|
431
|
-
|
432
|
-
|
433
|
-
|
442
|
+
);
|
443
|
+
})
|
444
|
+
}
|
434
445
|
</>
|
435
446
|
</TableWrapper>
|
436
447
|
</div>
|
@@ -50,10 +50,10 @@ ErratumExpansionContents.propTypes = {
|
|
50
50
|
description: PropTypes.string,
|
51
51
|
summary: PropTypes.string,
|
52
52
|
solution: PropTypes.string,
|
53
|
-
bugs: PropTypes.arrayOf(PropTypes.
|
54
|
-
cves: PropTypes.arrayOf(PropTypes.
|
53
|
+
bugs: PropTypes.arrayOf(PropTypes.shape({})),
|
54
|
+
cves: PropTypes.arrayOf(PropTypes.shape({})),
|
55
55
|
packages: PropTypes.arrayOf(PropTypes.string),
|
56
|
-
module_streams: PropTypes.arrayOf(PropTypes.
|
56
|
+
module_streams: PropTypes.arrayOf(PropTypes.shape({})),
|
57
57
|
}).isRequired,
|
58
58
|
};
|
59
59
|
|
File without changes
|
data/webpack/components/extensions/HostDetails/{HostErrata → Tabs/ErrataTab}/HostErrataActions.js
RENAMED
@@ -1,8 +1,8 @@
|
|
1
1
|
import { API_OPERATIONS, get, put } from 'foremanReact/redux/API';
|
2
|
-
import { foremanApi } from '
|
2
|
+
import { foremanApi } from '../../../../../services/api';
|
3
3
|
import { HOST_ERRATA_KEY, HOST_ERRATA_APPLICABILITY_KEY, HOST_ERRATA_APPLY_KEY } from './HostErrataConstants';
|
4
|
-
import { getResponseErrorMsgs } from '
|
5
|
-
import { renderTaskStartedToast } from '
|
4
|
+
import { getResponseErrorMsgs } from '../../../../../utils/helpers';
|
5
|
+
import { renderTaskStartedToast } from '../../../../../scenes/Tasks/helpers';
|
6
6
|
|
7
7
|
const errorToast = (error) => {
|
8
8
|
const message = getResponseErrorMsgs(error.response);
|
data/webpack/components/extensions/HostDetails/{HostErrata → Tabs/ErrataTab}/HostErrataConstants.js
RENAMED
@@ -29,6 +29,17 @@ export const SEVERITIES_TO_PARAM = {
|
|
29
29
|
[ERRATA_SEVERITIES.CRITICAL]: 'Critical',
|
30
30
|
};
|
31
31
|
|
32
|
+
export const PARAM_TO_FRIENDLY_NAME = {
|
33
|
+
security: 'Security',
|
34
|
+
bugfix: 'Bugfix',
|
35
|
+
enhancement: 'Enhancement',
|
36
|
+
none: 'N/A',
|
37
|
+
low: 'Low',
|
38
|
+
moderate: 'Moderate',
|
39
|
+
important: 'Important',
|
40
|
+
critical: 'Critical',
|
41
|
+
};
|
42
|
+
|
32
43
|
export default HOST_ERRATA_KEY;
|
33
44
|
|
34
45
|
export const ERRATA_SEARCH_QUERY = 'Errata search query';
|
data/webpack/components/extensions/HostDetails/{HostErrata → Tabs/ErrataTab}/HostErrataSelectors.js
RENAMED
File without changes
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import { API_OPERATIONS, get } from 'foremanReact/redux/API';
|
2
|
+
import { foremanApi } from '../../../../../services/api';
|
3
|
+
import { getResponseErrorMsgs } from '../../../../../utils/helpers';
|
4
|
+
import { MODULE_STREAMS_KEY } from './ModuleStreamsConstants';
|
5
|
+
|
6
|
+
const errorToast = error => getResponseErrorMsgs(error.response);
|
7
|
+
|
8
|
+
export const getHostModuleStreams = (hostId, params) => get({
|
9
|
+
type: API_OPERATIONS.GET,
|
10
|
+
key: MODULE_STREAMS_KEY,
|
11
|
+
url: foremanApi.getApiUrl(`/hosts/${hostId}/module_streams`),
|
12
|
+
errorToast: error => errorToast(error),
|
13
|
+
params,
|
14
|
+
});
|
15
|
+
|
16
|
+
export default getHostModuleStreams;
|
data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsSelectors.js
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
import {
|
2
|
+
selectAPIStatus,
|
3
|
+
selectAPIError,
|
4
|
+
selectAPIResponse,
|
5
|
+
} from 'foremanReact/redux/API/APISelectors';
|
6
|
+
import { STATUS } from 'foremanReact/constants';
|
7
|
+
import { MODULE_STREAMS_KEY } from './ModuleStreamsConstants';
|
8
|
+
|
9
|
+
export const selectModuleStream = state =>
|
10
|
+
selectAPIResponse(state, MODULE_STREAMS_KEY) ?? {};
|
11
|
+
|
12
|
+
export const selectHostId = state =>
|
13
|
+
selectAPIResponse(state, MODULE_STREAMS_KEY) ?? {};
|
14
|
+
|
15
|
+
export const selectModuleStreamStatus = state =>
|
16
|
+
selectAPIStatus(state, MODULE_STREAMS_KEY) ?? STATUS.PENDING;
|
17
|
+
|
18
|
+
export const selecModuleStreamError = state =>
|
19
|
+
selectAPIError(state, MODULE_STREAMS_KEY);
|