katello 3.17.0.rc1 → 3.17.0.rc2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of katello might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/app/controllers/katello/api/registry/registry_proxies_controller.rb +5 -3
- data/app/controllers/katello/api/rhsm/candlepin_dynflow_proxy_controller.rb +1 -1
- data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +2 -2
- data/app/controllers/katello/api/v2/api_controller.rb +1 -1
- data/app/controllers/katello/api/v2/content_credentials_controller.rb +1 -1
- data/app/controllers/katello/api/v2/content_uploads_controller.rb +5 -5
- data/app/controllers/katello/api/v2/content_view_repositories_controller.rb +47 -0
- data/app/controllers/katello/api/v2/content_view_versions_controller.rb +50 -19
- data/app/controllers/katello/api/v2/gpg_keys_controller.rb +1 -1
- data/app/controllers/katello/api/v2/host_tracer_controller.rb +0 -5
- data/app/controllers/katello/api/v2/products_bulk_actions_controller.rb +15 -0
- data/app/controllers/katello/api/v2/repositories_controller.rb +24 -14
- data/app/controllers/katello/api/v2/subscriptions_controller.rb +1 -1
- data/app/controllers/katello/concerns/api/v2/{associations_permission_check.rb → authorization.rb} +20 -2
- data/app/controllers/katello/concerns/hosts_controller_extensions.rb +11 -5
- data/app/helpers/katello/content_view_helper.rb +1 -1
- data/app/lib/actions/candlepin/product/content_add.rb +1 -2
- data/app/lib/actions/katello/capsule_content/refresh_repos.rb +1 -1
- data/app/lib/actions/katello/capsule_content/sync.rb +2 -2
- data/app/lib/actions/katello/capsule_content/sync_capsule.rb +17 -3
- data/app/lib/actions/katello/content_view/capsule_sync.rb +1 -1
- data/app/lib/actions/katello/content_view/destroy.rb +2 -2
- data/app/lib/actions/katello/content_view/incremental_updates.rb +1 -1
- data/app/lib/actions/katello/content_view/promote_to_environment.rb +1 -0
- data/app/lib/actions/katello/content_view/publish.rb +12 -7
- data/app/lib/actions/katello/content_view_puppet_environment/clone.rb +1 -1
- data/app/lib/actions/katello/content_view_puppet_environment/create.rb +2 -2
- data/app/lib/actions/katello/content_view_version/incremental_update.rb +4 -4
- data/app/lib/actions/katello/organization/manifest_delete.rb +1 -0
- data/app/lib/actions/katello/organization/manifest_import.rb +1 -0
- data/app/lib/actions/katello/organization/manifest_refresh.rb +1 -0
- data/app/lib/actions/katello/product/content_create.rb +3 -3
- data/app/lib/actions/katello/product/destroy.rb +25 -4
- data/app/lib/actions/katello/repository/clone_contents.rb +3 -3
- data/app/lib/actions/katello/repository/clone_to_environment.rb +2 -2
- data/app/lib/actions/katello/repository/clone_to_version.rb +1 -1
- data/app/lib/actions/katello/repository/create.rb +1 -1
- data/app/lib/actions/katello/repository/destroy.rb +10 -4
- data/app/lib/actions/katello/repository/export.rb +3 -3
- data/app/lib/actions/katello/repository/finish_upload.rb +2 -2
- data/app/lib/actions/katello/repository/import_upload.rb +3 -3
- data/app/lib/actions/katello/repository/metadata_generate.rb +1 -1
- data/app/lib/actions/katello/repository/multi_clone_contents.rb +6 -10
- data/app/lib/actions/katello/repository/purge_empty_content.rb +1 -1
- data/app/lib/actions/katello/repository/remove_content.rb +1 -1
- data/app/lib/actions/katello/repository/sync.rb +35 -25
- data/app/lib/actions/katello/repository/update.rb +30 -19
- data/app/lib/actions/katello/repository/update_http_proxy_details.rb +1 -1
- data/app/lib/actions/katello/repository/update_metadata_sync.rb +1 -1
- data/app/lib/actions/katello/repository/upload_files.rb +2 -2
- data/app/lib/actions/katello/repository/verify_checksum.rb +28 -0
- data/app/lib/actions/pulp/content_view_puppet_environment/copy_contents.rb +1 -1
- data/app/lib/actions/pulp/orchestration/orphan_cleanup/remove_orphans.rb +1 -1
- data/app/lib/actions/pulp/orchestration/repository/sync.rb +2 -1
- data/app/lib/actions/pulp/repository/copy_all_units.rb +1 -1
- data/app/lib/actions/pulp/repository/copy_units.rb +1 -1
- data/app/lib/actions/pulp/repository/create.rb +1 -1
- data/app/lib/actions/pulp/repository/destroy.rb +1 -1
- data/app/lib/actions/pulp/repository/remove_units.rb +2 -2
- data/app/lib/actions/pulp/repository/sync.rb +3 -2
- data/app/lib/actions/pulp3/capsule_content/sync.rb +3 -1
- data/app/lib/actions/pulp3/content_guard/refresh_all_distributions.rb +19 -0
- data/app/lib/actions/pulp3/content_migration.rb +3 -3
- data/app/lib/actions/pulp3/content_view_version/create_exporter.rb +20 -0
- data/app/lib/actions/pulp3/content_view_version/destroy_exporter.rb +16 -0
- data/app/lib/actions/pulp3/content_view_version/export.rb +19 -0
- data/app/lib/actions/pulp3/import_migration.rb +3 -3
- data/app/lib/actions/pulp3/orchestration/content_view_version/export.rb +69 -0
- data/app/lib/actions/pulp3/orchestration/repository/copy_all_units.rb +1 -2
- data/app/lib/actions/pulp3/orchestration/repository/create.rb +1 -1
- data/app/lib/actions/pulp3/orchestration/repository/sync.rb +3 -1
- data/app/lib/actions/pulp3/orchestration/repository/trigger_update_repo_cert_guard.rb +22 -0
- data/app/lib/actions/pulp3/orchestration/repository/upload_content.rb +1 -1
- data/app/lib/actions/pulp3/repository/copy_content.rb +0 -1
- data/app/lib/actions/pulp3/repository/multi_copy_units.rb +2 -2
- data/app/lib/actions/pulp3/repository/presenters/repair_presenter.rb +85 -0
- data/app/lib/actions/pulp3/repository/refresh_distribution.rb +11 -5
- data/app/lib/actions/pulp3/repository/repair.rb +29 -0
- data/app/lib/actions/pulp3/repository/save_artifact.rb +1 -1
- data/app/lib/actions/pulp3/repository/save_distribution_references.rb +2 -2
- data/app/lib/actions/pulp3/repository/save_version.rb +20 -16
- data/app/lib/actions/pulp3/repository/save_versions.rb +1 -1
- data/app/lib/actions/pulp3/repository/sync.rb +1 -1
- data/app/lib/actions/pulp3/repository/update_cv_repository_cert_guard.rb +6 -2
- data/app/lib/actions/pulp3/repository/upload_file.rb +2 -2
- data/app/lib/katello/concerns/base_template_scope_extensions.rb +5 -3
- data/app/lib/katello/concerns/permission_extensions.rb +14 -0
- data/app/lib/katello/foreman.rb +1 -1
- data/app/lib/katello/resources/candlepin/product.rb +0 -11
- data/app/lib/katello/resources/registry.rb +3 -3
- data/app/models/katello/authorization/content_view_version_export_history.rb +11 -0
- data/app/models/katello/authorization/product.rb +4 -0
- data/app/models/katello/authorization/repository.rb +8 -0
- data/app/models/katello/concerns/content_facet_host_extensions.rb +2 -1
- data/app/models/katello/concerns/organization_extensions.rb +6 -1
- data/app/models/katello/concerns/pulp_database_unit.rb +2 -2
- data/app/models/katello/concerns/redhat_extensions.rb +4 -2
- data/app/models/katello/concerns/smart_proxy_extensions.rb +33 -16
- data/app/models/katello/concerns/subscription_facet_host_extensions.rb +1 -1
- data/app/models/katello/content_view.rb +1 -1
- data/app/models/katello/content_view_package_filter.rb +1 -1
- data/app/models/katello/content_view_puppet_environment.rb +1 -1
- data/app/models/katello/content_view_version.rb +3 -1
- data/app/models/katello/content_view_version_export_history.rb +22 -0
- data/app/models/katello/docker_meta_tag.rb +1 -1
- data/app/models/katello/errata_status.rb +21 -12
- data/app/models/katello/erratum.rb +1 -1
- data/app/models/katello/glue/candlepin/owner.rb +4 -2
- data/app/models/katello/glue/pulp/repo.rb +3 -1
- data/app/models/katello/host/content_facet.rb +8 -0
- data/app/models/katello/kt_environment.rb +1 -1
- data/app/models/katello/package_group.rb +1 -1
- data/app/models/katello/ping.rb +8 -3
- data/app/models/katello/pulp3/content_guard.rb +1 -1
- data/app/models/katello/purpose_status.rb +2 -2
- data/app/models/katello/repository.rb +23 -15
- data/app/models/katello/rhsm_fact_parser.rb +1 -1
- data/app/models/katello/root_repository.rb +2 -15
- data/app/models/katello/sync_plan.rb +8 -0
- data/app/models/setting/content.rb +3 -1
- data/app/services/cert/certs.rb +10 -2
- data/app/services/katello/candlepin/event_handler.rb +1 -0
- data/app/services/katello/host_status_manager.rb +7 -0
- data/app/services/katello/pulp/content.rb +1 -1
- data/app/services/katello/pulp/repository.rb +7 -7
- data/app/services/katello/pulp/repository/deb.rb +2 -2
- data/app/services/katello/pulp/repository/docker.rb +5 -5
- data/app/services/katello/pulp/repository/file.rb +2 -2
- data/app/services/katello/pulp/repository/ostree.rb +2 -2
- data/app/services/katello/pulp/repository/puppet.rb +2 -2
- data/app/services/katello/pulp/repository/yum.rb +5 -6
- data/app/services/katello/pulp/smart_proxy_repository.rb +1 -1
- data/app/services/katello/pulp3/ansible_collection.rb +2 -2
- data/app/services/katello/pulp3/api/core.rb +16 -0
- data/app/services/katello/pulp3/content.rb +3 -3
- data/app/services/katello/pulp3/content_view_version/export.rb +71 -0
- data/app/services/katello/pulp3/distribution.rb +2 -2
- data/app/services/katello/pulp3/docker_blob.rb +2 -2
- data/app/services/katello/pulp3/docker_manifest.rb +2 -2
- data/app/services/katello/pulp3/docker_manifest_list.rb +2 -2
- data/app/services/katello/pulp3/docker_tag.rb +2 -2
- data/app/services/katello/pulp3/erratum.rb +2 -2
- data/app/services/katello/pulp3/file_unit.rb +2 -2
- data/app/services/katello/pulp3/migration.rb +139 -34
- data/app/services/katello/pulp3/migration_plan.rb +50 -14
- data/app/services/katello/pulp3/migration_switchover.rb +41 -9
- data/app/services/katello/pulp3/module_stream.rb +2 -2
- data/app/services/katello/pulp3/package_group.rb +2 -2
- data/app/services/katello/pulp3/repository.rb +9 -9
- data/app/services/katello/pulp3/repository/docker.rb +18 -10
- data/app/services/katello/pulp3/repository/yum.rb +25 -13
- data/app/services/katello/pulp3/repository_mirror.rb +2 -1
- data/app/services/katello/pulp3/rpm.rb +2 -2
- data/app/services/katello/pulp3/smart_proxy_mirror_repository.rb +2 -2
- data/app/services/katello/pulp3/smart_proxy_repository.rb +1 -1
- data/app/services/katello/pulp3/srpm.rb +2 -2
- data/app/services/katello/pulp3/task_group.rb +1 -1
- data/app/services/katello/pulp3/yum_metadata_file.rb +2 -2
- data/app/services/katello/registration_manager.rb +9 -3
- data/app/services/katello/repository_type.rb +1 -1
- data/app/services/katello/smart_proxy_helper.rb +14 -17
- data/app/views/foreman/job_templates/install_errata_-_katello_ansible_default.erb +10 -2
- data/app/views/katello/api/v2/content_view_repositories/show_all.json.rabl +8 -0
- data/app/views/katello/api/v2/content_view_version_export_histories/index.json.rabl +7 -0
- data/app/views/katello/api/v2/content_view_version_export_histories/show.json.rabl +13 -0
- data/app/views/katello/api/v2/package_groups/show.json.rabl +1 -1
- data/app/views/katello/api/v2/packages/show.json.rabl +1 -1
- data/app/views/katello/api/v2/repositories/base.json.rabl +2 -1
- data/app/views/katello/api/v2/srpms/show.json.rabl +1 -1
- data/app/views/katello/api/v2/sync_plans/show.json.rabl +2 -1
- data/config/routes/api/rhsm.rb +1 -0
- data/config/routes/api/v2.rb +8 -1
- data/db/migrate/20200818040551_add_content_view_version_export_history.rb +13 -0
- data/db/migrate/20200818192230_update_system_purpose_status.rb +12 -0
- data/db/migrate/20200820145217_add_download_concurrency_to_katello_root_repositories.rb +5 -0
- data/db/migrate/20200910140340_remove_distribution_uuid.rb +5 -0
- data/db/migrate/20200914200906_remove_auto_enabled.rb +5 -0
- data/engines/bastion/app/assets/javascripts/bastion/bastion.js +1 -0
- data/engines/bastion/app/assets/javascripts/bastion/routing.module.js +1 -1
- data/engines/bastion/vendor/assets/javascripts/bastion/angular-ui-router/stateEvents.js +300 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/activation-keys.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-add-subscriptions.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-associations.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-subscriptions.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/content-hosts-bulk-errata-modal.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-host-collections-modal.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-module-streams-modal.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-repository-sets-modal.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-subscriptions-modal.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-traces-modal.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts-helper.service.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-debs-installed.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-errata.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-module-streams.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages-applicable.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages-installed.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-traces.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-add-host-collections.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-add-subscriptions.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-details-info.controller.js +4 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-host-collections.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-subscriptions.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html +2 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-views.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/content-view-composite-available-content-views.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/content-view-composite-content-views-list.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-docker-repositories.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-ostree-repositories.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-docker-repositories-list.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-ostree-repositories-list.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-versions.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/available-errata-filter.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/available-package-group-filter.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/content-view-puppet-module-names.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/content-view-puppet-module-versions.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/content-view-puppet-modules.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/content-view-version-content.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/debs.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/deb-content-views.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/deb-repositories.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/environment-content.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/erratum-repositories.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/details/file-content-views.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/details/file-repositories.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/files.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/host-collections.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de.po +57 -12
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/es.po +45 -8
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/fr.po +42 -5
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/it.po +36 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ja.po +36 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ko.po +36 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt_BR.po +45 -8
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ru.po +36 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_CN.po +36 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_TW.po +36 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/translations.js +4 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/organizations/fenced-pages.service.js +11 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/organizations/organization-selector.controller.js +5 -14
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/details/ostree-branch-repositories.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/details/package-repositories.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/packages.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/product-bulk-action.factory.js +1 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/products-bulk-sync-plan-modal.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/product-repositories.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-manage-content.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details.controller.js +6 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-details.html +7 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +0 -9
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +0 -11
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repository.factory.js +1 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.controller.js +16 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/views/products.html +6 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/puppet-module-content-views.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/puppet-module-repositories.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/puppet-modules.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/sync-plan-details-info.controller.js +4 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/views/sync-plan-info.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/sync-plans.controller.js +1 -1
- data/lib/katello/engine.rb +2 -0
- data/lib/katello/permission_creator.rb +14 -9
- data/lib/katello/tasks/clean_published_repo_directories.rake +3 -3
- data/lib/katello/tasks/pulp3_content_switchover.rake +24 -6
- data/lib/katello/tasks/pulp3_migration.rake +4 -2
- data/lib/katello/tasks/pulp3_post_migration_check.rake +2 -2
- data/lib/katello/tasks/reimport.rake +1 -1
- data/lib/katello/tasks/repository.rake +15 -2
- data/lib/katello/tasks/unify_hosts.rake +1 -0
- data/lib/katello/tasks/upgrades/3.11/update_puppet_repos.rake +3 -3
- data/lib/katello/tasks/upgrades/3.12/remove_pulp2_notifier.rake +2 -2
- data/lib/katello/tasks/upgrades/3.8/clear_checksum_type.rake +2 -2
- data/lib/katello/version.rb +1 -1
- data/locale/action_names.rb +47 -47
- data/locale/katello.pot +160 -160
- data/webpack/containers/Application/config.js +4 -4
- data/webpack/redux/actions/RedHatRepositories/helpers.js +1 -1
- data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +22 -32
- data/webpack/scenes/Subscriptions/Manifest/__tests__/SimpleContentAccess.test.js +0 -14
- data/webpack/scenes/Subscriptions/Manifest/index.js +2 -5
- data/webpack/scenes/Subscriptions/SubscriptionReducer.js +15 -6
- data/webpack/scenes/Subscriptions/SubscriptionsPage.js +0 -1
- data/webpack/scenes/Subscriptions/SubscriptionsSelectors.js +3 -0
- data/webpack/scenes/Subscriptions/__tests__/SubscriptionsReducer.test.js +24 -0
- data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsReducer.test.js.snap +114 -26
- metadata +67 -33
- data/app/lib/actions/candlepin/product/content_update_enablement.rb +0 -18
- data/app/lib/actions/katello/repository/content_update.rb +0 -41
- data/app/lib/actions/katello/repository/update_cv_repo_cert_guard.rb +0 -17
@@ -13,7 +13,7 @@ module Actions
|
|
13
13
|
|
14
14
|
output.merge!(contents_changed: false, updated_repositories: [])
|
15
15
|
repositories.each do |repo|
|
16
|
-
repo_backend_service = repo.backend_service(SmartProxy.
|
16
|
+
repo_backend_service = repo.backend_service(SmartProxy.pulp_primary)
|
17
17
|
if repo.version_href
|
18
18
|
# Chop off the version number to compare base repo strings
|
19
19
|
unversioned_href = repo.version_href[0..-2].rpartition('/').first
|
@@ -10,7 +10,7 @@ module Actions
|
|
10
10
|
|
11
11
|
def invoke_external_task
|
12
12
|
repo = ::Katello::Repository.find(input[:repo_id])
|
13
|
-
output[:pulp_tasks] = repo.backend_service(::SmartProxy.unscoped.find(input[:smart_proxy_id])).sync
|
13
|
+
output[:pulp_tasks] = repo.backend_service(::SmartProxy.unscoped.find(input[:smart_proxy_id])).sync(input[:options])
|
14
14
|
end
|
15
15
|
|
16
16
|
def external_task=(tasks)
|
@@ -2,13 +2,17 @@ module Actions
|
|
2
2
|
module Pulp3
|
3
3
|
module Repository
|
4
4
|
class UpdateCVRepositoryCertGuard < Pulp3::Abstract
|
5
|
-
def plan(repository,
|
5
|
+
def plan(repository, smart_proxy)
|
6
6
|
root = repository.root
|
7
7
|
cv_repositories = root.repositories - [root.library_instance]
|
8
8
|
cv_repositories.each do |repo|
|
9
|
-
plan_action(::Actions::Pulp3::Repository::RefreshDistribution, repo,
|
9
|
+
plan_action(::Actions::Pulp3::Repository::RefreshDistribution, repo, smart_proxy)
|
10
10
|
end
|
11
11
|
end
|
12
|
+
|
13
|
+
def humanized_name
|
14
|
+
_("Updating repository authentication configuration")
|
15
|
+
end
|
12
16
|
end
|
13
17
|
end
|
14
18
|
end
|
@@ -24,8 +24,8 @@ module Actions
|
|
24
24
|
filechunk.write(chunk)
|
25
25
|
filechunk.flush
|
26
26
|
actual_chunk_size = File.size(filechunk)
|
27
|
-
response = uploads_api.update(
|
28
|
-
offset += actual_chunk_size
|
27
|
+
response = uploads_api.update(content_range(offset, offset + actual_chunk_size - 1, total_size), upload_href, filechunk)
|
28
|
+
offset += actual_chunk_size
|
29
29
|
ensure
|
30
30
|
filechunk.close
|
31
31
|
filechunk.unlink
|
@@ -87,7 +87,7 @@ module Katello
|
|
87
87
|
end
|
88
88
|
|
89
89
|
# rubocop:disable Metrics/MethodLength
|
90
|
-
def load_errata_applications(filter_errata_type: nil, include_last_reboot: 'yes', since: nil, up_to: nil, status: nil)
|
90
|
+
def load_errata_applications(filter_errata_type: nil, include_last_reboot: 'yes', since: nil, up_to: nil, status: nil, host_filter: nil)
|
91
91
|
result = []
|
92
92
|
|
93
93
|
filter_errata_type = filter_errata_type.presence || 'all'
|
@@ -109,6 +109,7 @@ module Katello
|
|
109
109
|
select: 'foreman_tasks_tasks.*,template_invocations.id AS template_invocation_id',
|
110
110
|
search: search
|
111
111
|
)
|
112
|
+
only_host_ids = ::Host.search_for(host_filter).pluck(:id) if host_filter
|
112
113
|
|
113
114
|
# batch of 1_000 records
|
114
115
|
tasks.each do |batch|
|
@@ -118,14 +119,15 @@ module Katello
|
|
118
119
|
|
119
120
|
batch.each do |task|
|
120
121
|
seen_errata_ids = (seen_errata_ids + parse_errata(task)).uniq
|
121
|
-
seen_host_ids << task.input['host']['id'] if include_last_reboot == 'yes'
|
122
|
+
seen_host_ids << task.input['host']['id'].to_i if include_last_reboot == 'yes'
|
122
123
|
end
|
123
124
|
|
124
125
|
# preload errata in one query for this batch
|
125
126
|
preloaded_errata = Katello::Erratum.where(:errata_id => seen_errata_ids).pluck(:errata_id, :errata_type)
|
126
|
-
preloaded_hosts = ::Host.where(:id => seen_host_ids).includes(:reported_data)
|
127
|
+
preloaded_hosts = ::Host.where(:id => seen_host_ids & only_host_ids).includes(:reported_data)
|
127
128
|
|
128
129
|
batch.each do |task|
|
130
|
+
next unless only_host_ids.include?(task.input['host']['id'].to_i)
|
129
131
|
parse_errata(task).each do |erratum_id|
|
130
132
|
current_erratum_errata_type = preloaded_errata.find { |k, _| k == erratum_id }.last
|
131
133
|
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Katello
|
2
|
+
module Concerns
|
3
|
+
module PermissionExtensions
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
attr_accessor :finder_scope
|
7
|
+
|
8
|
+
def initialize(name, hash, options)
|
9
|
+
super(name, hash, options)
|
10
|
+
@finder_scope = options[:finder_scope]
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/app/lib/katello/foreman.rb
CHANGED
@@ -21,7 +21,7 @@ module Katello
|
|
21
21
|
foreman_environment.save!
|
22
22
|
end
|
23
23
|
|
24
|
-
foreman_smart_proxy = SmartProxy.
|
24
|
+
foreman_smart_proxy = SmartProxy.pulp_primary
|
25
25
|
if foreman_smart_proxy.has_feature?('Puppet')
|
26
26
|
PuppetClassImporter.new(:url => foreman_smart_proxy.url, :env => foreman_environment.name).update_environment
|
27
27
|
end
|
@@ -66,17 +66,6 @@ module Katello
|
|
66
66
|
self.post(join_path(path(owner_label, product_id), "content/#{content_id}?enabled=#{enabled}"), nil, self.default_headers).code.to_i
|
67
67
|
end
|
68
68
|
|
69
|
-
def update_enabled(owner_label, product_id, contents)
|
70
|
-
options = { id: product_id }
|
71
|
-
options[:productContent] = contents.map do |content|
|
72
|
-
ret = { content: { id: content[:id] } }
|
73
|
-
ret[:enabled] = content[:enabled] if content.key?(:enabled)
|
74
|
-
ret
|
75
|
-
end
|
76
|
-
|
77
|
-
update(owner_label, options)
|
78
|
-
end
|
79
|
-
|
80
69
|
def remove_content(owner_label, product_id, content_id)
|
81
70
|
self.delete(join_path(path(owner_label, product_id), "content/#{content_id}"), self.default_headers).code.to_i
|
82
71
|
end
|
@@ -24,11 +24,11 @@ module Katello
|
|
24
24
|
def load_class
|
25
25
|
container_config = SETTINGS.dig(:katello, :container_image_registry)
|
26
26
|
registry_url = nil
|
27
|
-
|
27
|
+
pulp_primary = ::SmartProxy.pulp_primary
|
28
28
|
|
29
29
|
# Pulp 3 has its own registry
|
30
|
-
if
|
31
|
-
uri = URI(
|
30
|
+
if pulp_primary&.pulp3_repository_type_support?(::Katello::Repository::DOCKER_TYPE)
|
31
|
+
uri = URI(pulp_primary.setting(SmartProxy::PULP3_FEATURE, 'content_app_url'))
|
32
32
|
uri.path = "/pulpcore_registry/"
|
33
33
|
registry_url = uri.to_s
|
34
34
|
|
@@ -27,6 +27,10 @@ module Katello
|
|
27
27
|
joins(:root).where("#{Repository.table_name}.id in (?) or #{self.table_name}.id in (?) or #{self.table_name}.id in (?) or #{self.table_name}.id in (?)", in_products, in_content_views, in_versions, in_environments)
|
28
28
|
end
|
29
29
|
|
30
|
+
def exportable
|
31
|
+
in_product(Katello::Product.exportable)
|
32
|
+
end
|
33
|
+
|
30
34
|
def deletable
|
31
35
|
in_product(Katello::Product.authorized(:destroy_products))
|
32
36
|
end
|
@@ -34,6 +38,10 @@ module Katello
|
|
34
38
|
def syncable
|
35
39
|
in_product(Katello::Product.authorized(:sync_products))
|
36
40
|
end
|
41
|
+
|
42
|
+
def editable
|
43
|
+
in_product(Katello::Product.editable)
|
44
|
+
end
|
37
45
|
end
|
38
46
|
end
|
39
47
|
end
|
@@ -28,7 +28,8 @@ module Katello
|
|
28
28
|
has_one :content_view, :through => :content_facet
|
29
29
|
has_one :lifecycle_environment, :through => :content_facet
|
30
30
|
has_one :content_source, :through => :content_facet
|
31
|
-
has_many :
|
31
|
+
has_many :content_facet_errata, :through => :content_facet, :class_name => 'Katello::ContentFacetErratum'
|
32
|
+
has_many :applicable_errata, :through => :content_facet_errata, :source => :erratum
|
32
33
|
has_many :applicable_rpms, :through => :content_facet
|
33
34
|
has_many :applicable_module_streams, :through => :content_facet
|
34
35
|
|
@@ -113,7 +113,7 @@ module Katello
|
|
113
113
|
end
|
114
114
|
|
115
115
|
def associate_default_capsule
|
116
|
-
smart_proxy = SmartProxy.
|
116
|
+
smart_proxy = SmartProxy.pulp_primary
|
117
117
|
smart_proxy.organizations << self if smart_proxy
|
118
118
|
end
|
119
119
|
|
@@ -228,6 +228,11 @@ module Katello
|
|
228
228
|
subscriptions.select(&:expiring_soon?)
|
229
229
|
end
|
230
230
|
|
231
|
+
def clear_syspurpose_status
|
232
|
+
host_purpose = HostStatus::Status.where(type: ::Katello::HostStatusManager::PURPOSE_STATUS.map(&:to_s)).where('host_id in (?)', self.hosts.pluck(:id))
|
233
|
+
host_purpose.destroy_all
|
234
|
+
end
|
235
|
+
|
231
236
|
def notification_recipients_ids
|
232
237
|
users = User.unscoped.all.find_all do |user|
|
233
238
|
user.can?(:import_manifest) && user.can?(:view_organizations, self)
|
@@ -87,7 +87,7 @@ module Katello
|
|
87
87
|
|
88
88
|
def import_all(pulp_ids = nil, repository = nil)
|
89
89
|
ids_to_associate = []
|
90
|
-
service_class = SmartProxy.
|
90
|
+
service_class = SmartProxy.pulp_primary!.content_service(content_type)
|
91
91
|
service_class.pulp_units_batch_all(pulp_ids).each do |units|
|
92
92
|
units.each do |unit|
|
93
93
|
unit = unit.with_indifferent_access
|
@@ -105,7 +105,7 @@ module Katello
|
|
105
105
|
|
106
106
|
def import_for_repository(repository)
|
107
107
|
pulp_id_href_map = {}
|
108
|
-
service_class = SmartProxy.
|
108
|
+
service_class = SmartProxy.pulp_primary!.content_service(content_type)
|
109
109
|
fetch_only_ids = !repository.content_view.default? &&
|
110
110
|
!repository.repository_type.unique_content_per_repo &&
|
111
111
|
service_class.supports_id_fetch?
|
@@ -8,8 +8,10 @@ module Katello
|
|
8
8
|
os_name = construct_name(repo.distribution_family)
|
9
9
|
major, minor = repo.distribution_version.split('.')
|
10
10
|
minor ||= '' # treat minor versions as empty string to not confuse with nil
|
11
|
-
|
12
|
-
|
11
|
+
os = ::Redhat.where(:name => os_name, :major => major, :minor => minor).try(:first)
|
12
|
+
return os if os
|
13
|
+
description = "#{os_name}-#{repo.distribution_version}"
|
14
|
+
create_os = lambda { ::Redhat.create!(:name => os_name, :major => major, :minor => minor, :description => description) }
|
13
15
|
|
14
16
|
begin
|
15
17
|
create_os.call
|
@@ -64,20 +64,26 @@ module Katello
|
|
64
64
|
where("#{Katello::CapsuleLifecycleEnvironment.table_name}.lifecycle_environment_id" => repo.environment_id)
|
65
65
|
end
|
66
66
|
|
67
|
-
def self.
|
68
|
-
unscoped.with_features(PULP_FEATURE).first
|
67
|
+
def self.pulp_primary
|
68
|
+
unscoped.with_features(PULP_FEATURE).first || non_mirror_pulp3
|
69
69
|
end
|
70
70
|
|
71
|
-
def self.
|
72
|
-
|
71
|
+
def self.non_mirror_pulp3
|
72
|
+
found = unscoped.with_features(PULP3_FEATURE).order(:id).select { |proxy| !proxy.setting(PULP3_FEATURE, 'mirror') }
|
73
|
+
Rails.logger.warn("Found multiple smart proxies with mirror set to false. This is likely not intentional.") if found.count > 1
|
74
|
+
found.first
|
75
|
+
end
|
76
|
+
|
77
|
+
def self.pulp_primary!
|
78
|
+
pulp_primary || fail(_("Could not find a smart proxy with pulp feature."))
|
73
79
|
end
|
74
80
|
|
75
81
|
def self.default_capsule
|
76
|
-
|
82
|
+
pulp_primary
|
77
83
|
end
|
78
84
|
|
79
85
|
def self.default_capsule!
|
80
|
-
|
86
|
+
pulp_primary!
|
81
87
|
end
|
82
88
|
|
83
89
|
def self.with_environment(environment, include_default = false)
|
@@ -121,8 +127,7 @@ module Katello
|
|
121
127
|
uri = pulp3_uri!
|
122
128
|
config.host = uri.host
|
123
129
|
config.scheme = uri.scheme
|
124
|
-
config
|
125
|
-
config.ssl_client_key = ::Cert::Certs.ssl_client_key
|
130
|
+
pulp3_ssl_configuration(config)
|
126
131
|
config.debugging = true
|
127
132
|
config.logger = ::Foreman::Logging.logger('katello/pulp_rest')
|
128
133
|
config.username = self.setting(PULP3_FEATURE, 'username')
|
@@ -130,6 +135,18 @@ module Katello
|
|
130
135
|
end
|
131
136
|
end
|
132
137
|
|
138
|
+
def pulp3_ssl_configuration(config)
|
139
|
+
if Faraday.default_adapter == :excon
|
140
|
+
config.ssl_client_cert = ::Cert::Certs.ssl_client_cert_filename
|
141
|
+
config.ssl_client_key = ::Cert::Certs.ssl_client_key_filename
|
142
|
+
elsif Faraday.default_adapter == :net_http
|
143
|
+
config.ssl_client_cert = ::Cert::Certs.ssl_client_cert
|
144
|
+
config.ssl_client_key = ::Cert::Certs.ssl_client_key
|
145
|
+
else
|
146
|
+
fail "Unexpected faraday default_adapter #{Faraday.default_adapter}! Cannot continue, this is likely a bug."
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
133
150
|
def backend_service_type(repository)
|
134
151
|
if pulp3_support?(repository)
|
135
152
|
Actions::Pulp3::Abstract::BACKEND_SERVICE_TYPE
|
@@ -143,7 +160,7 @@ module Katello
|
|
143
160
|
end
|
144
161
|
|
145
162
|
def pulp3_support?(repository)
|
146
|
-
pulp3_repository_type_support?(repository.content_type)
|
163
|
+
repository ? pulp3_repository_type_support?(repository.try(:content_type)) : false
|
147
164
|
end
|
148
165
|
|
149
166
|
def pulp2_preferred_for_type?(repository_type)
|
@@ -204,11 +221,11 @@ module Katello
|
|
204
221
|
end
|
205
222
|
|
206
223
|
def pulp_mirror?
|
207
|
-
self.has_feature?
|
224
|
+
self.has_feature?(PULP_NODE_FEATURE) || self.setting(SmartProxy::PULP3_FEATURE, 'mirror')
|
208
225
|
end
|
209
226
|
|
210
|
-
def
|
211
|
-
self.has_feature?
|
227
|
+
def pulp_primary?
|
228
|
+
self.has_feature?(PULP_FEATURE) || self.setting(SmartProxy::PULP3_FEATURE, 'mirror') == false
|
212
229
|
end
|
213
230
|
|
214
231
|
def supported_pulp_types
|
@@ -234,14 +251,14 @@ module Katello
|
|
234
251
|
|
235
252
|
#deprecated methods
|
236
253
|
alias_method :pulp_node, :pulp_api
|
237
|
-
alias_method :default_capsule?, :
|
254
|
+
alias_method :default_capsule?, :pulp_primary?
|
238
255
|
|
239
256
|
def associate_organizations
|
240
|
-
self.organizations = Organization.all if self.
|
257
|
+
self.organizations = Organization.all if self.pulp_primary?
|
241
258
|
end
|
242
259
|
|
243
260
|
def associate_default_locations
|
244
|
-
return unless self.
|
261
|
+
return unless self.pulp_primary?
|
245
262
|
['puppet_content', 'subscribed_hosts'].each do |type|
|
246
263
|
default_location = ::Location.unscoped.find_by_title(
|
247
264
|
::Setting[:"default_location_#{type}"])
|
@@ -261,7 +278,7 @@ module Katello
|
|
261
278
|
end
|
262
279
|
|
263
280
|
def associate_lifecycle_environments
|
264
|
-
self.lifecycle_environments = Katello::KTEnvironment.all if self.
|
281
|
+
self.lifecycle_environments = Katello::KTEnvironment.all if self.pulp_primary?
|
265
282
|
end
|
266
283
|
|
267
284
|
def add_lifecycle_environment(environment)
|
@@ -52,7 +52,7 @@ module Katello
|
|
52
52
|
scoped_search :relation => :activation_keys, :on => :name, :rename => :activation_key, :complete_value => true, :ext_method => :find_by_activation_key
|
53
53
|
scoped_search :relation => :activation_keys, :on => :id, :rename => :activation_key_id, :complete_value => true, :ext_method => :find_by_activation_key_id,
|
54
54
|
:only_explicit => true, :validator => ScopedSearch::Validators::INTEGER
|
55
|
-
scoped_search :on => :hypervisor, :relation => :subscription_facet, :complete_value =>
|
55
|
+
scoped_search :on => :hypervisor, :relation => :subscription_facet, :complete_value => true
|
56
56
|
scoped_search :on => :name, :relation => :hypervisor_host, :complete_value => true, :rename => :hypervisor_host, :ext_method => :find_by_hypervisor_host
|
57
57
|
scoped_search :on => :name, :relation => :subscriptions, :rename => :subscription_name, :complete_value => true, :ext_method => :find_by_subscription_name
|
58
58
|
scoped_search :on => :id, :relation => :pools, :rename => :subscription_id, :complete_value => true, :ext_method => :find_by_subscription_id, :only_explicit => true
|
@@ -79,7 +79,7 @@ module Katello
|
|
79
79
|
scoped_search :on => :name, :complete_value => true
|
80
80
|
scoped_search :on => :organization_id, :complete_value => true, :only_explicit => true, :validator => ScopedSearch::Validators::INTEGER
|
81
81
|
scoped_search :on => :label, :complete_value => true
|
82
|
-
scoped_search :on => :composite, :complete_value =>
|
82
|
+
scoped_search :on => :composite, :complete_value => true
|
83
83
|
|
84
84
|
def self.in_environment(env)
|
85
85
|
joins(:content_view_environments).
|
@@ -37,7 +37,7 @@ module Katello
|
|
37
37
|
self.package_rules.each do |rule|
|
38
38
|
package_filenames.concat(query_rpms(repo, rule))
|
39
39
|
end
|
40
|
-
|
40
|
+
package_filenames.concat(repo.packages_without_errata.map(&:filename)) if self.original_packages
|
41
41
|
rpms = Rpm.in_repositories(repo)
|
42
42
|
rpms.where(filename: package_filenames).where(:modular => false).pluck(:pulp_id).flatten.uniq
|
43
43
|
end
|
@@ -22,6 +22,9 @@ module Katello
|
|
22
22
|
has_many :triggered_histories, :class_name => "Katello::ContentViewHistory", :dependent => :destroy,
|
23
23
|
:inverse_of => :triggered_by, :foreign_key => :triggered_by_id
|
24
24
|
|
25
|
+
has_many :export_histories, :class_name => "Katello::ContentViewVersionExportHistory", :dependent => :destroy,
|
26
|
+
:inverse_of => :content_view_version, :foreign_key => :content_view_version_id
|
27
|
+
|
25
28
|
has_many :repositories, :class_name => "Katello::Repository", :dependent => :destroy
|
26
29
|
has_many :content_view_puppet_environments, :class_name => "Katello::ContentViewPuppetEnvironment",
|
27
30
|
:dependent => :destroy
|
@@ -41,7 +44,6 @@ module Katello
|
|
41
44
|
has_many :composites, :through => :content_view_version_composites, :source => :composite_version,
|
42
45
|
:class_name => "Katello::ContentViewVersion", :inverse_of => :components
|
43
46
|
has_many :published_in_composite_content_views, through: :composites, source: :content_view
|
44
|
-
|
45
47
|
delegate :default, :default?, to: :content_view
|
46
48
|
|
47
49
|
validates_lengths_from_database
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Katello
|
2
|
+
class ContentViewVersionExportHistory < Katello::Model
|
3
|
+
include Authorization::ContentViewVersionExportHistory
|
4
|
+
|
5
|
+
belongs_to :content_view_version, :class_name => "Katello::ContentViewVersion", :inverse_of => :export_histories
|
6
|
+
validates_lengths_from_database
|
7
|
+
validates :content_view_version_id, :presence => true
|
8
|
+
validates :destination_server, :presence => true, :uniqueness => { :scope => [:content_view_version_id, :destination_server, :path] }
|
9
|
+
|
10
|
+
scope :with_organization_id, ->(organization_id) do
|
11
|
+
where(:content_view_version_id => ContentViewVersion.with_organization_id(organization_id))
|
12
|
+
end
|
13
|
+
|
14
|
+
scope :with_content_view_id, ->(cv_id) do
|
15
|
+
where(:content_view_version_id => ContentViewVersion.where(content_view_id: cv_id))
|
16
|
+
end
|
17
|
+
|
18
|
+
scoped_search :on => :content_view_id, :relation => :content_view_version, :validator => ScopedSearch::Validators::INTEGER, :only_explicit => true
|
19
|
+
scoped_search :on => :content_view_version_id, :only_explicit => true, :validator => ScopedSearch::Validators::INTEGER
|
20
|
+
scoped_search :on => :id, :only_explicit => true, :validator => ScopedSearch::Validators::INTEGER
|
21
|
+
end
|
22
|
+
end
|