katello 4.18.0 → 4.19.0.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of katello might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/app/assets/javascripts/katello/locale/bn/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/bn_IN/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/ca/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/cs/katello.js +53 -350
- data/app/assets/javascripts/katello/locale/cs_CZ/katello.js +54 -351
- data/app/assets/javascripts/katello/locale/de/katello.js +56 -353
- data/app/assets/javascripts/katello/locale/de_AT/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/de_DE/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/el/katello.js +54 -351
- data/app/assets/javascripts/katello/locale/en/katello.js +53 -350
- data/app/assets/javascripts/katello/locale/en_GB/katello.js +53 -350
- data/app/assets/javascripts/katello/locale/en_US/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/es/katello.js +56 -353
- data/app/assets/javascripts/katello/locale/et_EE/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/fr/katello.js +138 -435
- data/app/assets/javascripts/katello/locale/gl/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/gu/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/he_IL/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/hi/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/id/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/it/katello.js +53 -350
- data/app/assets/javascripts/katello/locale/ja/katello.js +142 -439
- data/app/assets/javascripts/katello/locale/ka/katello.js +56 -353
- data/app/assets/javascripts/katello/locale/kn/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/ko/katello.js +135 -432
- data/app/assets/javascripts/katello/locale/ml_IN/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/mr/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/nl_NL/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/or/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/pa/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/pl/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/pl_PL/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/pt/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/pt_BR/katello.js +56 -353
- data/app/assets/javascripts/katello/locale/ro/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/ro_RO/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/ru/katello.js +54 -351
- data/app/assets/javascripts/katello/locale/sl/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/sv_SE/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/ta/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/ta_IN/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/te/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/tr/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/vi/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/vi_VN/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/zh/katello.js +52 -349
- data/app/assets/javascripts/katello/locale/zh_CN/katello.js +135 -432
- data/app/assets/javascripts/katello/locale/zh_TW/katello.js +54 -351
- data/app/controllers/katello/api/registry/registry_proxies_controller.rb +46 -13
- data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +1 -1
- data/app/controllers/katello/api/v2/activation_keys_controller.rb +3 -65
- data/app/controllers/katello/api/v2/content_export_incrementals_controller.rb +56 -34
- data/app/controllers/katello/api/v2/content_view_filter_rules_controller.rb +1 -1
- data/app/controllers/katello/api/v2/content_views_controller.rb +18 -3
- data/app/controllers/katello/api/v2/debs_controller.rb +21 -11
- data/app/controllers/katello/api/v2/docker_tags_controller.rb +7 -0
- data/app/controllers/katello/api/v2/errata_controller.rb +4 -4
- data/app/controllers/katello/api/v2/flatpak_remote_repositories_controller.rb +21 -19
- data/app/controllers/katello/api/v2/host_debs_controller.rb +16 -1
- data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +3 -60
- data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +10 -53
- data/app/controllers/katello/api/v2/repositories_controller.rb +0 -1
- data/app/controllers/katello/concerns/organizations_controller_extensions.rb +3 -0
- data/app/lib/actions/candlepin/activation_key/create.rb +0 -2
- data/app/lib/actions/candlepin/activation_key/update.rb +0 -2
- data/app/lib/actions/candlepin/product/content_create.rb +3 -5
- data/app/lib/actions/candlepin/product/content_update.rb +2 -3
- data/app/lib/actions/helpers/rolling_cv_repos.rb +1 -1
- data/app/lib/actions/katello/activation_key/create.rb +0 -1
- data/app/lib/actions/katello/activation_key/update.rb +0 -2
- data/app/lib/actions/katello/capsule_content/sync_capsule.rb +1 -6
- data/app/lib/actions/katello/content_credential/update.rb +1 -1
- data/app/lib/actions/katello/content_view/add_rolling_repo_clone.rb +18 -24
- data/app/lib/actions/katello/content_view/create.rb +9 -4
- data/app/lib/actions/katello/content_view/publish.rb +7 -7
- data/app/lib/actions/katello/content_view/refresh_rolling_repo.rb +6 -1
- data/app/lib/actions/katello/content_view/remove_rolling_repo_clone.rb +16 -11
- data/app/lib/actions/katello/content_view/update.rb +34 -7
- data/app/lib/actions/katello/product/content_create.rb +2 -2
- data/app/lib/actions/katello/product/content_destroy.rb +1 -1
- data/app/lib/actions/katello/repository/check_matching_content.rb +1 -1
- data/app/lib/actions/katello/repository/clone_contents.rb +1 -1
- data/app/lib/actions/katello/repository/create.rb +1 -1
- data/app/lib/actions/katello/repository/destroy.rb +4 -4
- data/app/lib/actions/katello/repository/finish_upload.rb +1 -1
- data/app/lib/actions/katello/repository/sync.rb +1 -1
- data/app/lib/actions/pulp3/orchestration/repository/copy_all_units.rb +2 -2
- data/app/lib/actions/pulp3/orchestration/repository/generate_metadata.rb +1 -1
- data/app/lib/actions/pulp3/orchestration/repository/multi_copy_all_units.rb +1 -1
- data/app/lib/actions/pulp3/repository/save_publication.rb +3 -1
- data/app/lib/actions/pulp3/repository/save_version.rb +45 -24
- data/app/lib/actions/pulp3/repository/save_versions.rb +2 -1
- data/app/lib/katello/resources/candlepin/activation_key.rb +3 -4
- data/app/lib/katello/resources/candlepin/upstream_job.rb +9 -1
- data/app/lib/katello/resources/candlepin.rb +4 -0
- data/app/models/katello/authorization/repository.rb +17 -4
- data/app/models/katello/concerns/subscription_facet_host_extensions.rb +0 -7
- data/app/models/katello/content_view_deb_filter.rb +10 -0
- data/app/models/katello/content_view_deb_filter_rule.rb +7 -0
- data/app/models/katello/deb.rb +10 -12
- data/app/models/katello/erratum.rb +1 -1
- data/app/models/katello/glue/provider.rb +14 -3
- data/app/models/katello/host/content_facet.rb +1 -1
- data/app/models/katello/host/subscription_facet.rb +1 -7
- data/app/models/katello/product_content.rb +2 -2
- data/app/models/katello/repository.rb +4 -23
- data/app/models/katello/root_repository.rb +2 -5
- data/app/services/katello/candlepin/event_handler.rb +0 -33
- data/app/services/katello/candlepin/message_handler.rb +0 -41
- data/app/services/katello/content_unit_indexer.rb +59 -13
- data/app/services/katello/product_content_finder.rb +16 -7
- data/app/services/katello/pulp3/alternate_content_source.rb +2 -2
- data/app/services/katello/pulp3/ansible_collection.rb +1 -0
- data/app/services/katello/pulp3/api/content_guard.rb +5 -5
- data/app/services/katello/pulp3/api/core.rb +10 -0
- data/app/services/katello/pulp3/content_view_version/export.rb +25 -10
- data/app/services/katello/pulp3/deb.rb +1 -0
- data/app/services/katello/pulp3/docker_manifest.rb +1 -0
- data/app/services/katello/pulp3/docker_manifest_list.rb +1 -0
- data/app/services/katello/pulp3/docker_tag.rb +1 -0
- data/app/services/katello/pulp3/file_unit.rb +1 -0
- data/app/services/katello/pulp3/generic_content_unit.rb +1 -0
- data/app/services/katello/pulp3/module_stream.rb +1 -0
- data/app/services/katello/pulp3/package_group.rb +1 -0
- data/app/services/katello/pulp3/repository/apt.rb +30 -13
- data/app/services/katello/pulp3/repository.rb +59 -10
- data/app/services/katello/pulp3/rpm.rb +3 -2
- data/app/services/katello/pulp3/srpm.rb +3 -2
- data/app/services/katello/pulp3/task_group.rb +1 -1
- data/app/services/katello/registration_manager.rb +19 -17
- data/app/services/katello/repository_type_manager.rb +7 -5
- data/app/services/katello/smart_proxy_helper.rb +1 -6
- data/app/views/foreman/job_templates/upload_profile.erb +5 -0
- data/app/views/katello/api/v2/activation_keys/base.json.rabl +1 -1
- data/app/views/katello/api/v2/content_views/base.json.rabl +1 -0
- data/app/views/katello/api/v2/debs/thindex.json.rabl +6 -0
- data/app/views/katello/api/v2/docker_tags/_base.json.rabl +32 -0
- data/app/views/katello/api/v2/docker_tags/show.json.rabl +0 -5
- data/app/views/katello/api/v2/flatpak_remotes/index.json.rabl +6 -0
- data/app/views/katello/api/v2/host_debs/installed_debs.json.rabl +6 -0
- data/app/views/katello/api/v2/hosts_bulk_actions/applicable_errata.json.rabl +1 -1
- data/app/views/katello/api/v2/hosts_bulk_actions/applicable_erratum.json.rabl +9 -0
- data/app/views/katello/api/v2/hosts_bulk_actions/installable_errata.json.rabl +1 -1
- data/app/views/katello/api/v2/hosts_bulk_actions/{erratum.json.rabl → installable_erratum.json.rabl} +3 -3
- data/app/views/katello/api/v2/subscription_facet/base.json.rabl +1 -1
- data/config/initializers/monkeys.rb +1 -0
- data/config/routes/api/v2.rb +2 -2
- data/config/routes/overrides.rb +2 -7
- data/config/routes.rb +2 -0
- data/db/migrate/20211019192121_create_cdn_configuration.katello.rb +1 -1
- data/db/migrate/20250912000000_add_pulp_prn_fields.rb +73 -0
- data/db/migrate/20250912000001_populate_pulp_prn_fields.rb +403 -0
- data/db/migrate/20251009142516_remove_auto_attach_from_activation_keys.rb +5 -0
- data/db/migrate/20251009142517_remove_autoheal_from_subscription_facets.rb +5 -0
- data/db/seeds.d/111-upgrade_tasks.rb +2 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/el.po +2 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/fr.po +6 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ja.po +5 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ko.po +5 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_CN.po +5 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/translations.js +4 -4
- data/lib/katello/permission_creator.rb +2 -2
- data/lib/katello/permissions/host_permissions.rb +0 -6
- data/lib/katello/plugin.rb +16 -8
- data/lib/katello/tasks/jenkins.rake +1 -1
- data/lib/katello/tasks/upgrades/4.19/enable_structured_apt_for_deb.rake +87 -0
- data/lib/katello/tasks/upgrades/4.19/populate_repository_version_prns.rake +32 -0
- data/lib/katello/version.rb +1 -1
- data/lib/monkeys/fix_rpm_repository_gpgcheck.rb +38 -0
- data/locale/bn/LC_MESSAGES/katello.mo +0 -0
- data/locale/bn/katello.po +52 -349
- data/locale/bn_IN/LC_MESSAGES/katello.mo +0 -0
- data/locale/bn_IN/katello.po +52 -349
- data/locale/ca/LC_MESSAGES/katello.mo +0 -0
- data/locale/ca/katello.po +52 -349
- data/locale/cs/LC_MESSAGES/katello.mo +0 -0
- data/locale/cs/katello.po +54 -350
- data/locale/cs_CZ/LC_MESSAGES/katello.mo +0 -0
- data/locale/cs_CZ/katello.po +54 -351
- data/locale/de/LC_MESSAGES/katello.mo +0 -0
- data/locale/de/katello.po +56 -353
- data/locale/de_AT/LC_MESSAGES/katello.mo +0 -0
- data/locale/de_AT/katello.po +52 -349
- data/locale/de_DE/LC_MESSAGES/katello.mo +0 -0
- data/locale/de_DE/katello.po +52 -349
- data/locale/el/LC_MESSAGES/katello.mo +0 -0
- data/locale/el/katello.po +55 -352
- data/locale/en/LC_MESSAGES/katello.mo +0 -0
- data/locale/en/katello.po +54 -350
- data/locale/en_GB/LC_MESSAGES/katello.mo +0 -0
- data/locale/en_GB/katello.po +53 -350
- data/locale/en_US/LC_MESSAGES/katello.mo +0 -0
- data/locale/en_US/katello.po +52 -349
- data/locale/es/LC_MESSAGES/katello.mo +0 -0
- data/locale/es/katello.po +56 -353
- data/locale/et_EE/LC_MESSAGES/katello.mo +0 -0
- data/locale/et_EE/katello.po +52 -349
- data/locale/fr/LC_MESSAGES/katello.mo +0 -0
- data/locale/fr/katello.po +139 -435
- data/locale/gl/LC_MESSAGES/katello.mo +0 -0
- data/locale/gl/katello.po +52 -349
- data/locale/gu/LC_MESSAGES/katello.mo +0 -0
- data/locale/gu/katello.po +52 -349
- data/locale/he_IL/LC_MESSAGES/katello.mo +0 -0
- data/locale/he_IL/katello.po +52 -349
- data/locale/hi/LC_MESSAGES/katello.mo +0 -0
- data/locale/hi/katello.po +52 -349
- data/locale/id/LC_MESSAGES/katello.mo +0 -0
- data/locale/id/katello.po +52 -349
- data/locale/it/LC_MESSAGES/katello.mo +0 -0
- data/locale/it/katello.po +53 -350
- data/locale/ja/LC_MESSAGES/katello.mo +0 -0
- data/locale/ja/katello.po +143 -439
- data/locale/ka/LC_MESSAGES/katello.mo +0 -0
- data/locale/ka/katello.po +56 -353
- data/locale/katello.pot +695 -1152
- data/locale/kn/LC_MESSAGES/katello.mo +0 -0
- data/locale/kn/katello.po +52 -349
- data/locale/ko/LC_MESSAGES/katello.mo +0 -0
- data/locale/ko/katello.po +136 -432
- data/locale/ml_IN/LC_MESSAGES/katello.mo +0 -0
- data/locale/ml_IN/katello.po +52 -349
- data/locale/mr/LC_MESSAGES/katello.mo +0 -0
- data/locale/mr/katello.po +52 -349
- data/locale/nl_NL/LC_MESSAGES/katello.mo +0 -0
- data/locale/nl_NL/katello.po +52 -349
- data/locale/or/LC_MESSAGES/katello.mo +0 -0
- data/locale/or/katello.po +52 -349
- data/locale/pa/LC_MESSAGES/katello.mo +0 -0
- data/locale/pa/katello.po +52 -349
- data/locale/pl/LC_MESSAGES/katello.mo +0 -0
- data/locale/pl/katello.po +52 -349
- data/locale/pl_PL/LC_MESSAGES/katello.mo +0 -0
- data/locale/pl_PL/katello.po +52 -349
- data/locale/pt/LC_MESSAGES/katello.mo +0 -0
- data/locale/pt/katello.po +52 -349
- data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
- data/locale/pt_BR/katello.po +56 -353
- data/locale/ro/LC_MESSAGES/katello.mo +0 -0
- data/locale/ro/katello.po +52 -349
- data/locale/ro_RO/LC_MESSAGES/katello.mo +0 -0
- data/locale/ro_RO/katello.po +52 -349
- data/locale/ru/LC_MESSAGES/katello.mo +0 -0
- data/locale/ru/katello.po +54 -351
- data/locale/sl/LC_MESSAGES/katello.mo +0 -0
- data/locale/sl/katello.po +52 -349
- data/locale/sv_SE/LC_MESSAGES/katello.mo +0 -0
- data/locale/sv_SE/katello.po +52 -349
- data/locale/ta/LC_MESSAGES/katello.mo +0 -0
- data/locale/ta/katello.po +52 -349
- data/locale/ta_IN/LC_MESSAGES/katello.mo +0 -0
- data/locale/ta_IN/katello.po +52 -349
- data/locale/te/LC_MESSAGES/katello.mo +0 -0
- data/locale/te/katello.po +52 -349
- data/locale/tr/LC_MESSAGES/katello.mo +0 -0
- data/locale/tr/katello.po +52 -349
- data/locale/vi/LC_MESSAGES/katello.mo +0 -0
- data/locale/vi/katello.po +52 -349
- data/locale/vi_VN/LC_MESSAGES/katello.mo +0 -0
- data/locale/vi_VN/katello.po +52 -349
- data/locale/zh/LC_MESSAGES/katello.mo +0 -0
- data/locale/zh/katello.po +52 -349
- data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
- data/locale/zh_CN/katello.po +136 -432
- data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
- data/locale/zh_TW/katello.po +54 -351
- data/webpack/components/Content/Details/__tests__/__snapshots__/ContentDetails.test.js.snap +2 -2
- data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeEditModal.js +0 -2
- data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeEditModal.test.js +0 -2
- data/webpack/components/extensions/Hosts/ActionsBar/index.js +1 -0
- data/webpack/components/extensions/Hosts/BulkActions/BulkActionsConstants.js +7 -0
- data/webpack/components/extensions/Hosts/BulkActions/BulkChangeHostCollectionsModal/BulkChangeHostCollectionsModal.js +388 -0
- data/webpack/components/extensions/Hosts/BulkActions/BulkChangeHostCollectionsModal/__tests__/BulkChangeHostCollectionsModal.test.js +640 -0
- data/webpack/components/extensions/Hosts/BulkActions/BulkChangeHostCollectionsModal/actions.js +28 -0
- data/webpack/components/extensions/Hosts/BulkActions/BulkChangeHostCollectionsModal/index.js +71 -0
- data/webpack/components/extensions/Hosts/BulkActions/BulkErrataWizard/BulkErrataWizard.js +1 -1
- data/webpack/components/extensions/Hosts/BulkActions/BulkPackagesWizard/02_BulkPackagesTable.js +10 -3
- data/webpack/components/extensions/Hosts/BulkActions/BulkPackagesWizard/BulkPackagesWizard.js +51 -24
- data/webpack/components/extensions/Hosts/BulkActions/HostReview.js +7 -0
- data/webpack/containers/Application/config.js +11 -1
- data/webpack/global_index.js +3 -0
- data/webpack/scenes/{BootedContainerImages → ContainerImages/Booted}/BootedContainerImagesConstants.js +1 -1
- data/webpack/scenes/{BootedContainerImages → ContainerImages/Booted}/BootedContainerImagesPage.js +7 -43
- data/webpack/scenes/{BootedContainerImages → ContainerImages/Booted}/__tests__/bootedContainerImagesPage.test.js +1 -1
- data/webpack/scenes/ContainerImages/ContainerImagesPage.js +86 -0
- data/webpack/scenes/ContainerImages/LabelsAnnotationsModal.js +105 -0
- data/webpack/scenes/ContainerImages/Synced/Details/ManifestDetails.js +218 -0
- data/webpack/scenes/ContainerImages/Synced/Details/ManifestDetailsActions.js +15 -0
- data/webpack/scenes/ContainerImages/Synced/Details/ManifestDetailsSelectors.js +16 -0
- data/webpack/scenes/ContainerImages/Synced/Details/__tests__/ManifestDetails.test.js +395 -0
- data/webpack/scenes/ContainerImages/Synced/Details/__tests__/manifestDetails.fixtures.json +43 -0
- data/webpack/scenes/ContainerImages/Synced/Details/__tests__/manifestList.fixtures.json +58 -0
- data/webpack/scenes/ContainerImages/Synced/Details/index.js +4 -0
- data/webpack/scenes/ContainerImages/Synced/SyncedContainerImagesPage.js +359 -0
- data/webpack/scenes/ContainerImages/Synced/SyncedContainerImagesPage.scss +21 -0
- data/webpack/scenes/ContainerImages/Synced/__tests__/LabelsAnnotationsModal.test.js +69 -0
- data/webpack/scenes/ContainerImages/Synced/__tests__/SyncedContainerImagesPage.test.js +335 -0
- data/webpack/scenes/ContainerImages/Synced/__tests__/syncedContainerImages.fixtures.json +105 -0
- data/webpack/scenes/ContainerImages/TableEmptyState.js +67 -0
- data/webpack/scenes/ContainerImages/containerImagesHelpers.js +48 -0
- data/webpack/scenes/ContainerImages/index.js +4 -0
- data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +29 -3
- data/webpack/scenes/ContentViews/Create/__tests__/contentViewCreateResult.fixtures.json +1 -0
- data/webpack/scenes/ContentViews/Create/__tests__/createContentView.test.js +45 -1
- data/webpack/scenes/ContentViews/Delete/__tests__/affectedHosts.fixtures.json +0 -1
- data/webpack/scenes/ContentViews/Details/ContentViewInfo.js +59 -1
- data/webpack/scenes/ContentViews/Details/Filters/CVDebFilterContent.js +1 -0
- data/webpack/scenes/ContentViews/Details/Filters/Rules/DebPackage/AddEditDebPackageRuleModal.js +164 -24
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVDebFilterContent.test.js +268 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvDebFilterDetail.fixtures.json +95 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvDebFilterRules.fixtures.json +31 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/emptyCVDebFilterRules.fixtures.json +10 -0
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/hosts.fixtures.json +0 -1
- data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvAffectedHosts.fixture.json +0 -1
- data/webpack/scenes/ContentViews/Details/__tests__/contentViewRollingDetail.test.js +15 -0
- data/webpack/scenes/ContentViews/Details/__tests__/contentViewRollingDetails.fixtures.json +1 -0
- data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +9 -0
- data/webpack/scenes/FlatpakRemotes/CreateEdit/CreateFlatpakRemoteModal.js +5 -3
- data/webpack/scenes/FlatpakRemotes/CreateEdit/EditFlatpakRemotesModal.js +1 -1
- data/webpack/scenes/FlatpakRemotes/CreateEdit/FlatpakRemoteform.js +35 -3
- data/webpack/scenes/FlatpakRemotes/Details/FlatpakRemoteDetails.js +1 -1
- data/webpack/scenes/FlatpakRemotes/Details/RemoteRepositories/RemoteRepositoriesTable.css +3 -0
- data/webpack/scenes/FlatpakRemotes/Details/RemoteRepositories/RemoteRepositoriesTable.js +63 -132
- data/webpack/scenes/FlatpakRemotes/FlatpakRemotesPage.js +67 -143
- data/webpack/scenes/SmartProxy/ExpandableCvDetails.js +10 -2
- data/webpack/scenes/SmartProxy/SmartProxyContentActions.js +13 -2
- data/webpack/scenes/SmartProxy/SmartProxyContentConstants.js +1 -0
- data/webpack/scenes/SmartProxy/SmartProxyExpandableTable.js +8 -2
- data/webpack/scenes/SmartProxy/__tests__/SmartProxyContentTest.js +67 -1
- data/webpack/scenes/Subscriptions/Details/__tests__/__snapshots__/SubscriptionDetails.test.js.snap +2 -2
- data/webpack/scenes/Subscriptions/SubscriptionConstants.js +0 -2
- data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsActions.test.js.snap +2 -2
- metadata +83 -55
- data/app/lib/actions/katello/host/attach_subscriptions.rb +0 -59
- data/app/lib/actions/katello/host/auto_attach_subscriptions.rb +0 -22
- data/app/lib/actions/katello/host/remove_subscriptions.rb +0 -50
- data/app/lib/actions/katello/organization/simple_content_access/disable.rb +0 -25
- data/app/lib/actions/katello/organization/simple_content_access/enable.rb +0 -25
- data/app/lib/actions/katello/organization/simple_content_access/toggle.rb +0 -42
- data/lib/katello/tasks/migrate_structure_content_for_deb.rake +0 -105
- data/lib/katello/tasks/upgrades/4.2/remove_checksum_values.rake +0 -17
- data/locale/action_names.rb +0 -186
- /data/webpack/scenes/{BootedContainerImages → ContainerImages/Booted}/__tests__/bootedContainerImages.fixtures.js +0 -0
- /data/webpack/scenes/{BootedContainerImages → ContainerImages/Booted}/index.js +0 -0
|
@@ -2,7 +2,6 @@ module Katello
|
|
|
2
2
|
class Api::V2::HostSubscriptionsController < Katello::Api::V2::ApiController
|
|
3
3
|
include Katello::Concerns::Api::V2::ContentOverridesController
|
|
4
4
|
before_action :find_host, :except => :create
|
|
5
|
-
before_action :check_subscriptions, :only => [:add_subscriptions, :remove_subscriptions]
|
|
6
5
|
before_action :find_content_view_environment, :only => :create
|
|
7
6
|
before_action :check_registration_services, :only => [:destroy, :create]
|
|
8
7
|
before_action :find_content_overrides, :only => [:content_override]
|
|
@@ -17,10 +16,9 @@ module Katello
|
|
|
17
16
|
|
|
18
17
|
def_param_group :subscription_facet_attributes do
|
|
19
18
|
param :release_version, String, :desc => N_("Release version for this Host to use (7Server, 7.1, etc)")
|
|
20
|
-
param :autoheal, :bool, :desc => N_("Sets whether the Host will autoheal subscriptions upon checkin")
|
|
21
19
|
param :purpose_usage, String, :desc => N_("Sets the system purpose usage")
|
|
22
20
|
param :purpose_role, String, :desc => N_("Sets the system purpose usage")
|
|
23
|
-
param :service_level, String, :desc => N_("Service level
|
|
21
|
+
param :service_level, String, :desc => N_("Service level")
|
|
24
22
|
param :hypervisor_guest_uuids, Array, :desc => N_("List of hypervisor guest uuids")
|
|
25
23
|
param :installed_products_attributes, Array, :desc => N_("List of products installed on the host") do
|
|
26
24
|
param_group :installed_products, Api::V2::HostSubscriptionsController
|
|
@@ -51,18 +49,6 @@ module Katello
|
|
|
51
49
|
full_result_response(presenter.subscriptions)
|
|
52
50
|
end
|
|
53
51
|
|
|
54
|
-
api :PUT, "/hosts/:host_id/subscriptions/auto_attach", N_("Trigger an auto-attach of subscriptions"), deprecated: true
|
|
55
|
-
param :host_id, Integer, :desc => N_("Id of the host"), :required => true
|
|
56
|
-
def auto_attach
|
|
57
|
-
deprecate_entitlement_mode_endpoint
|
|
58
|
-
if @host.organization.simple_content_access?
|
|
59
|
-
fail ::Katello::HttpErrors::BadRequest, _("This host's organization is in Simple Content Access mode. Auto-attach is disabled")
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
sync_task(::Actions::Katello::Host::AutoAttachSubscriptions, @host)
|
|
63
|
-
respond_for_index(:collection => index_response(reload_host: true), :template => "index")
|
|
64
|
-
end
|
|
65
|
-
|
|
66
52
|
api :DELETE, "/hosts/:host_id/subscriptions/", N_("Unregister the host as a subscription consumer")
|
|
67
53
|
param :host_id, Integer, :desc => N_("Id of the host"), :required => true
|
|
68
54
|
def destroy
|
|
@@ -80,7 +66,7 @@ module Katello
|
|
|
80
66
|
param_group :installed_products, ::Katello::Api::V2::HostSubscriptionsController
|
|
81
67
|
end
|
|
82
68
|
param :release_version, String, :desc => N_("Release version of the content host")
|
|
83
|
-
param :service_level, String, :desc => N_("
|
|
69
|
+
param :service_level, String, :desc => N_("Service level, e.g. SELF-SUPPORT")
|
|
84
70
|
param :lifecycle_environment_id, Integer, :desc => N_("Lifecycle Environment ID"), :required => true
|
|
85
71
|
param :content_view_id, Integer, :desc => N_("Content View ID"), :required => true
|
|
86
72
|
def create
|
|
@@ -115,45 +101,6 @@ module Katello
|
|
|
115
101
|
rhsm_params
|
|
116
102
|
end
|
|
117
103
|
|
|
118
|
-
api :PUT, "/hosts/:host_id/subscriptions/remove_subscriptions", N_("Remove subscriptions from a host"), deprecated: true
|
|
119
|
-
param :host_id, Integer, :desc => N_("Id of the host"), :required => true
|
|
120
|
-
param :subscriptions, Array, :desc => N_("Array of subscriptions to remove") do
|
|
121
|
-
param :id, String, :desc => N_("Subscription Pool id"), :required => true
|
|
122
|
-
param :quantity, Integer, :desc => N_("If specified, remove the first instance of a subscription with matching id and quantity"), :required => false
|
|
123
|
-
end
|
|
124
|
-
def remove_subscriptions
|
|
125
|
-
deprecate_entitlement_mode_endpoint
|
|
126
|
-
#combine the quantities for duplicate pools into PoolWithQuantities objects
|
|
127
|
-
pool_id_quantities = params.require(:subscriptions).inject({}) do |new_hash, subscription|
|
|
128
|
-
new_hash[subscription['id']] ||= PoolWithQuantities.new(Pool.with_identifier(subscription['id']))
|
|
129
|
-
new_hash[subscription['id']].quantities << subscription['quantity']
|
|
130
|
-
new_hash
|
|
131
|
-
end
|
|
132
|
-
|
|
133
|
-
sync_task(::Actions::Katello::Host::RemoveSubscriptions, @host, pool_id_quantities.values)
|
|
134
|
-
respond_for_index(:collection => index_response(reload_host: true), :template => "index")
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
api :PUT, "/hosts/:host_id/subscriptions/add_subscriptions", N_("Add a subscription to a host"), deprecated: true
|
|
138
|
-
param :host_id, Integer, :desc => N_("Id of the host"), :required => true
|
|
139
|
-
param :subscriptions, Array, :desc => N_("Array of subscriptions to add"), :required => true do
|
|
140
|
-
param :id, String, :desc => N_("Subscription Pool id"), :required => true
|
|
141
|
-
param :quantity, :number, :desc => N_("Quantity of this subscriptions to add"), :required => true
|
|
142
|
-
end
|
|
143
|
-
def add_subscriptions
|
|
144
|
-
deprecate_entitlement_mode_endpoint
|
|
145
|
-
if @host.organization.simple_content_access?
|
|
146
|
-
fail ::Katello::HttpErrors::BadRequest, _("This host's organization is in Simple Content Access mode. Attaching subscriptions is disabled.")
|
|
147
|
-
end
|
|
148
|
-
|
|
149
|
-
pools_with_quantities = params.require(:subscriptions).map do |sub_params|
|
|
150
|
-
PoolWithQuantities.new(Pool.with_identifier(sub_params['id']), sub_params['quantity'].to_i)
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
sync_task(::Actions::Katello::Host::AttachSubscriptions, @host, pools_with_quantities)
|
|
154
|
-
respond_for_index(:collection => index_response(reload_host: true), :template => "index")
|
|
155
|
-
end
|
|
156
|
-
|
|
157
104
|
api :GET, "/hosts/:host_id/subscriptions/product_content", N_("Get content and overrides for the host")
|
|
158
105
|
param :host_id, String, :desc => N_("Id of the host"), :required => true
|
|
159
106
|
param :content_access_mode_all, :bool, :desc => N_("Get all content available, not just that provided by subscriptions")
|
|
@@ -215,10 +162,6 @@ module Katello
|
|
|
215
162
|
fail HttpErrors::NotFound, _("Couldn't find specified content view and lifecycle environment.") if @content_view_environment.nil?
|
|
216
163
|
end
|
|
217
164
|
|
|
218
|
-
def check_subscriptions
|
|
219
|
-
fail HttpErrors::BadRequest, _("subscriptions not specified") if params[:subscriptions].blank?
|
|
220
|
-
end
|
|
221
|
-
|
|
222
165
|
def check_registration_services
|
|
223
166
|
fail "Unable to register system, not all services available" unless Katello::RegistrationManager.check_registration_services
|
|
224
167
|
end
|
|
@@ -228,7 +171,7 @@ module Katello
|
|
|
228
171
|
end
|
|
229
172
|
|
|
230
173
|
def action_permission
|
|
231
|
-
if ['
|
|
174
|
+
if ['destroy', 'content_override'].include?(params[:action])
|
|
232
175
|
:edit
|
|
233
176
|
elsif ['index', 'events', 'product_content', 'available_release_versions', 'enabled_repositories'].include?(params[:action])
|
|
234
177
|
:view
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
module Katello
|
|
2
2
|
# this is Katello's host bulk actions controller, not to be confused with Foreman's
|
|
3
|
+
# rubocop:disable Metrics/ClassLength
|
|
3
4
|
class Api::V2::HostsBulkActionsController < Api::V2::ApiController
|
|
4
5
|
include ::Api::V2::BulkHostsExtension
|
|
5
6
|
include Katello::Concerns::Api::V2::ContentOverridesController
|
|
@@ -13,11 +14,8 @@ module Katello
|
|
|
13
14
|
before_action :find_deletable_hosts, only: [:destroy_hosts]
|
|
14
15
|
before_action :find_readable_hosts, only: [:applicable_errata, :installable_errata, :available_incremental_updates]
|
|
15
16
|
before_action :find_errata, only: [:available_incremental_updates]
|
|
16
|
-
before_action :find_organization, only: [:add_subscriptions]
|
|
17
17
|
before_action :find_traces, only: [:resolve_traces]
|
|
18
18
|
|
|
19
|
-
before_action :validate_organization, only: [:add_subscriptions]
|
|
20
|
-
|
|
21
19
|
# disable *_count fields on erratum rabl, since they perform N+1 queries
|
|
22
20
|
before_action :disable_erratum_hosts_count
|
|
23
21
|
|
|
@@ -51,8 +49,14 @@ module Katello
|
|
|
51
49
|
host_collection.save!
|
|
52
50
|
|
|
53
51
|
final_count = host_collection.host_ids.count - pre_host_collection_count
|
|
54
|
-
|
|
55
|
-
|
|
52
|
+
msg = if final_count == 0
|
|
53
|
+
_("All selected hosts were already members of host collection %{host_collection}.") %
|
|
54
|
+
{:host_collection => host_collection.name }
|
|
55
|
+
else
|
|
56
|
+
_("Added %{count} host(s) to host collection %{host_collection}.") %
|
|
57
|
+
{:count => final_count, :host_collection => host_collection.name }
|
|
58
|
+
end
|
|
59
|
+
display_messages << msg
|
|
56
60
|
end
|
|
57
61
|
end
|
|
58
62
|
|
|
@@ -74,7 +78,7 @@ module Katello
|
|
|
74
78
|
host_collection.save!
|
|
75
79
|
|
|
76
80
|
final_count = pre_host_collection_count - host_collection.host_ids.count
|
|
77
|
-
display_messages << _("
|
|
81
|
+
display_messages << _("Removed %{count} host(s) from host collection %{host_collection}.") %
|
|
78
82
|
{:count => final_count, :host_collection => host_collection.name }
|
|
79
83
|
end
|
|
80
84
|
end
|
|
@@ -106,49 +110,6 @@ module Katello
|
|
|
106
110
|
respond_for_async :resource => task
|
|
107
111
|
end
|
|
108
112
|
|
|
109
|
-
api :PUT, "/hosts/bulk/remove_subscriptions", N_("Remove subscriptions from one or more hosts"), deprecated: true
|
|
110
|
-
param_group :bulk_params
|
|
111
|
-
param :subscriptions, Array, :desc => N_("Array of subscriptions to remove") do
|
|
112
|
-
param :id, String, :desc => N_("Subscription Pool id"), :required => true
|
|
113
|
-
param :quantity, Integer, :desc => N_("Quantity of specified subscription to remove"), :required => false
|
|
114
|
-
end
|
|
115
|
-
def remove_subscriptions
|
|
116
|
-
#combine the quantities for duplicate pools into PoolWithQuantities objects
|
|
117
|
-
pool_id_quantities = params.require(:subscriptions).inject({}) do |new_hash, subscription|
|
|
118
|
-
new_hash[subscription['id']] ||= PoolWithQuantities.new(Pool.find(subscription['id']))
|
|
119
|
-
new_hash[subscription['id']].quantities << subscription['quantity']
|
|
120
|
-
new_hash
|
|
121
|
-
end
|
|
122
|
-
task = async_task(::Actions::BulkAction, ::Actions::Katello::Host::RemoveSubscriptions, @hosts, pool_id_quantities.values)
|
|
123
|
-
respond_for_async :resource => task
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
api :PUT, "/hosts/bulk/add_subscriptions", N_("Add subscriptions to one or more hosts"), deprecated: true
|
|
127
|
-
param_group :bulk_params
|
|
128
|
-
param :subscriptions, Array, :desc => N_("Array of subscriptions to add"), :required => true do
|
|
129
|
-
param :id, String, :desc => N_("Subscription Pool id"), :required => true
|
|
130
|
-
param :quantity, :number, :desc => N_("Quantity of this subscriptions to add"), :required => true
|
|
131
|
-
end
|
|
132
|
-
def add_subscriptions
|
|
133
|
-
if @organization.simple_content_access?
|
|
134
|
-
fail HttpErrors::BadRequest, _("The specified organization is in Simple Content Access mode. Attaching subscriptions is disabled")
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
pools_with_quantities = params.require(:subscriptions).map do |sub_params|
|
|
138
|
-
PoolWithQuantities.new(Pool.find(sub_params['id']), sub_params['quantity'])
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
task = async_task(::Actions::BulkAction, ::Actions::Katello::Host::AttachSubscriptions, @hosts, pools_with_quantities)
|
|
142
|
-
respond_for_async :resource => task
|
|
143
|
-
end
|
|
144
|
-
|
|
145
|
-
api :PUT, "/hosts/bulk/auto_attach", N_("Trigger an auto-attach of subscriptions on one or more hosts"), deprecated: true
|
|
146
|
-
param_group :bulk_params
|
|
147
|
-
def auto_attach
|
|
148
|
-
task = async_task(::Actions::BulkAction, ::Actions::Katello::Host::AutoAttachSubscriptions, @hosts)
|
|
149
|
-
respond_for_async :resource => task
|
|
150
|
-
end
|
|
151
|
-
|
|
152
113
|
api :PUT, "/hosts/bulk/content_overrides", N_("Set content overrides to one or more hosts")
|
|
153
114
|
param_group :bulk_params
|
|
154
115
|
param :content_overrides, Array, :desc => N_("Array of Content override parameters") do
|
|
@@ -310,10 +271,6 @@ module Katello
|
|
|
310
271
|
find_bulk_hosts(:destroy_hosts, params)
|
|
311
272
|
end
|
|
312
273
|
|
|
313
|
-
def validate_organization
|
|
314
|
-
fail HttpErrors::BadRequest, _("Organization ID is required") if @organization.blank?
|
|
315
|
-
end
|
|
316
|
-
|
|
317
274
|
def validate_host_collection_membership_limit
|
|
318
275
|
max_hosts_exceeded = []
|
|
319
276
|
host_ids = @hosts.map(&:id)
|
|
@@ -676,7 +676,6 @@ Alternatively, use the 'force' parameter to regenerate metadata locally. On the
|
|
|
676
676
|
root.deb_releases = repo_params[:deb_releases] if repo_params[:deb_releases]
|
|
677
677
|
root.deb_components = repo_params[:deb_components] if repo_params[:deb_components]
|
|
678
678
|
root.deb_architectures = repo_params[:deb_architectures] if repo_params[:deb_architectures]
|
|
679
|
-
root.content_id = 'INITIAL_DUMMY_VALUE' unless Setting['deb_enable_structured_apt']
|
|
680
679
|
end
|
|
681
680
|
|
|
682
681
|
if root.ansible_collection?
|
|
@@ -24,6 +24,9 @@ module Katello
|
|
|
24
24
|
if taxonomy_class == Organization
|
|
25
25
|
begin
|
|
26
26
|
@taxonomy = Organization.new(resource_params)
|
|
27
|
+
# Raise validation error early if invalid
|
|
28
|
+
@taxonomy.validate!
|
|
29
|
+
|
|
27
30
|
::Katello::OrganizationCreator.new(@taxonomy).create!
|
|
28
31
|
@taxonomy.reload
|
|
29
32
|
switch_taxonomy
|
|
@@ -3,7 +3,6 @@ module Actions
|
|
|
3
3
|
class ActivationKey::Create < Candlepin::Abstract
|
|
4
4
|
input_format do
|
|
5
5
|
param :organization_label
|
|
6
|
-
param :auto_attach
|
|
7
6
|
param :service_level
|
|
8
7
|
param :release_version
|
|
9
8
|
param :purpose_role
|
|
@@ -13,7 +12,6 @@ module Actions
|
|
|
13
12
|
def run
|
|
14
13
|
output[:response] = ::Katello::Resources::Candlepin::ActivationKey.create(::Katello::Util::Model.uuid,
|
|
15
14
|
input[:organization_label],
|
|
16
|
-
input[:auto_attach],
|
|
17
15
|
input[:service_level],
|
|
18
16
|
input[:release_version],
|
|
19
17
|
input[:purpose_role],
|
|
@@ -6,7 +6,6 @@ module Actions
|
|
|
6
6
|
param :cp_id
|
|
7
7
|
param :release_version
|
|
8
8
|
param :service_level
|
|
9
|
-
param :auto_attach
|
|
10
9
|
param :purpose_role
|
|
11
10
|
param :purpose_usage
|
|
12
11
|
end
|
|
@@ -16,7 +15,6 @@ module Actions
|
|
|
16
15
|
input[:cp_id],
|
|
17
16
|
input[:release_version],
|
|
18
17
|
input[:service_level],
|
|
19
|
-
input[:auto_attach],
|
|
20
18
|
input[:purpose_role],
|
|
21
19
|
input[:purpose_usage])
|
|
22
20
|
end
|
|
@@ -16,12 +16,10 @@ module Actions
|
|
|
16
16
|
def run
|
|
17
17
|
content_url = input[:content_url]
|
|
18
18
|
if input[:type] == ::Katello::Repository::DEB_TYPE
|
|
19
|
-
# We must retrieve the repository in the run phase, so the latest Pulp version_href
|
|
20
|
-
#
|
|
19
|
+
# We must retrieve the deb? repository in the run phase, so the latest Pulp version_href
|
|
20
|
+
# is set. This is needed to retrieve the latest repository.deb_content_url_options!
|
|
21
21
|
repository = ::Katello::Repository.find(input[:repository_id])
|
|
22
|
-
|
|
23
|
-
content_url += repository.deb_content_url_options
|
|
24
|
-
end
|
|
22
|
+
content_url += repository.deb_content_url_options
|
|
25
23
|
end
|
|
26
24
|
|
|
27
25
|
output[:response] = ::Katello::Resources::Candlepin::Content.
|
|
@@ -16,11 +16,10 @@ module Actions
|
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
def finalize
|
|
19
|
+
# finalize, because Katello::Product::ContentCreate updates repository.content_id during finalize!
|
|
19
20
|
content_url = input[:content_url]
|
|
20
|
-
# We must retrieve the repository in the finalize phase, because Katello::Product::ContentCreate
|
|
21
|
-
# only updates the repository.content_id in the finalize phase!
|
|
22
21
|
repository = ::Katello::Repository.find(input[:repository_id])
|
|
23
|
-
if repository.
|
|
22
|
+
if repository.deb?
|
|
24
23
|
content_url += repository.deb_content_url_options
|
|
25
24
|
end
|
|
26
25
|
|
|
@@ -2,7 +2,7 @@ module Actions
|
|
|
2
2
|
module Helpers
|
|
3
3
|
module RollingCVRepos
|
|
4
4
|
def find_related_rolling_repos(repo)
|
|
5
|
-
repo.root.repositories.
|
|
5
|
+
repo.root.repositories.where(
|
|
6
6
|
content_view_version: ::Katello::ContentViewVersion.where(content_view: ::Katello::ContentView.rolling)
|
|
7
7
|
)
|
|
8
8
|
end
|
|
@@ -6,7 +6,6 @@ module Actions
|
|
|
6
6
|
activation_key.save!
|
|
7
7
|
cp_create = plan_action(Candlepin::ActivationKey::Create,
|
|
8
8
|
organization_label: activation_key.organization.label,
|
|
9
|
-
auto_attach: activation_key.auto_attach,
|
|
10
9
|
service_level: params[:service_level],
|
|
11
10
|
release_version: activation_key.release_version,
|
|
12
11
|
purpose_role: activation_key.purpose_role,
|
|
@@ -12,14 +12,12 @@ module Actions
|
|
|
12
12
|
cp_id: activation_key.cp_id,
|
|
13
13
|
release_version: activation_key.release_version,
|
|
14
14
|
service_level: activation_key.service_level,
|
|
15
|
-
auto_attach: activation_key.auto_attach,
|
|
16
15
|
purpose_role: activation_key.purpose_role,
|
|
17
16
|
purpose_usage: activation_key.purpose_usage)
|
|
18
17
|
end
|
|
19
18
|
end
|
|
20
19
|
|
|
21
20
|
def update_candlepin?(activation_key, activation_key_params)
|
|
22
|
-
cp_changed?(activation_key.auto_attach, activation_key_params[:auto_attach]) ||
|
|
23
21
|
cp_changed?(activation_key.service_level, activation_key_params[:service_level]) ||
|
|
24
22
|
cp_changed?(activation_key.release_version, activation_key_params[:release_version]) ||
|
|
25
23
|
cp_changed?(activation_key.purpose_role, activation_key_params[:purpose_role]) ||
|
|
@@ -2,7 +2,6 @@ module Actions
|
|
|
2
2
|
module Katello
|
|
3
3
|
module CapsuleContent
|
|
4
4
|
class SyncCapsule < ::Actions::EntryAction
|
|
5
|
-
include Helpers::RollingCVRepos
|
|
6
5
|
# rubocop:disable Metrics/MethodLength
|
|
7
6
|
execution_plan_hooks.use :update_content_counts, :on => :success
|
|
8
7
|
def plan(smart_proxy, options = {})
|
|
@@ -59,11 +58,7 @@ module Actions
|
|
|
59
58
|
smart_proxy_helper.lifecycle_environment_check(environment, repository)
|
|
60
59
|
if repository
|
|
61
60
|
if skip_metatadata_check || !repository.smart_proxy_sync_histories.where(:smart_proxy_id => smart_proxy).any? { |sph| !sph.finished_at.nil? }
|
|
62
|
-
|
|
63
|
-
[repository] + find_related_rolling_repos(repository)
|
|
64
|
-
else
|
|
65
|
-
[repository]
|
|
66
|
-
end
|
|
61
|
+
[repository]
|
|
67
62
|
end
|
|
68
63
|
else
|
|
69
64
|
repositories = smart_proxy_helper.repositories_available_to_capsule(environment, content_view).by_rpm_count
|
|
@@ -6,7 +6,7 @@ module Actions
|
|
|
6
6
|
action_subject gpg_key
|
|
7
7
|
gpg_key.update!(gpg_key_params)
|
|
8
8
|
gpg_key.repositories.each do |repository|
|
|
9
|
-
if repository.
|
|
9
|
+
if repository.deb?
|
|
10
10
|
plan_action(::Actions::Katello::Repository::RefreshRepository, repository)
|
|
11
11
|
end
|
|
12
12
|
end
|
|
@@ -2,36 +2,30 @@ module Actions
|
|
|
2
2
|
module Katello
|
|
3
3
|
module ContentView
|
|
4
4
|
class AddRollingRepoClone < Actions::EntryAction
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
def plan(content_view, repository_ids)
|
|
8
|
-
library = content_view.organization.library
|
|
5
|
+
def plan(content_view, repository_ids, environment_ids)
|
|
9
6
|
clone_ids = []
|
|
7
|
+
environments = ::Katello::KTEnvironment.where(id: environment_ids)
|
|
8
|
+
repositories = ::Katello::Repository.where(id: repository_ids)
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
clone
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
10
|
+
environments.each do |environment|
|
|
11
|
+
concurrence do
|
|
12
|
+
repositories.each do |repository|
|
|
13
|
+
sequence do
|
|
14
|
+
clone = content_view.get_repo_clone(environment, repository).first
|
|
15
|
+
if clone.nil?
|
|
16
|
+
clone = repository.build_clone(content_view: content_view, environment: environment)
|
|
17
|
+
clone.save!
|
|
18
|
+
end
|
|
19
|
+
plan_action(RefreshRollingRepo, clone, false)
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
view_env_cp_id = content_view.content_view_environment(environment).cp_id
|
|
22
|
+
content_id = repository.content_id
|
|
23
|
+
plan_action(Actions::Candlepin::Environment::AddContentToEnvironment, :view_env_cp_id => view_env_cp_id, :content_id => content_id)
|
|
24
|
+
clone_ids << clone.id
|
|
25
|
+
end
|
|
25
26
|
end
|
|
26
27
|
end
|
|
27
28
|
end
|
|
28
|
-
plan_self(repository_ids: clone_ids)
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def run
|
|
32
|
-
::Katello::Repository.where(id: input[:repository_ids]).each do |repository|
|
|
33
|
-
schedule_async_repository_proxy_sync(repository)
|
|
34
|
-
end
|
|
35
29
|
end
|
|
36
30
|
end
|
|
37
31
|
end
|
|
@@ -2,20 +2,25 @@ module Actions
|
|
|
2
2
|
module Katello
|
|
3
3
|
module ContentView
|
|
4
4
|
class Create < Actions::Base
|
|
5
|
-
def plan(content_view)
|
|
5
|
+
def plan(content_view, environment_ids = [])
|
|
6
6
|
content_view.save!
|
|
7
7
|
if content_view.rolling?
|
|
8
|
-
|
|
8
|
+
new_version = content_view.create_new_version
|
|
9
|
+
if environment_ids&.any?
|
|
10
|
+
::Katello::KTEnvironment.where(id: environment_ids).each do |environment|
|
|
11
|
+
plan_action(AddToEnvironment, new_version, environment)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
9
14
|
repository_ids = content_view.repository_ids
|
|
10
15
|
if repository_ids.any?
|
|
11
16
|
content_view.reload
|
|
12
|
-
plan_action(AddRollingRepoClone, content_view, repository_ids)
|
|
17
|
+
plan_action(AddRollingRepoClone, content_view, repository_ids, environment_ids)
|
|
13
18
|
end
|
|
14
19
|
end
|
|
15
20
|
end
|
|
16
21
|
|
|
17
22
|
def humanized_name
|
|
18
|
-
_("Create")
|
|
23
|
+
_("Create content view")
|
|
19
24
|
end
|
|
20
25
|
end
|
|
21
26
|
end
|
|
@@ -59,13 +59,6 @@ module Actions
|
|
|
59
59
|
if options[:importing]
|
|
60
60
|
handle_importing_content(version, options[:path], options[:metadata])
|
|
61
61
|
elsif options[:syncable]
|
|
62
|
-
if separated_repo_map[:pulp3_deb_multicopy].keys.flatten.present?
|
|
63
|
-
plan_action(::Actions::Katello::Repository::MultiCloneToVersion, separated_repo_map[:pulp3_deb_multicopy], version)
|
|
64
|
-
end
|
|
65
|
-
if separated_repo_map[:pulp3_yum_multicopy].keys.flatten.present?
|
|
66
|
-
plan_action(::Actions::Katello::Repository::MultiCloneToVersion, separated_repo_map[:pulp3_yum_multicopy], version)
|
|
67
|
-
end
|
|
68
|
-
|
|
69
62
|
# Create import history for syncable imports so they display under hammer's content-import list command.
|
|
70
63
|
if options[:path] && options[:metadata]
|
|
71
64
|
plan_action(
|
|
@@ -76,6 +69,13 @@ module Actions
|
|
|
76
69
|
content_view_name: version.content_view.name
|
|
77
70
|
)
|
|
78
71
|
end
|
|
72
|
+
else
|
|
73
|
+
if separated_repo_map[:pulp3_deb_multicopy].keys.flatten.present?
|
|
74
|
+
plan_action(::Actions::Katello::Repository::MultiCloneToVersion, separated_repo_map[:pulp3_deb_multicopy], version)
|
|
75
|
+
end
|
|
76
|
+
if separated_repo_map[:pulp3_yum_multicopy].keys.flatten.present?
|
|
77
|
+
plan_action(::Actions::Katello::Repository::MultiCloneToVersion, separated_repo_map[:pulp3_yum_multicopy], version)
|
|
78
|
+
end
|
|
79
79
|
end
|
|
80
80
|
|
|
81
81
|
concurrence do
|
|
@@ -2,6 +2,8 @@ module Actions
|
|
|
2
2
|
module Katello
|
|
3
3
|
module ContentView
|
|
4
4
|
class RefreshRollingRepo < Actions::EntryAction
|
|
5
|
+
include Helpers::SmartProxySyncHelper
|
|
6
|
+
|
|
5
7
|
def plan(repository, contents_changed)
|
|
6
8
|
action_subject repository
|
|
7
9
|
sequence do
|
|
@@ -23,8 +25,10 @@ module Actions
|
|
|
23
25
|
repository.last_contents_changed = DateTime.now if repository.version_href != library_instance.version_href
|
|
24
26
|
|
|
25
27
|
repository.version_href = library_instance.version_href
|
|
28
|
+
repository.version_prn = library_instance.version_prn
|
|
26
29
|
repository.publication_href = library_instance.publication_href
|
|
27
|
-
|
|
30
|
+
repository.publication_prn = library_instance.publication_prn
|
|
31
|
+
if repository.deb?
|
|
28
32
|
repository.content_id = library_instance.content_id
|
|
29
33
|
end
|
|
30
34
|
repository.save!
|
|
@@ -33,6 +37,7 @@ module Actions
|
|
|
33
37
|
def finalize
|
|
34
38
|
repository = ::Katello::Repository.find(input[:repository_id])
|
|
35
39
|
repository.clear_smart_proxy_sync_histories if input[:contents_changed]
|
|
40
|
+
schedule_async_repository_proxy_sync(repository)
|
|
36
41
|
end
|
|
37
42
|
end
|
|
38
43
|
end
|
|
@@ -2,21 +2,26 @@ module Actions
|
|
|
2
2
|
module Katello
|
|
3
3
|
module ContentView
|
|
4
4
|
class RemoveRollingRepoClone < Actions::EntryAction
|
|
5
|
-
def plan(content_view, repository_ids)
|
|
6
|
-
|
|
5
|
+
def plan(content_view, repository_ids, environment_ids)
|
|
6
|
+
clone_ids = []
|
|
7
|
+
environments = ::Katello::KTEnvironment.where(id: environment_ids)
|
|
8
|
+
repositories = ::Katello::Repository.where(id: repository_ids)
|
|
7
9
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
sequence do
|
|
11
|
+
environments.each do |environment|
|
|
12
|
+
concurrence do
|
|
13
|
+
repositories.each do |repository|
|
|
14
|
+
clone_repo = content_view.get_repo_clone(environment, repository).first
|
|
15
|
+
next if clone_repo.nil?
|
|
13
16
|
|
|
14
|
-
|
|
15
|
-
|
|
17
|
+
clone_ids << clone_repo.id
|
|
18
|
+
plan_action(Actions::Pulp3::Repository::DeleteDistributions, clone_repo.id, SmartProxy.pulp_primary)
|
|
19
|
+
end
|
|
20
|
+
plan_action(Candlepin::Environment::SetContent, content_view, environment, content_view.content_view_environment(environment))
|
|
21
|
+
end
|
|
16
22
|
end
|
|
17
|
-
|
|
23
|
+
plan_self(repository_ids: clone_ids)
|
|
18
24
|
end
|
|
19
|
-
plan_self(repository_ids: clone_repo_ids)
|
|
20
25
|
end
|
|
21
26
|
|
|
22
27
|
def run
|
|
@@ -2,7 +2,7 @@ module Actions
|
|
|
2
2
|
module Katello
|
|
3
3
|
module ContentView
|
|
4
4
|
class Update < Actions::EntryAction
|
|
5
|
-
def plan(content_view, content_view_params)
|
|
5
|
+
def plan(content_view, content_view_params, environment_ids)
|
|
6
6
|
action_subject content_view
|
|
7
7
|
content_view_params = content_view_params.with_indifferent_access
|
|
8
8
|
|
|
@@ -28,15 +28,42 @@ module Actions
|
|
|
28
28
|
end
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
handle_rolling_content_view(content_view, content_view_params[:repository_ids], environment_ids)
|
|
32
|
+
content_view.update!(content_view_params)
|
|
33
|
+
end
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
def handle_rolling_content_view(content_view, target_repo_ids, target_env_ids)
|
|
36
|
+
return unless content_view.rolling?
|
|
37
|
+
|
|
38
|
+
add_repo_ids, remove_repo_ids, retain_repo_ids = translate_id_lists(content_view.repository_ids, target_repo_ids)
|
|
39
|
+
|
|
40
|
+
if target_env_ids.nil?
|
|
41
|
+
target_env_ids = retain_env_ids = content_view.environment_ids
|
|
42
|
+
else
|
|
43
|
+
add_env_ids, remove_env_ids, retain_env_ids = translate_id_lists(content_view.environment_ids, target_env_ids)
|
|
44
|
+
::Katello::KTEnvironment.where(id: add_env_ids).each do |environment|
|
|
45
|
+
plan_action(AddToEnvironment, content_view.versions[0], environment)
|
|
46
|
+
end
|
|
47
|
+
plan_action(AddRollingRepoClone, content_view, retain_repo_ids, add_env_ids) if retain_repo_ids.any? && add_env_ids.any?
|
|
48
|
+
::Katello::KTEnvironment.where(id: remove_env_ids).each do |environment|
|
|
49
|
+
plan_action(RemoveFromEnvironment, content_view, environment)
|
|
50
|
+
end
|
|
37
51
|
end
|
|
38
52
|
|
|
39
|
-
content_view.
|
|
53
|
+
plan_action(AddRollingRepoClone, content_view, add_repo_ids, target_env_ids) if add_repo_ids.any?
|
|
54
|
+
plan_action(RemoveRollingRepoClone, content_view, remove_repo_ids, retain_env_ids) if remove_repo_ids.any?
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def translate_id_lists(current_ids, target_ids)
|
|
58
|
+
if target_ids.nil?
|
|
59
|
+
add_ids = remove_ids = []
|
|
60
|
+
retain_ids = current_ids
|
|
61
|
+
else
|
|
62
|
+
add_ids = target_ids - current_ids
|
|
63
|
+
remove_ids = current_ids - target_ids
|
|
64
|
+
retain_ids = current_ids - remove_ids
|
|
65
|
+
end
|
|
66
|
+
return add_ids, remove_ids, retain_ids
|
|
40
67
|
end
|
|
41
68
|
end
|
|
42
69
|
end
|
|
@@ -7,7 +7,7 @@ module Actions
|
|
|
7
7
|
def plan(repository)
|
|
8
8
|
root = repository.root
|
|
9
9
|
sequence do
|
|
10
|
-
if repository.content_id.nil?
|
|
10
|
+
if repository.content_id.nil?
|
|
11
11
|
content_create = plan_action(Candlepin::Product::ContentCreate,
|
|
12
12
|
repository_id: repository.id,
|
|
13
13
|
owner: root.organization.label,
|
|
@@ -45,7 +45,7 @@ module Actions
|
|
|
45
45
|
def finalize
|
|
46
46
|
root = ::Katello::RootRepository.find(input[:root_repository_id])
|
|
47
47
|
content_url = root.custom_content_path
|
|
48
|
-
if root.
|
|
48
|
+
if root.deb?
|
|
49
49
|
repository = ::Katello::Repository.find(input[:repository_id])
|
|
50
50
|
content_url += repository.deb_content_url_options
|
|
51
51
|
repository.update(:content_id => input[:content_id])
|
|
@@ -15,7 +15,7 @@ module Actions
|
|
|
15
15
|
::Katello::ProductContent.where(product_id: root_repository.product_id,
|
|
16
16
|
content_id: katello_content_id).destroy_all
|
|
17
17
|
|
|
18
|
-
if root_repository.repositories.count <= 1 || repository.
|
|
18
|
+
if root_repository.repositories.count <= 1 || repository.deb?
|
|
19
19
|
plan_action(Candlepin::Product::ContentDestroy,
|
|
20
20
|
owner: root_repository.product.organization.label,
|
|
21
21
|
content_id: repository.content_id)
|