katello 4.3.0 → 4.4.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of katello might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/app/assets/javascripts/katello/common/vendor.js +0 -1
- data/app/controllers/katello/api/v2/api_controller.rb +13 -4
- data/app/controllers/katello/api/v2/content_view_versions_controller.rb +3 -0
- 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_controller.rb +17 -7
- 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/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/filtered_index_content.rb +1 -1
- 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/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/models/katello/candlepin/repository_mapper.rb +1 -1
- data/app/models/katello/cdn_configuration.rb +38 -6
- data/app/models/katello/concerns/host_managed_extensions.rb +23 -1
- 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 +1 -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 +1 -1
- 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/pulp/repos.rb +1 -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/hostgroup/content_facet.rb +2 -2
- data/app/models/katello/product.rb +1 -1
- data/app/models/katello/product_content.rb +2 -2
- data/app/models/katello/repository.rb +10 -9
- data/app/models/katello/root_repository.rb +24 -13
- data/app/models/katello/rpm.rb +8 -2
- data/app/models/setting/content.rb +6 -3
- data/app/services/cert/rhsm_client.rb +1 -5
- data/app/services/katello/content_unit_indexer.rb +166 -0
- data/app/services/katello/organization_creator.rb +12 -4
- 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/content_view_version/import.rb +11 -2
- 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 +10 -12
- data/app/services/katello/pulp3/repository.rb +26 -7
- data/app/services/katello/pulp3/repository_mirror.rb +18 -5
- data/app/services/katello/pulp3/rpm.rb +13 -13
- data/app/services/katello/pulp3/srpm.rb +10 -9
- 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/katello/api/v2/cdn_configurations/show.json.rabl +1 -1
- data/app/views/katello/api/v2/environments/show.json.rabl +9 -0
- data/app/views/katello/api/v2/repositories/show.json.rabl +2 -0
- 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/20211201154845_add_unique_indexes.rb +20 -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/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/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 +20 -8
- 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 +34 -30
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +16 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +35 -15
- 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 +4 -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 -0
- 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/__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/__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 +19 -11
- data/webpack/components/Packages/index.js +1 -1
- data/webpack/components/Search/Search.js +5 -2
- data/webpack/components/Search/__tests__/search.test.js +2 -3
- data/webpack/components/SelectOrg/SetOrganization.js +1 -1
- data/webpack/components/Table/PageControls.js +3 -6
- data/webpack/components/Table/TableHooks.js +46 -7
- data/webpack/components/Table/TableWrapper.js +14 -3
- data/webpack/components/TypeAhead/TypeAhead.js +5 -1
- data/webpack/components/TypeAhead/pf4Search/TypeAheadInput.js +4 -1
- data/webpack/components/TypeAhead/pf4Search/TypeAheadSearch.js +2 -1
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard.js +1 -1
- data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.js +3 -4
- data/webpack/components/extensions/HostDetails/HostDetailsActions.js +2 -0
- data/webpack/components/extensions/HostDetails/HostPackages/HostPackagesActions.js +18 -2
- data/webpack/components/extensions/HostDetails/HostPackages/HostPackagesConstants.js +12 -0
- data/webpack/components/extensions/HostDetails/Tabs/ContentTab/SecondaryTabsRoutes.js +1 -1
- data/webpack/components/extensions/HostDetails/Tabs/{ErrataTab.js → ErrataTab/ErrataTab.js} +30 -21
- data/webpack/components/extensions/HostDetails/Tabs/{ErrataTab.scss → ErrataTab/ErrataTab.scss} +0 -0
- data/webpack/components/extensions/HostDetails/Tabs/{ErratumExpansionContents.js → ErrataTab/ErratumExpansionContents.js} +0 -0
- 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/PackageInstallModal.js +279 -0
- data/webpack/components/extensions/HostDetails/Tabs/PackageInstallModal.scss +3 -0
- data/webpack/components/extensions/HostDetails/Tabs/PackagesTab.js +125 -8
- data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionActions.js +27 -4
- data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionConstants.js +2 -1
- data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +6 -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} +8 -5
- data/webpack/components/extensions/HostDetails/Tabs/{TracesTab.scss → TracesTab/TracesTab.scss} +0 -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 +58 -7
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/repositorySetsTab.test.js +2 -2
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracesTab.test.js +4 -4
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/yumInstallablePackages.fixtures.json +72 -0
- data/webpack/components/extensions/HostDetails/Tabs/customizedRexUrlHelpers.js +12 -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/pf3Table/components/Table.js +2 -3
- data/webpack/components/pf3Table/components/Table.test.js +0 -3
- data/webpack/components/pf3Table/components/__snapshots__/Table.test.js.snap +9 -8
- data/webpack/containers/Application/config.js +5 -0
- data/webpack/global_index.js +1 -1
- data/webpack/global_test_setup.js +1 -1
- data/webpack/index.js +7 -0
- 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 +1 -1
- data/webpack/scenes/Content/Details/ContentDetails.js +1 -1
- data/webpack/scenes/Content/Details/ContentInfo.js +1 -1
- 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 +1 -1
- data/webpack/scenes/Content/__tests__/contentTable.test.js +3 -3
- data/webpack/scenes/ContentViews/ContentViewsConstants.js +2 -1
- data/webpack/scenes/ContentViews/Delete/__tests__/contentViewDelete.test.js +6 -6
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +2 -2
- data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +21 -27
- data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +5 -5
- data/webpack/scenes/ContentViews/Details/ContentViewInfo.js +8 -3
- data/webpack/scenes/ContentViews/Details/DetailsContainer.js +11 -16
- data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetails.js +2 -2
- data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetailsHeader.js +14 -8
- data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContentModal.test.js +2 -2
- 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 +23 -2
- data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +11 -5
- data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionContent.js +16 -17
- data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +1 -1
- data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemove.test.js +6 -6
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailConfig.js +30 -34
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.js +9 -8
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsHeader.js +13 -15
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionRepositoryCell.js +1 -1
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.test.js +4 -4
- 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/__tests__/contentViewPage.test.js +2 -2
- 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/Profiles/__tests__/ModuleStreamDetailProfiles.test.js +0 -1
- data/webpack/scenes/ModuleStreams/Details/__tests__/ModuleStreamDetails.test.js +0 -2
- 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/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/helpers.js +5 -5
- data/webpack/scenes/RedHatRepositories/index.js +11 -3
- 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 +6 -1
- 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/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/utils/helpers.js +6 -3
- metadata +81 -58
- 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/scenes/Subscriptions/Manifest/CdnConfigurationForm.js +0 -185
@@ -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,8 +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
|
-
|
131
|
-
|
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
|
132
140
|
repository_sync_url_data = api.repository_sync_url_class.new(sync_params)
|
133
141
|
[api.repositories_api.sync(repository_href, repository_sync_url_data)]
|
134
142
|
end
|
@@ -167,8 +175,13 @@ module Katello
|
|
167
175
|
|
168
176
|
def create_publication
|
169
177
|
if (href = version_href)
|
170
|
-
|
171
|
-
|
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
|
172
185
|
end
|
173
186
|
end
|
174
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
|
@@ -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(' ')) %>
|
@@ -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?
|
@@ -8,6 +8,8 @@ glue(@resource.root) do
|
|
8
8
|
attributes :content_type
|
9
9
|
attributes :docker_upstream_name
|
10
10
|
attributes :docker_tags_whitelist
|
11
|
+
attributes :include_tags
|
12
|
+
attributes :exclude_tags
|
11
13
|
attributes :verify_ssl_on_sync
|
12
14
|
attributes :unprotected, :full_path, :checksum_type
|
13
15
|
attributes :container_repository_name
|
@@ -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
data/config/routes/overrides.rb
CHANGED
@@ -32,6 +32,8 @@ Foreman::Application.routes.draw do
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
+
post '/change_host_content_source/data', to: 'hosts#change_content_source_data'
|
36
|
+
|
35
37
|
namespace :api do
|
36
38
|
scope "(:api_version)", :module => :v2, :defaults => {:api_version => 'v2'}, :api_version => /v2/, :constraints => ApiConstraints.new(:version => 2, :default => true) do
|
37
39
|
match '/hosts/post_index' => 'hosts#index', :via => :post
|
@@ -80,6 +82,7 @@ Foreman::Application.routes.draw do
|
|
80
82
|
match '/bulk/system_purpose' => 'hosts_bulk_actions#system_purpose', :via => :put
|
81
83
|
match '/bulk/available_incremental_updates' => 'hosts_bulk_actions#available_incremental_updates', :via => :post
|
82
84
|
match '/bulk/module_streams' => 'hosts_bulk_actions#module_streams', :via => :post
|
85
|
+
match '/bulk/change_content_source' => 'hosts_bulk_actions#change_content_source', :via => :put
|
83
86
|
match '/subscriptions/' => 'host_subscriptions#create', :via => :post
|
84
87
|
end
|
85
88
|
|
data/config/routes.rb
CHANGED
@@ -42,4 +42,6 @@ Katello::Engine.routes.draw do
|
|
42
42
|
match '/labs' => 'react#index', :via => [:get]
|
43
43
|
match '/labs/*page' => 'react#index', :via => [:get]
|
44
44
|
match '/organization_select' => 'react#index', :via => [:get]
|
45
|
+
|
46
|
+
get '/change_host_content_source', to: 'react#index'
|
45
47
|
end
|
@@ -38,7 +38,7 @@ class MigrateContentHosts < ActiveRecord::Migration[4.2]
|
|
38
38
|
self.table_name = "katello_content_views"
|
39
39
|
|
40
40
|
has_many :systems, :class_name => "MigrateContentHosts::System", :dependent => :restrict_with_exception
|
41
|
-
has_many :content_facets, :class_name => "MigrateContentHosts::ContentFacet",
|
41
|
+
has_many :content_facets, :class_name => "MigrateContentHosts::ContentFacet",
|
42
42
|
:inverse_of => :content_view, :dependent => :restrict_with_exception
|
43
43
|
end
|
44
44
|
|
@@ -7,8 +7,8 @@ class AddContentOrgId < ActiveRecord::Migration[5.1]
|
|
7
7
|
|
8
8
|
class FakeProductContent < Katello::Model
|
9
9
|
self.table_name = 'katello_product_contents'
|
10
|
-
belongs_to :product, :class_name => 'Katello::Product', :
|
11
|
-
belongs_to :content, :class_name => 'FakeContent', :
|
10
|
+
belongs_to :product, :class_name => 'Katello::Product', :inverse_of => :product_contents
|
11
|
+
belongs_to :content, :class_name => 'FakeContent', :inverse_of => :product_contents
|
12
12
|
end
|
13
13
|
|
14
14
|
class FakeProduct < Katello::Model
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class AddUniqueIndexes < ActiveRecord::Migration[6.0]
|
2
|
+
def up
|
3
|
+
::Katello::Util::DeduplicationMigrator.new.execute!
|
4
|
+
add_index :katello_capsule_lifecycle_environments, [:capsule_id, :lifecycle_environment_id], unique: true, name: 'katello_capsule_lifecycle_environments_unique_index'
|
5
|
+
add_index :katello_content_view_erratum_filter_rules, [:errata_id, :content_view_filter_id], unique: true, name: 'katello_content_view_erratum_filter_rules_unique_index'
|
6
|
+
add_index :katello_content_view_module_stream_filter_rules, [:module_stream_id, :content_view_filter_id], unique: true, name: 'katello_content_view_module_stream_filter_rules_unique_index'
|
7
|
+
add_index :katello_content_view_package_group_filter_rules, [:uuid, :content_view_filter_id], unique: true, name: 'katello_content_view_package_group_filter_rules_unique_index'
|
8
|
+
add_index :katello_content_view_repositories, [:content_view_id, :repository_id], unique: true, name: 'katello_content_view_repositories_unique_index'
|
9
|
+
add_index :katello_content_views, [:name, :organization_id], unique: true, name: 'katello_content_views_name_unique_index'
|
10
|
+
end
|
11
|
+
|
12
|
+
def down
|
13
|
+
remove_index :katello_capsule_lifecycle_environments, name: 'katello_capsule_lifecycle_environments_unique_index'
|
14
|
+
remove_index :katello_content_view_erratum_filter_rules, name: 'katello_content_view_erratum_filter_rules_unique_index'
|
15
|
+
remove_index :katello_content_view_module_stream_filter_rules, name: 'katello_content_view_module_stream_filter_rules_unique_index'
|
16
|
+
remove_index :katello_content_view_package_group_filter_rules, name: 'katello_content_view_package_group_filter_rules_unique_index'
|
17
|
+
remove_index :katello_content_view_repositories, name: 'katello_content_view_repositories_unique_index'
|
18
|
+
remove_index :katello_content_views, name: 'katello_content_views_name_unique_index'
|
19
|
+
end
|
20
|
+
end
|