katello 3.18.0.rc1 → 4.0.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/controllers/katello/api/rhsm/candlepin_dynflow_proxy_controller.rb +0 -19
- data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +1 -3
- data/app/controllers/katello/api/v2/api_controller.rb +1 -2
- data/app/controllers/katello/api/v2/capsule_content_controller.rb +2 -2
- data/app/controllers/katello/api/v2/content_credentials_controller.rb +24 -24
- data/app/controllers/katello/api/v2/content_export_incrementals_controller.rb +98 -0
- data/app/controllers/katello/api/v2/content_exports_controller.rb +88 -0
- data/app/controllers/katello/api/v2/content_imports_controller.rb +59 -0
- data/app/controllers/katello/api/v2/content_view_filters_controller.rb +16 -7
- data/app/controllers/katello/api/v2/content_view_versions_controller.rb +57 -92
- data/app/controllers/katello/api/v2/content_views_controller.rb +12 -3
- data/app/controllers/katello/api/v2/host_debs_controller.rb +1 -0
- data/app/controllers/katello/api/v2/host_errata_controller.rb +2 -2
- data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +2 -3
- data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +20 -7
- data/app/controllers/katello/api/v2/products_bulk_actions_controller.rb +1 -1
- data/app/controllers/katello/api/v2/products_controller.rb +9 -9
- data/app/controllers/katello/api/v2/repositories_controller.rb +5 -19
- data/app/controllers/katello/api/v2/repository_sets_controller.rb +24 -14
- data/app/controllers/katello/api/v2/simple_content_access_controller.rb +34 -0
- data/app/controllers/katello/api/v2/subscriptions_controller.rb +1 -1
- data/app/controllers/katello/api/v2/upstream_subscriptions_controller.rb +8 -4
- data/app/controllers/katello/concerns/api/v2/authorization.rb +10 -0
- data/app/controllers/katello/concerns/api/v2/bulk_hosts_extensions.rb +22 -18
- data/app/controllers/katello/concerns/authorization/api/v2/content_views_controller.rb +1 -1
- data/app/controllers/katello/concerns/registration_controller_extensions.rb +16 -0
- data/app/helpers/katello/sync_management_helper.rb +0 -2
- data/app/lib/actions/candlepin/environment/create.rb +1 -1
- data/app/lib/actions/candlepin/environment/set_content.rb +1 -1
- data/app/lib/actions/helpers/smart_proxy_sync_history_helper.rb +24 -0
- data/app/lib/actions/katello/activation_key/create.rb +9 -11
- data/app/lib/actions/katello/applicability/hosts/bulk_generate.rb +6 -2
- data/app/lib/actions/katello/capsule_content/sync.rb +8 -8
- data/app/lib/actions/katello/capsule_content/sync_capsule.rb +31 -8
- data/app/lib/actions/katello/check_matching_content.rb +17 -0
- data/app/lib/actions/katello/content_view/environment_create.rb +6 -8
- data/app/lib/actions/katello/content_view/promote_to_environment.rb +1 -1
- data/app/lib/actions/katello/content_view/publish.rb +6 -5
- data/app/lib/actions/katello/content_view_version/import.rb +5 -11
- data/app/lib/actions/katello/content_view_version/import_library.rb +17 -0
- data/app/lib/actions/katello/content_view_version/incremental_update.rb +30 -10
- data/app/lib/actions/katello/host/hypervisors_update.rb +4 -4
- data/app/lib/actions/katello/host/update_system_purpose.rb +1 -1
- data/app/lib/actions/katello/host/upload_package_profile.rb +3 -1
- data/app/lib/actions/katello/host/upload_profiles.rb +8 -6
- data/app/lib/actions/katello/organization/create.rb +3 -5
- data/app/lib/actions/katello/organization/destroy.rb +1 -1
- data/app/lib/actions/katello/organization/manifest_delete.rb +3 -5
- data/app/lib/actions/katello/organization/manifest_import.rb +1 -1
- data/app/lib/actions/katello/organization/manifest_refresh.rb +1 -1
- data/app/lib/actions/katello/repository/check_matching_content.rb +3 -1
- data/app/lib/actions/katello/repository/clone_contents.rb +8 -11
- data/app/lib/actions/katello/repository/create.rb +0 -8
- data/app/lib/actions/katello/repository/filtered_index_content.rb +3 -0
- data/app/lib/actions/katello/repository/import_upload.rb +2 -0
- data/app/lib/actions/katello/repository/index_content.rb +1 -0
- data/app/lib/actions/katello/repository/multi_clone_contents.rb +9 -12
- data/app/lib/actions/katello/repository/remove_content.rb +1 -1
- data/app/lib/actions/katello/repository/sync.rb +3 -1
- data/app/lib/actions/katello/repository/update.rb +1 -8
- data/app/lib/actions/katello/repository/upload_files.rb +1 -0
- data/app/lib/actions/middleware/execute_if_contents_changed.rb +4 -1
- data/app/lib/actions/middleware/record_smart_proxy_sync_history.rb +35 -0
- data/app/lib/actions/pulp/consumer/sync_capsule.rb +4 -2
- data/app/lib/actions/pulp/orchestration/repository/refresh_repos.rb +0 -6
- data/app/lib/actions/pulp/repository/distributor_publish.rb +1 -1
- data/app/lib/actions/pulp3/abstract_async_task.rb +1 -0
- data/app/lib/actions/pulp3/capsule_content/refresh_distribution.rb +3 -3
- data/app/lib/actions/pulp3/capsule_content/sync.rb +1 -0
- data/app/lib/actions/pulp3/content_migration.rb +10 -0
- data/app/lib/actions/pulp3/content_migration_presenter.rb +59 -0
- data/app/lib/actions/pulp3/content_view/delete_repository_references.rb +1 -1
- data/app/lib/actions/pulp3/content_view_version/export.rb +6 -1
- data/app/lib/actions/pulp3/import_migration.rb +6 -1
- data/app/lib/actions/pulp3/orchestration/content_view_version/copy_version_units_to_library.rb +2 -1
- data/app/lib/actions/pulp3/orchestration/content_view_version/export.rb +30 -9
- data/app/lib/actions/pulp3/orchestration/content_view_version/export_library.rb +60 -0
- data/app/lib/actions/pulp3/orchestration/content_view_version/import.rb +0 -4
- data/app/lib/actions/pulp3/orchestration/repository/generate_metadata.rb +4 -1
- data/app/lib/actions/pulp3/orchestration/repository/import_upload.rb +16 -3
- data/app/lib/actions/pulp3/orchestration/repository/refresh_repos.rb +1 -6
- data/app/lib/actions/pulp3/repository/copy_content.rb +1 -1
- data/app/lib/actions/pulp3/repository/delete.rb +1 -1
- data/app/lib/actions/pulp3/repository/save_version.rb +1 -1
- data/app/lib/actions/pulp3/repository/upload_tag.rb +18 -0
- data/app/lib/katello/concerns/base_template_scope_extensions.rb +8 -0
- data/app/lib/katello/event_daemon/monitor.rb +53 -0
- data/app/lib/katello/event_daemon/runner.rb +99 -0
- data/app/lib/katello/logging.rb +32 -0
- data/app/lib/katello/messaging/connection.rb +1 -7
- data/app/lib/katello/validators/content_view_puppet_module_validator.rb +1 -1
- data/app/models/katello/activation_key.rb +2 -2
- data/app/models/katello/authorization/content_view_filter.rb +15 -0
- data/app/models/katello/authorization/content_view_version.rb +25 -2
- data/app/models/katello/authorization/content_view_version_export_history.rb +1 -1
- data/app/models/katello/authorization/organization.rb +8 -0
- data/app/models/katello/candlepin/repository_mapper.rb +1 -1
- data/app/models/katello/concerns/operatingsystem_extensions.rb +2 -0
- data/app/models/katello/concerns/organization_extensions.rb +2 -2
- data/app/models/katello/concerns/pulp_database_unit.rb +7 -0
- data/app/models/katello/concerns/redhat_extensions.rb +2 -2
- data/app/models/katello/concerns/smart_proxy_extensions.rb +33 -5
- data/app/models/katello/content_migration_progress.rb +4 -0
- data/app/models/katello/content_view.rb +35 -5
- data/app/models/katello/content_view_environment.rb +2 -2
- data/app/models/katello/content_view_filter.rb +5 -0
- data/app/models/katello/content_view_history.rb +2 -1
- data/app/models/katello/content_view_package_filter.rb +1 -1
- data/app/models/katello/content_view_puppet_environment.rb +2 -2
- data/app/models/katello/content_view_puppet_module.rb +8 -0
- data/app/models/katello/content_view_repository.rb +13 -1
- data/app/models/katello/content_view_version.rb +2 -1
- data/app/models/katello/content_view_version_export_history.rb +26 -1
- data/app/models/katello/erratum.rb +3 -1
- data/app/models/katello/glue/candlepin/pool.rb +2 -0
- data/app/models/katello/glue/pulp/repo.rb +0 -6
- data/app/models/katello/glue/pulp/repos.rb +1 -22
- data/app/models/katello/host/subscription_facet.rb +4 -0
- data/app/models/katello/ping.rb +11 -6
- data/app/models/katello/pool.rb +5 -0
- data/app/models/katello/product.rb +3 -3
- data/app/models/katello/repository.rb +36 -3
- data/app/models/katello/smart_proxy_sync_history.rb +8 -0
- data/app/models/katello/subscription_status.rb +3 -2
- data/app/presenters/katello/host_subscription_presenter.rb +3 -4
- data/app/presenters/katello/host_subscriptions_presenter.rb +24 -0
- data/app/services/katello/applicability/applicable_content_helper.rb +44 -15
- data/app/services/katello/candlepin_event_listener.rb +11 -19
- data/app/services/katello/event_monitor/poller_thread.rb +2 -11
- data/app/services/katello/pulp/smart_proxy_repository.rb +0 -15
- data/app/services/katello/pulp3/api/docker.rb +4 -0
- data/app/services/katello/pulp3/content_view_version/export.rb +122 -6
- data/app/services/katello/pulp3/content_view_version/import.rb +37 -22
- data/app/services/katello/pulp3/content_view_version/import_export_common.rb +6 -16
- data/app/services/katello/pulp3/content_view_version/import_validator.rb +84 -0
- data/app/services/katello/pulp3/docker_manifest.rb +1 -0
- data/app/services/katello/pulp3/docker_tag.rb +1 -0
- data/app/services/katello/pulp3/migration.rb +51 -10
- data/app/services/katello/pulp3/repository.rb +13 -4
- data/app/services/katello/pulp3/repository/docker.rb +5 -0
- data/app/services/katello/pulp3/repository/yum.rb +15 -10
- data/app/services/katello/pulp3/task.rb +7 -3
- data/app/services/katello/pulp3/task_group.rb +10 -0
- data/app/services/katello/repository_type.rb +3 -2
- data/app/services/katello/smart_proxy_helper.rb +9 -0
- data/app/views/foreman/hosts/_registration.html.erb +12 -0
- data/app/views/foreman/smart_proxies/_content_tab.html.erb +4 -47
- data/app/views/foreman/smart_proxies/show.html.erb +1 -1
- data/app/views/katello/api/v2/capsule_content/sync_status.json.rabl +22 -25
- data/app/views/katello/api/v2/content_view_version_export_histories/show.json.rabl +1 -0
- data/app/views/katello/api/v2/content_views/base.json.rabl +1 -0
- data/app/views/katello/api/v2/content_views/show.json.rabl +6 -0
- data/app/views/katello/api/v2/organizations/show.json.rabl +7 -9
- data/app/views/katello/layouts/react.html.erb +3 -2
- data/app/views/overrides/activation_keys/_host_tab_pane.html.erb +1 -5
- data/app/views/overrides/organizations/_edit_override.html.erb +1 -4
- data/app/views/overrides/smart_proxies/_environment_tab.html.erb +1 -1
- data/app/views/overrides/smart_proxies/_environment_tab_pane.html.erb +1 -1
- data/config/katello.yaml.example +0 -3
- data/config/routes/api/v2.rb +31 -13
- data/db/migrate/20150930183738_migrate_content_hosts.rb +1 -1
- data/db/migrate/20191204214919_add_content_view_version_counts.rb +0 -1
- data/db/migrate/20200514092553_move_katello_fields_from_hostgroups.katello.rb +5 -2
- data/db/migrate/20200929200357_create_katello_smart_proxy_sync_history.rb +13 -0
- data/db/migrate/20201021150008_add_import_only_to_katello_content_view.rb +5 -0
- data/db/migrate/20201119211133_pulp3_migration_progress.rb +9 -0
- data/db/migrate/20210119162528_delete_puppet_and_ostree_repos.rb +56 -0
- data/db/migrate/20210128231228_add_type_and_from_cvv_to_cvv_export_history.rb +14 -0
- data/db/migrate/20210201163238_migrate_background_download_policy_to_migrate.rb +7 -0
- data/db/seeds.d/104-proxy.rb +1 -1
- data/db/seeds.d/111-upgrade_tasks.rb +2 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/capsule-content/capsule-content.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/common/views/katello-agent-notice.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-system-purpose-modal.html +35 -40
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-host-register-os-client.directive.js +17 -0
- 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-hosts/views/content-hosts.html +2 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register-client.html +12 -5
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register-deb-client.html +38 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register-oracle-client.html +5 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register-sles-client.html +28 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register.html +14 -11
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-views.controller.js +6 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-activation-keys.controller.js +8 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-content-hosts.controller.js +9 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-details.controller.js +12 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-filter-details.html +2 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-details.html +7 -7
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-info.html +7 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-publish.html +4 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/new/content-view-new.controller.js +17 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/new/views/content-view-new.html +16 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/views/content-views.html +5 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +78 -7
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de.po +17 -20
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/es.po +17 -24
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/fr.po +1292 -1170
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/it.po +17 -20
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ja.po +858 -807
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ko.po +18 -19
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt_BR.po +17 -24
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ru.po +17 -18
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_CN.po +986 -971
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_TW.po +19 -20
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/translations.js +9 -9
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +2 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/download-policy.service.js +0 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repository-types.service.js +8 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.controller.js +2 -2
- data/lib/katello/engine.rb +6 -6
- data/lib/katello/middleware/event_daemon.rb +1 -1
- data/lib/katello/permission_creator.rb +35 -14
- data/lib/katello/plugin.rb +8 -3
- data/lib/katello/tasks/delete_orphaned_content.rake +1 -3
- data/lib/katello/tasks/jenkins.rake +1 -1
- data/lib/katello/tasks/pulp3_content_switchover.rake +1 -1
- data/lib/katello/tasks/pulp3_migration.rake +18 -6
- data/lib/katello/tasks/pulp3_migration_abort.rake +22 -0
- data/lib/katello/tasks/pulp3_migration_stats.rake +28 -8
- data/lib/katello/tasks/pulp3_post_migration_check.rake +1 -3
- data/lib/katello/tasks/receptor/extract_orgs.rake +1 -1
- data/lib/katello/tasks/reimport.rake +1 -1
- data/lib/katello/tasks/repository.rake +3 -5
- data/lib/katello/tasks/upgrades/4.0/remove_ostree_puppet_content.rake +16 -0
- data/lib/katello/version.rb +1 -1
- data/lib/proxy_api/container_gateway.rb +21 -0
- data/locale/action_names.rb +51 -51
- data/locale/bn/katello.edit.po +0 -0
- data/locale/bn/katello.po +136 -51
- data/locale/cs/katello.edit.po +0 -0
- data/locale/cs/katello.po +136 -49
- data/locale/de/katello.edit.po +0 -0
- data/locale/de/katello.po +136 -48
- data/locale/en/katello.edit.po +0 -0
- data/locale/en/katello.po +136 -48
- data/locale/es/katello.edit.po +0 -0
- data/locale/es/katello.po +136 -48
- data/locale/fr/katello.edit.po +0 -0
- data/locale/fr/katello.po +136 -48
- data/locale/gu/katello.edit.po +0 -0
- data/locale/gu/katello.po +136 -51
- data/locale/hi/katello.edit.po +0 -0
- data/locale/hi/katello.po +136 -51
- data/locale/it/katello.edit.po +0 -0
- data/locale/it/katello.po +136 -48
- data/locale/ja/katello.edit.po +0 -0
- data/locale/ja/katello.po +136 -48
- data/locale/katello.pot +941 -767
- data/locale/kn/katello.edit.po +0 -0
- data/locale/kn/katello.po +136 -51
- data/locale/ko/katello.edit.po +0 -0
- data/locale/ko/katello.po +136 -48
- data/locale/mr/katello.edit.po +0 -0
- data/locale/mr/katello.po +136 -51
- data/locale/or/katello.edit.po +0 -0
- data/locale/or/katello.po +136 -51
- data/locale/pa/katello.edit.po +0 -0
- data/locale/pa/katello.po +136 -51
- data/locale/pt/katello.edit.po +0 -0
- data/locale/pt/katello.po +136 -51
- data/locale/pt_BR/katello.edit.po +0 -0
- data/locale/pt_BR/katello.po +136 -48
- data/locale/ru/katello.edit.po +0 -0
- data/locale/ru/katello.po +136 -48
- data/locale/ta/katello.edit.po +0 -0
- data/locale/ta/katello.po +136 -51
- data/locale/te/katello.edit.po +0 -0
- data/locale/te/katello.po +136 -51
- data/locale/zh_CN/katello.edit.po +0 -0
- data/locale/zh_CN/katello.po +136 -48
- data/locale/zh_TW/katello.edit.po +0 -0
- data/locale/zh_TW/katello.po +136 -48
- data/package.json +1 -1
- data/webpack/__mocks__/foremanReact/Root/Context/ForemanContext.js +0 -1
- data/webpack/__mocks__/foremanReact/components/Pagination/PaginationHooks.js +2 -0
- data/webpack/__mocks__/foremanReact/components/common/dates/LongDateTime.js +5 -0
- data/webpack/{scenes/ContentViews/Details/Repositories → components/SelectableDropdown}/SelectableDropdown.js +20 -3
- data/webpack/components/SelectableDropdown/__tests__/SelectableDropdown.test.js +45 -0
- data/webpack/components/SelectableDropdown/index.js +3 -0
- data/webpack/components/Table/TableWrapper.js +2 -1
- data/webpack/components/Table/helpers.js +14 -0
- data/webpack/components/TypeAhead/TypeAhead.js +2 -1
- data/webpack/components/TypeAhead/pf3Search/TypeAheadSearch.js +2 -1
- data/webpack/components/TypeAhead/pf4Search/TypeAheadSearch.js +0 -1
- data/webpack/containers/Application/overrides.scss +6 -0
- data/webpack/index.js +6 -0
- data/webpack/redux/actions/RedHatRepositories/helpers.js +5 -5
- data/webpack/scenes/ContentViews/ContentViewsActions.js +31 -2
- data/webpack/scenes/ContentViews/ContentViewsConstants.js +5 -1
- data/webpack/scenes/ContentViews/Copy/ContentViewCopySelectors.js +16 -0
- data/webpack/scenes/ContentViews/Copy/CopyContentViewForm.js +77 -0
- data/webpack/scenes/ContentViews/Copy/CopyContentViewModal.js +44 -0
- data/webpack/scenes/ContentViews/Copy/__tests__/contentViewCopyResult.fixtures.json +42 -0
- data/webpack/scenes/ContentViews/Copy/__tests__/copyContentView.test.js +39 -0
- data/webpack/scenes/ContentViews/Copy/index.js +4 -0
- data/webpack/scenes/ContentViews/Create/ContentViewCreateSelectors.js +16 -0
- data/webpack/scenes/ContentViews/Create/ContentViewFormComponents.js +58 -0
- data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +175 -0
- data/webpack/scenes/ContentViews/Create/CreateContentViewModal.js +27 -0
- data/webpack/scenes/ContentViews/Create/__tests__/contentViewCreateResult.fixtures.json +42 -0
- data/webpack/scenes/ContentViews/Create/__tests__/createContentView.test.js +92 -0
- data/webpack/scenes/ContentViews/Create/index.js +4 -0
- data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +16 -0
- data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +20 -1
- data/webpack/scenes/ContentViews/Details/ContentViewDetails.js +17 -7
- data/webpack/scenes/ContentViews/Details/ContentViewInfo.js +19 -13
- data/webpack/scenes/ContentViews/Details/Filters/ContentType.js +40 -0
- data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +124 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.fixtures.json +134 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.test.js +92 -0
- data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +44 -25
- data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewDetailRepos.test.js +17 -7
- data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetail.test.js +24 -0
- data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +53 -3
- data/webpack/scenes/ContentViews/Table/tableDataGenerator.js +4 -3
- data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +41 -0
- data/webpack/scenes/ContentViews/helpers.js +13 -0
- data/webpack/scenes/SmartProxy/Content.js +17 -0
- data/webpack/scenes/SmartProxy/SmartProxyContentActions.js +11 -0
- data/webpack/scenes/SmartProxy/SmartProxyContentConstants.js +3 -0
- data/webpack/scenes/SmartProxy/SmartProxyContentSelectors.js +16 -0
- data/webpack/scenes/SmartProxy/SmartProxyContentTable.js +152 -0
- data/webpack/scenes/SmartProxy/__tests__/SmartProxyContentResult.fixtures.json +140 -0
- data/webpack/scenes/SmartProxy/__tests__/SmartProxyContentTest.js +38 -0
- data/webpack/scenes/SmartProxy/index.js +4 -0
- data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +13 -11
- data/webpack/scenes/Subscriptions/Manifest/ManifestActions.js +3 -3
- data/webpack/scenes/Subscriptions/Manifest/__tests__/ManifestActions.test.js +2 -2
- data/webpack/scenes/Subscriptions/Manifest/__tests__/SimpleContentAccess.test.js +2 -2
- data/webpack/test-utils/react-testing-lib-wrapper.js +8 -2
- data/webpack/utils/helpers.js +3 -0
- metadata +110 -31
- data/app/controllers/katello/api/v2/gpg_keys_controller.rb +0 -114
- data/app/overrides/disable_turbolinks_on_proxies_index.rb +0 -5
- data/app/services/katello/event_daemon.rb +0 -135
- data/app/services/katello/pulp/content_counts_calculator.rb +0 -60
- data/lib/katello/tasks/common.rake +0 -7
- data/lib/katello/tasks/reports.rake +0 -4
- data/lib/katello/tasks/upgrades/3.10/update_gpg_key_urls.rake +0 -32
- data/webpack/__mocks__/foremanReact/components/common/Fill/GlobalFill.js +0 -3
- data/webpack/components/TypeAhead/pf4Search/TypeAheadSearch.scss +0 -5
- data/webpack/scenes/ContentViews/Table/actionResolver.js +0 -28
@@ -4,7 +4,7 @@ module Katello
|
|
4
4
|
|
5
5
|
before_action :find_activation_key, :only => [:index]
|
6
6
|
before_action :find_organization, :only => [:create, :index, :auto_complete_search]
|
7
|
-
before_action :
|
7
|
+
before_action :find_authorized_katello_resource, :only => [:update, :destroy, :sync]
|
8
8
|
before_action :find_organization_from_product, :only => [:update]
|
9
9
|
before_action :authorize_gpg_key, :only => [:update, :create]
|
10
10
|
before_action :authorize_ssl_ca_cert, :only => [:update, :create]
|
@@ -131,14 +131,14 @@ module Katello
|
|
131
131
|
protected
|
132
132
|
|
133
133
|
def find_product(options = {})
|
134
|
-
@product = Product.includes(options[:includes] || []).find_by(:id => params[:id])
|
135
|
-
|
134
|
+
@product = Product.includes(options[:includes] || []).readable.find_by(:id => params[:id])
|
135
|
+
throw_resource_not_found(name: 'product', id: params[:id]) if @product.nil?
|
136
136
|
end
|
137
137
|
|
138
138
|
def find_activation_key
|
139
139
|
if params[:activation_key_id]
|
140
|
-
@activation_key = ActivationKey.find_by(:id => params[:activation_key_id])
|
141
|
-
|
140
|
+
@activation_key = ActivationKey.readable.find_by(:id => params[:activation_key_id])
|
141
|
+
throw_resource_not_found(name: 'Activation Key', id: params[:activation_key_id]) if @activation_key.nil?
|
142
142
|
@organization = @activation_key.organization
|
143
143
|
end
|
144
144
|
end
|
@@ -151,7 +151,7 @@ module Katello
|
|
151
151
|
gpg_key_id = product_params[:gpg_key_id]
|
152
152
|
if gpg_key_id
|
153
153
|
gpg_key = GpgKey.readable.where(:id => gpg_key_id, :organization_id => @organization).first
|
154
|
-
|
154
|
+
throw_resource_not_found(name: 'gpg key', id: gpg_key_id) if gpg_key.nil?
|
155
155
|
end
|
156
156
|
end
|
157
157
|
|
@@ -159,7 +159,7 @@ module Katello
|
|
159
159
|
ssl_ca_cert_id = product_params[:ssl_ca_cert_id]
|
160
160
|
if ssl_ca_cert_id
|
161
161
|
ssl_ca_cert = GpgKey.readable.where(:id => ssl_ca_cert_id, :organization_id => @organization).first
|
162
|
-
|
162
|
+
throw_resource_not_found(name: 'ssl ca cert', id: ssl_ca_cert_id) if ssl_ca_cert.nil?
|
163
163
|
end
|
164
164
|
end
|
165
165
|
|
@@ -167,7 +167,7 @@ module Katello
|
|
167
167
|
ssl_client_cert_id = product_params[:ssl_client_cert_id]
|
168
168
|
if ssl_client_cert_id
|
169
169
|
ssl_client_cert = GpgKey.readable.where(:id => ssl_client_cert_id, :organization_id => @organization).first
|
170
|
-
|
170
|
+
throw_resource_not_found(name: 'ssl client cert', id: ssl_client_cert_id) if ssl_client_cert.nil?
|
171
171
|
end
|
172
172
|
end
|
173
173
|
|
@@ -175,7 +175,7 @@ module Katello
|
|
175
175
|
ssl_client_key_id = product_params[:ssl_client_key_id]
|
176
176
|
if ssl_client_key_id
|
177
177
|
ssl_client_key = GpgKey.readable.where(:id => ssl_client_key_id, :organization_id => @organization).first
|
178
|
-
|
178
|
+
throw_resource_not_found(name: 'ssl client key', id: ssl_client_key_id) if ssl_client_key.nil?
|
179
179
|
end
|
180
180
|
end
|
181
181
|
|
@@ -25,7 +25,6 @@ module Katello
|
|
25
25
|
before_action(:only => [:create, :update]) { find_content_credential CONTENT_CREDENTIAL_SSL_CA_CERT_TYPE }
|
26
26
|
before_action(:only => [:create, :update]) { find_content_credential CONTENT_CREDENTIAL_SSL_CLIENT_CERT_TYPE }
|
27
27
|
before_action(:only => [:create, :update]) { find_content_credential CONTENT_CREDENTIAL_SSL_CLIENT_KEY_TYPE }
|
28
|
-
before_action :check_ignore_global_proxy, :only => [ :update, :create ]
|
29
28
|
skip_before_action :authorize, :only => [:gpg_key_content]
|
30
29
|
skip_before_action :check_media_type, :only => [:upload_content]
|
31
30
|
|
@@ -45,7 +44,7 @@ module Katello
|
|
45
44
|
param :checksum_type, String, :desc => N_("Checksum of the repository, currently 'sha1' & 'sha256' are supported")
|
46
45
|
param :docker_upstream_name, String, :desc => N_("Name of the upstream docker repository")
|
47
46
|
param :docker_tags_whitelist, Array, :desc => N_("Comma-separated list of tags to sync for Container Image repository")
|
48
|
-
param :download_policy, ["immediate", "on_demand"
|
47
|
+
param :download_policy, ["immediate", "on_demand"], :desc => N_("download policy for yum repos (either 'immediate' or 'on_demand')")
|
49
48
|
param :download_concurrency, :number, :desc => N_("Used to determine download concurrency of the repository in pulp3. Use value less than 20. Defaults to 10")
|
50
49
|
param :mirror_on_sync, :bool, :desc => N_("true if this repository when synced has to be mirrored from the source and stale rpms removed")
|
51
50
|
param :verify_ssl_on_sync, :bool, :desc => N_("if true, Katello will verify the upstream url's SSL certifcates are signed by a trusted CA")
|
@@ -56,11 +55,11 @@ module Katello
|
|
56
55
|
param :deb_releases, String, :desc => N_("comma-separated list of releases to be synced from deb-archive")
|
57
56
|
param :deb_components, String, :desc => N_("comma-separated list of repo components to be synced from deb-archive")
|
58
57
|
param :deb_architectures, String, :desc => N_("comma-separated list of architectures to be synced from deb-archive")
|
59
|
-
param :ignore_global_proxy, :bool, :desc => N_("if true, will ignore the globally configured proxy when syncing"), :deprecated => true
|
60
58
|
param :ignorable_content, Array, :desc => N_("List of content units to ignore while syncing a yum repository. Must be subset of %s") % RootRepository::IGNORABLE_CONTENT_UNIT_TYPES.join(",")
|
61
59
|
param :ansible_collection_requirements, String, :desc => N_("Contents of requirement yaml file to sync from URL")
|
62
60
|
param :http_proxy_policy, ::Katello::RootRepository::HTTP_PROXY_POLICIES, :desc => N_("policies for HTTP proxy for content sync")
|
63
61
|
param :http_proxy_id, :number, :desc => N_("ID of a HTTP Proxy")
|
62
|
+
param :arch, String, :desc => N_("Architecture of content in the repository")
|
64
63
|
end
|
65
64
|
|
66
65
|
def_param_group :repo_create do
|
@@ -95,6 +94,7 @@ module Katello
|
|
95
94
|
param :available_for, String, :desc => N_("interpret specified object to return only Repositories that can be associated with specified object. Only 'content_view' & 'content_view_version' are supported."),
|
96
95
|
:required => false
|
97
96
|
param :with_content, RepositoryTypeManager.enabled_content_types, :desc => N_("only repositories having at least one of the specified content type ex: rpm , erratum")
|
97
|
+
param :download_policy, ::Runcible::Models::YumImporter::DOWNLOAD_POLICIES, :desc => N_("limit to only repositories with this download policy")
|
98
98
|
param_group :search, Api::V2::ApiController
|
99
99
|
add_scoped_search_description_for(Repository)
|
100
100
|
def index
|
@@ -138,6 +138,7 @@ module Katello
|
|
138
138
|
def index_relation_product(query)
|
139
139
|
query = query.joins(:root => :product).where("#{Product.table_name}.organization_id" => @organization) if @organization
|
140
140
|
query = query.joins(:root).where("#{RootRepository.table_name}.product_id" => @product.id) if @product
|
141
|
+
query = query.joins(:root).where("#{RootRepository.table_name}.download_policy" => params[:download_policy]) if params[:download_policy]
|
141
142
|
query
|
142
143
|
end
|
143
144
|
|
@@ -224,10 +225,6 @@ module Katello
|
|
224
225
|
fail HttpErrors::UnprocessableEntity, msg
|
225
226
|
end
|
226
227
|
|
227
|
-
if repo_params['content_type'] == "puppet" || repo_params['content_type'] == "ostree"
|
228
|
-
::Foreman::Deprecation.api_deprecation_warning("Puppet and OSTree will no longer be supported in Katello 4.0")
|
229
|
-
end
|
230
|
-
|
231
228
|
gpg_key = get_content_credential(repo_params, CONTENT_CREDENTIAL_GPG_KEY_TYPE)
|
232
229
|
ssl_ca_cert = get_content_credential(repo_params, CONTENT_CREDENTIAL_SSL_CA_CERT_TYPE)
|
233
230
|
ssl_client_cert = get_content_credential(repo_params, CONTENT_CREDENTIAL_SSL_CLIENT_CERT_TYPE)
|
@@ -493,17 +490,6 @@ module Katello
|
|
493
490
|
params.require(:repository).permit(*keys).to_h.with_indifferent_access
|
494
491
|
end
|
495
492
|
|
496
|
-
def check_ignore_global_proxy
|
497
|
-
if params.key?(:ignore_global_proxy)
|
498
|
-
::Foreman::Deprecation.api_deprecation_warning("The parameter ignore_global_proxy will be removed in a future Katello release. Please update to use the http_proxy_policy parameter.")
|
499
|
-
if ::Foreman::Cast.to_bool(params[:ignore_global_proxy])
|
500
|
-
params[:repository][:http_proxy_policy] = RootRepository::NO_DEFAULT_HTTP_PROXY
|
501
|
-
else
|
502
|
-
params[:repository][:http_proxy_policy] = RootRepository::GLOBAL_DEFAULT_HTTP_PROXY
|
503
|
-
end
|
504
|
-
end
|
505
|
-
end
|
506
|
-
|
507
493
|
def get_content_credential(repo_params, content_type)
|
508
494
|
credential_value = @product.send(content_type)
|
509
495
|
|
@@ -515,7 +501,7 @@ module Katello
|
|
515
501
|
end
|
516
502
|
|
517
503
|
# rubocop:disable Metrics/CyclomaticComplexity
|
518
|
-
def construct_repo_from_params(repo_params)
|
504
|
+
def construct_repo_from_params(repo_params) # rubocop:disable Metrics/AbcSize
|
519
505
|
root = @product.add_repo(repo_params.slice(:label, :name, :description, :url, :content_type, :arch, :unprotected,
|
520
506
|
:gpg_key, :ssl_ca_cert, :ssl_client_cert, :ssl_client_key,
|
521
507
|
:checksum_type, :download_policy, :http_proxy_policy).to_h.with_indifferent_access)
|
@@ -4,8 +4,11 @@ module Katello
|
|
4
4
|
|
5
5
|
include Katello::Concerns::FilteredAutoCompleteSearch
|
6
6
|
|
7
|
-
before_action :
|
7
|
+
before_action :set_readable_product_scope, only: [:index, :show, :available_repositories, :auto_complete_search]
|
8
|
+
before_action :set_editable_product_scope, only: [:enable, :disable]
|
9
|
+
before_action :find_product
|
8
10
|
before_action :custom_product?
|
11
|
+
before_action :find_organization
|
9
12
|
before_action :find_product_content, :except => [:index, :auto_complete_search]
|
10
13
|
|
11
14
|
resource_description do
|
@@ -102,7 +105,8 @@ module Katello
|
|
102
105
|
|
103
106
|
def index_relation
|
104
107
|
if @product.nil?
|
105
|
-
|
108
|
+
authorized_product_contents = Katello::ProductContent.joins(:product).merge(@product_scope)
|
109
|
+
relation = @organization.product_contents.merge(authorized_product_contents).displayable
|
106
110
|
else
|
107
111
|
relation = @product.displayable_product_contents
|
108
112
|
end
|
@@ -125,25 +129,31 @@ module Katello
|
|
125
129
|
if @product.present?
|
126
130
|
@product_content = @product.product_content_by_id(params[:id])
|
127
131
|
else
|
128
|
-
content = Katello::Content.
|
129
|
-
|
132
|
+
content = Katello::Content.where(cp_content_id: params[:id], organization: @organization)
|
133
|
+
authorized_product_contents = Katello::ProductContent.joins(:product).merge(@product_scope)
|
134
|
+
@product_content = authorized_product_contents.joins(:content).merge(content).first
|
135
|
+
@product = @product_content&.product
|
130
136
|
end
|
131
|
-
|
132
|
-
@product = @product_content.product if @product.nil?
|
137
|
+
throw_resource_not_found(name: 'repository set', id: params[:id]) if @product_content.nil?
|
133
138
|
end
|
134
139
|
|
135
|
-
def
|
140
|
+
def find_product
|
136
141
|
if params[:product_id]
|
137
|
-
|
138
|
-
|
139
|
-
@organization = find_organization
|
142
|
+
@product = @product_scope.find_by(id: params[:product_id])
|
143
|
+
throw_resource_not_found(name: 'product', id: params[:product_id]) if @product.nil?
|
140
144
|
end
|
141
145
|
end
|
142
146
|
|
143
|
-
def
|
144
|
-
@
|
145
|
-
|
146
|
-
|
147
|
+
def set_readable_product_scope
|
148
|
+
@product_scope = Katello::Product.readable
|
149
|
+
end
|
150
|
+
|
151
|
+
def set_editable_product_scope
|
152
|
+
@product_scope = Katello::Product.editable
|
153
|
+
end
|
154
|
+
|
155
|
+
def find_organization
|
156
|
+
@organization = @product&.organization || super
|
147
157
|
end
|
148
158
|
|
149
159
|
def custom_product?
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Katello
|
2
|
+
class Api::V2::SimpleContentAccessController < Api::V2::ApiController
|
3
|
+
before_action :find_organization
|
4
|
+
before_action :check_upstream_connection
|
5
|
+
|
6
|
+
resource_description do
|
7
|
+
description "Red Hat subscriptions management platform."
|
8
|
+
api_version 'v2'
|
9
|
+
end
|
10
|
+
|
11
|
+
api :GET, "/organizations/:organization_id/simple_content_access/eligible",
|
12
|
+
N_("Check if the specified organization is eligible for Simple Content Access")
|
13
|
+
def eligible
|
14
|
+
eligible = @organization.upstream_consumer.simple_content_access_eligible?
|
15
|
+
render json: { simple_content_access_eligible: eligible }
|
16
|
+
end
|
17
|
+
|
18
|
+
api :PUT, "/organizations/:organization_id/simple_content_access/enable",
|
19
|
+
N_("Enable simple content access for a manifest")
|
20
|
+
param :organization_id, :number, :desc => N_("Organization ID"), :required => true
|
21
|
+
def enable
|
22
|
+
task = async_task(::Actions::Katello::Organization::SimpleContentAccess::Enable, params[:organization_id])
|
23
|
+
respond_for_async :resource => task
|
24
|
+
end
|
25
|
+
|
26
|
+
api :PUT, "/organizations/:organization_id/simple_content_access/disable",
|
27
|
+
N_("Disable simple content access for a manifest")
|
28
|
+
param :organization_id, :number, :desc => N_("Organization ID"), :required => true
|
29
|
+
def disable
|
30
|
+
task = async_task(::Actions::Katello::Organization::SimpleContentAccess::Disable, params[:organization_id])
|
31
|
+
respond_for_async :resource => task
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -41,7 +41,7 @@ module Katello
|
|
41
41
|
:start_date, :end_date, :available, :quantity, :account_number, :contract_number,
|
42
42
|
:support_level, :ram, :stacking_id, :multi_entitlement, :type, :product_id,
|
43
43
|
:unmapped_guest, :virt_only, :virt_who, :upstream?],
|
44
|
-
['Pool Id', 'Subscription Id', 'Name', '
|
44
|
+
['Pool Id Number', 'Subscription Id', 'Name', 'Pool Id', 'Organization Id',
|
45
45
|
'Sockets', 'Cores', 'Start Date', 'End Date', 'Available', 'Quantity', 'Account Number',
|
46
46
|
'Contract Number', 'Support Level', 'RAM', 'Stacking Id', 'Multi Entitlement', 'Type',
|
47
47
|
'Product Id', 'Unmapped Guest', 'Virt Only', 'Requires Virt Who', 'Upstream'])
|
@@ -2,7 +2,7 @@ module Katello
|
|
2
2
|
class Api::V2::UpstreamSubscriptionsController < Api::V2::ApiController
|
3
3
|
before_action :find_organization
|
4
4
|
before_action :check_upstream_connection
|
5
|
-
|
5
|
+
before_action :deprecated, only: [:simple_content_access_eligible, :enable_simple_content_access, :disable_simple_content_access]
|
6
6
|
resource_description do
|
7
7
|
description "Red Hat subscriptions management platform."
|
8
8
|
api_version 'v2'
|
@@ -78,14 +78,14 @@ module Katello
|
|
78
78
|
end
|
79
79
|
|
80
80
|
api :GET, "/organizations/:organization_id/upstream_subscriptions/simple_content_access/eligible",
|
81
|
-
N_("Check if the specified organization is eligible for Simple Content Access")
|
81
|
+
N_("Check if the specified organization is eligible for Simple Content Access"), :deprecated => true
|
82
82
|
def simple_content_access_eligible
|
83
83
|
eligible = @organization.upstream_consumer.simple_content_access_eligible?
|
84
84
|
render json: { simple_content_access_eligible: eligible }
|
85
85
|
end
|
86
86
|
|
87
87
|
api :PUT, "/organizations/:organization_id/upstream_subscriptions/simple_content_access/enable",
|
88
|
-
N_("Enable simple content access for a manifest")
|
88
|
+
N_("Enable simple content access for a manifest"), :deprecated => true
|
89
89
|
param :organization_id, :number, :desc => N_("Organization ID"), :required => true
|
90
90
|
def enable_simple_content_access
|
91
91
|
task = async_task(::Actions::Katello::Organization::SimpleContentAccess::Enable, params[:organization_id])
|
@@ -93,7 +93,7 @@ module Katello
|
|
93
93
|
end
|
94
94
|
|
95
95
|
api :PUT, "/organizations/:organization_id/upstream_subscriptions/simple_content_access/disable",
|
96
|
-
N_("Disable simple content access for a manifest")
|
96
|
+
N_("Disable simple content access for a manifest"), :deprecated => true
|
97
97
|
param :organization_id, :number, :desc => N_("Organization ID"), :required => true
|
98
98
|
def disable_simple_content_access
|
99
99
|
task = async_task(::Actions::Katello::Organization::SimpleContentAccess::Disable, params[:organization_id])
|
@@ -124,5 +124,9 @@ module Katello
|
|
124
124
|
{ "pool" => pool[:id], "quantity" => pool[:quantity] } if pool
|
125
125
|
end
|
126
126
|
end
|
127
|
+
|
128
|
+
def deprecated
|
129
|
+
::Foreman::Deprecation.api_deprecation_warning("it will be removed in Katello 4.0, Please see /api/v2/simple_content_access")
|
130
|
+
end
|
127
131
|
end
|
128
132
|
end
|
@@ -42,6 +42,16 @@ module Katello
|
|
42
42
|
fail HttpErrors::NotFound, _("Could not find %{name} resource with id %{id}") % {id: id, name: name}
|
43
43
|
end
|
44
44
|
|
45
|
+
def throw_resources_not_found(name:, expected_ids: [])
|
46
|
+
resources = yield
|
47
|
+
found_ids = resources.map(&:id)
|
48
|
+
missing_ids = expected_ids.map(&:to_i) - found_ids
|
49
|
+
|
50
|
+
if missing_ids.any?
|
51
|
+
fail HttpErrors::NotFound, _("Could not find %{name} resources with ids %{ids}") % {ids: missing_ids.join(', '), name: name}
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
45
55
|
def check_association_ids
|
46
56
|
if filtered_associations
|
47
57
|
wrapped_params = params[self._wrapper_options.name]
|
@@ -3,37 +3,41 @@ module Katello
|
|
3
3
|
module Api::V2::BulkHostsExtensions
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
|
+
def bulk_hosts_relation(permission, org)
|
7
|
+
relation = ::Host::Managed.authorized(permission)
|
8
|
+
relation = relation.where(organization: org) if org
|
9
|
+
relation
|
10
|
+
end
|
11
|
+
|
6
12
|
def find_bulk_hosts(permission, bulk_params, restrict_to = nil)
|
7
13
|
#works on a structure of param_group bulk_params and transforms it into a list of systems
|
8
|
-
find_organization
|
9
14
|
bulk_params[:included] ||= {}
|
10
15
|
bulk_params[:excluded] ||= {}
|
11
|
-
@hosts = []
|
12
16
|
|
13
|
-
|
14
|
-
|
15
|
-
|
17
|
+
if bulk_params[:included][:ids].blank? && bulk_params[:included][:search].nil?
|
18
|
+
fail HttpErrors::BadRequest, _("No hosts have been specified.")
|
19
|
+
end
|
20
|
+
|
21
|
+
find_organization
|
22
|
+
@hosts = bulk_hosts_relation(permission, @organization)
|
23
|
+
|
24
|
+
if bulk_params[:included][:ids].present?
|
25
|
+
@hosts = @hosts.where(id: bulk_params[:included][:ids])
|
16
26
|
end
|
17
27
|
|
18
28
|
if bulk_params[:included][:search]
|
19
|
-
search_hosts =
|
20
|
-
|
21
|
-
search_hosts = search_hosts.search_for(bulk_params[:included][:search])
|
22
|
-
if @hosts.any?
|
23
|
-
@hosts = ::Host.where(id: @hosts).or(::Host.where(id: search_hosts))
|
24
|
-
else
|
25
|
-
@hosts = search_hosts
|
26
|
-
end
|
29
|
+
search_hosts = bulk_hosts_relation(permission, @organization).search_for(bulk_params[:included][:search])
|
30
|
+
@hosts = @hosts.merge(search_hosts)
|
27
31
|
end
|
28
32
|
|
29
33
|
@hosts = restrict_to.call(@hosts) if restrict_to
|
30
|
-
@hosts = @hosts.where.not(id: bulk_params[:excluded][:ids]) unless bulk_params[:excluded][:ids].blank?
|
31
34
|
|
32
|
-
if bulk_params[:
|
33
|
-
|
34
|
-
elsif @hosts.empty?
|
35
|
-
fail HttpErrors::Forbidden, _("Action unauthorized to be performed on selected hosts.")
|
35
|
+
if bulk_params[:excluded][:ids].present?
|
36
|
+
@hosts = @hosts.where.not(id: bulk_params[:excluded][:ids])
|
36
37
|
end
|
38
|
+
|
39
|
+
fail HttpErrors::Forbidden, _("Action unauthorized to be performed on selected hosts.") if @hosts.empty?
|
40
|
+
|
37
41
|
@hosts
|
38
42
|
end
|
39
43
|
|
@@ -107,7 +107,7 @@ module Katello
|
|
107
107
|
true
|
108
108
|
end
|
109
109
|
|
110
|
-
def authorize_remove_environments(view, options)
|
110
|
+
def authorize_remove_environments(view, options) # rubocop:disable Metrics/CyclomaticComplexity
|
111
111
|
env_ids = options[:environment_ids]
|
112
112
|
|
113
113
|
return true if env_ids.blank?
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Katello
|
2
|
+
module Concerns
|
3
|
+
module RegistrationControllerExtensions
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
included do
|
7
|
+
before_action :format_activation_key, only: [:create]
|
8
|
+
end
|
9
|
+
|
10
|
+
def format_activation_key
|
11
|
+
return if params[:activation_key].blank?
|
12
|
+
params[:activation_key] = params[:activation_key].split(',').map(&:strip).reject(&:blank?).join(',')
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -35,8 +35,6 @@ module Katello
|
|
35
35
|
module RepoMethods
|
36
36
|
# returns all repos in hash representation with minors and arch children included
|
37
37
|
def collect_repos(products, env, include_feedless = true)
|
38
|
-
Glue::Pulp::Repos.prepopulate! products, env, []
|
39
|
-
|
40
38
|
products.map do |prod|
|
41
39
|
minor_repos, repos_without_minor = collect_minor(prod.repos(env, nil, include_feedless))
|
42
40
|
{ :name => prod.name, :object => prod, :id => prod.id, :type => "product", :repos => repos_without_minor,
|
@@ -9,7 +9,7 @@ module Actions
|
|
9
9
|
:new_content_id => new_content_id)
|
10
10
|
end
|
11
11
|
|
12
|
-
def finalize
|
12
|
+
def finalize # rubocop:disable Metrics/AbcSize
|
13
13
|
content_view = ::Katello::ContentView.find(input[:content_view_id])
|
14
14
|
environment = ::Katello::KTEnvironment.find(input[:environment_id])
|
15
15
|
content_ids = content_view.repos(environment).map(&:content_id).uniq.compact
|