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
@@ -47,8 +47,6 @@ module Katello
|
|
47
47
|
:validator => ->(value) { ['true', 'false'].include?(value.downcase) },
|
48
48
|
:operators => ["="]
|
49
49
|
|
50
|
-
before_save lambda { |erratum| erratum.title = erratum.title.truncate(255) unless erratum.title.blank? }
|
51
|
-
|
52
50
|
def self.of_type(type)
|
53
51
|
where(:errata_type => type)
|
54
52
|
end
|
@@ -92,19 +90,6 @@ module Katello
|
|
92
90
|
where("#{self.table_name}.id in (?) or #{self.table_name}.pulp_id in (?) or #{self.table_name}.errata_id in (?)", id_integers, ids, ids)
|
93
91
|
end
|
94
92
|
|
95
|
-
def self.update_repo_association_records(new_ids, erratum_updated_ids, id_href_map_for_repository, repository)
|
96
|
-
if new_ids.any?
|
97
|
-
self.repository_association_class.import(db_columns_sync, db_values(new_ids, id_href_map_for_repository, repository), validate: false)
|
98
|
-
end
|
99
|
-
if erratum_updated_ids.present?
|
100
|
-
upserts = db_values(erratum_updated_ids, id_href_map_for_repository, repository).map do |upsert|
|
101
|
-
{ erratum_id: upsert[0], erratum_pulp3_href: upsert[1], repository_id: upsert[2], created_at: upsert[3], updated_at: upsert[4] }
|
102
|
-
end
|
103
|
-
# PostgreSQL refuses to insert and update in the same command: https://github.com/rails/rails/issues/35519
|
104
|
-
self.repository_association_class.upsert_all(upserts, unique_by: [:erratum_id, :repository_id])
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
93
|
def hosts_applicable(org_id = nil)
|
109
94
|
if org_id.present?
|
110
95
|
self.content_facets_applicable.joins(:host).where("#{::Host.table_name}.organization_id" => org_id)
|
@@ -132,10 +132,12 @@ module Katello
|
|
132
132
|
def add_repo(repo_param)
|
133
133
|
repo_param[:unprotected] = repo_param[:unprotected].nil? ? false : repo_param[:unprotected]
|
134
134
|
|
135
|
-
if repo_param[:download_policy].blank? && repo_param[:content_type]
|
135
|
+
if repo_param[:download_policy].blank? && Katello::RootRepository::CONTENT_ATTRIBUTE_RESTRICTIONS[:download_policy].include?(repo_param[:content_type])
|
136
136
|
repo_param[:download_policy] = Setting[:default_download_policy]
|
137
137
|
end
|
138
138
|
|
139
|
+
repo_param[:mirroring_policy] = Katello::RootRepository::MIRRORING_POLICY_ADDITIVE if repo_param[:mirroring_policy].blank?
|
140
|
+
|
139
141
|
RootRepository.new(repo_param.merge(:product_id => self.id))
|
140
142
|
end
|
141
143
|
end
|
@@ -9,10 +9,10 @@ module Katello
|
|
9
9
|
HOST_TOOLS_TRACER_PACKAGE_NAME = 'katello-host-tools-tracer'.freeze
|
10
10
|
SUBSCRIPTION_MANAGER_PACKAGE_NAME = 'subscription-manager'.freeze
|
11
11
|
|
12
|
-
belongs_to :kickstart_repository, :class_name => "::Katello::Repository", :
|
12
|
+
belongs_to :kickstart_repository, :class_name => "::Katello::Repository", :inverse_of => :kickstart_content_facets
|
13
13
|
belongs_to :content_view, :inverse_of => :content_facets, :class_name => "Katello::ContentView"
|
14
14
|
belongs_to :lifecycle_environment, :inverse_of => :content_facets, :class_name => "Katello::KTEnvironment"
|
15
|
-
belongs_to :content_source, :class_name => "::SmartProxy", :
|
15
|
+
belongs_to :content_source, :class_name => "::SmartProxy", :inverse_of => :content_facets
|
16
16
|
|
17
17
|
has_many :content_facet_errata, :class_name => "Katello::ContentFacetErratum", :dependent => :delete_all, :inverse_of => :content_facet
|
18
18
|
has_many :applicable_errata, :through => :content_facet_errata, :class_name => "Katello::Erratum", :source => :erratum
|
@@ -110,14 +110,6 @@ module Katello
|
|
110
110
|
self.update_errata_status
|
111
111
|
end
|
112
112
|
|
113
|
-
def import_applicability(partial = false)
|
114
|
-
import_module_stream_applicability(partial)
|
115
|
-
import_errata_applicability(partial)
|
116
|
-
import_deb_applicability(partial)
|
117
|
-
import_rpm_applicability(partial)
|
118
|
-
update_applicability_counts
|
119
|
-
end
|
120
|
-
|
121
113
|
def update_applicability_counts
|
122
114
|
self.assign_attributes(
|
123
115
|
:installable_security_errata_count => self.installable_errata.security.count,
|
@@ -133,23 +125,6 @@ module Katello
|
|
133
125
|
self.save!(:validate => false)
|
134
126
|
end
|
135
127
|
|
136
|
-
def import_deb_applicability(partial)
|
137
|
-
ApplicableContentHelper.new(Deb, self).import(partial)
|
138
|
-
end
|
139
|
-
|
140
|
-
def import_rpm_applicability(partial)
|
141
|
-
ApplicableContentHelper.new(Rpm, self).import(partial)
|
142
|
-
end
|
143
|
-
|
144
|
-
def import_errata_applicability(partial)
|
145
|
-
ApplicableContentHelper.new(Erratum, self).import(partial)
|
146
|
-
self.update_errata_status
|
147
|
-
end
|
148
|
-
|
149
|
-
def import_module_stream_applicability(partial)
|
150
|
-
ApplicableContentHelper.new(ModuleStream, self).import(partial)
|
151
|
-
end
|
152
|
-
|
153
128
|
def self.in_content_view_version_environments(version_environments)
|
154
129
|
#takes a structure of [{:content_view_version => ContentViewVersion, :environments => [KTEnvironment]}]
|
155
130
|
queries = version_environments.map do |version_environment|
|
@@ -16,6 +16,15 @@ module Katello
|
|
16
16
|
if host.content_facet.present?
|
17
17
|
info['parameters']['kickstart_repository'] = host.content_facet.kickstart_repository.try(:label)
|
18
18
|
end
|
19
|
+
|
20
|
+
if (rhsm_url = host.content_source&.rhsm_url)
|
21
|
+
info['parameters']['rhsm_url'] = rhsm_url.to_s
|
22
|
+
end
|
23
|
+
|
24
|
+
if (content_url = host.content_source&.pulp_content_url)
|
25
|
+
info['parameters']['content_url'] = content_url.to_s
|
26
|
+
end
|
27
|
+
|
19
28
|
info
|
20
29
|
end
|
21
30
|
|
@@ -7,7 +7,7 @@ module Katello
|
|
7
7
|
include DirtyAssociations
|
8
8
|
|
9
9
|
belongs_to :user, :inverse_of => :subscription_facets, :class_name => "::User"
|
10
|
-
belongs_to :hypervisor_host, :class_name => "::Host::Managed"
|
10
|
+
belongs_to :hypervisor_host, :class_name => "::Host::Managed"
|
11
11
|
|
12
12
|
has_many :subscription_facet_activation_keys, :class_name => "Katello::SubscriptionFacetActivationKey", :dependent => :destroy, :inverse_of => :subscription_facet
|
13
13
|
has_many :activation_keys, :through => :subscription_facet_activation_keys, :class_name => "Katello::ActivationKey"
|
@@ -217,7 +217,7 @@ module Katello
|
|
217
217
|
if ignore_os?(host.operatingsystem, rhsm_facts)
|
218
218
|
rhsm_facts[:ignore_os] = true
|
219
219
|
end
|
220
|
-
host.import_facts(rhsm_facts)
|
220
|
+
::HostFactImporter.new(host).import_facts(rhsm_facts)
|
221
221
|
end
|
222
222
|
|
223
223
|
def self.ignore_os?(host_os, rhsm_facts)
|
@@ -37,6 +37,16 @@ module Katello
|
|
37
37
|
:stream => available_module_stream.stream}).exists?
|
38
38
|
end
|
39
39
|
|
40
|
+
def install_status
|
41
|
+
return 'Not installed' if installed_profiles.blank?
|
42
|
+
case status
|
43
|
+
when 'disabled'
|
44
|
+
'Installed'
|
45
|
+
when 'enabled'
|
46
|
+
upgradable? ? 'Upgradable' : 'Up-to-date'
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
40
50
|
def self.upgradable(host)
|
41
51
|
upgradable_module_name_streams = ModuleStream.installable_for_hosts([host]).select(:name, :stream)
|
42
52
|
|
@@ -5,10 +5,10 @@ module Katello
|
|
5
5
|
self.table_name = 'katello_hostgroup_content_facets'
|
6
6
|
include Facets::HostgroupFacet
|
7
7
|
|
8
|
-
belongs_to :kickstart_repository, :class_name => "::Katello::Repository", :
|
8
|
+
belongs_to :kickstart_repository, :class_name => "::Katello::Repository", :inverse_of => :kickstart_hostgroup_content_facets
|
9
9
|
belongs_to :content_view, :inverse_of => :hostgroup_content_facets, :class_name => "Katello::ContentView"
|
10
10
|
belongs_to :lifecycle_environment, :inverse_of => :hostgroup_content_facets, :class_name => "Katello::KTEnvironment"
|
11
|
-
belongs_to :content_source, :class_name => "::SmartProxy", :
|
11
|
+
belongs_to :content_source, :class_name => "::SmartProxy", :inverse_of => :hostgroup_content_facets
|
12
12
|
|
13
13
|
validates_with Katello::Validators::ContentViewEnvironmentValidator
|
14
14
|
validates_with Katello::Validators::HostgroupKickstartRepositoryValidator
|
@@ -15,6 +15,7 @@ module Katello
|
|
15
15
|
has_many :host_installed_packages, :class_name => "Katello::HostInstalledPackage", :dependent => :destroy, :inverse_of => :installed_package
|
16
16
|
has_many :hosts, :through => :host_installed_packages, :class_name => "::Host"
|
17
17
|
|
18
|
+
scoped_search :on => :id, :complete_value => true
|
18
19
|
scoped_search :on => :name, :complete_value => true
|
19
20
|
scoped_search :on => :nvrea
|
20
21
|
scoped_search :on => :nvra
|
@@ -15,7 +15,7 @@ module Katello
|
|
15
15
|
belongs_to :provider, :inverse_of => :products, :class_name => 'Katello::Provider'
|
16
16
|
belongs_to :sync_plan, :inverse_of => :products, :class_name => 'Katello::SyncPlan'
|
17
17
|
belongs_to :gpg_key, :inverse_of => :products, :class_name => "Katello::ContentCredential"
|
18
|
-
has_many :product_contents, :
|
18
|
+
has_many :product_contents, :class_name => "Katello::ProductContent", :dependent => :destroy
|
19
19
|
has_many :contents, :through => :product_contents
|
20
20
|
has_many :displayable_product_contents, -> { displayable }, :foreign_key => 'product_id', :class_name => "Katello::ProductContent", :dependent => :destroy
|
21
21
|
belongs_to :ssl_ca_cert, :class_name => "Katello::ContentCredential", :inverse_of => :ssl_ca_products
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Katello
|
2
2
|
class ProductContent < Katello::Model
|
3
|
-
belongs_to :product, :class_name => 'Katello::Product', :
|
4
|
-
belongs_to :content, :class_name => 'Katello::Content', :
|
3
|
+
belongs_to :product, :class_name => 'Katello::Product', :inverse_of => :product_contents
|
4
|
+
belongs_to :content, :class_name => 'Katello::Content', :inverse_of => :product_contents
|
5
5
|
|
6
6
|
default_scope { includes(:content) }
|
7
7
|
|
@@ -37,7 +37,7 @@ module Katello
|
|
37
37
|
|
38
38
|
belongs_to :root, :inverse_of => :repositories, :class_name => "Katello::RootRepository"
|
39
39
|
belongs_to :environment, :inverse_of => :repositories, :class_name => "Katello::KTEnvironment"
|
40
|
-
belongs_to :library_instance, :class_name => "Katello::Repository", :inverse_of => :library_instances_inverse
|
40
|
+
belongs_to :library_instance, :class_name => "Katello::Repository", :inverse_of => :library_instances_inverse
|
41
41
|
has_many :library_instances_inverse,
|
42
42
|
:class_name => 'Katello::Repository',
|
43
43
|
:dependent => :restrict_with_exception,
|
@@ -105,7 +105,7 @@ module Katello
|
|
105
105
|
has_many :filters, :through => :repository_content_view_filters
|
106
106
|
|
107
107
|
belongs_to :content_view_version, :inverse_of => :repositories, :class_name => "Katello::ContentViewVersion"
|
108
|
-
has_many :distribution_references, :class_name => 'Katello::Pulp3::DistributionReference',
|
108
|
+
has_many :distribution_references, :class_name => 'Katello::Pulp3::DistributionReference',
|
109
109
|
:dependent => :destroy, :inverse_of => :repository
|
110
110
|
|
111
111
|
has_many :smart_proxy_sync_histories, :class_name => "::Katello::SmartProxySyncHistory", :inverse_of => :repository, :dependent => :delete_all
|
@@ -173,12 +173,12 @@ module Katello
|
|
173
173
|
delegate :name, :label, :docker_upstream_name, :url, :download_concurrency, :to => :root
|
174
174
|
|
175
175
|
delegate :name, :created_at, :updated_at, :major, :minor, :gpg_key_id, :gpg_key, :arch, :label, :url, :unprotected,
|
176
|
-
:content_type, :product_id, :checksum_type, :docker_upstream_name, :
|
176
|
+
:content_type, :product_id, :checksum_type, :docker_upstream_name, :mirroring_policy,
|
177
177
|
:download_policy, :verify_ssl_on_sync, :"verify_ssl_on_sync?", :upstream_username, :upstream_password,
|
178
178
|
:upstream_authentication_token, :deb_releases,
|
179
179
|
:deb_components, :deb_architectures, :ssl_ca_cert_id, :ssl_ca_cert, :ssl_client_cert, :ssl_client_cert_id,
|
180
|
-
:ssl_client_key_id, :os_versions, :ssl_client_key, :ignorable_content, :description, :
|
181
|
-
:ansible_collection_requirements, :ansible_collection_auth_url, :ansible_collection_auth_token,
|
180
|
+
:ssl_client_key_id, :os_versions, :ssl_client_key, :ignorable_content, :description, :include_tags, :exclude_tags,
|
181
|
+
:docker_tags_whitelist, :ansible_collection_requirements, :ansible_collection_auth_url, :ansible_collection_auth_token,
|
182
182
|
:http_proxy_policy, :http_proxy_id, :to => :root
|
183
183
|
|
184
184
|
delegate :content_id, to: :root, allow_nil: true
|
@@ -285,14 +285,19 @@ module Katello
|
|
285
285
|
::Katello::Resources::CDN::CdnResource.ca_file if ::Katello::Resources::CDN::CdnResource.redhat_cdn?(url)
|
286
286
|
end
|
287
287
|
|
288
|
-
def
|
289
|
-
|
288
|
+
def soft_copy_of_library?
|
289
|
+
return false if self.version_href.nil?
|
290
|
+
self.version_href.starts_with?(self.library_instance.backend_service(SmartProxy.pulp_primary).repository_reference.repository_href)
|
290
291
|
end
|
291
292
|
|
292
293
|
def archive?
|
293
294
|
self.environment.nil?
|
294
295
|
end
|
295
296
|
|
297
|
+
def using_mirrored_metadata?
|
298
|
+
self.yum? && self.library_instance? && self.root.mirroring_policy == Katello::RootRepository::MIRRORING_POLICY_COMPLETE
|
299
|
+
end
|
300
|
+
|
296
301
|
def in_default_view?
|
297
302
|
content_view_version&.default_content_view?
|
298
303
|
end
|
@@ -910,11 +915,7 @@ module Katello
|
|
910
915
|
else
|
911
916
|
repository_type.content_types_to_index.each do |type|
|
912
917
|
Katello::Logging.time("CONTENT_INDEX", data: {type: type.model_class}) do
|
913
|
-
|
914
|
-
type.model_class.import_for_repository(self, generic_content_type: type.content_type, full_index: full_index)
|
915
|
-
else
|
916
|
-
type.model_class.import_for_repository(self, full_index: full_index)
|
917
|
-
end
|
918
|
+
Katello::ContentUnitIndexer.new(content_type: type, repository: self, optimized: !full_index).import_all
|
918
919
|
end
|
919
920
|
end
|
920
921
|
repository_type.index_additional_data_proc&.call(self)
|
@@ -4,6 +4,8 @@ module Katello
|
|
4
4
|
audited :except => [:content_id]
|
5
5
|
serialize :ignorable_content
|
6
6
|
serialize :docker_tags_whitelist
|
7
|
+
serialize :include_tags
|
8
|
+
serialize :exclude_tags
|
7
9
|
serialize :os_versions
|
8
10
|
|
9
11
|
include Ext::LabelFromName
|
@@ -21,7 +23,7 @@ module Katello
|
|
21
23
|
SUBSCRIBABLE_TYPES = [Repository::YUM_TYPE, Repository::OSTREE_TYPE, Repository::DEB_TYPE].freeze
|
22
24
|
|
23
25
|
CONTENT_ATTRIBUTE_RESTRICTIONS = {
|
24
|
-
:download_policy => [Repository::YUM_TYPE, Repository::DEB_TYPE]
|
26
|
+
:download_policy => [Repository::YUM_TYPE, Repository::DEB_TYPE, Repository::DOCKER_TYPE]
|
25
27
|
}.freeze
|
26
28
|
|
27
29
|
NO_DEFAULT_HTTP_PROXY = 'none'.freeze
|
@@ -38,6 +40,11 @@ module Katello
|
|
38
40
|
RHEL9 = 'rhel-9'.freeze
|
39
41
|
ALLOWED_OS_VERSIONS = [RHEL6, RHEL7, RHEL8, RHEL9].freeze
|
40
42
|
|
43
|
+
MIRRORING_POLICY_ADDITIVE = 'additive'.freeze
|
44
|
+
MIRRORING_POLICY_CONTENT = 'mirror_content_only'.freeze
|
45
|
+
MIRRORING_POLICY_COMPLETE = 'mirror_complete'.freeze
|
46
|
+
MIRRORING_POLICIES = [MIRRORING_POLICY_ADDITIVE, MIRRORING_POLICY_COMPLETE, MIRRORING_POLICY_CONTENT].freeze
|
47
|
+
|
41
48
|
belongs_to :product, :inverse_of => :root_repositories, :class_name => "Katello::Product"
|
42
49
|
has_one :provider, :through => :product
|
43
50
|
|
@@ -49,13 +56,14 @@ module Katello
|
|
49
56
|
has_many :repositories, :class_name => "Katello::Repository", :foreign_key => :root_id,
|
50
57
|
:inverse_of => :root, :dependent => :destroy
|
51
58
|
|
52
|
-
has_many :repository_references, :class_name => 'Katello::Pulp3::RepositoryReference',
|
59
|
+
has_many :repository_references, :class_name => 'Katello::Pulp3::RepositoryReference',
|
53
60
|
:dependent => :destroy, :inverse_of => :root_repository
|
54
61
|
|
55
62
|
validates_lengths_from_database :except => [:label]
|
56
63
|
validates_with Validators::KatelloLabelFormatValidator, :attributes => :label
|
57
64
|
validates_with Validators::KatelloNameFormatValidator, :attributes => :name
|
58
|
-
validates_with Validators::KatelloUrlFormatValidator, :attributes => :url,
|
65
|
+
validates_with Validators::KatelloUrlFormatValidator, :attributes => :url,
|
66
|
+
:nil_allowed => proc { |repo| repo.custom? || repo.organization.cdn_configuration.airgapped? },
|
59
67
|
:field_name => :url
|
60
68
|
validates_with Validators::RootRepositoryUniqueAttributeValidator, :attributes => :name
|
61
69
|
validates_with Validators::RootRepositoryUniqueAttributeValidator, :attributes => :label
|
@@ -67,13 +75,16 @@ module Katello
|
|
67
75
|
validate :ensure_valid_collection_attributes, :if => :ansible_collection?
|
68
76
|
validate :ensure_valid_auth_url_token, :if => :ansible_collection?
|
69
77
|
validate :ensure_valid_ignorable_content
|
70
|
-
validate :
|
78
|
+
validate :ensure_valid_include_tags
|
79
|
+
validate :ensure_valid_exclude_tags
|
71
80
|
validate :ensure_valid_os_versions
|
72
81
|
validate :ensure_content_attribute_restrictions
|
73
82
|
validate :ensure_valid_upstream_authorization
|
74
83
|
validate :ensure_valid_authentication_token, :if => :yum?
|
75
84
|
validate :ensure_valid_deb_constraints, :if => :deb?
|
76
85
|
validate :ensure_no_checksum_on_demand
|
86
|
+
validate :ensure_valid_mirroring_policy
|
87
|
+
validate :ensure_valid_retain_package_versions_count
|
77
88
|
validates :checksum_type, :inclusion => {:in => CHECKSUM_TYPES}, :allow_blank => true
|
78
89
|
validates :product_id, :presence => true
|
79
90
|
validates :content_type, :inclusion => {
|
@@ -107,6 +118,7 @@ module Katello
|
|
107
118
|
}
|
108
119
|
scope :orphaned, -> { where.not(id: Katello::Repository.pluck(:root_id).uniq) }
|
109
120
|
scope :redhat, -> { joins(:provider).merge(Katello::Provider.redhat) }
|
121
|
+
scope :custom, -> { where.not(:id => self.redhat) }
|
110
122
|
delegate :redhat?, :provider, :organization, to: :product
|
111
123
|
delegate :cdn_configuration, to: :organization
|
112
124
|
|
@@ -145,6 +157,21 @@ module Katello
|
|
145
157
|
end
|
146
158
|
end
|
147
159
|
|
160
|
+
def valid_mirroring_policies
|
161
|
+
if self.yum?
|
162
|
+
MIRRORING_POLICIES
|
163
|
+
else
|
164
|
+
[MIRRORING_POLICY_ADDITIVE, MIRRORING_POLICY_CONTENT]
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
def ensure_valid_mirroring_policy
|
169
|
+
unless valid_mirroring_policies.include?(self.mirroring_policy)
|
170
|
+
errors.add(:mirroring_policy, _("Invalid mirroring policy for repository type %{type}, only %{policies} are valid.") %
|
171
|
+
{:type => self.content_type, :policies => valid_mirroring_policies.join(', ')})
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
148
175
|
def ensure_valid_docker_attributes
|
149
176
|
if (!url.blank? && docker_upstream_name.blank?)
|
150
177
|
errors.add(:docker_upstream_name, N_("cannot be blank when Repository URL is provided."))
|
@@ -201,10 +228,17 @@ module Katello
|
|
201
228
|
end
|
202
229
|
end
|
203
230
|
|
204
|
-
def
|
205
|
-
return if
|
206
|
-
unless
|
207
|
-
errors.add(:
|
231
|
+
def ensure_valid_include_tags
|
232
|
+
return if include_tags.blank?
|
233
|
+
unless include_tags.is_a?(Array)
|
234
|
+
errors.add(:include_tags, N_("Invalid value specified for Container Image repositories."))
|
235
|
+
end
|
236
|
+
end
|
237
|
+
|
238
|
+
def ensure_valid_exclude_tags
|
239
|
+
return if exclude_tags.blank?
|
240
|
+
unless exclude_tags.is_a?(Array)
|
241
|
+
errors.add(:exclude_tags, N_("Invalid value specified for Container Image repositories."))
|
208
242
|
end
|
209
243
|
end
|
210
244
|
|
@@ -274,6 +308,16 @@ module Katello
|
|
274
308
|
end
|
275
309
|
end
|
276
310
|
|
311
|
+
def ensure_valid_retain_package_versions_count
|
312
|
+
return unless self.retain_package_versions_count
|
313
|
+
unless yum?
|
314
|
+
errors.add(:retain_package_versions_count, N_("is only allowed for Yum repositories."))
|
315
|
+
end
|
316
|
+
if self.retain_package_versions_count.to_i < 0
|
317
|
+
errors.add(:retain_package_versions_count, N_("must not be a negative value."))
|
318
|
+
end
|
319
|
+
end
|
320
|
+
|
277
321
|
def custom_content_path
|
278
322
|
parts = []
|
279
323
|
# We generate repo path only for custom product content. We add this
|
@@ -293,6 +337,11 @@ module Katello
|
|
293
337
|
Katello::Content.find_by(:cp_content_id => self.content_id, :organization_id => self.product.organization_id)
|
294
338
|
end
|
295
339
|
|
340
|
+
# For API support during deprecation period.
|
341
|
+
def docker_tags_whitelist
|
342
|
+
include_tags
|
343
|
+
end
|
344
|
+
|
296
345
|
def docker?
|
297
346
|
self.content_type == Repository::DOCKER_TYPE
|
298
347
|
end
|
@@ -325,15 +374,19 @@ module Katello
|
|
325
374
|
(%w(unprotected checksum_type container_repsoitory_name) & previous_changes.keys).any?
|
326
375
|
end
|
327
376
|
|
377
|
+
def using_mirrored_content?
|
378
|
+
self.mirroring_policy != Katello::RootRepository::MIRRORING_POLICY_ADDITIVE
|
379
|
+
end
|
380
|
+
|
328
381
|
def on_demand?
|
329
382
|
self.download_policy == DOWNLOAD_ON_DEMAND
|
330
383
|
end
|
331
384
|
|
332
385
|
def pulp_update_needed?
|
333
|
-
changeable_attributes = %w(url unprotected checksum_type docker_upstream_name download_policy
|
334
|
-
upstream_username upstream_password ignorable_content
|
386
|
+
changeable_attributes = %w(url unprotected checksum_type docker_upstream_name download_policy mirroring_policy verify_ssl_on_sync
|
387
|
+
upstream_username upstream_password ignorable_content retain_package_versions_count
|
335
388
|
ssl_ca_cert_id ssl_client_cert_id ssl_client_key_id http_proxy_policy http_proxy_id download_concurrency)
|
336
|
-
changeable_attributes += %w(name container_repository_name
|
389
|
+
changeable_attributes += %w(name container_repository_name include_tags exclude_tags) if docker?
|
337
390
|
changeable_attributes += %w(deb_releases deb_components deb_architectures gpg_key_id) if deb?
|
338
391
|
changeable_attributes += %w(ansible_collection_requirements ansible_collection_auth_url ansible_collection_auth_token) if ansible_collection?
|
339
392
|
changeable_attributes.any? { |key| previous_changes.key?(key) }
|
@@ -370,11 +423,7 @@ module Katello
|
|
370
423
|
|
371
424
|
def format_arches
|
372
425
|
if content_type == ::Katello::Repository::DEB_TYPE
|
373
|
-
|
374
|
-
# subscription-manager PR https://github.com/candlepin/subscription-manager/pull/2213
|
375
|
-
# merged. Otherwise subscription-manager returns _NO_ debian repository as described in
|
376
|
-
# https://community.theforeman.org/t/katello-3-16-1-1-el7-subscription-manager-doesnt-create-rhsm-repos-for-ubuntu/20928/38
|
377
|
-
nil
|
426
|
+
self.deb_architectures
|
378
427
|
else
|
379
428
|
self.arch == "noarch" ? nil : self.arch
|
380
429
|
end
|
data/app/models/katello/rpm.rb
CHANGED
@@ -8,6 +8,7 @@ module Katello
|
|
8
8
|
has_many :content_facets, :through => :content_facet_applicable_rpms, :class_name => "Katello::Host::ContentFacet"
|
9
9
|
has_many :module_stream_rpms, class_name: "Katello::ModuleStreamRpm", inverse_of: :rpm, dependent: :destroy
|
10
10
|
has_many :module_streams, :through => :module_stream_rpms
|
11
|
+
scoped_search :on => :id, :complete_value => true
|
11
12
|
scoped_search :on => :name, :complete_value => true
|
12
13
|
scoped_search :on => :version, :complete_value => true, :ext_method => :scoped_search_version
|
13
14
|
scoped_search :on => :release, :complete_value => true, :ext_method => :scoped_search_release
|
@@ -19,8 +20,6 @@ module Katello
|
|
19
20
|
scoped_search :on => :modular, :complete_value => true, :only_explicit => true
|
20
21
|
scoped_search :on => :checksum
|
21
22
|
|
22
|
-
before_save lambda { |rpm| rpm.summary = rpm.summary.truncate(255) unless rpm.summary.blank? }
|
23
|
-
|
24
23
|
scope :modular, -> { where(modular: true) }
|
25
24
|
scope :non_modular, -> { where(modular: false) }
|
26
25
|
|
@@ -215,6 +214,13 @@ module Katello
|
|
215
214
|
where("#{Katello::Host::ContentFacet.table_name}.host_id" => hosts).distinct
|
216
215
|
end
|
217
216
|
|
217
|
+
# Return RPMs that are not installed on a host, but could be installed
|
218
|
+
# the word 'installable' has a different meaning here than elsewhere
|
219
|
+
def self.yum_installable_for_host(host)
|
220
|
+
repos = host.content_facet.bound_repositories.pluck(:id)
|
221
|
+
Katello::Rpm.in_repositories(repos).where.not(name: host.installed_packages.pluck(:name)).order(:name)
|
222
|
+
end
|
223
|
+
|
218
224
|
def self.latest(relation)
|
219
225
|
# There are several different ways to implement this:
|
220
226
|
|
@@ -75,8 +75,8 @@ class Setting::Content < Setting
|
|
75
75
|
20, N_('Accept action timeout')),
|
76
76
|
self.set('content_action_finish_timeout', N_("Time in seconds to wait for a Host to finish a remote action"),
|
77
77
|
3600, N_('Finish action timeout')),
|
78
|
-
self.set('
|
79
|
-
|
78
|
+
self.set('subscription_connection_enabled', N_("Can communicate with the Red Hat Portal for subscriptions."),
|
79
|
+
true, N_('Subscription connection enabled')),
|
80
80
|
self.set('errata_status_installable', N_("Calculate errata host status based only on errata in a Host's Content View and Lifecycle Environment"),
|
81
81
|
false, N_('Installable errata from Content View')),
|
82
82
|
self.set('restrict_composite_view', N_("If this is enabled, a composite content view may not be published or "\
|
@@ -88,6 +88,7 @@ class Setting::Content < Setting
|
|
88
88
|
100, N_('Batch size to sync repositories in.')),
|
89
89
|
self.set('foreman_proxy_content_auto_sync', N_("Whether or not to auto sync the Smart Proxies after a Content View promotion."),
|
90
90
|
true, N_('Sync Smart Proxies after Content View promotion')),
|
91
|
+
self.set('download_rate_limit', N_("Maximum download rate when syncing a repository (requests per second). Use 0 for no limit."), 0, N_("Download rate limit")),
|
91
92
|
self.set('default_download_policy', N_("Default download policy for custom repositories (either 'immediate' or 'on_demand')"), "immediate",
|
92
93
|
N_('Default Custom Repository download policy'), nil, :collection => download_policies),
|
93
94
|
self.set('default_redhat_download_policy', N_("Default download policy for enabled Red Hat repositories (either 'immediate' or 'on_demand')"), "on_demand",
|
@@ -104,8 +105,15 @@ class Setting::Content < Setting
|
|
104
105
|
"/etc/pki/katello/private/pulp-client.key", N_('Pulp client key')),
|
105
106
|
self.set('pulp_client_cert', N_("Path for ssl cert used for pulp server auth"),
|
106
107
|
"/etc/pki/katello/certs/pulp-client.crt", N_('Pulp client cert')),
|
107
|
-
self.set('
|
108
|
-
|
108
|
+
self.set('sync_total_timeout', N_("The maximum number of second that Pulp can take to do a single sync operation, e.g., download a single metadata file."),
|
109
|
+
3600, N_('Sync Total Timeout')),
|
110
|
+
self.set('sync_connect_timeout_v2',
|
111
|
+
N_("The maximum number of seconds for Pulp to establish a new connection or for waiting for a free connection from a pool if pool connection limits are exceeded."),
|
112
|
+
60, N_('Sync Connect Timeout')),
|
113
|
+
self.set('sync_sock_connect_timeout', N_("The maximum number of seconds for Pulp to connect to a peer for a new connection not given from a pool."),
|
114
|
+
60, N_('Sync Sock Connect Timeout')),
|
115
|
+
self.set('sync_sock_read_timeout', N_("The maximum number of seconds that Pulp can take to download a file, not counting connection time."),
|
116
|
+
3600, N_('Sync Sock Read Timeout')),
|
109
117
|
self.set('remote_execution_by_default', N_("If this is enabled, remote execution is used instead of katello-agent for remote actions"),
|
110
118
|
false, N_('Use remote execution by default')),
|
111
119
|
self.set('unregister_delete_host', N_("When unregistering a host via subscription-manager, also delete the host record. Managed resources linked to host " \
|
@@ -148,7 +156,9 @@ class Setting::Content < Setting
|
|
148
156
|
N_('Pulp bulk load size')),
|
149
157
|
self.set('upload_profiles_without_dynflow', N_('Allow Katello to update host installed packages, enabled repos, and module inventory directly instead of wrapped in Dynflow tasks (try turning off if Puma processes are using too much memory)'), true,
|
150
158
|
N_('Upload profiles without Dynflow')),
|
151
|
-
self.set('orphan_protection_time', N_('Time in minutes to consider orphan content as orphaned.'), 1440, N_('Orphaned Content Protection Time'))
|
159
|
+
self.set('orphan_protection_time', N_('Time in minutes to consider orphan content as orphaned.'), 1440, N_('Orphaned Content Protection Time')),
|
160
|
+
self.set('remote_execution_prefer_registered_through_proxy', N_('Prefer using a proxy to which a host is registered when using remote execution'), false,
|
161
|
+
N_('Prefer registered through proxy for remote execution'))
|
152
162
|
]
|
153
163
|
end
|
154
164
|
|
@@ -10,7 +10,7 @@ module Cert
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def uuid
|
13
|
-
|
13
|
+
@uuid ||= @cert.subject.to_a.detect { |name, _, _| name == 'CN' }&.second
|
14
14
|
end
|
15
15
|
|
16
16
|
private
|
@@ -26,10 +26,6 @@ module Cert
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
-
def drop_cn_prefix_from_subject(subject_string)
|
30
|
-
subject_string.sub(/\/CN=/i, '')
|
31
|
-
end
|
32
|
-
|
33
29
|
def strip_cert(cert)
|
34
30
|
cert = cert.to_s.gsub("-----BEGIN CERTIFICATE-----", "").gsub("-----END CERTIFICATE-----", "")
|
35
31
|
cert.delete!(' ')
|
@@ -20,7 +20,7 @@ module Katello
|
|
20
20
|
not_added_cvs = views.reject { |component_content_view| Katello::ContentViewComponent.where(composite_content_view_id: composite_cv.id, content_view_id: component_content_view.id).first }
|
21
21
|
not_added_cvs.map { |component_content_view| ComponentViewPresenter.new(composite_cv, nil, Katello::ContentViewComponent.where(composite_content_view_id: composite_cv.id, content_view_id: component_content_view.id, latest: true).new) }
|
22
22
|
else
|
23
|
-
views.map { |component_content_view| ComponentViewPresenter.new(
|
23
|
+
views.map { |component_content_view| ComponentViewPresenter.new(composite_cv, component_content_view) }
|
24
24
|
end
|
25
25
|
end
|
26
26
|
end
|