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
@@ -2,9 +2,9 @@ module Katello
|
|
2
2
|
class Api::V2::ContentViewFiltersController < Api::V2::ApiController
|
3
3
|
include Katello::Concerns::FilteredAutoCompleteSearch
|
4
4
|
|
5
|
-
before_action :
|
5
|
+
before_action :find_editable_content_view, :only => [:create, :update, :destroy]
|
6
|
+
before_action :find_readable_content_view, :only => [:show, :index, :auto_complete_search]
|
6
7
|
before_action :find_filter, :except => [:index, :create, :auto_complete_search]
|
7
|
-
|
8
8
|
wrap_parameters :include => (ContentViewFilter.attribute_names + %w(repository_ids))
|
9
9
|
|
10
10
|
api :get, "/content_views/:content_view_id/filters", N_("list filters")
|
@@ -84,18 +84,27 @@ module Katello
|
|
84
84
|
|
85
85
|
private
|
86
86
|
|
87
|
-
def
|
88
|
-
@view = ContentView.
|
87
|
+
def find_readable_content_view
|
88
|
+
@view = ContentView.readable.find_by(id: params[:content_view_id]) if params[:content_view_id]
|
89
|
+
throw_resource_not_found(name: 'content view', id: params[:content_view_id]) if params[:content_view_id] && @view.nil?
|
90
|
+
end
|
91
|
+
|
92
|
+
def find_editable_content_view
|
93
|
+
@view = ContentView.editable.find_by(id: params[:content_view_id]) if params[:content_view_id]
|
94
|
+
throw_resource_not_found(name: 'content view', id: params[:content_view_id]) if params[:content_view_id] && @view.nil?
|
89
95
|
end
|
90
96
|
|
91
97
|
def find_filter
|
92
98
|
if @view
|
93
99
|
@filter = @view.filters.find_by(:id => params[:id])
|
94
|
-
|
100
|
+
elsif params[:action] == 'show'
|
101
|
+
@filter = ContentViewFilter.readable.find_by(id: params[:id])
|
102
|
+
@view = @filter&.content_view
|
95
103
|
else
|
96
|
-
@filter = ContentViewFilter.
|
97
|
-
@view = @filter
|
104
|
+
@filter = ContentViewFilter.editable.find_by(id: params[:id])
|
105
|
+
@view = @filter&.content_view
|
98
106
|
end
|
107
|
+
fail HttpErrors::NotFound, _("Couldn't find ContentViewFilter with id=%s") % params[:id] unless @filter
|
99
108
|
end
|
100
109
|
|
101
110
|
def filter_params
|
@@ -1,11 +1,13 @@
|
|
1
1
|
module Katello
|
2
|
-
# rubocop:disable Metrics/ClassLength
|
3
2
|
class Api::V2::ContentViewVersionsController < Api::V2::ApiController
|
4
3
|
include Concerns::Api::V2::BulkHostsExtensions
|
5
4
|
include Katello::Concerns::FilteredAutoCompleteSearch
|
6
5
|
|
7
|
-
before_action :
|
8
|
-
before_action :
|
6
|
+
before_action :find_authorized_katello_resource, :only => [:show, :update, :promote, :destroy, :export, :republish_repositories]
|
7
|
+
before_action :find_content_view_from_version, :only => [:show, :update, :promote, :destroy, :export, :republish_repositories]
|
8
|
+
before_action :find_optional_readable_content_view, :only => [:index]
|
9
|
+
before_action :find_publishable_content_view, :only => [:import]
|
10
|
+
|
9
11
|
before_action :find_environment, :only => [:index]
|
10
12
|
before_action :find_environments, :only => [:promote]
|
11
13
|
before_action :validate_promotable, :only => [:promote]
|
@@ -47,7 +49,7 @@ module Katello
|
|
47
49
|
api :GET, "/content_view_versions/:id", N_("Show content view version")
|
48
50
|
param :id, :number, :desc => N_("Content view version identifier"), :required => true
|
49
51
|
def show
|
50
|
-
respond :resource => @
|
52
|
+
respond :resource => @content_view_version
|
51
53
|
end
|
52
54
|
|
53
55
|
api :POST, "/content_view_versions/:id/promote", N_("Promote a content view version")
|
@@ -58,7 +60,7 @@ module Katello
|
|
58
60
|
def promote
|
59
61
|
is_force = ::Foreman::Cast.to_bool(params[:force])
|
60
62
|
task = async_task(::Actions::Katello::ContentView::Promote,
|
61
|
-
@
|
63
|
+
@content_view_version, @environments, is_force, params[:description])
|
62
64
|
respond_for_async :resource => task
|
63
65
|
end
|
64
66
|
|
@@ -66,59 +68,54 @@ module Katello
|
|
66
68
|
param :id, :number, :desc => N_("Content view version identifier"), :required => true
|
67
69
|
param :description, String, :desc => N_("The description for the content view version"), :required => true
|
68
70
|
def update
|
69
|
-
history = @
|
71
|
+
history = @content_view_version.history.publish.successful.first
|
70
72
|
if history.blank?
|
71
73
|
fail HttpErrors::BadRequest, _("This content view version doesn't have a history.")
|
72
74
|
else
|
73
75
|
history.notes = params[:description]
|
74
76
|
history.save!
|
75
|
-
respond_for_show(:resource => @
|
77
|
+
respond_for_show(:resource => @content_view_version)
|
76
78
|
end
|
77
79
|
end
|
78
80
|
|
79
81
|
api :PUT, "/content_view_versions/:id/republish_repositories", N_("Forces a republish of the version's repositories' metadata")
|
80
82
|
param :id, :number, :desc => N_("Content view version identifier"), :required => true
|
81
83
|
def republish_repositories
|
82
|
-
task = async_task(::Actions::Katello::ContentViewVersion::RepublishRepositories, @
|
84
|
+
task = async_task(::Actions::Katello::ContentViewVersion::RepublishRepositories, @content_view_version)
|
83
85
|
respond_for_async :resource => task
|
84
86
|
end
|
85
87
|
|
86
|
-
api :
|
87
|
-
param :content_view_version_id, :number, :desc => N_("Content view version identifier"), :required => false
|
88
|
-
param :content_view_id, :number, :desc => N_("Content view identifier"), :required => false
|
89
|
-
param :destination_server, String, :desc => N_("Destination Server name"), :required => false
|
90
|
-
param :organization_id, :number, :desc => N_("Organization identifier"), :required => false
|
91
|
-
param_group :search, Api::V2::ApiController
|
92
|
-
add_scoped_search_description_for(ContentViewVersionExportHistory)
|
93
|
-
def export_histories
|
94
|
-
history = ContentViewVersionExportHistory.readable
|
95
|
-
history = history.where(:content_view_version_id => params[:content_view_version_id]) unless params[:content_view_version_id].blank?
|
96
|
-
history = history.where(:destination_server => params[:destination_server]) unless params[:destination_server].blank?
|
97
|
-
history = history.with_organization_id(params[:organization_id]) unless params[:organization_id].blank?
|
98
|
-
history = history.with_content_view_id(params[:content_view_id]) unless params[:content_view_id].blank?
|
99
|
-
respond_for_index(:collection => scoped_search(history, 'id', 'asc', resource_class: ContentViewVersionExportHistory),
|
100
|
-
:template => '../../../api/v2/content_view_version_export_histories/index')
|
101
|
-
end
|
102
|
-
|
103
|
-
api :GET, "/content_view_versions/export_api_status", N_("true if the export api is pulp3 ready and usable. This API is intended for use by hammer-cli only.")
|
104
|
-
def export_api_status
|
105
|
-
::Foreman::Deprecation.api_deprecation_warning("export_api_status is being deprecated and will be removed in a future version of Katello.")
|
106
|
-
render json: { api_usable: SmartProxy.pulp_primary.pulp3_repository_type_support?(Katello::Repository::YUM_TYPE) }, status: :ok
|
107
|
-
end
|
108
|
-
|
109
|
-
api :POST, "/content_view_versions/:id/export", N_("Export a content view version")
|
88
|
+
api :POST, "/content_view_versions/:id/export", N_("Export a content view version. Relevant only for Pulp 2 repositories.")
|
110
89
|
param :id, :number, :desc => N_("Content view version identifier"), :required => true
|
111
|
-
param :
|
112
|
-
param :chunk_size_mb, :number, :desc => N_("Chunk export-tarfile into pieces of chunk_size mega bytes. Relevant only for Pulp 3 repositories"), :required => false
|
113
|
-
param :export_to_iso, :bool, :desc => N_("Export to ISO format. Relevant only for Pulp 2 repositories"), :required => false
|
90
|
+
param :export_to_iso, :bool, :desc => N_("Export to ISO format."), :required => false
|
114
91
|
param :iso_mb_size, :number, :desc => N_("maximum size of each ISO in MB. Relevant only for Pulp 2 repositories"), :required => false
|
115
92
|
param :since, Date, :desc => N_("Optional date of last export (ex: 2010-01-01T12:00:00Z). Relevant only for Pulp 2 repositories"), :required => false
|
116
93
|
def export
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
94
|
+
if SmartProxy.pulp_primary.pulp3_repository_type_support?(Katello::Repository::YUM_TYPE)
|
95
|
+
fail HttpErrors::BadRequest, _("Invalid usage for Pulp 3 repositories. "\
|
96
|
+
"Use hammer content-export for Yum repositories")
|
97
|
+
end
|
98
|
+
::Foreman::Deprecation.api_deprecation_warning("Export is being deprecated and will be removed in a future version of Katello. Use hammer content-view version export instead.")
|
99
|
+
if params[:export_to_iso].blank? && params[:iso_mb_size].present?
|
100
|
+
fail HttpErrors::BadRequest, _("ISO export must be enabled when specifying ISO size")
|
101
|
+
end
|
102
|
+
|
103
|
+
if (repos = @content_view_version.content_view.on_demand_repositories).any?
|
104
|
+
fail HttpErrors::BadRequest, _("This content view has on demand repositories that cannot be exported: %{repos}" % {repos: repos.pluck(:label).join(", ")})
|
105
|
+
end
|
106
|
+
|
107
|
+
if params[:since].present?
|
108
|
+
begin
|
109
|
+
params[:since].to_datetime
|
110
|
+
rescue
|
111
|
+
raise HttpErrors::BadRequest, _("Invalid date provided.")
|
112
|
+
end
|
113
|
+
end
|
114
|
+
task = async_task(::Actions::Katello::ContentViewVersion::Export, @content_view_version,
|
115
|
+
::Foreman::Cast.to_bool(params[:export_to_iso]),
|
116
|
+
params[:since].try(:to_datetime),
|
117
|
+
params[:iso_mb_size])
|
118
|
+
|
122
119
|
respond_for_async :resource => task
|
123
120
|
end
|
124
121
|
|
@@ -127,14 +124,14 @@ module Katello
|
|
127
124
|
param :path, String, :desc => N_("Directory containing the exported Content View Version"), :required => true
|
128
125
|
param :metadata, Hash, :desc => N_("Metadata taken from the upstream export history for this Content View Version"), :required => true
|
129
126
|
def import
|
130
|
-
task = async_task(::Actions::Katello::ContentViewVersion::Import, @view, path: params[:path], metadata: metadata_params)
|
127
|
+
task = async_task(::Actions::Katello::ContentViewVersion::Import, @view, path: params[:path], metadata: metadata_params&.to_h)
|
131
128
|
respond_for_async :resource => task
|
132
129
|
end
|
133
130
|
|
134
131
|
api :DELETE, "/content_view_versions/:id", N_("Remove content view version")
|
135
132
|
param :id, :number, :desc => N_("Content view version identifier"), :required => true
|
136
133
|
def destroy
|
137
|
-
task = async_task(::Actions::Katello::ContentViewVersion::Destroy, @
|
134
|
+
task = async_task(::Actions::Katello::ContentViewVersion::Destroy, @content_view_version)
|
138
135
|
respond_for_async :resource => task
|
139
136
|
end
|
140
137
|
|
@@ -174,7 +171,7 @@ module Katello
|
|
174
171
|
|
175
172
|
validate_content(params[:add_content])
|
176
173
|
resolve_dependencies = params.fetch(:resolve_dependencies, true)
|
177
|
-
task = async_task(::Actions::Katello::ContentView::IncrementalUpdates, @
|
174
|
+
task = async_task(::Actions::Katello::ContentView::IncrementalUpdates, @content_view_version_environments, @composite_version_environments,
|
178
175
|
params[:add_content], resolve_dependencies, hosts, params[:description])
|
179
176
|
respond_for_async :resource => task
|
180
177
|
end
|
@@ -200,17 +197,22 @@ module Katello
|
|
200
197
|
find_bulk_hosts(:edit_hosts, params[:update_hosts], restrict_hosts)
|
201
198
|
end
|
202
199
|
|
203
|
-
def
|
204
|
-
@
|
205
|
-
end
|
206
|
-
|
207
|
-
def find_content_view
|
208
|
-
@view = @version ? @version.content_view : ContentView.where(:id => params[:content_view_id]).first
|
200
|
+
def find_content_view_from_version
|
201
|
+
@view = @content_view_version.content_view
|
209
202
|
if @view&.default? && params[:action] == "promote"
|
210
203
|
fail HttpErrors::BadRequest, _("The default content view cannot be promoted")
|
211
204
|
end
|
212
205
|
end
|
213
206
|
|
207
|
+
def find_optional_readable_content_view
|
208
|
+
@view = ContentView.readable.find_by(:id => params[:content_view_id])
|
209
|
+
end
|
210
|
+
|
211
|
+
def find_publishable_content_view
|
212
|
+
@view = ContentView.publishable.find_by(:id => params[:content_view_id])
|
213
|
+
throw_resource_not_found(name: 'product', id: params[:product_id]) if @view.nil?
|
214
|
+
end
|
215
|
+
|
214
216
|
def find_version_environments
|
215
217
|
#Generates a data structure for incremental update:
|
216
218
|
# [{:content_view_version => ContentViewVersion, :environments => [KTEnvironment]}]
|
@@ -218,7 +220,7 @@ module Katello
|
|
218
220
|
list = params[:content_view_version_environments]
|
219
221
|
fail _("At least one Content View Version must be specified") if list.empty?
|
220
222
|
|
221
|
-
@
|
223
|
+
@content_view_version_environments = []
|
222
224
|
@composite_version_environments = []
|
223
225
|
list.each do |combination|
|
224
226
|
version_environment = {
|
@@ -242,7 +244,7 @@ module Katello
|
|
242
244
|
if view.composite?
|
243
245
|
@composite_version_environments << version_environment
|
244
246
|
else
|
245
|
-
@
|
247
|
+
@content_view_version_environments << version_environment
|
246
248
|
@composite_version_environments += lookup_all_composites(version_environment[:content_view_version]) if params[:propagate_all_composites]
|
247
249
|
end
|
248
250
|
end
|
@@ -261,7 +263,7 @@ module Katello
|
|
261
263
|
def find_version_environments_for_hosts(include_composites)
|
262
264
|
if include_composites
|
263
265
|
version_environments_for_systems_map = {}
|
264
|
-
@
|
266
|
+
@content_view_version_environments.each do |version_environment|
|
265
267
|
version_environment[:content_view_version].composites.each do |composite_version|
|
266
268
|
version_environments_for_systems_map[composite_version.id] ||= {:content_view_version => composite_version,
|
267
269
|
:environments => composite_version.environments}
|
@@ -270,7 +272,7 @@ module Katello
|
|
270
272
|
|
271
273
|
version_environments_for_systems_map.values
|
272
274
|
else
|
273
|
-
@
|
275
|
+
@content_view_version_environments.select { |ve| !ve[:environments].blank? }
|
274
276
|
end
|
275
277
|
end
|
276
278
|
|
@@ -313,52 +315,15 @@ module Katello
|
|
313
315
|
|
314
316
|
def validate_promotable
|
315
317
|
fail HttpErrors::BadRequest, _("Could not find environments for promotion") if @environments.blank?
|
316
|
-
return deny_access unless @environments.all?(&:promotable_or_removable?) && @
|
318
|
+
return deny_access unless @environments.all?(&:promotable_or_removable?) && @content_view_version.content_view.promotable_or_removable?
|
317
319
|
true
|
318
320
|
end
|
319
321
|
|
320
322
|
def authorize_destroy
|
321
|
-
return deny_access unless @
|
323
|
+
return deny_access unless @content_view_version.content_view.deletable?
|
322
324
|
true
|
323
325
|
end
|
324
326
|
|
325
|
-
def export_pulp_v2
|
326
|
-
::Foreman::Deprecation.api_deprecation_warning("Export is being deprecated and will be removed in a future version of Katello. Use hammer content-view version export instead.")
|
327
|
-
if params[:export_to_iso].blank? && params[:iso_mb_size].present?
|
328
|
-
fail HttpErrors::BadRequest, _("ISO export must be enabled when specifying ISO size")
|
329
|
-
end
|
330
|
-
|
331
|
-
if (repos = @version.content_view.on_demand_repositories).any?
|
332
|
-
fail HttpErrors::BadRequest, _("This content view has on demand repositories that cannot be exported: %{repos}" % {repos: repos.pluck(:label).join(", ")})
|
333
|
-
end
|
334
|
-
|
335
|
-
if params[:since].present?
|
336
|
-
begin
|
337
|
-
params[:since].to_datetime
|
338
|
-
rescue
|
339
|
-
raise HttpErrors::BadRequest, _("Invalid date provided.")
|
340
|
-
end
|
341
|
-
end
|
342
|
-
async_task(::Actions::Katello::ContentViewVersion::Export, @version,
|
343
|
-
::Foreman::Cast.to_bool(params[:export_to_iso]),
|
344
|
-
params[:since].try(:to_datetime),
|
345
|
-
params[:iso_mb_size])
|
346
|
-
end
|
347
|
-
|
348
|
-
def export_pulp_v3
|
349
|
-
invalid_params = [:export_to_iso, :iso_mb_size, :since].reject { |param| params[param].blank? }
|
350
|
-
unless invalid_params.empty?
|
351
|
-
fail HttpErrors::BadRequest, _("Invalid parameters provided - %{params}. These are only relevant for Pulp 2 repositories" % { params: invalid_params.join(', ')})
|
352
|
-
end
|
353
|
-
|
354
|
-
if params[:destination_server].blank?
|
355
|
-
fail HttpErrors::BadRequest, _("Destination Server Name required for Pulp3 repositories")
|
356
|
-
end
|
357
|
-
|
358
|
-
async_task(::Actions::Pulp3::Orchestration::ContentViewVersion::Export, @version, destination_server: params[:destination_server],
|
359
|
-
chunk_size: params[:chunk_size_mb])
|
360
|
-
end
|
361
|
-
|
362
327
|
def metadata_params
|
363
328
|
params.require(:metadata).permit(
|
364
329
|
:organization,
|
@@ -21,6 +21,7 @@ module Katello
|
|
21
21
|
param :component_ids, Array, :desc => N_("List of component content view version ids for composite views")
|
22
22
|
param :auto_publish, :bool, :desc => N_("Enable/Disable auto publish of composite view")
|
23
23
|
param :solve_dependencies, :bool, :desc => N_("Solve RPM dependencies by default on Content View publish, defaults to false")
|
24
|
+
param :import_only, :bool, :desc => N_("Designate this Content View for importing from upstream servers only. Defaults to false") if pulp3_yum?
|
24
25
|
end
|
25
26
|
|
26
27
|
def filtered_associations
|
@@ -30,6 +31,10 @@ module Katello
|
|
30
31
|
}
|
31
32
|
end
|
32
33
|
|
34
|
+
def self.pulp3_yum?
|
35
|
+
SmartProxy.pulp_primary&.pulp3_repository_type_support?(Katello::Repository::YUM_TYPE)
|
36
|
+
end
|
37
|
+
|
33
38
|
api :GET, "/organizations/:organization_id/content_views", N_("List content views")
|
34
39
|
api :GET, "/content_views", N_("List content views")
|
35
40
|
param :organization_id, :number, :desc => N_("organization identifier")
|
@@ -67,6 +72,10 @@ module Katello
|
|
67
72
|
param :composite, :bool, :desc => N_("Composite content view")
|
68
73
|
param_group :content_view
|
69
74
|
def create
|
75
|
+
if ::Foreman::Cast.to_bool(params[:content_view][:import_only])
|
76
|
+
fail HttpErrors::BadRequest, _("Import-only content views will be available in a future version.") unless self.class.pulp3_yum?
|
77
|
+
end
|
78
|
+
|
70
79
|
@content_view = ContentView.create!(view_params) do |view|
|
71
80
|
view.organization = @organization
|
72
81
|
view.label ||= labelize_params(params[:content_view])
|
@@ -181,8 +190,8 @@ module Katello
|
|
181
190
|
|
182
191
|
api :PUT, "/content_views/:id/remove", N_("Remove versions and/or environments from a content view and reassign systems and keys")
|
183
192
|
param :id, :number, :desc => N_("content view numeric identifier"), :required => true
|
184
|
-
param :environment_ids, :number, :desc => N_("environment numeric identifiers to be removed")
|
185
|
-
param :content_view_version_ids, :number, :desc => N_("content view version identifiers to be deleted")
|
193
|
+
param :environment_ids, Array, of: :number, :desc => N_("environment numeric identifiers to be removed")
|
194
|
+
param :content_view_version_ids, Array, of: :number, :desc => N_("content view version identifiers to be deleted")
|
186
195
|
param :system_content_view_id, :number, :desc => N_("content view to reassign orphaned systems to")
|
187
196
|
param :system_environment_id, :number, :desc => N_("environment to reassign orphaned systems to")
|
188
197
|
param :key_content_view_id, :number, :desc => N_("content view to reassign orphaned activation keys to")
|
@@ -237,7 +246,7 @@ module Katello
|
|
237
246
|
end
|
238
247
|
|
239
248
|
def view_params
|
240
|
-
attrs = [:name, :description, :force_puppet_environment, :auto_publish, :solve_dependencies,
|
249
|
+
attrs = [:name, :description, :force_puppet_environment, :auto_publish, :solve_dependencies, :import_only,
|
241
250
|
:default, :created_at, :updated_at, :next_version, {:component_ids => []}]
|
242
251
|
attrs.push(:label, :composite) if action_name == "create"
|
243
252
|
if (!@content_view || !@content_view.composite?)
|
@@ -125,13 +125,13 @@ module Katello
|
|
125
125
|
|
126
126
|
def find_host
|
127
127
|
@host = resource_finder(::Host::Managed.authorized("view_hosts"), params[:host_id])
|
128
|
-
|
128
|
+
throw_resource_not_found(name: 'host', id: params[:host_id]) if @host.nil?
|
129
129
|
@host
|
130
130
|
end
|
131
131
|
|
132
132
|
def find_host_editable
|
133
133
|
@host = resource_finder(::Host::Managed.authorized("edit_hosts"), params[:host_id])
|
134
|
-
|
134
|
+
throw_resource_not_found(name: 'host', id: params[:host_id]) if @host.nil?
|
135
135
|
@host
|
136
136
|
end
|
137
137
|
|
@@ -42,9 +42,8 @@ module Katello
|
|
42
42
|
def index_response(reload_host = false)
|
43
43
|
# Host needs to be reloaded because of lazy accessor
|
44
44
|
@host.reload if reload_host
|
45
|
-
|
46
|
-
subscriptions
|
47
|
-
full_result_response(subscriptions)
|
45
|
+
presenter = ::Katello::HostSubscriptionsPresenter.new(@host)
|
46
|
+
full_result_response(presenter.subscriptions)
|
48
47
|
end
|
49
48
|
|
50
49
|
api :PUT, "/hosts/:host_id/subscriptions/auto_attach", N_("Trigger an auto-attach of subscriptions")
|
@@ -7,11 +7,12 @@ module Katello
|
|
7
7
|
before_action :find_host_collections, :only => [:bulk_add_host_collections, :bulk_remove_host_collections]
|
8
8
|
before_action :find_environment, :only => [:environment_content_view]
|
9
9
|
before_action :find_content_view, :only => [:environment_content_view]
|
10
|
-
before_action :find_editable_hosts, :except => [:destroy_hosts, :
|
10
|
+
before_action :find_editable_hosts, :except => [:destroy_hosts, :resolve_traces]
|
11
11
|
before_action :find_deletable_hosts, :only => [:destroy_hosts]
|
12
12
|
before_action :find_readable_hosts, :only => [:applicable_errata, :installable_errata, :available_incremental_updates]
|
13
13
|
before_action :find_errata, :only => [:available_incremental_updates]
|
14
14
|
before_action :find_organization, :only => [:add_subscriptions]
|
15
|
+
before_action :find_traces, :only => [:resolve_traces]
|
15
16
|
before_action :deprecate_katello_agent, :only => [:install_content, :update_content, :remove_content]
|
16
17
|
|
17
18
|
before_action :validate_content_action, :only => [:install_content, :update_content, :remove_content]
|
@@ -241,8 +242,7 @@ module Katello
|
|
241
242
|
param_group :bulk_params
|
242
243
|
param :trace_ids, Array, :required => true, :desc => N_("Array of Trace IDs")
|
243
244
|
def resolve_traces
|
244
|
-
|
245
|
-
result = Katello::HostTraceManager.resolve_traces(traces)
|
245
|
+
result = Katello::HostTraceManager.resolve_traces(@traces)
|
246
246
|
|
247
247
|
render json: result
|
248
248
|
end
|
@@ -267,8 +267,9 @@ module Katello
|
|
267
267
|
api :POST, "/hosts/bulk/available_incremental_updates", N_("Given a set of hosts and errata, lists the content view versions" \
|
268
268
|
" and environments that need updating.")
|
269
269
|
param_group :bulk_params
|
270
|
-
param :errata_ids, Array, :desc => N_("List of Errata ids")
|
270
|
+
param :errata_ids, Array, :desc => N_("List of Errata ids"), :required => true
|
271
271
|
def available_incremental_updates
|
272
|
+
fail HttpErrors::BadRequest, _("errata_ids is a required parameter") if params[:errata_ids].empty?
|
272
273
|
version_environments = {}
|
273
274
|
content_facets = Katello::Host::ContentFacet.with_non_installable_errata(@errata, @hosts)
|
274
275
|
|
@@ -314,7 +315,9 @@ module Katello
|
|
314
315
|
end
|
315
316
|
|
316
317
|
def find_host_collections
|
317
|
-
|
318
|
+
throw_resources_not_found(name: 'host collection', expected_ids: params[:host_collection_ids]) do
|
319
|
+
@host_collections = HostCollection.editable.where(id: params[:host_collection_ids])
|
320
|
+
end
|
318
321
|
end
|
319
322
|
|
320
323
|
def find_readable_hosts
|
@@ -377,11 +380,21 @@ module Katello
|
|
377
380
|
end
|
378
381
|
|
379
382
|
def find_environment
|
380
|
-
@environment = KTEnvironment.find(params[:environment_id])
|
383
|
+
@environment = KTEnvironment.editable.find(params[:environment_id])
|
384
|
+
throw_resource_not_found(name: 'lifecycle environment', id: params[:environment_id]) unless @environment
|
385
|
+
@environment
|
381
386
|
end
|
382
387
|
|
383
388
|
def find_content_view
|
384
|
-
@view = ContentView.find(params[:content_view_id])
|
389
|
+
@view = ContentView.editable.find(params[:content_view_id])
|
390
|
+
throw_resource_not_found(name: 'content view', id: params[:content_view_id]) unless @view
|
391
|
+
@view
|
392
|
+
end
|
393
|
+
|
394
|
+
def find_traces
|
395
|
+
throw_resources_not_found(name: 'host trace', expected_ids: params[:trace_ids]) do
|
396
|
+
@traces = Katello::HostTracer.resolvable.where(id: params[:trace_ids])
|
397
|
+
end
|
385
398
|
end
|
386
399
|
|
387
400
|
def disable_erratum_hosts_count
|