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
@@ -252,7 +252,7 @@ module Katello
|
|
252
252
|
end
|
253
253
|
|
254
254
|
def sync_url_params(_sync_options)
|
255
|
-
params = {remote: repo.remote_href, mirror: repo.root.
|
255
|
+
params = {remote: repo.remote_href, mirror: repo.root.mirroring_policy == Katello::RootRepository::MIRRORING_POLICY_CONTENT}
|
256
256
|
params[:skip_types] = skip_types if skip_types
|
257
257
|
params
|
258
258
|
end
|
@@ -330,19 +330,26 @@ module Katello
|
|
330
330
|
tasks
|
331
331
|
end
|
332
332
|
|
333
|
-
def copy_all(source_repository,
|
334
|
-
|
333
|
+
def copy_all(source_repository, options = {})
|
334
|
+
tasks = []
|
335
|
+
if options[:remove_all]
|
336
|
+
tasks << api.repositories_api.modify(repository_reference.repository_href, remove_content_units: ['*'])
|
337
|
+
end
|
338
|
+
|
339
|
+
if options[:mirror]
|
335
340
|
data = api.class.add_remove_content_class.new(
|
336
341
|
base_version: source_repository.version_href)
|
337
342
|
|
338
|
-
|
343
|
+
tasks << api.repositories_api.modify(repository_reference.repository_href, data)
|
344
|
+
tasks
|
339
345
|
elsif api.respond_to? :copy_api
|
340
346
|
data = api.class.copy_class.new
|
341
347
|
data.config = [{
|
342
348
|
source_repo_version: source_repository.version_href,
|
343
349
|
dest_repo: repository_reference.repository_href
|
344
350
|
}]
|
345
|
-
|
351
|
+
tasks << api.copy_api.copy_content(data)
|
352
|
+
tasks
|
346
353
|
else
|
347
354
|
copy_content_for_source(source_repository)
|
348
355
|
end
|
@@ -399,7 +406,11 @@ module Katello
|
|
399
406
|
proxy_url: root.http_proxy&.url,
|
400
407
|
proxy_username: root.http_proxy&.username,
|
401
408
|
proxy_password: root.http_proxy&.password,
|
402
|
-
total_timeout: Setting[:
|
409
|
+
total_timeout: Setting[:sync_total_timeout],
|
410
|
+
connect_timeout: Setting[:sync_connect_timeout_v2],
|
411
|
+
sock_connect_timeout: Setting[:sync_sock_connect_timeout],
|
412
|
+
sock_read_timeout: Setting[:sync_sock_read_timeout],
|
413
|
+
rate_limit: Setting[:download_rate_limit]
|
403
414
|
}
|
404
415
|
remote_options[:url] = root.url unless root.url.blank?
|
405
416
|
remote_options[:download_concurrency] = root.download_concurrency unless root.download_concurrency.blank?
|
@@ -410,6 +421,17 @@ module Katello
|
|
410
421
|
remote_options.merge!(ssl_remote_options)
|
411
422
|
end
|
412
423
|
|
424
|
+
def mirror_remote_options
|
425
|
+
options = {}
|
426
|
+
if Katello::RootRepository::CONTENT_ATTRIBUTE_RESTRICTIONS[:download_policy].include?(repo.content_type)
|
427
|
+
options[:policy] = smart_proxy.download_policy
|
428
|
+
if smart_proxy.download_policy == SmartProxy::DOWNLOAD_INHERIT
|
429
|
+
options[:policy] = repo.root.download_policy
|
430
|
+
end
|
431
|
+
end
|
432
|
+
options
|
433
|
+
end
|
434
|
+
|
413
435
|
def create_options
|
414
436
|
{ name: generate_backend_object_name }.merge!(specific_create_options)
|
415
437
|
end
|
@@ -429,13 +451,13 @@ module Katello
|
|
429
451
|
end
|
430
452
|
|
431
453
|
def ssl_remote_options
|
432
|
-
if root.redhat? && root.cdn_configuration.
|
454
|
+
if root.redhat? && root.cdn_configuration.redhat_cdn?
|
433
455
|
{
|
434
456
|
client_cert: root.product.certificate,
|
435
457
|
client_key: root.product.key,
|
436
458
|
ca_cert: Katello::Repository.feed_ca_cert(root.url)
|
437
459
|
}
|
438
|
-
elsif root.redhat? &&
|
460
|
+
elsif root.redhat? && root.cdn_configuration.upstream_server?
|
439
461
|
{
|
440
462
|
client_cert: root.cdn_configuration.ssl_cert,
|
441
463
|
client_key: root.cdn_configuration.ssl_key,
|
@@ -479,7 +501,6 @@ module Katello
|
|
479
501
|
ostree_import.artifact = artifact_href
|
480
502
|
ostree_import.repository_name = options[:ostree_repository_name]
|
481
503
|
ostree_import.ref = options[:ostree_ref]
|
482
|
-
ostree_import.parent_commit = options[:ostree_parent_commit]
|
483
504
|
api.repositories_api.import_commits(repository_reference.repository_href, ostree_import)
|
484
505
|
end
|
485
506
|
|
@@ -505,7 +526,7 @@ module Katello
|
|
505
526
|
end
|
506
527
|
|
507
528
|
def retain_package_versions_count
|
508
|
-
return 0 if root.retain_package_versions_count.nil? || root.
|
529
|
+
return 0 if root.retain_package_versions_count.nil? || root.using_mirrored_content?
|
509
530
|
root.retain_package_versions_count.to_i
|
510
531
|
end
|
511
532
|
end
|
@@ -79,7 +79,11 @@ module Katello
|
|
79
79
|
end
|
80
80
|
|
81
81
|
def publication_href
|
82
|
-
|
82
|
+
if repo_service.repo.content_type == "deb"
|
83
|
+
api.publications_verbatim_api.list(:repository_version => version_href).results.first&.pulp_href
|
84
|
+
else
|
85
|
+
api.publications_api.list(:repository_version => version_href).results.first&.pulp_href
|
86
|
+
end
|
83
87
|
end
|
84
88
|
|
85
89
|
def create_version(options = {})
|
@@ -127,7 +131,12 @@ module Katello
|
|
127
131
|
def sync(options = {})
|
128
132
|
sync_params = repo_service.sync_url_params(options)
|
129
133
|
sync_params[:remote] = remote_href
|
130
|
-
|
134
|
+
if repo.yum?
|
135
|
+
sync_params[:sync_policy] = 'mirror_complete'
|
136
|
+
else
|
137
|
+
sync_params.delete(:sync_policy)
|
138
|
+
sync_params[:mirror] = true
|
139
|
+
end
|
131
140
|
repository_sync_url_data = api.repository_sync_url_class.new(sync_params)
|
132
141
|
[api.repositories_api.sync(repository_href, repository_sync_url_data)]
|
133
142
|
end
|
@@ -166,8 +175,13 @@ module Katello
|
|
166
175
|
|
167
176
|
def create_publication
|
168
177
|
if (href = version_href)
|
169
|
-
|
170
|
-
|
178
|
+
if repo_service.repo.content_type == "deb"
|
179
|
+
publication_data = api.publication_verbatim_class.new({repository_version: href})
|
180
|
+
api.publications_verbatim_api.create(publication_data)
|
181
|
+
else
|
182
|
+
publication_data = api.publication_class.new(publication_options(href))
|
183
|
+
api.publications_api.create(publication_data)
|
184
|
+
end
|
171
185
|
end
|
172
186
|
end
|
173
187
|
|
@@ -81,24 +81,24 @@ module Katello
|
|
81
81
|
backend_data['rpm_license']
|
82
82
|
end
|
83
83
|
|
84
|
-
def parse_filename(path)
|
84
|
+
def self.parse_filename(path)
|
85
85
|
File.split(path).last unless path.blank?
|
86
86
|
end
|
87
87
|
|
88
|
-
def
|
88
|
+
def self.generate_model_row(unit)
|
89
89
|
custom_json = {}
|
90
|
-
custom_json['modular'] =
|
91
|
-
custom_json['pulp_id'] =
|
90
|
+
custom_json['modular'] = unit['is_modular']
|
91
|
+
custom_json['pulp_id'] = unit['pulp_href']
|
92
92
|
(PULP_INDEXED_FIELDS - ['is_modular', 'pulp_href', 'rpm_sourcerpm', 'pkgId', 'location_href']).
|
93
|
-
each { |field| custom_json[field] =
|
94
|
-
custom_json['release_sortable'] = Util::Package.sortable_version(
|
95
|
-
custom_json['version_sortable'] = Util::Package.sortable_version(
|
96
|
-
custom_json['filename'] = parse_filename(
|
97
|
-
custom_json['checksum'] =
|
98
|
-
custom_json['sourcerpm'] =
|
99
|
-
|
100
|
-
|
101
|
-
|
93
|
+
each { |field| custom_json[field] = unit[field] }
|
94
|
+
custom_json['release_sortable'] = Util::Package.sortable_version(unit['release'])
|
95
|
+
custom_json['version_sortable'] = Util::Package.sortable_version(unit['version'])
|
96
|
+
custom_json['filename'] = parse_filename(unit['location_href']) #location_href is the relative path of the rpm in the upstream repo
|
97
|
+
custom_json['checksum'] = unit['pkgId']
|
98
|
+
custom_json['sourcerpm'] = unit['rpm_sourcerpm']
|
99
|
+
custom_json['nvra'] = Util::Package.build_nvra(custom_json.with_indifferent_access)
|
100
|
+
custom_json['summary'] = custom_json['summary']&.truncate(255)
|
101
|
+
custom_json
|
102
102
|
end
|
103
103
|
end
|
104
104
|
end
|
@@ -64,17 +64,18 @@ module Katello
|
|
64
64
|
backend_data['rpm_license']
|
65
65
|
end
|
66
66
|
|
67
|
-
def
|
67
|
+
def self.generate_model_row(unit)
|
68
68
|
custom_json = {}
|
69
|
-
custom_json['pulp_id'] =
|
69
|
+
custom_json['pulp_id'] = unit['pulp_href']
|
70
70
|
(PULP_INDEXED_FIELDS - ['pulp_href', 'pkgId', 'location_href']).
|
71
|
-
each { |field| custom_json[field] =
|
72
|
-
custom_json['release_sortable'] = Util::Package.sortable_version(
|
73
|
-
custom_json['version_sortable'] = Util::Package.sortable_version(
|
74
|
-
custom_json['nvra'] =
|
75
|
-
custom_json['filename'] =
|
76
|
-
custom_json['checksum'] =
|
77
|
-
|
71
|
+
each { |field| custom_json[field] = unit[field] }
|
72
|
+
custom_json['release_sortable'] = Util::Package.sortable_version(unit['release'])
|
73
|
+
custom_json['version_sortable'] = Util::Package.sortable_version(unit['version'])
|
74
|
+
custom_json['nvra'] = Katello::Util::Package.build_nvra(custom_json)
|
75
|
+
custom_json['filename'] = unit['location_href']
|
76
|
+
custom_json['checksum'] = unit['pkgId']
|
77
|
+
custom_json['summary'] = custom_json['summary']&.truncate(255)
|
78
|
+
custom_json
|
78
79
|
end
|
79
80
|
end
|
80
81
|
end
|
@@ -234,7 +234,7 @@ module Katello
|
|
234
234
|
host_collection_ids.each do |host_collection_id|
|
235
235
|
host_collection = ::Katello::HostCollection.find(host_collection_id)
|
236
236
|
if !host_collection.unlimited_hosts && host_collection.max_hosts >= 0 &&
|
237
|
-
host_collection.
|
237
|
+
host_collection.hosts.length >= host_collection.max_hosts
|
238
238
|
fail _("Host collection '%{name}' exceeds maximum usage limit of '%{limit}'") %
|
239
239
|
{:limit => host_collection.max_hosts, :name => host_collection.name}
|
240
240
|
end
|
@@ -16,7 +16,8 @@ module Katello
|
|
16
16
|
:pulp3_skip_publication, :configuration_class, :pulp3_api_class,
|
17
17
|
:repositories_api_class, :api_class, :remotes_api_class, :repository_versions_api_class,
|
18
18
|
:distributions_api_class, :remote_class, :repo_sync_url_class, :client_module_class,
|
19
|
-
:distribution_class, :publication_class, :publications_api_class, :url_description
|
19
|
+
:distribution_class, :publication_class, :publications_api_class, :url_description,
|
20
|
+
:test_url, :test_url_root_options
|
20
21
|
|
21
22
|
attr_accessor :metadata_publish_matching_check, :index_additional_data_proc
|
22
23
|
attr_reader :id, :unique_content_per_repo
|
@@ -144,14 +145,14 @@ module Katello
|
|
144
145
|
end
|
145
146
|
|
146
147
|
class ContentType
|
147
|
-
attr_accessor :model_class, :priority, :
|
148
|
-
:primary_content, :index_on_pulp3, :generic_browser, :content_type, :repository_import_on_upload
|
148
|
+
attr_accessor :model_class, :priority, :pulp3_service_class, :index, :uploadable, :removable, :mutable,
|
149
|
+
:primary_content, :index_on_pulp3, :generic_browser, :content_type, :repository_import_on_upload,
|
150
|
+
:test_upload_path
|
149
151
|
|
150
152
|
def initialize(options)
|
151
153
|
self.model_class = options[:model_class]
|
152
154
|
self.content_type = options[:content_type]
|
153
155
|
self.priority = options[:priority] || 99
|
154
|
-
self.pulp2_service_class = options[:pulp2_service_class]
|
155
156
|
self.pulp3_service_class = options[:pulp3_service_class]
|
156
157
|
self.index = options[:index].nil? ? true : options[:index]
|
157
158
|
self.index_on_pulp3 = options[:index_on_pulp3].nil? ? true : options[:index_on_pulp3]
|
@@ -160,6 +161,8 @@ module Katello
|
|
160
161
|
self.primary_content = options[:primary_content] || false
|
161
162
|
self.generic_browser = options[:generic_browser]
|
162
163
|
self.repository_import_on_upload = options[:repository_import_on_upload]
|
164
|
+
self.test_upload_path = options[:test_upload_path]
|
165
|
+
self.mutable = options.fetch(:mutable, false)
|
163
166
|
end
|
164
167
|
|
165
168
|
def label
|
@@ -174,6 +177,10 @@ module Katello
|
|
174
177
|
removable: removable
|
175
178
|
}
|
176
179
|
end
|
180
|
+
|
181
|
+
def generic?
|
182
|
+
false
|
183
|
+
end
|
177
184
|
end
|
178
185
|
|
179
186
|
class GenericContentType < ContentType
|
@@ -198,6 +205,10 @@ module Katello
|
|
198
205
|
self.content_type
|
199
206
|
end
|
200
207
|
|
208
|
+
def generic?
|
209
|
+
true
|
210
|
+
end
|
211
|
+
|
201
212
|
def details_columns
|
202
213
|
columns = []
|
203
214
|
columns << "Name" if self.model_name
|
@@ -151,7 +151,7 @@ module Katello
|
|
151
151
|
def model_class(pulp_service_class)
|
152
152
|
enabled_repository_types.values.each do |repo_type|
|
153
153
|
repo_type.content_types.each do |content_type|
|
154
|
-
return content_type.model_class if (content_type.
|
154
|
+
return content_type.model_class if (content_type.pulp3_service_class == pulp_service_class)
|
155
155
|
end
|
156
156
|
end
|
157
157
|
end
|
@@ -7,7 +7,7 @@ module Katello
|
|
7
7
|
CDN_PATH = '/content/dist/rhel/server/7/listing'.freeze
|
8
8
|
|
9
9
|
def self.deliver!(orgs = ::Organization.all)
|
10
|
-
return
|
10
|
+
return unless Setting[:subscription_connection_enabled]
|
11
11
|
|
12
12
|
orgs.each do |org|
|
13
13
|
if cdn_inaccessible?(org) || upstream_inaccessible?(org)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Katello
|
2
2
|
class UpstreamConnectionChecker
|
3
3
|
POSSIBLE_EXCEPTIONS = [
|
4
|
-
Katello::Errors::
|
4
|
+
Katello::Errors::SubscriptionConnectionNotEnabled,
|
5
5
|
Katello::Errors::ManifestExpired,
|
6
6
|
Katello::Errors::UpstreamConsumerGone,
|
7
7
|
Katello::Errors::UpstreamConsumerNotFound,
|
@@ -33,7 +33,7 @@ module Katello
|
|
33
33
|
private
|
34
34
|
|
35
35
|
def assert_connected
|
36
|
-
fail Katello::Errors::
|
36
|
+
fail Katello::Errors::SubscriptionConnectionNotEnabled unless Setting[:subscription_connection_enabled]
|
37
37
|
end
|
38
38
|
|
39
39
|
def assert_can_upstream_ping
|
@@ -8,35 +8,5 @@ description_format: Configure subscription manager to new content source
|
|
8
8
|
feature: katello_change_content_source
|
9
9
|
%>
|
10
10
|
#!/bin/sh
|
11
|
-
<%
|
12
|
-
content_source = @host.content_source
|
13
|
-
-%>
|
14
11
|
|
15
|
-
|
16
|
-
SSL_CA_CERT=$(mktemp)
|
17
|
-
cat << EOF > $SSL_CA_CERT
|
18
|
-
<%= foreman_server_ca_cert %>
|
19
|
-
EOF
|
20
|
-
|
21
|
-
KATELLO_SERVER_CA_CERT=/etc/rhsm/ca/katello-server-ca.pem
|
22
|
-
RHSM_CFG=/etc/rhsm/rhsm.conf
|
23
|
-
|
24
|
-
# Prepare SSL certificate
|
25
|
-
mkdir -p /etc/rhsm/ca
|
26
|
-
cp -f $SSL_CA_CERT $KATELLO_SERVER_CA_CERT
|
27
|
-
chmod 644 $KATELLO_SERVER_CA_CERT
|
28
|
-
|
29
|
-
# Configure subscription-manager
|
30
|
-
test -f $RHSM_CFG.bak || cp $RHSM_CFG $RHSM_CFG.bak
|
31
|
-
|
32
|
-
subscription-manager config \
|
33
|
-
--server.hostname="<%= content_source.rhsm_url.host %>" \
|
34
|
-
--server.port="<%= content_source.rhsm_url.port %>" \
|
35
|
-
--server.prefix="<%= content_source.rhsm_url.path %>" \
|
36
|
-
--rhsm.repo_ca_cert="$KATELLO_SERVER_CA_CERT" \
|
37
|
-
--rhsm.baseurl="<%= content_source.pulp_content_url %>"
|
38
|
-
|
39
|
-
<% else -%>
|
40
|
-
echo "Host [<%= @host.name %>] doesn't have assigned content source!"
|
41
|
-
exit 1
|
42
|
-
<% end -%>
|
12
|
+
<%= change_content_source(@host, foreman_server_ca_cert) %>
|
@@ -2,25 +2,22 @@
|
|
2
2
|
kind: job_template
|
3
3
|
name: Install Errata - Katello SSH Default
|
4
4
|
job_category: Katello
|
5
|
-
description_format: 'Install errata %{
|
5
|
+
description_format: 'Install errata %{errata}'
|
6
6
|
feature: katello_errata_install
|
7
7
|
provider_type: SSH
|
8
8
|
template_inputs:
|
9
|
-
- name:
|
10
|
-
description:
|
9
|
+
- name: errata
|
10
|
+
description: A comma-separated list of errata to install
|
11
11
|
input_type: user
|
12
|
-
required:
|
12
|
+
required: true
|
13
13
|
foreign_input_sets:
|
14
14
|
- template: Package Action - SSH Default
|
15
15
|
exclude: action,package
|
16
16
|
%>
|
17
|
-
|
18
17
|
<% if @host.operatingsystem.family == 'Suse' -%>
|
19
18
|
<% advisories = input(:errata).split(',').join(' ') %>
|
20
19
|
<%= render_template('Package Action - SSH Default', :action => 'install -n -t patch', :package => advisories) %>
|
21
20
|
<% else %>
|
22
|
-
<%
|
23
|
-
|
24
|
-
<% advisories = advisory_ids.map { |e| "--advisory=#{e}" }.join(' ') %>
|
21
|
+
<% advisories = input(:errata).split(',').map { |e| "--advisory=#{e}" }.join(' ') %>
|
25
22
|
<%= render_template('Package Action - SSH Default', :action => 'update-minimal', :package => advisories) %>
|
26
|
-
<% end %>
|
23
|
+
<% end %>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<%#
|
2
|
+
kind: job_template
|
3
|
+
name: Install errata by search query - Katello SSH Default
|
4
|
+
job_category: Katello
|
5
|
+
description_format: 'Install errata %{Errata search query}'
|
6
|
+
feature: katello_errata_install_by_search
|
7
|
+
provider_type: SSH
|
8
|
+
template_inputs:
|
9
|
+
- name: Errata search query
|
10
|
+
description: Filter criteria for errata to be installed.
|
11
|
+
input_type: user
|
12
|
+
required: false
|
13
|
+
foreign_input_sets:
|
14
|
+
- template: Package Action - SSH Default
|
15
|
+
exclude: action,package
|
16
|
+
%>
|
17
|
+
|
18
|
+
<% if @host.operatingsystem.family == 'Suse' -%>
|
19
|
+
<% advisories = @host.advisory_ids(search: input("Errata search query")).join(' ') %>
|
20
|
+
<%= render_template('Package Action - SSH Default', :action => 'install -n -t patch', :package => advisories) %>
|
21
|
+
<% else %>
|
22
|
+
<% advisory_ids = @host.advisory_ids(search: input("Errata search query")) %>
|
23
|
+
|
24
|
+
<% advisories = advisory_ids.map { |e| "--advisory=#{e}" }.join(' ') %>
|
25
|
+
<%= render_template('Package Action - SSH Default', :action => 'update-minimal', :package => advisories) %>
|
26
|
+
<% end %>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<%#
|
2
|
+
kind: job_template
|
3
|
+
name: Install packages by search query - Katello SSH Default
|
4
|
+
job_category: Katello
|
5
|
+
description_format: 'Install package(s) %{Package search query}'
|
6
|
+
feature: katello_package_install_by_search
|
7
|
+
provider_type: SSH
|
8
|
+
template_inputs:
|
9
|
+
- name: Package search query
|
10
|
+
description: Filter criteria for packages to be installed. IMPORTANT- If left blank, the job will attempt to install all possible packages.
|
11
|
+
input_type: user
|
12
|
+
required: false
|
13
|
+
%>
|
14
|
+
<% package_names = @host.package_names_for_job_template(
|
15
|
+
action: 'install',
|
16
|
+
search: input('Package search query')
|
17
|
+
) -%>
|
18
|
+
|
19
|
+
<%= render_template('Package Action - SSH Default', :action => 'install', :package => package_names.join(' ')) %>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<%#
|
2
|
+
kind: job_template
|
3
|
+
name: Remove Packages by search query - Katello SSH Default
|
4
|
+
job_category: Katello
|
5
|
+
description_format: 'Remove packages %{Packages search query}'
|
6
|
+
feature: katello_packages_remove_by_search
|
7
|
+
provider_type: SSH
|
8
|
+
template_inputs:
|
9
|
+
- name: Packages search query
|
10
|
+
description: Filter criteria for packages to be removed.
|
11
|
+
input_type: user
|
12
|
+
required: true
|
13
|
+
%>
|
14
|
+
<% package_names = @host.package_names_for_job_template(
|
15
|
+
action: 'remove',
|
16
|
+
search: input('Packages search query')
|
17
|
+
) -%>
|
18
|
+
|
19
|
+
<%= render_template('Package Action - SSH Default', :action => 'remove', :package => package_names.join(' ')) %>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<%#
|
2
|
+
kind: job_template
|
3
|
+
name: Update Packages by search query - Katello SSH Default
|
4
|
+
job_category: Katello
|
5
|
+
description_format: 'Update package(s) %{Packages search query}'
|
6
|
+
feature: katello_packages_update_by_search
|
7
|
+
provider_type: SSH
|
8
|
+
template_inputs:
|
9
|
+
- name: Packages search query
|
10
|
+
description: Filter criteria for packages to be updated.
|
11
|
+
input_type: user
|
12
|
+
required: false
|
13
|
+
%>
|
14
|
+
<% package_names = @host.package_names_for_job_template(
|
15
|
+
action: 'update',
|
16
|
+
search: input('Packages search query')
|
17
|
+
) -%>
|
18
|
+
|
19
|
+
<%= render_template('Package Action - SSH Default', :action => 'update', :package => package_names.join(' ')) %>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
attributes :url, :username, :upstream_organization_label, :ssl_ca_credential_id
|
1
|
+
attributes :url, :username, :upstream_organization_label, :ssl_ca_credential_id, :upstream_content_view_label, :upstream_lifecycle_environment_label, :type
|
2
2
|
|
3
3
|
node :password_exists do |config|
|
4
4
|
config.password.present?
|
@@ -36,11 +36,15 @@ node :last_published do |content_view|
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
-
|
40
|
-
|
41
|
-
node :permissions do |env|
|
39
|
+
node :environments do |cv|
|
40
|
+
cv.environments.map do |env|
|
42
41
|
{
|
43
|
-
:
|
42
|
+
id: env.id,
|
43
|
+
label: env.label,
|
44
|
+
name: env.label,
|
45
|
+
activation_keys: cv&.activation_keys&.in_environment(env)&.ids,
|
46
|
+
hosts: cv&.hosts&.in_environment(env)&.ids,
|
47
|
+
permissions: {readable: env.readable?}
|
44
48
|
}
|
45
49
|
end
|
46
50
|
end
|
@@ -6,6 +6,7 @@ attributes :pulp_id => :backend_identifier
|
|
6
6
|
attributes :relative_path, :container_repository_name, :full_path, :library_instance_id
|
7
7
|
attributes :version_href, :remote_href, :publication_href
|
8
8
|
attributes :content_counts
|
9
|
+
attributes :mirroring_policy
|
9
10
|
|
10
11
|
glue(@object.root) do
|
11
12
|
attributes :content_type, :url, :arch, :os_versions, :content_id, :generic_remote_options
|
@@ -8,7 +8,9 @@ glue(@resource.root) do
|
|
8
8
|
attributes :content_type
|
9
9
|
attributes :docker_upstream_name
|
10
10
|
attributes :docker_tags_whitelist
|
11
|
-
attributes :
|
11
|
+
attributes :include_tags
|
12
|
+
attributes :exclude_tags
|
13
|
+
attributes :verify_ssl_on_sync
|
12
14
|
attributes :unprotected, :full_path, :checksum_type
|
13
15
|
attributes :container_repository_name
|
14
16
|
attributes :download_policy
|
@@ -7,7 +7,6 @@
|
|
7
7
|
<% end %>
|
8
8
|
|
9
9
|
<% content_for(:content) do %>
|
10
|
-
<%= notifications %>
|
11
10
|
<div id="organization-id" data-id="<%= Organization.current.id if Organization.current %>" ></div>
|
12
11
|
<div id="user-id" data-id="<%= User.current.id if User.current %>" ></div>
|
13
12
|
<div id="reactRoot">
|
@@ -6,37 +6,48 @@
|
|
6
6
|
</label>
|
7
7
|
</td>
|
8
8
|
<td class="start_time">
|
9
|
-
<%= @repo_status[repo.id][:start_time] %>
|
9
|
+
<%= @repo_status[repo.id][:sync_id] ? @repo_status[repo.id][:start_time] : _('N/A') %>
|
10
10
|
</td>
|
11
11
|
<td class="duration">
|
12
|
-
<%= @repo_status[repo.id][:duration] %>
|
12
|
+
<%= @repo_status[repo.id][:sync_id] ? @repo_status[repo.id][:duration] : _('N/A') %>
|
13
13
|
</td>
|
14
14
|
<td class="size" data-size="<%= @repo_status[repo.id][:size] %>">
|
15
|
-
<%= @repo_status[repo.id][:display_size] %>
|
15
|
+
<%= @repo_status[repo.id][:sync_id] ? @repo_status[repo.id][:display_size] : _('N/A')%>
|
16
16
|
</td>
|
17
|
-
|
18
|
-
<
|
19
|
-
<
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
<a class="info-tipsy clickable fa fa-warning <%= 'hidden' if @repo_status[repo.id][:raw_state] != 'error' %>"
|
24
|
-
href="/foreman_tasks/tasks/<%= @repo_status[repo.id][:sync_id] %>">
|
25
|
-
<span class="hidden-text hidden">
|
26
|
-
<div class="la error-tipsy">
|
27
|
-
<ul>
|
28
|
-
<% if @repo_status[repo.id][:error_details].present? && error_state?(@repo_status[repo.id]) %>
|
29
|
-
<% @repo_status[repo.id][:error_details][:messages].each do |error| %>
|
30
|
-
<li>
|
31
|
-
<%= error %>
|
32
|
-
</li>
|
33
|
-
<% end %>
|
34
|
-
<% end %>
|
35
|
-
</ul>
|
36
|
-
</div>
|
17
|
+
<% if @repo_status[repo.id][:sync_id] %>
|
18
|
+
<td class="result">
|
19
|
+
<span class="result-info">
|
20
|
+
<a href="/foreman_tasks/tasks/<%= @repo_status[repo.id][:sync_id] %>">
|
21
|
+
<%= @repo_status[repo.id][:state] %>
|
22
|
+
</a>
|
37
23
|
</span>
|
38
|
-
|
39
|
-
|
24
|
+
<a class="info-tipsy clickable fa fa-warning <%= 'hidden' if @repo_status[repo.id][:raw_state] != 'error' %>"
|
25
|
+
href="/foreman_tasks/tasks/<%= @repo_status[repo.id][:sync_id] %>">
|
26
|
+
<span class="hidden-text hidden">
|
27
|
+
<div class="la error-tipsy">
|
28
|
+
<ul>
|
29
|
+
<% if @repo_status[repo.id][:error_details].present? && error_state?(@repo_status[repo.id]) %>
|
30
|
+
<% @repo_status[repo.id][:error_details][:messages].each do |error| %>
|
31
|
+
<li>
|
32
|
+
<%= error %>
|
33
|
+
</li>
|
34
|
+
<% end %>
|
35
|
+
<% end %>
|
36
|
+
</ul>
|
37
|
+
</div>
|
38
|
+
</span>
|
39
|
+
</a>
|
40
|
+
</td>
|
41
|
+
<% elsif repo&.latest_sync_audit&.created_at %>
|
42
|
+
<td>
|
43
|
+
<%= _("Synced ") + time_ago_in_words(repo&.latest_sync_audit&.created_at) + _(" ago.") %>
|
44
|
+
</td>
|
45
|
+
<% else%>
|
46
|
+
<td>
|
47
|
+
<%= @repo_status[repo.id][:state] %>
|
48
|
+
</td>
|
49
|
+
<% end %>
|
50
|
+
|
40
51
|
<% if @show_org %>
|
41
52
|
<td></td>
|
42
53
|
<% end %>
|
data/config/routes/api/v2.rb
CHANGED