katello 4.2.1 → 4.3.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/katello.common.js +0 -67
- data/app/assets/javascripts/katello/common/katello.js +0 -27
- data/app/assets/javascripts/katello/common/vendor.js +0 -1
- data/app/assets/stylesheets/katello/katello.scss +0 -1
- data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +10 -2
- data/app/controllers/katello/api/v2/api_controller.rb +35 -9
- data/app/controllers/katello/api/v2/capsule_content_controller.rb +16 -2
- data/app/controllers/katello/api/v2/content_view_components_controller.rb +22 -1
- data/app/controllers/katello/api/v2/content_view_filters_controller.rb +65 -1
- data/app/controllers/katello/api/v2/content_view_versions_controller.rb +5 -1
- data/app/controllers/katello/api/v2/content_views_controller.rb +13 -6
- data/app/controllers/katello/api/v2/debs_controller.rb +74 -1
- data/app/controllers/katello/api/v2/errata_controller.rb +13 -10
- data/app/controllers/katello/api/v2/file_units_controller.rb +1 -0
- data/app/controllers/katello/api/v2/generic_content_units_controller.rb +1 -1
- data/app/controllers/katello/api/v2/host_errata_controller.rb +46 -5
- data/app/controllers/katello/api/v2/host_tracer_controller.rb +2 -1
- data/app/controllers/katello/api/v2/module_streams_controller.rb +4 -0
- data/app/controllers/katello/api/v2/organizations_controller.rb +22 -7
- data/app/controllers/katello/api/v2/products_bulk_actions_controller.rb +1 -1
- data/app/controllers/katello/api/v2/repositories_controller.rb +36 -19
- data/app/controllers/katello/api/v2/subscriptions_controller.rb +0 -8
- data/app/controllers/katello/api/v2/upstream_subscriptions_controller.rb +5 -1
- data/app/controllers/katello/concerns/api/v2/bulk_extensions.rb +40 -0
- data/app/controllers/katello/concerns/api/v2/host_errata_extensions.rb +4 -31
- data/app/controllers/katello/concerns/api/v2/registration_controller_extensions.rb +1 -1
- data/app/controllers/katello/concerns/api/v2/repository_content_controller.rb +1 -1
- data/app/helpers/katello/concerns/smart_proxy_helper_extensions.rb +2 -6
- data/app/helpers/katello/katello_url_helper.rb +1 -1
- data/app/lib/actions/candlepin/abstract_async_task.rb +6 -3
- data/app/lib/actions/candlepin/async_hypervisors.rb +12 -8
- data/app/lib/actions/katello/applicability/hosts/bulk_generate.rb +10 -1
- data/app/lib/actions/katello/capsule_content/sync_capsule.rb +3 -3
- data/app/lib/actions/katello/cdn_configuration/update.rb +38 -0
- data/app/lib/actions/katello/content_view/remove.rb +18 -7
- data/app/lib/actions/katello/content_view_version/destroy.rb +2 -2
- data/app/lib/actions/katello/content_view_version/republish_repositories.rb +1 -1
- data/app/lib/actions/katello/repository/clone_contents.rb +1 -2
- data/app/lib/actions/katello/repository/destroy.rb +21 -5
- data/app/lib/actions/katello/repository/fetch_pxe_files.rb +1 -1
- data/app/lib/actions/katello/repository/finish_upload.rb +1 -1
- data/app/lib/actions/katello/repository/import_upload.rb +1 -1
- data/app/lib/actions/katello/repository/index_content.rb +19 -6
- data/app/lib/actions/katello/repository/metadata_generate.rb +2 -0
- data/app/lib/actions/katello/repository/multi_clone_contents.rb +1 -1
- data/app/lib/actions/katello/repository/remove_content.rb +1 -1
- data/app/lib/actions/katello/repository/sync.rb +3 -7
- data/app/lib/actions/katello/repository_set/scan_cdn.rb +0 -4
- data/app/lib/actions/middleware/record_smart_proxy_sync_history.rb +1 -1
- data/app/lib/actions/pulp/orphan_cleanup/remove_unneeded_repos.rb +1 -1
- data/app/lib/actions/pulp/repository/clear.rb +1 -1
- data/app/lib/actions/pulp3/abstract_async_task.rb +10 -1
- data/app/lib/actions/pulp3/capsule_content/generate_metadata.rb +13 -18
- data/app/lib/actions/pulp3/capsule_content/refresh_distribution.rb +1 -11
- data/app/lib/actions/pulp3/content_view_version/create_export_history.rb +1 -1
- data/app/lib/actions/pulp3/orchestration/repository/generate_metadata.rb +3 -1
- data/app/lib/actions/pulp3/orchestration/repository/import_upload.rb +25 -42
- data/app/lib/actions/pulp3/orchestration/repository/sync.rb +8 -1
- data/app/lib/actions/pulp3/orchestration/repository/upload_content.rb +3 -3
- data/app/lib/actions/pulp3/repository/commit_upload.rb +1 -1
- data/app/lib/actions/pulp3/repository/import_upload.rb +8 -4
- data/app/lib/actions/pulp3/repository/multi_copy_content.rb +1 -1
- data/app/lib/actions/pulp3/repository/multi_copy_units.rb +1 -1
- data/app/lib/actions/pulp3/repository/presenters/abstract_sync_presenter.rb +18 -0
- data/app/lib/actions/pulp3/repository/presenters/content_unit_presenter.rb +7 -2
- data/app/lib/actions/pulp3/repository/presenters/repair_presenter.rb +6 -1
- data/app/lib/actions/pulp3/repository/save_artifact.rb +14 -4
- data/app/lib/katello/errors.rb +2 -0
- data/app/lib/katello/resources/candlepin/consumer.rb +0 -20
- data/app/lib/katello/resources/candlepin/proxy.rb +8 -2
- data/app/lib/katello/resources/candlepin/upstream_consumer.rb +2 -0
- data/app/lib/katello/resources/cdn/katello_cdn.rb +68 -0
- data/app/lib/katello/resources/cdn.rb +61 -29
- data/app/lib/katello/util/cdn_var_substitutor.rb +15 -9
- data/app/lib/katello/util/package.rb +22 -0
- data/app/lib/katello/util/path_with_substitutions.rb +12 -14
- data/app/models/katello/activation_key.rb +10 -0
- data/app/models/katello/ansible_collection.rb +1 -1
- data/app/models/katello/authorization/repository.rb +4 -4
- data/app/models/katello/candlepin/repository_mapper.rb +5 -1
- data/app/models/katello/cdn_configuration.rb +32 -0
- data/app/models/katello/concerns/content_facet_host_extensions.rb +40 -0
- data/app/models/katello/concerns/host_managed_extensions.rb +28 -2
- data/app/models/katello/concerns/hostgroup_extensions.rb +1 -1
- data/app/models/katello/concerns/organization_extensions.rb +3 -1
- data/app/models/katello/concerns/pulp_database_unit.rb +15 -5
- data/app/models/katello/concerns/remote_execution_provider_extensions.rb +9 -0
- data/app/models/katello/concerns/setting_extensions.rb +1 -1
- data/app/models/katello/concerns/smart_proxy_extensions.rb +4 -3
- data/app/models/katello/content_credential.rb +4 -0
- data/app/models/katello/content_facet_applicable_deb.rb +7 -0
- data/app/models/katello/content_view.rb +24 -1
- data/app/models/katello/content_view_component.rb +4 -0
- data/app/models/katello/content_view_erratum_filter.rb +2 -0
- data/app/models/katello/content_view_filter.rb +1 -1
- data/app/models/katello/content_view_package_filter_rule.rb +2 -1
- data/app/models/katello/content_view_version.rb +30 -1
- data/app/models/katello/deb.rb +71 -0
- data/app/models/katello/erratum.rb +13 -1
- data/app/models/katello/generic_content_unit.rb +3 -1
- data/app/models/katello/glue/pulp/repos.rb +2 -2
- data/app/models/katello/host/content_facet.rb +23 -2
- data/app/models/katello/host/subscription_facet.rb +1 -1
- data/app/models/katello/host_tracer.rb +21 -2
- data/app/models/katello/installed_deb.rb +1 -1
- data/app/models/katello/module_stream.rb +4 -0
- data/app/models/katello/ping.rb +20 -4
- data/app/models/katello/product.rb +7 -5
- data/app/models/katello/provider.rb +1 -24
- data/app/models/katello/repository.rb +37 -10
- data/app/models/katello/root_repository.rb +28 -14
- data/app/models/setting/content.rb +8 -13
- data/app/services/katello/applicability/applicable_content_helper.rb +20 -0
- data/app/services/katello/organization_creator.rb +8 -0
- data/app/services/katello/pulp3/api/ansible_collection.rb +0 -40
- data/app/services/katello/pulp3/api/apt.rb +0 -47
- data/app/services/katello/pulp3/api/content_guard.rb +1 -1
- data/app/services/katello/pulp3/api/core.rb +28 -23
- data/app/services/katello/pulp3/api/docker.rb +0 -50
- data/app/services/katello/pulp3/api/file.rb +0 -48
- data/app/services/katello/pulp3/api/generic.rb +1 -44
- data/app/services/katello/pulp3/api/yum.rb +4 -44
- data/app/services/katello/pulp3/generic_content_unit.rb +8 -4
- data/app/services/katello/pulp3/repository/ansible_collection.rb +4 -0
- data/app/services/katello/pulp3/repository/apt.rb +3 -3
- data/app/services/katello/pulp3/repository/generic.rb +10 -65
- data/app/services/katello/pulp3/repository/yum.rb +10 -0
- data/app/services/katello/pulp3/repository.rb +47 -21
- data/app/services/katello/pulp3/repository_mirror.rb +30 -11
- data/app/services/katello/pulp3/rpm.rb +2 -32
- data/app/services/katello/pulp3/smart_proxy_mirror_repository.rb +7 -8
- data/app/services/katello/pulp3/smart_proxy_repository.rb +1 -1
- data/app/services/katello/registration_manager.rb +2 -0
- data/app/services/katello/repository_type.rb +103 -15
- data/app/services/katello/repository_type_manager.rb +14 -8
- data/app/services/katello/ui_notifications/subscriptions/manifest_expired_warning.rb +1 -1
- data/app/services/katello/upstream_connection_checker.rb +1 -0
- data/app/views/foreman/job_templates/resolve_traces.erb +25 -0
- data/app/views/foreman/job_templates/resolve_traces_-_katello_ansible_default.erb +28 -0
- data/app/views/katello/api/v2/capsule_content/sync_status.json.rabl +1 -1
- data/app/views/katello/api/v2/common/_metadata.json.rabl +1 -0
- data/app/views/katello/api/v2/content_facet/base.json.rabl +3 -1
- data/app/views/katello/api/v2/content_facet/show.json.rabl +2 -1
- data/app/views/katello/api/v2/content_view_components/show.json.rabl +4 -0
- data/app/views/katello/api/v2/content_view_versions/base.json.rabl +7 -0
- data/app/views/katello/api/v2/content_views/base.json.rabl +12 -8
- data/app/views/katello/api/v2/content_views/index.json.rabl +1 -0
- data/app/views/katello/api/v2/content_views/permissions.rabl +8 -0
- data/app/views/katello/api/v2/debs/base.json.rabl +5 -0
- data/app/views/katello/api/v2/errata/index.json.rabl +4 -0
- data/app/views/katello/api/v2/generic_content_units/base.json.rabl +2 -0
- data/app/views/katello/api/v2/generic_content_units/show.json.rabl +7 -0
- data/app/views/katello/api/v2/host_tracer/base.json.rabl +1 -0
- data/app/views/katello/api/v2/module_streams/index.json.rabl +4 -0
- data/app/views/katello/api/v2/organizations/cdn_configuration.rabl +1 -0
- data/app/views/katello/api/v2/organizations/show.json.rabl +7 -0
- data/app/views/katello/api/v2/repositories/base.json.rabl +10 -17
- data/app/views/overrides/activation_keys/_host_synced_content_select.html.erb +2 -6
- data/config/routes/api/v2.rb +13 -0
- data/config/routes/overrides.rb +2 -0
- data/config/routes.rb +14 -2
- data/db/migrate/20140110000001_update_environments_add_katello_id.rb +1 -3
- data/db/migrate/20140610154745_content_view_puppet_environment_id.rb +0 -35
- data/db/migrate/20190802112101_add_applicable_debs.rb +16 -0
- data/db/migrate/20210201163238_migrate_background_download_policy_to_migrate.rb +2 -2
- data/db/migrate/20210909140337_add_last_indexed_to_repos.rb +5 -0
- data/db/migrate/20210910190324_move_background_settings_to_immediate.rb +25 -0
- data/db/migrate/20211006161617_add_filename_to_katello_generic_content_units.rb +5 -0
- data/db/migrate/20211019192121_create_cdn_configuration.katello.rb +30 -0
- data/db/migrate/20211025181315_add_additional_metadata_to_katello_generic_content_units.rb +5 -0
- data/engines/bastion/README.md +15 -0
- data/engines/bastion/app/assets/javascripts/bastion/components/nutupane.factory.js +2 -2
- data/engines/bastion/config/routes.rb +2 -0
- data/engines/bastion/vendor/assets/javascripts/bastion/angular/angular.js +3 -3
- data/engines/bastion/vendor/assets/javascripts/bastion/angular-sanitize/angular-sanitize.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/bastion_katello.js +3 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/common/views/registration.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-debs-applicable.controller.js +44 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-debs.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-debs-applicable.html +70 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-debs.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.routes.js +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-details.html +5 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +25 -9
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-views.routes.js +2 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-versions.html +0 -9
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/debs.controller.js +22 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/debs.routes.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/deb.controller.js +22 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/views/deb-content-views.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/views/deb-info.html +36 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/views/deb-repositories.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/views/deb.html +4 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/views/debs.html +31 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/generic-content/generic-content.factory.js +21 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/generic-content/generic-content.module.js +17 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/details/package.controller.js +4 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/details/views/package-info.html +3 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/product-repositories.controller.js +6 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +30 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.filter.js +1 -13
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-manage-content.controller.js +32 -9
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details.controller.js +15 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-details.html +32 -19
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +28 -28
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-generic-content.html +57 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +46 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +57 -27
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repositories.module.js +1 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repositories.routes.js +16 -7
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repository-types.service.js +30 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repository.factory.js +2 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/views/product-repositories.html +8 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/sync-plan-details-info.controller.js +6 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/views/sync-plan-info.html +1 -1
- data/engines/bastion_katello/lib/bastion_katello/engine.rb +1 -1
- data/lib/katello/engine.rb +0 -1
- data/lib/katello/permission_creator.rb +4 -3
- data/lib/katello/permissions/host_permissions.rb +1 -0
- data/lib/katello/permissions/organization_permissions.rb +2 -1
- data/lib/katello/plugin.rb +15 -11
- data/lib/katello/repository_types/ansible_collection.rb +13 -1
- data/lib/katello/repository_types/deb.rb +13 -0
- data/lib/katello/repository_types/docker.rb +13 -1
- data/lib/katello/repository_types/file.rb +13 -0
- data/lib/katello/repository_types/ostree.rb +48 -4
- data/lib/katello/repository_types/python.rb +26 -12
- data/lib/katello/repository_types/yum.rb +16 -1
- data/lib/katello/tasks/repository.rake +3 -12
- data/lib/katello/tasks/reset.rake +4 -5
- data/lib/katello/version.rb +1 -1
- data/package.json +3 -2
- data/webpack/__mocks__/react-intl/index.js +4 -0
- data/webpack/components/ActionableDetail.js +23 -3
- data/webpack/components/AddedStatusLabel.js +1 -1
- data/webpack/components/Bookmark/AddBookmarkModal.js +96 -0
- data/webpack/components/Bookmark/Bookmark.scss +28 -0
- data/webpack/components/Bookmark/BookmarkActions.js +24 -0
- data/webpack/components/Bookmark/BookmarkConstants.js +3 -0
- data/webpack/components/Bookmark/BookmarkSelectors.js +15 -0
- data/webpack/components/Bookmark/index.js +94 -0
- data/webpack/components/EditableSwitch.js +6 -1
- data/webpack/components/EditableTextInput/EditableTextInput.js +41 -13
- data/webpack/components/Errata/index.js +69 -0
- data/webpack/components/ErratumTypeLabel.js +31 -0
- data/webpack/components/Loading.js +5 -2
- data/webpack/components/RoutedTabs/__tests__/RoutedTabs.test.js +5 -11
- data/webpack/components/RoutedTabs/index.js +77 -2
- data/webpack/components/Search/Search.js +67 -80
- data/webpack/components/Search/__tests__/search.test.js +8 -26
- data/webpack/components/SelectAllCheckbox/SelectAllCheckbox.scss +3 -0
- data/webpack/components/SelectAllCheckbox/index.js +126 -0
- data/webpack/components/SelectableDropdown/SelectableDropdown.js +7 -2
- data/webpack/components/Table/EmptyStateMessage.js +38 -17
- data/webpack/components/Table/MainTable.js +49 -10
- data/webpack/components/Table/MainTable.scss +11 -0
- data/webpack/components/Table/PageControls.js +45 -0
- data/webpack/components/Table/TableHooks.js +230 -0
- data/webpack/components/Table/TableWrapper.js +221 -50
- data/webpack/components/Table/helpers.js +17 -0
- data/webpack/components/TypeAhead/TypeAhead.js +74 -58
- data/webpack/components/TypeAhead/pf4Search/TypeAheadInput.js +25 -10
- data/webpack/components/TypeAhead/pf4Search/TypeAheadInput.scss +9 -8
- data/webpack/components/TypeAhead/pf4Search/TypeAheadItems.js +2 -2
- data/webpack/components/TypeAhead/pf4Search/TypeAheadSearch.js +32 -22
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard.js +101 -0
- data/webpack/components/extensions/HostDetails/Cards/__tests__/contentViewDetailsCard.test.js +53 -0
- data/webpack/components/extensions/HostDetails/HostErrata/HostErrataActions.js +47 -0
- data/webpack/components/extensions/HostDetails/HostErrata/HostErrataConstants.js +32 -0
- data/webpack/components/extensions/HostDetails/HostErrata/HostErrataSelectors.js +16 -0
- data/webpack/components/extensions/HostDetails/Tabs/ContentTab/EmptyPage.js +19 -0
- data/webpack/components/extensions/HostDetails/Tabs/ContentTab/SecondaryTabsRoutes.js +17 -0
- data/webpack/components/extensions/HostDetails/Tabs/ContentTab/constants.js +7 -0
- data/webpack/components/extensions/HostDetails/Tabs/ContentTab/helpers.js +3 -0
- data/webpack/components/extensions/HostDetails/Tabs/ContentTab/index.js +40 -0
- data/webpack/components/extensions/HostDetails/Tabs/EnableTracerEmptyState.js +42 -0
- data/webpack/components/extensions/HostDetails/Tabs/EnableTracerModal.js +118 -0
- data/webpack/components/extensions/HostDetails/Tabs/ErrataTab.js +347 -0
- data/webpack/components/extensions/HostDetails/Tabs/ErrataTab.scss +16 -0
- data/webpack/components/extensions/HostDetails/Tabs/ErratumExpansionContents.js +60 -0
- data/webpack/components/extensions/HostDetails/Tabs/ErratumExpansionDetail.js +69 -0
- data/webpack/components/extensions/HostDetails/Tabs/HostTracesActions.js +19 -0
- data/webpack/components/extensions/HostDetails/Tabs/HostTracesConstants.js +2 -0
- data/webpack/components/extensions/HostDetails/Tabs/HostTracesSelectors.js +19 -0
- data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionActions.js +56 -0
- data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionConstants.js +5 -0
- data/webpack/components/extensions/HostDetails/Tabs/TracesTab.js +188 -0
- data/webpack/components/extensions/HostDetails/Tabs/TracesTab.scss +12 -0
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/errata.fixtures.json +67 -0
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/errataTab.test.js +785 -0
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/resolveTraces.fixtures.json +35 -0
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracerEmptyTraceResults.fixtures.json +7 -0
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracerEnableJobInvocation.fixtures.json +35 -0
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/traces.fixtures.json +44 -0
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracesTab.test.js +386 -0
- data/webpack/components/extensions/HostDetails/Tabs/customizedRexUrlHelpers.js +20 -0
- data/webpack/components/extensions/RegistrationCommands/fields/ActivationKeys.js +1 -1
- data/webpack/components/extensions/RegistrationCommands/index.js +1 -1
- data/webpack/components/pf3Table/components/Table.js +1 -1
- data/webpack/components/pf3Table/components/__snapshots__/Table.test.js.snap +3 -3
- data/webpack/containers/Application/Routes.js +3 -3
- data/webpack/containers/Application/config.js +21 -6
- data/webpack/containers/Application/overrides.scss +34 -3
- data/webpack/{fills_index.js → global_index.js} +11 -2
- data/webpack/global_test_setup.js +6 -1
- data/webpack/redux/actions/RedHatRepositories/helpers.js +4 -4
- data/webpack/scenes/AnsibleCollections/AnsibleCollectionsTableSchema.js +1 -1
- data/webpack/scenes/Content/ContentActions.js +31 -0
- data/webpack/scenes/Content/ContentConfig.js +138 -0
- data/webpack/scenes/Content/ContentConstants.js +7 -0
- data/webpack/scenes/Content/ContentPage.js +89 -0
- data/webpack/scenes/Content/ContentSelectors.js +43 -0
- data/webpack/scenes/Content/Details/ContentCounts.js +42 -0
- data/webpack/scenes/Content/Details/ContentDetails.js +66 -0
- data/webpack/scenes/Content/Details/ContentInfo.js +60 -0
- data/webpack/scenes/Content/Details/ContentRepositories.js +78 -0
- data/webpack/scenes/Content/Details/__tests__/ansibleCollectionDetails.fixtures.json +20 -0
- data/webpack/scenes/Content/Details/__tests__/ansibleCollectionRepositoryDetails.fixtures.json +71 -0
- data/webpack/scenes/Content/Details/__tests__/contentDetail.test.js +152 -0
- data/webpack/scenes/Content/Details/__tests__/pythonPackageDetails.fixtures.json +20 -0
- data/webpack/scenes/Content/Details/__tests__/pythonPackageRepositoryDetails.fixtures.json +71 -0
- data/webpack/scenes/Content/Details/index.js +4 -0
- data/webpack/scenes/Content/Table/ContentTable.js +90 -0
- data/webpack/scenes/Content/Table/index.js +3 -0
- data/webpack/scenes/Content/__tests__/ansibleCollections.fixtures.json +50 -0
- data/webpack/scenes/Content/__tests__/contentTable.test.js +89 -0
- data/webpack/scenes/Content/__tests__/contentTypes.fixtures.json +66 -0
- data/webpack/scenes/Content/__tests__/pythonPackages.fixtures.json +30 -0
- data/webpack/scenes/Content/index.js +4 -0
- data/webpack/scenes/ContentViews/ContentViewSelectors.js +5 -6
- data/webpack/scenes/ContentViews/ContentViewsActions.js +13 -8
- data/webpack/scenes/ContentViews/ContentViewsConstants.js +31 -4
- data/webpack/scenes/ContentViews/ContentViewsPage.js +4 -0
- data/webpack/scenes/ContentViews/Copy/CopyContentViewForm.js +19 -7
- data/webpack/scenes/ContentViews/Copy/CopyContentViewModal.js +7 -5
- data/webpack/scenes/ContentViews/Copy/__tests__/copyContentView.test.js +1 -1
- data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +7 -3
- data/webpack/scenes/ContentViews/Create/__tests__/createContentView.test.js +1 -2
- data/webpack/scenes/ContentViews/Delete/CVDeleteContext.js +4 -0
- data/webpack/scenes/ContentViews/Delete/ContentViewDeleteWizard.js +170 -0
- data/webpack/scenes/ContentViews/Delete/Steps/CVDeleteEnvironmentsSelection.js +108 -0
- data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionFinish.js +69 -0
- data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignActivationKeysForm.js +121 -0
- data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignHostsForm.js +120 -0
- data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReview.js +62 -0
- data/webpack/scenes/ContentViews/Delete/Steps/CVEnvironmentSelectionForm.scss +4 -0
- data/webpack/scenes/ContentViews/Delete/__tests__/CvData.fixtures.json +259 -0
- data/webpack/scenes/ContentViews/Delete/__tests__/affectedHosts.fixtures.json +155 -0
- data/webpack/scenes/ContentViews/Delete/__tests__/contentViewDelete.test.js +241 -0
- data/webpack/scenes/ContentViews/Delete/__tests__/cvDetails.fixtures.json +248 -0
- data/webpack/scenes/ContentViews/Delete/__tests__/cvVersionsData.fixtures.json +865 -0
- data/webpack/scenes/ContentViews/Delete/__tests__/envPathData.fixtures.json +424 -0
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewAddModal.js +15 -7
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewBulkAddModal.js +123 -0
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentEnvironments.js +1 -1
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentVersion.js +8 -5
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +109 -51
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.fixtures.json +21 -6
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +80 -16
- data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +248 -3
- data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +141 -0
- data/webpack/scenes/ContentViews/Details/ContentViewDetails.js +36 -54
- data/webpack/scenes/ContentViews/Details/ContentViewInfo.js +20 -4
- data/webpack/scenes/ContentViews/Details/Filters/Add/CVFilterAddModal.js +63 -38
- data/webpack/scenes/ContentViews/Details/Filters/Add/__tests__/cvFilterAdd.test.js +3 -4
- data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositorySelection.js +65 -0
- data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositoryTable.js +260 -0
- data/webpack/scenes/ContentViews/Details/Filters/ArtifactsWithNoErrata.js +54 -0
- data/webpack/scenes/ContentViews/Details/Filters/CVContainerImageFilterContent.js +202 -0
- data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +291 -0
- data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +441 -0
- data/webpack/scenes/ContentViews/Details/Filters/CVFilterDetailType.js +62 -3
- data/webpack/scenes/ContentViews/Details/Filters/CVModuleStreamFilterContent.js +302 -0
- data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +186 -23
- data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +144 -19
- data/webpack/scenes/ContentViews/Details/Filters/ContentType.js +2 -0
- data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetails.js +44 -13
- data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetailsHeader.js +81 -17
- data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +43 -43
- data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/CVRpmMatchContentModal.js +96 -0
- data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContent.fixtures.json +166 -0
- data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContentModal.test.js +90 -0
- data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContentSearch.fixtures.json +33 -0
- data/webpack/scenes/ContentViews/Details/Filters/Rules/ContainerTag/AddEditContainerTagRuleModal.js +91 -0
- data/webpack/scenes/ContentViews/Details/Filters/Rules/Package/AddEditPackageRuleModal.js +237 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVContainerImageFilterContent.fixtures.json +42 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVContainerImageFilterContent.test.js +265 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVRpmFilterContent.test.js +218 -11
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/ContentViewPackageGroupFilter.test.js +517 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/allFilterErrata.fixtures.json +122 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/allFilterModulesStreams.fixtures.json +60 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewErrataByDateDetails.fixtures.json +359 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilterDetail.fixtures.json +88 -102
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilterDetails.test.js +34 -9
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.fixtures.json +148 -132
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.test.js +25 -7
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvAllRepos.fixtures.json +150 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataDateFilterContent.test.js +74 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataIDFilter.test.js +404 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErratumFilterDetails.fixtures.json +89 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvFilterDetailModuleAffectedRepos.fixtures.json +383 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvFilterDetailWithAffectedRepos.fixtures.json +375 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvFilterFixutre.fixture.json +282 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvModuleStreamFilter.test.js +392 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvModuleStreamFilterDetails.fixtures.json +97 -0
- data/webpack/scenes/ContentViews/Details/Filters/index.js +26 -0
- data/webpack/scenes/ContentViews/Details/Histories/ContentViewHistories.js +68 -79
- data/webpack/scenes/ContentViews/Details/Histories/__tests__/contentViewHistory.test.js +1 -2
- data/webpack/scenes/ContentViews/Details/Promote/ContentViewVersionPromote.js +163 -0
- data/webpack/scenes/ContentViews/Details/Promote/ContentViewVersionPromoteSelectors.js +16 -0
- data/webpack/scenes/ContentViews/Details/Repositories/ContentCounts.js +9 -1
- data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +88 -74
- data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +8 -9
- data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewDetailRepos.fixtures.json +3 -3
- data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionContent.js +30 -9
- data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionEnvironments.js +1 -1
- data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionErrata.js +9 -5
- data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionErrata.scss +2 -2
- data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +132 -14
- data/webpack/scenes/ContentViews/Details/Versions/Delete/DeleteContext.js +4 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveCVVersionWizard.js +176 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVEnvironmentSelectionForm.js +127 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignActivationKeysForm.js +131 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignHostsForm.js +128 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionDeleteFinish.js +94 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionRemoveReview.js +67 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvAffectedActivationKeys.fixture.json +53 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvAffectedHosts.fixture.json +153 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvDropDownOptionsResponse.fixture.json +192 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemove.test.js +313 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemoveResponse.fixture.json +74 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/versionRemoveEnvPaths.fixtures.json +352 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/versionsResponseData.fixtures.json +583 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedActivationKeys.js +96 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedHosts.js +97 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailConfig.js +332 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.js +128 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.scss +44 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsHeader.js +66 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsTable.js +125 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionRepositoryCell.js +115 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionAnsibleCollections.fixtures.json +449 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionComponent.fixtures.json +753 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDebPackages.fixtures.json +58 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.fixtures.json +158 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.test.js +289 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetailsCounts.fixtures.json +73 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetailsEmpty.test.js +44 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDockerTags.fixtures.json +3024 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionErrata.fixtures.json +201 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionFiles.fixtures.json +22 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionModuleStreams.fixtures.json +196 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionRepositories.fixtures.json +1000 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionRpmPackageGroups.fixtures.json +44 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionRpmPackages.fixtures.json +394 -0
- data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.fixtures.json +4 -4
- data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +95 -26
- data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersionsWithTask.fixtures.json +2 -2
- data/webpack/scenes/ContentViews/Details/Versions/index.js +25 -0
- data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetail.test.js +20 -16
- data/webpack/scenes/ContentViews/Publish/__tests__/publishContentView.test.js +3 -5
- data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +106 -64
- data/webpack/scenes/ContentViews/Table/tableDataGenerator.js +25 -4
- data/webpack/scenes/ContentViews/__tests__/basicContentViews.fixtures.js +1 -1
- data/webpack/scenes/ContentViews/__tests__/contentViewList.fixtures.json +4 -1
- data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +29 -36
- data/webpack/scenes/ContentViews/__tests__/mockDetails.fixtures.json +10 -0
- data/webpack/scenes/ContentViews/components/CVBreadCrumb.js +117 -0
- data/webpack/scenes/ContentViews/components/ContentViewsCounter.js +59 -0
- data/webpack/scenes/ContentViews/components/EnvironmentLabels.js +4 -3
- data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.js +30 -11
- data/webpack/scenes/ContentViews/components/TaskPresenter/TaskPresenter.js +1 -1
- data/webpack/scenes/ContentViews/expansions/DetailsExpansion.js +38 -1
- data/webpack/scenes/ContentViews/expansions/RelatedCompositeContentViewsModal.js +79 -0
- data/webpack/scenes/ContentViews/expansions/RelatedContentViewComponentsModal.js +107 -0
- data/webpack/scenes/ContentViews/expansions/__tests__/contentViewComponentsModal.test.js +59 -0
- data/webpack/scenes/ContentViews/expansions/__tests__/contentViewComponentsResponse.fixtures.json +116 -0
- data/webpack/scenes/ContentViews/expansions/__tests__/relatedCompositeCvs.fixtures.json +4 -0
- data/webpack/scenes/ContentViews/helpers.js +1 -0
- data/webpack/scenes/RedHatRepositories/components/RepositorySetRepository/RepositorySetRepository.js +1 -1
- data/webpack/scenes/RedHatRepositories/components/SearchBar.js +4 -3
- data/webpack/scenes/SmartProxy/SmartProxyContentTable.js +1 -1
- data/webpack/scenes/Subscriptions/SubscriptionsPage.js +17 -9
- data/webpack/scenes/Subscriptions/components/SubscriptionsTable/__tests__/__snapshots__/SubscriptionsTable.test.js.snap +3 -3
- data/webpack/test-utils/nockWrapper.js +20 -3
- data/webpack/utils/helpers.js +16 -2
- data/webpack/utils/useDebounce.js +20 -0
- metadata +232 -54
- data/app/assets/javascripts/katello/widgets/tabs.js +0 -13
- data/app/assets/stylesheets/katello/widgets/tabs.scss +0 -69
- data/app/lib/actions/katello/provider/update.rb +0 -38
- data/webpack/components/RoutedTabs/RoutedTabs.js +0 -90
- data/webpack/components/Search/Search.test.js +0 -23
- data/webpack/components/Search/__snapshots__/Search.test.js.snap +0 -21
- data/webpack/components/extensions/HostDetails/Tabs/ContentTab.js +0 -42
- data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewDetailRepos.test.js +0 -145
- data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionPackages.js +0 -0
@@ -36,9 +36,9 @@ module Katello
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
-
def self.api(smart_proxy)
|
40
|
-
|
41
|
-
|
39
|
+
def self.api(smart_proxy, repository_type_label)
|
40
|
+
repo_type = RepositoryTypeManager.enabled_repository_types[repository_type_label]
|
41
|
+
repo_type.pulp3_api(smart_proxy)
|
42
42
|
end
|
43
43
|
|
44
44
|
def core_api
|
@@ -46,12 +46,12 @@ module Katello
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def api
|
49
|
-
@api ||= self.class.api(smart_proxy)
|
49
|
+
@api ||= self.class.api(smart_proxy, repo.content_type)
|
50
50
|
end
|
51
51
|
|
52
52
|
def ignore_404_exception(*)
|
53
53
|
yield
|
54
|
-
rescue api.
|
54
|
+
rescue api.api_exception_class => e
|
55
55
|
raise e unless e.code == 404
|
56
56
|
nil
|
57
57
|
end
|
@@ -61,7 +61,7 @@ module Katello
|
|
61
61
|
end
|
62
62
|
|
63
63
|
def repair(repository_version_href)
|
64
|
-
data = api.
|
64
|
+
data = api.repository_version_class.new
|
65
65
|
api.repository_versions_api.repair(repository_version_href, data)
|
66
66
|
end
|
67
67
|
|
@@ -74,9 +74,17 @@ module Katello
|
|
74
74
|
end
|
75
75
|
|
76
76
|
def create_remote
|
77
|
-
|
77
|
+
if remote_options[:url]&.start_with?('uln')
|
78
|
+
remote_file_data = api.class.remote_uln_class.new(remote_options)
|
79
|
+
else
|
80
|
+
remote_file_data = api.remote_class.new(remote_options)
|
81
|
+
end
|
78
82
|
reformat_api_exception do
|
79
|
-
|
83
|
+
if remote_options[:url]&.start_with?('uln')
|
84
|
+
response = api.remotes_uln_api.create(remote_file_data)
|
85
|
+
else
|
86
|
+
response = api.remotes_api.create(remote_file_data)
|
87
|
+
end
|
80
88
|
repo.update!(:remote_href => response.pulp_href)
|
81
89
|
end
|
82
90
|
end
|
@@ -89,10 +97,18 @@ module Katello
|
|
89
97
|
def create_test_remote
|
90
98
|
test_remote_options = remote_options
|
91
99
|
test_remote_options[:name] = test_remote_name
|
92
|
-
|
100
|
+
if remote_options[:url]&.start_with?('uln')
|
101
|
+
remote_file_data = api.class.remote_uln_class.new(test_remote_options)
|
102
|
+
else
|
103
|
+
remote_file_data = api.remote_class.new(test_remote_options)
|
104
|
+
end
|
93
105
|
|
94
106
|
reformat_api_exception do
|
95
|
-
|
107
|
+
if remote_options[:url]&.start_with?('uln')
|
108
|
+
response = api.remotes_uln_api.create(remote_file_data)
|
109
|
+
else
|
110
|
+
response = api.remotes_api.create(remote_file_data)
|
111
|
+
end
|
96
112
|
#delete is async, but if its not properly deleted, orphan cleanup will take care of it later
|
97
113
|
delete_remote(response.pulp_href)
|
98
114
|
end
|
@@ -104,7 +120,7 @@ module Katello
|
|
104
120
|
|
105
121
|
def reformat_api_exception
|
106
122
|
yield
|
107
|
-
rescue api.
|
123
|
+
rescue api.client_module::ApiError => exception
|
108
124
|
body = JSON.parse(exception.response_body) rescue body
|
109
125
|
body = body.values.join(',') if body.respond_to?(:values)
|
110
126
|
raise ::Katello::Errors::Pulp3Error, body
|
@@ -128,11 +144,15 @@ module Katello
|
|
128
144
|
end
|
129
145
|
|
130
146
|
def remote_partial_update
|
131
|
-
|
147
|
+
if remote_options[:url]&.start_with?('uln')
|
148
|
+
api.remotes_uln_api.partial_update(repo.remote_href, remote_options)
|
149
|
+
else
|
150
|
+
api.remotes_api.partial_update(repo.remote_href, remote_options)
|
151
|
+
end
|
132
152
|
end
|
133
153
|
|
134
154
|
def delete_remote(href = repo.remote_href)
|
135
|
-
ignore_404_exception { api.remotes_api.delete(href) } if href
|
155
|
+
ignore_404_exception { remote_options[:url]&.start_with?('uln') ? api.remotes_uln_api.delete(href) : api.remotes_api.delete(href) } if href
|
136
156
|
end
|
137
157
|
|
138
158
|
def self.instance_for_type(repo, smart_proxy)
|
@@ -175,7 +195,7 @@ module Katello
|
|
175
195
|
end
|
176
196
|
|
177
197
|
def get_remote(href = repo.remote_href)
|
178
|
-
api.remotes_api.read(href)
|
198
|
+
repo.url&.start_with?('uln') ? api.remotes_uln_api.read(href) : api.remotes_api.read(href)
|
179
199
|
end
|
180
200
|
|
181
201
|
def get_distribution(href = distribution_reference.href)
|
@@ -231,7 +251,7 @@ module Katello
|
|
231
251
|
end
|
232
252
|
|
233
253
|
def sync(options = {})
|
234
|
-
repository_sync_url_data = api.
|
254
|
+
repository_sync_url_data = api.repository_sync_url_class.new(sync_url_params(options))
|
235
255
|
[api.repositories_api.sync(repository_reference.repository_href, repository_sync_url_data)]
|
236
256
|
end
|
237
257
|
|
@@ -242,7 +262,7 @@ module Katello
|
|
242
262
|
end
|
243
263
|
|
244
264
|
def create_publication
|
245
|
-
publication_data = api.
|
265
|
+
publication_data = api.publication_class.new(publication_options(repo.version_href))
|
246
266
|
api.publications_api.create(publication_data)
|
247
267
|
end
|
248
268
|
|
@@ -276,7 +296,7 @@ module Katello
|
|
276
296
|
# Since we got this far, we need to create a new distribution
|
277
297
|
begin
|
278
298
|
create_distribution(relative_path)
|
279
|
-
rescue api.
|
299
|
+
rescue api.client_module::ApiError => e
|
280
300
|
# Now it seems there is a distribution. Fetch it and save the reference.
|
281
301
|
if e.message.include?("\"base_path\":[\"This field must be unique.\"]") ||
|
282
302
|
e.message.include?("\"base_path\":[\"Overlaps with existing distribution\"")
|
@@ -290,7 +310,7 @@ module Katello
|
|
290
310
|
end
|
291
311
|
|
292
312
|
def create_distribution(path)
|
293
|
-
distribution_data = api.
|
313
|
+
distribution_data = api.distribution_class.new(secure_distribution_options(path))
|
294
314
|
api.distributions_api.create(distribution_data)
|
295
315
|
end
|
296
316
|
|
@@ -413,12 +433,18 @@ module Katello
|
|
413
433
|
end
|
414
434
|
|
415
435
|
def ssl_remote_options
|
416
|
-
if root.redhat? &&
|
436
|
+
if root.redhat? && root.cdn_configuration.redhat?
|
417
437
|
{
|
418
438
|
client_cert: root.product.certificate,
|
419
439
|
client_key: root.product.key,
|
420
440
|
ca_cert: Katello::Repository.feed_ca_cert(root.url)
|
421
441
|
}
|
442
|
+
elsif root.redhat? && !root.cdn_configuration.redhat?
|
443
|
+
{
|
444
|
+
client_cert: root.cdn_configuration.ssl_cert,
|
445
|
+
client_key: root.cdn_configuration.ssl_key,
|
446
|
+
ca_cert: root.cdn_configuration.ssl_ca
|
447
|
+
}
|
422
448
|
elsif root.custom?
|
423
449
|
{
|
424
450
|
client_cert: root.ssl_client_cert&.content,
|
@@ -432,14 +458,14 @@ module Katello
|
|
432
458
|
|
433
459
|
def lookup_version(href)
|
434
460
|
api.repository_versions_api.read(href) if href
|
435
|
-
rescue api.
|
461
|
+
rescue api.api_exception_class => e
|
436
462
|
Rails.logger.error "Exception when calling repository_versions_api->read: #{e}"
|
437
463
|
nil
|
438
464
|
end
|
439
465
|
|
440
466
|
def lookup_publication(href)
|
441
467
|
api.publications_api.read(href) if href
|
442
|
-
rescue api.
|
468
|
+
rescue api.api_exception_class => e
|
443
469
|
Rails.logger.error "Exception when calling publications_api->read: #{e}"
|
444
470
|
nil
|
445
471
|
end
|
@@ -24,7 +24,11 @@ module Katello
|
|
24
24
|
def refresh_entities
|
25
25
|
href = remote_href
|
26
26
|
if href
|
27
|
-
[
|
27
|
+
if remote_options[:url]&.start_with?('uln')
|
28
|
+
[api.remotes_uln_api.partial_update(href, remote_options)]
|
29
|
+
else
|
30
|
+
[api.remotes_api.partial_update(href, remote_options)]
|
31
|
+
end
|
28
32
|
else
|
29
33
|
create_remote
|
30
34
|
[]
|
@@ -57,7 +61,7 @@ module Katello
|
|
57
61
|
|
58
62
|
def delete(href = repository_href)
|
59
63
|
api.repositories_api.delete(href) if href
|
60
|
-
rescue api.
|
64
|
+
rescue api.api_exception_class => e
|
61
65
|
raise e if e.code != 404
|
62
66
|
nil
|
63
67
|
end
|
@@ -74,6 +78,10 @@ module Katello
|
|
74
78
|
fetch_repository.latest_version_href
|
75
79
|
end
|
76
80
|
|
81
|
+
def publication_href
|
82
|
+
api.publications_api.list(:repository_version => version_href).results.first.pulp_href
|
83
|
+
end
|
84
|
+
|
77
85
|
def create_version(options = {})
|
78
86
|
api.repository_versions_api.create(repository_href, options)
|
79
87
|
end
|
@@ -99,8 +107,13 @@ module Katello
|
|
99
107
|
end
|
100
108
|
|
101
109
|
def create_remote
|
102
|
-
|
103
|
-
|
110
|
+
if remote_options[:url]&.start_with?('uln')
|
111
|
+
remote_file_data = @repo_service.api.class.remote_uln_class.new(remote_options)
|
112
|
+
api.remotes_uln_api.create(remote_file_data)
|
113
|
+
else
|
114
|
+
remote_file_data = @repo_service.api.remote_class.new(remote_options)
|
115
|
+
api.remotes_api.create(remote_file_data)
|
116
|
+
end
|
104
117
|
end
|
105
118
|
|
106
119
|
def compute_remote_options
|
@@ -115,7 +128,7 @@ module Katello
|
|
115
128
|
sync_params = repo_service.sync_url_params(options)
|
116
129
|
sync_params[:remote] = remote_href
|
117
130
|
sync_params[:mirror] = true
|
118
|
-
repository_sync_url_data = api.
|
131
|
+
repository_sync_url_data = api.repository_sync_url_class.new(sync_params)
|
119
132
|
[api.repositories_api.sync(repository_href, repository_sync_url_data)]
|
120
133
|
end
|
121
134
|
|
@@ -153,16 +166,22 @@ module Katello
|
|
153
166
|
|
154
167
|
def create_publication
|
155
168
|
if (href = version_href)
|
156
|
-
publication_data = api.
|
169
|
+
publication_data = api.publication_class.new(publication_options(href))
|
157
170
|
api.publications_api.create(publication_data)
|
158
171
|
end
|
159
172
|
end
|
160
173
|
|
161
|
-
def refresh_distributions(
|
174
|
+
def refresh_distributions(_options = {})
|
162
175
|
path = repo_service.relative_path
|
163
176
|
dist_params = {}
|
164
|
-
|
165
|
-
|
177
|
+
if repo_service.repo.repository_type.pulp3_skip_publication
|
178
|
+
dist_params[:repository_version] = version_href
|
179
|
+
fail "could not lookup a version_href for repo #{repo_service.repo.id}" if version_href.nil?
|
180
|
+
else
|
181
|
+
dist_params[:publication] = publication_href
|
182
|
+
fail "Could not lookup a publication_href for repo #{repo_service.repo.id}" if publication_href.nil?
|
183
|
+
end
|
184
|
+
|
166
185
|
dist_options = distribution_options(path, dist_params)
|
167
186
|
dist_options.delete(:content_guard) if repo_service.repo.content_type == "docker"
|
168
187
|
if (distro = repo_service.lookup_distributions(base_path: path).first) ||
|
@@ -172,7 +191,7 @@ module Katello
|
|
172
191
|
api.distributions_api.partial_update(distro.pulp_href, dist_options)
|
173
192
|
else
|
174
193
|
# create dist
|
175
|
-
distribution_data = api.
|
194
|
+
distribution_data = api.distribution_class.new(dist_options)
|
176
195
|
api.distributions_api.create(distribution_data)
|
177
196
|
end
|
178
197
|
end
|
@@ -184,7 +203,7 @@ module Katello
|
|
184
203
|
end
|
185
204
|
|
186
205
|
def create_distribution(path)
|
187
|
-
distribution_data = api.
|
206
|
+
distribution_data = api.distribution_class.new(distribution_options(path))
|
188
207
|
repo_service.distributions_api.create(distribution_data)
|
189
208
|
end
|
190
209
|
end
|
@@ -26,41 +26,11 @@ module Katello
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def requires
|
29
|
-
|
30
|
-
flags = {'GT' => '>', 'LT' => '>', 'EQ' => '=', 'GE' => '>=', 'LE' => '<='}
|
31
|
-
|
32
|
-
backend_data['requires']&.each do |requirement|
|
33
|
-
requires_str = ""
|
34
|
-
if requirement.count < 3
|
35
|
-
requires_str = requirement.first
|
36
|
-
results << requires_str
|
37
|
-
else
|
38
|
-
requirement[1] = flags[requirement[1]]
|
39
|
-
requirement[0...2].each { |requirement_piece| requires_str += "#{requirement_piece} " }
|
40
|
-
requirement[2...-1].each { |requirement_piece| requires_str += "#{requirement_piece}." }
|
41
|
-
results << requires_str[0...-1]
|
42
|
-
end
|
43
|
-
end
|
44
|
-
results.uniq
|
29
|
+
Util::Package.parse_dependencies(backend_data['requires'])
|
45
30
|
end
|
46
31
|
|
47
32
|
def provides
|
48
|
-
|
49
|
-
flags = {'GT' => '>', 'LT' => '>', 'EQ' => '=', 'GE' => '>=', 'LE' => '<='}
|
50
|
-
|
51
|
-
backend_data['provides']&.each do |provided|
|
52
|
-
provides_str = ""
|
53
|
-
if provided.count < 3
|
54
|
-
provides_str = provided.first
|
55
|
-
results << provides_str
|
56
|
-
else
|
57
|
-
provided[1] = flags[provided[1]]
|
58
|
-
provided[0...2].each { |provided_piece| provides_str += "#{provided_piece} " }
|
59
|
-
provided[2...-1].each { |provided_piece| provides_str += "#{provided_piece}." }
|
60
|
-
results << provides_str[0...-1]
|
61
|
-
end
|
62
|
-
end
|
63
|
-
results.uniq
|
33
|
+
Util::Package.parse_dependencies(backend_data['provides'])
|
64
34
|
end
|
65
35
|
|
66
36
|
def files
|
@@ -12,7 +12,7 @@ module Katello
|
|
12
12
|
smart_proxy_helper = ::Katello::SmartProxyHelper.new(smart_proxy)
|
13
13
|
katello_pulp_ids = smart_proxy_helper.combined_repos_available_to_capsule.map(&:pulp_id)
|
14
14
|
pulp3_enabled_repo_types.each do |repo_type|
|
15
|
-
api = repo_type.
|
15
|
+
api = repo_type.pulp3_api(smart_proxy)
|
16
16
|
repo_map[api] = api.list_all.reject { |capsule_repo| katello_pulp_ids.include? capsule_repo.name }
|
17
17
|
end
|
18
18
|
|
@@ -23,7 +23,7 @@ module Katello
|
|
23
23
|
repo_version_map = {}
|
24
24
|
|
25
25
|
pulp3_enabled_repo_types.each do |repo_type|
|
26
|
-
api = repo_type.
|
26
|
+
api = repo_type.pulp3_api(smart_proxy)
|
27
27
|
version_hrefs = api.repository_versions
|
28
28
|
orphan_version_hrefs = api.list_all.collect do |pulp_repo|
|
29
29
|
mirror_repo_versions = api.versions_list_for_repository(pulp_repo.pulp_href, ordering: :_created)
|
@@ -52,16 +52,15 @@ module Katello
|
|
52
52
|
def delete_orphan_distributions
|
53
53
|
tasks = []
|
54
54
|
pulp3_enabled_repo_types.each do |repo_type|
|
55
|
-
|
56
|
-
|
57
|
-
tasks << pulp3_class.api(smart_proxy).delete_distribution(distribution.pulp_href)
|
55
|
+
orphan_distributions(repo_type).each do |distribution|
|
56
|
+
tasks << repo_type.pulp3_api(smart_proxy).delete_distribution(distribution.pulp_href)
|
58
57
|
end
|
59
58
|
end
|
60
59
|
tasks
|
61
60
|
end
|
62
61
|
|
63
|
-
def orphan_distributions(
|
64
|
-
api =
|
62
|
+
def orphan_distributions(repo_type)
|
63
|
+
api = repo_type.pulp3_api(smart_proxy)
|
65
64
|
api.distributions_list_all.select do |distribution|
|
66
65
|
dist = api.get_distribution(distribution.pulp_href)
|
67
66
|
self.class.orphan_distribution?(dist)
|
@@ -78,7 +77,7 @@ module Katello
|
|
78
77
|
tasks = []
|
79
78
|
repo_names = Katello::Repository.pluck(:pulp_id)
|
80
79
|
pulp3_enabled_repo_types.each do |repo_type|
|
81
|
-
api = repo_type.
|
80
|
+
api = repo_type.pulp3_api(smart_proxy)
|
82
81
|
remotes = api.remotes_list
|
83
82
|
|
84
83
|
remotes.each do |remote|
|
@@ -26,7 +26,7 @@ module Katello
|
|
26
26
|
katello_repos = katello_repos.in_content_views([content_view_id]) if content_view_id
|
27
27
|
katello_repos = katello_repos.select { |repo| smart_proxy.pulp3_support?(repo) }
|
28
28
|
repos_on_capsule = pulp3_enabled_repo_types.collect do |repo_type|
|
29
|
-
repo_type.
|
29
|
+
repo_type.pulp3_api(smart_proxy).list_all(name_in: katello_repos.map(&:pulp_id))
|
30
30
|
end
|
31
31
|
repos_on_capsule.flatten!
|
32
32
|
repo_ids = repos_on_capsule.map(&:name)
|
@@ -262,6 +262,8 @@ module Katello
|
|
262
262
|
end
|
263
263
|
|
264
264
|
def delete_agent_queue(host)
|
265
|
+
return unless ::Katello.with_katello_agent?
|
266
|
+
|
265
267
|
queue_name = Katello::Agent::Dispatcher.host_queue_name(host)
|
266
268
|
Katello::EventQueue.push_event(::Katello::Events::DeleteHostAgentQueue::EVENT_TYPE, host.id) do |attrs|
|
267
269
|
attrs[:metadata] = { queue_name: queue_name }
|
@@ -13,13 +13,14 @@ module Katello
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def_field :allow_creation_by_user, :service_class, :pulp3_service_class, :pulp3_plugin,
|
16
|
-
:pulp3_skip_publication, :configuration_class, :
|
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, :
|
19
|
+
:distribution_class, :publication_class, :publications_api_class, :url_description
|
20
20
|
|
21
21
|
attr_accessor :metadata_publish_matching_check, :index_additional_data_proc
|
22
22
|
attr_reader :id, :unique_content_per_repo
|
23
|
+
attr_writer :url_description
|
23
24
|
|
24
25
|
def initialize(id)
|
25
26
|
@id = id.to_sym
|
@@ -27,6 +28,7 @@ module Katello
|
|
27
28
|
@unique_content_per_repo = false
|
28
29
|
@content_types = []
|
29
30
|
@generic_remote_options = []
|
31
|
+
@import_attributes = []
|
30
32
|
end
|
31
33
|
|
32
34
|
def set_unique_content_per_repo
|
@@ -41,6 +43,33 @@ module Katello
|
|
41
43
|
@generic_remote_options.sort_by(&:name)
|
42
44
|
end
|
43
45
|
|
46
|
+
def import_attributes
|
47
|
+
@import_attributes.sort_by(&:name)
|
48
|
+
end
|
49
|
+
|
50
|
+
def primary_content_types
|
51
|
+
found = self.content_types.select { |type| type.primary_content }
|
52
|
+
found = self.content_types if found.empty?
|
53
|
+
found
|
54
|
+
end
|
55
|
+
|
56
|
+
def translated_generic_remote_options
|
57
|
+
translated = generic_remote_options.deep_dup
|
58
|
+
translated.map do |option|
|
59
|
+
option.title = _(option.title)
|
60
|
+
option.description = _(option.description)
|
61
|
+
end
|
62
|
+
translated
|
63
|
+
end
|
64
|
+
|
65
|
+
def translated_import_attributes
|
66
|
+
translated = import_attributes.deep_dup
|
67
|
+
translated.map do |option|
|
68
|
+
option.description = _(option.description)
|
69
|
+
end
|
70
|
+
translated
|
71
|
+
end
|
72
|
+
|
44
73
|
def content_types_to_index
|
45
74
|
if SmartProxy.pulp_primary&.pulp3_repository_type_support?(self)
|
46
75
|
# type.index being false supersedes type.index_on_pulp3 being true
|
@@ -60,7 +89,7 @@ module Katello
|
|
60
89
|
|
61
90
|
def content_type(model_class, options = {})
|
62
91
|
@content_types ||= []
|
63
|
-
@content_types << ContentType.new(options.merge(:model_class => model_class))
|
92
|
+
@content_types << ContentType.new(options.merge(:model_class => model_class, :content_type => model_class::CONTENT_TYPE))
|
64
93
|
end
|
65
94
|
|
66
95
|
def generic_content_type(content_type, options = {})
|
@@ -73,6 +102,10 @@ module Katello
|
|
73
102
|
@generic_remote_options << GenericRemoteOption.new(options.merge(:name => name))
|
74
103
|
end
|
75
104
|
|
105
|
+
def import_attribute(name, options = {})
|
106
|
+
@import_attributes << GenericImportAttribute.new(options.merge(:name => name))
|
107
|
+
end
|
108
|
+
|
76
109
|
def prevent_unneeded_metadata_publish
|
77
110
|
self.metadata_publish_matching_check = true
|
78
111
|
end
|
@@ -90,23 +123,33 @@ module Katello
|
|
90
123
|
:name => self.id.to_s,
|
91
124
|
:id => self.id,
|
92
125
|
:creatable => @allow_creation_by_user,
|
93
|
-
:pulp3_support => SmartProxy.pulp_primary.pulp3_repository_type_support?(self)
|
126
|
+
:pulp3_support => SmartProxy.pulp_primary.pulp3_repository_type_support?(self),
|
127
|
+
:generic_remote_options => translated_generic_remote_options,
|
128
|
+
:import_attributes => translated_import_attributes,
|
129
|
+
:url_description => _(@url_description),
|
130
|
+
:content_types => content_types.as_json
|
94
131
|
}
|
95
132
|
end
|
96
133
|
|
134
|
+
def inspect
|
135
|
+
"RepositoryType[#{self.id}]"
|
136
|
+
end
|
137
|
+
|
97
138
|
def pulp3_api(smart_proxy)
|
98
139
|
if pulp3_api_class == Katello::Pulp3::Api::Generic
|
99
140
|
pulp3_api_class.new(smart_proxy, self)
|
100
141
|
else
|
101
|
-
pulp3_api_class ? pulp3_api_class.new(smart_proxy) : Katello::Pulp3::Api::Core.new(smart_proxy)
|
142
|
+
pulp3_api_class ? pulp3_api_class.new(smart_proxy, self) : Katello::Pulp3::Api::Core.new(smart_proxy)
|
102
143
|
end
|
103
144
|
end
|
104
145
|
|
105
146
|
class ContentType
|
106
|
-
attr_accessor :model_class, :priority, :pulp2_service_class, :pulp3_service_class, :index, :uploadable, :removable,
|
147
|
+
attr_accessor :model_class, :priority, :pulp2_service_class, :pulp3_service_class, :index, :uploadable, :removable,
|
148
|
+
:primary_content, :index_on_pulp3, :generic_browser, :content_type
|
107
149
|
|
108
150
|
def initialize(options)
|
109
151
|
self.model_class = options[:model_class]
|
152
|
+
self.content_type = options[:content_type]
|
110
153
|
self.priority = options[:priority] || 99
|
111
154
|
self.pulp2_service_class = options[:pulp2_service_class]
|
112
155
|
self.pulp3_service_class = options[:pulp3_service_class]
|
@@ -114,43 +157,88 @@ module Katello
|
|
114
157
|
self.index_on_pulp3 = options[:index_on_pulp3].nil? ? true : options[:index_on_pulp3]
|
115
158
|
self.uploadable = options[:uploadable] || false
|
116
159
|
self.removable = options[:removable] || false
|
160
|
+
self.primary_content = options[:primary_content] || false
|
161
|
+
self.generic_browser = options[:generic_browser]
|
117
162
|
end
|
118
163
|
|
119
164
|
def label
|
120
165
|
self.model_class::CONTENT_TYPE
|
121
166
|
end
|
167
|
+
|
168
|
+
def as_json(_options = {})
|
169
|
+
{
|
170
|
+
label: label,
|
171
|
+
generic_browser: generic_browser,
|
172
|
+
generic: false,
|
173
|
+
removable: removable
|
174
|
+
}
|
175
|
+
end
|
122
176
|
end
|
123
177
|
|
124
178
|
class GenericContentType < ContentType
|
125
|
-
attr_accessor :pulp3_api, :pulp3_model, :
|
179
|
+
attr_accessor :pulp3_api, :pulp3_model, :filename_key, :duplicates_allowed, :pluralized_name,
|
180
|
+
:model_name, :model_version, :model_filename, :model_additional_metadata
|
126
181
|
|
127
182
|
def initialize(options)
|
128
|
-
|
129
|
-
self.priority = options[:priority] || 99
|
130
|
-
self.pulp3_service_class = options[:pulp3_service_class]
|
131
|
-
self.index = options[:index].nil? ? true : options[:index]
|
132
|
-
self.index_on_pulp3 = options[:index_on_pulp3].nil? ? true : options[:index_on_pulp3]
|
133
|
-
self.uploadable = options[:uploadable] || false
|
134
|
-
self.removable = options[:removable] || false
|
183
|
+
super
|
135
184
|
self.pulp3_api = options[:pulp3_api]
|
136
185
|
self.pulp3_model = options[:pulp3_model]
|
137
186
|
self.content_type = options[:content_type]
|
138
187
|
self.filename_key = options[:filename_key]
|
139
188
|
self.duplicates_allowed = options[:duplicates_allowed]
|
189
|
+
self.pluralized_name = options[:pluralized_name]
|
190
|
+
self.model_name = options[:model_name]
|
191
|
+
self.model_version = options[:model_version]
|
192
|
+
self.model_filename = options[:model_filename]
|
193
|
+
self.model_additional_metadata = options[:model_additional_metadata]
|
140
194
|
end
|
141
195
|
|
142
196
|
def label
|
143
197
|
self.content_type
|
144
198
|
end
|
199
|
+
|
200
|
+
def details_columns
|
201
|
+
columns = []
|
202
|
+
columns << "Name" if self.model_name
|
203
|
+
columns << "Version" if self.model_version
|
204
|
+
columns << "Filename" if self.model_filename
|
205
|
+
columns
|
206
|
+
end
|
207
|
+
|
208
|
+
def as_json(_options = {})
|
209
|
+
super.merge(
|
210
|
+
{
|
211
|
+
:generic => true,
|
212
|
+
:pluralized_label => content_type.pluralize,
|
213
|
+
:pluralized_name => pluralized_name,
|
214
|
+
:details_columns => details_columns
|
215
|
+
}
|
216
|
+
)
|
217
|
+
end
|
145
218
|
end
|
146
219
|
|
147
220
|
class GenericRemoteOption
|
148
|
-
attr_accessor :name, :type, :description
|
221
|
+
attr_accessor :name, :title, :type, :description, :input_type, :delimiter
|
222
|
+
|
223
|
+
def initialize(options)
|
224
|
+
self.name = options[:name]
|
225
|
+
self.title = options[:title]
|
226
|
+
self.type = options[:type]
|
227
|
+
self.description = options[:description]
|
228
|
+
self.input_type = options[:input_type]
|
229
|
+
self.delimiter = options[:delimiter]
|
230
|
+
end
|
231
|
+
end
|
232
|
+
|
233
|
+
class GenericImportAttribute
|
234
|
+
attr_accessor :name, :api_param, :type, :description, :required
|
149
235
|
|
150
236
|
def initialize(options)
|
151
237
|
self.name = options[:name]
|
238
|
+
self.api_param = options[:api_param]
|
152
239
|
self.type = options[:type]
|
153
240
|
self.description = options[:description]
|
241
|
+
self.required = options[:required]
|
154
242
|
end
|
155
243
|
end
|
156
244
|
end
|
@@ -63,7 +63,7 @@ module Katello
|
|
63
63
|
def enabled_content_types(enabled_only = true)
|
64
64
|
repo_types = enabled_only ? enabled_repository_types : defined_repository_types
|
65
65
|
list = repo_types.values.map do |type|
|
66
|
-
type.content_types.map(&:
|
66
|
+
type.content_types.map(&:label).flatten
|
67
67
|
end
|
68
68
|
list.flatten
|
69
69
|
end
|
@@ -83,6 +83,14 @@ module Katello
|
|
83
83
|
list.flatten.map(&:content_type)
|
84
84
|
end
|
85
85
|
|
86
|
+
def generic_ui_content_types(enabled_only = true)
|
87
|
+
repo_types = enabled_only ? enabled_repository_types : defined_repository_types
|
88
|
+
list = repo_types.values.map do |type|
|
89
|
+
type.content_types.select { |ct| ct.generic_browser }
|
90
|
+
end
|
91
|
+
list.flatten.map(&:content_type)
|
92
|
+
end
|
93
|
+
|
86
94
|
def generic_content_type?(content_type, enabled_only = true)
|
87
95
|
types = generic_content_types(enabled_only)
|
88
96
|
types.include?(content_type)
|
@@ -128,12 +136,7 @@ module Katello
|
|
128
136
|
end
|
129
137
|
|
130
138
|
def find_repository_type(katello_label)
|
131
|
-
enabled_repository_types
|
132
|
-
repo_type.content_types.each do |content_type|
|
133
|
-
return repo_type if content_type.label == katello_label.to_s
|
134
|
-
end
|
135
|
-
end
|
136
|
-
nil
|
139
|
+
enabled_repository_types[katello_label]
|
137
140
|
end
|
138
141
|
|
139
142
|
def find_content_type(katello_label)
|
@@ -171,15 +174,18 @@ module Katello
|
|
171
174
|
|
172
175
|
def generic_remote_options(opts = {})
|
173
176
|
options = []
|
177
|
+
sorted_options = {}
|
174
178
|
repo_types = opts[:defined_only] ? defined_repository_types : enabled_repository_types
|
175
179
|
repo_types.each do |_, type|
|
176
180
|
if opts[:content_type]
|
177
181
|
(options << type.generic_remote_options).flatten! if type.pulp3_service_class == Katello::Pulp3::Repository::Generic && type.id.to_s == opts[:content_type]
|
182
|
+
elsif opts[:sort_by_repo_type]
|
183
|
+
sorted_options[type.id] = type.generic_remote_options if type.pulp3_service_class == Katello::Pulp3::Repository::Generic
|
178
184
|
else
|
179
185
|
(options << type.generic_remote_options).flatten! if type.pulp3_service_class == Katello::Pulp3::Repository::Generic
|
180
186
|
end
|
181
187
|
end
|
182
|
-
options
|
188
|
+
opts[:sort_by_repo_type] ? sorted_options : options
|
183
189
|
end
|
184
190
|
|
185
191
|
private
|