katello 3.17.0.rc1 → 3.17.0.rc2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of katello might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/app/controllers/katello/api/registry/registry_proxies_controller.rb +5 -3
- data/app/controllers/katello/api/rhsm/candlepin_dynflow_proxy_controller.rb +1 -1
- data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +2 -2
- data/app/controllers/katello/api/v2/api_controller.rb +1 -1
- data/app/controllers/katello/api/v2/content_credentials_controller.rb +1 -1
- data/app/controllers/katello/api/v2/content_uploads_controller.rb +5 -5
- data/app/controllers/katello/api/v2/content_view_repositories_controller.rb +47 -0
- data/app/controllers/katello/api/v2/content_view_versions_controller.rb +50 -19
- data/app/controllers/katello/api/v2/gpg_keys_controller.rb +1 -1
- data/app/controllers/katello/api/v2/host_tracer_controller.rb +0 -5
- data/app/controllers/katello/api/v2/products_bulk_actions_controller.rb +15 -0
- data/app/controllers/katello/api/v2/repositories_controller.rb +24 -14
- data/app/controllers/katello/api/v2/subscriptions_controller.rb +1 -1
- data/app/controllers/katello/concerns/api/v2/{associations_permission_check.rb → authorization.rb} +20 -2
- data/app/controllers/katello/concerns/hosts_controller_extensions.rb +11 -5
- data/app/helpers/katello/content_view_helper.rb +1 -1
- data/app/lib/actions/candlepin/product/content_add.rb +1 -2
- data/app/lib/actions/katello/capsule_content/refresh_repos.rb +1 -1
- data/app/lib/actions/katello/capsule_content/sync.rb +2 -2
- data/app/lib/actions/katello/capsule_content/sync_capsule.rb +17 -3
- data/app/lib/actions/katello/content_view/capsule_sync.rb +1 -1
- data/app/lib/actions/katello/content_view/destroy.rb +2 -2
- data/app/lib/actions/katello/content_view/incremental_updates.rb +1 -1
- data/app/lib/actions/katello/content_view/promote_to_environment.rb +1 -0
- data/app/lib/actions/katello/content_view/publish.rb +12 -7
- data/app/lib/actions/katello/content_view_puppet_environment/clone.rb +1 -1
- data/app/lib/actions/katello/content_view_puppet_environment/create.rb +2 -2
- data/app/lib/actions/katello/content_view_version/incremental_update.rb +4 -4
- data/app/lib/actions/katello/organization/manifest_delete.rb +1 -0
- data/app/lib/actions/katello/organization/manifest_import.rb +1 -0
- data/app/lib/actions/katello/organization/manifest_refresh.rb +1 -0
- data/app/lib/actions/katello/product/content_create.rb +3 -3
- data/app/lib/actions/katello/product/destroy.rb +25 -4
- data/app/lib/actions/katello/repository/clone_contents.rb +3 -3
- data/app/lib/actions/katello/repository/clone_to_environment.rb +2 -2
- data/app/lib/actions/katello/repository/clone_to_version.rb +1 -1
- data/app/lib/actions/katello/repository/create.rb +1 -1
- data/app/lib/actions/katello/repository/destroy.rb +10 -4
- data/app/lib/actions/katello/repository/export.rb +3 -3
- data/app/lib/actions/katello/repository/finish_upload.rb +2 -2
- data/app/lib/actions/katello/repository/import_upload.rb +3 -3
- data/app/lib/actions/katello/repository/metadata_generate.rb +1 -1
- data/app/lib/actions/katello/repository/multi_clone_contents.rb +6 -10
- data/app/lib/actions/katello/repository/purge_empty_content.rb +1 -1
- data/app/lib/actions/katello/repository/remove_content.rb +1 -1
- data/app/lib/actions/katello/repository/sync.rb +35 -25
- data/app/lib/actions/katello/repository/update.rb +30 -19
- data/app/lib/actions/katello/repository/update_http_proxy_details.rb +1 -1
- data/app/lib/actions/katello/repository/update_metadata_sync.rb +1 -1
- data/app/lib/actions/katello/repository/upload_files.rb +2 -2
- data/app/lib/actions/katello/repository/verify_checksum.rb +28 -0
- data/app/lib/actions/pulp/content_view_puppet_environment/copy_contents.rb +1 -1
- data/app/lib/actions/pulp/orchestration/orphan_cleanup/remove_orphans.rb +1 -1
- data/app/lib/actions/pulp/orchestration/repository/sync.rb +2 -1
- data/app/lib/actions/pulp/repository/copy_all_units.rb +1 -1
- data/app/lib/actions/pulp/repository/copy_units.rb +1 -1
- data/app/lib/actions/pulp/repository/create.rb +1 -1
- data/app/lib/actions/pulp/repository/destroy.rb +1 -1
- data/app/lib/actions/pulp/repository/remove_units.rb +2 -2
- data/app/lib/actions/pulp/repository/sync.rb +3 -2
- data/app/lib/actions/pulp3/capsule_content/sync.rb +3 -1
- data/app/lib/actions/pulp3/content_guard/refresh_all_distributions.rb +19 -0
- data/app/lib/actions/pulp3/content_migration.rb +3 -3
- data/app/lib/actions/pulp3/content_view_version/create_exporter.rb +20 -0
- data/app/lib/actions/pulp3/content_view_version/destroy_exporter.rb +16 -0
- data/app/lib/actions/pulp3/content_view_version/export.rb +19 -0
- data/app/lib/actions/pulp3/import_migration.rb +3 -3
- data/app/lib/actions/pulp3/orchestration/content_view_version/export.rb +69 -0
- data/app/lib/actions/pulp3/orchestration/repository/copy_all_units.rb +1 -2
- data/app/lib/actions/pulp3/orchestration/repository/create.rb +1 -1
- data/app/lib/actions/pulp3/orchestration/repository/sync.rb +3 -1
- data/app/lib/actions/pulp3/orchestration/repository/trigger_update_repo_cert_guard.rb +22 -0
- data/app/lib/actions/pulp3/orchestration/repository/upload_content.rb +1 -1
- data/app/lib/actions/pulp3/repository/copy_content.rb +0 -1
- data/app/lib/actions/pulp3/repository/multi_copy_units.rb +2 -2
- data/app/lib/actions/pulp3/repository/presenters/repair_presenter.rb +85 -0
- data/app/lib/actions/pulp3/repository/refresh_distribution.rb +11 -5
- data/app/lib/actions/pulp3/repository/repair.rb +29 -0
- data/app/lib/actions/pulp3/repository/save_artifact.rb +1 -1
- data/app/lib/actions/pulp3/repository/save_distribution_references.rb +2 -2
- data/app/lib/actions/pulp3/repository/save_version.rb +20 -16
- data/app/lib/actions/pulp3/repository/save_versions.rb +1 -1
- data/app/lib/actions/pulp3/repository/sync.rb +1 -1
- data/app/lib/actions/pulp3/repository/update_cv_repository_cert_guard.rb +6 -2
- data/app/lib/actions/pulp3/repository/upload_file.rb +2 -2
- data/app/lib/katello/concerns/base_template_scope_extensions.rb +5 -3
- data/app/lib/katello/concerns/permission_extensions.rb +14 -0
- data/app/lib/katello/foreman.rb +1 -1
- data/app/lib/katello/resources/candlepin/product.rb +0 -11
- data/app/lib/katello/resources/registry.rb +3 -3
- data/app/models/katello/authorization/content_view_version_export_history.rb +11 -0
- data/app/models/katello/authorization/product.rb +4 -0
- data/app/models/katello/authorization/repository.rb +8 -0
- data/app/models/katello/concerns/content_facet_host_extensions.rb +2 -1
- data/app/models/katello/concerns/organization_extensions.rb +6 -1
- data/app/models/katello/concerns/pulp_database_unit.rb +2 -2
- data/app/models/katello/concerns/redhat_extensions.rb +4 -2
- data/app/models/katello/concerns/smart_proxy_extensions.rb +33 -16
- data/app/models/katello/concerns/subscription_facet_host_extensions.rb +1 -1
- data/app/models/katello/content_view.rb +1 -1
- data/app/models/katello/content_view_package_filter.rb +1 -1
- data/app/models/katello/content_view_puppet_environment.rb +1 -1
- data/app/models/katello/content_view_version.rb +3 -1
- data/app/models/katello/content_view_version_export_history.rb +22 -0
- data/app/models/katello/docker_meta_tag.rb +1 -1
- data/app/models/katello/errata_status.rb +21 -12
- data/app/models/katello/erratum.rb +1 -1
- data/app/models/katello/glue/candlepin/owner.rb +4 -2
- data/app/models/katello/glue/pulp/repo.rb +3 -1
- data/app/models/katello/host/content_facet.rb +8 -0
- data/app/models/katello/kt_environment.rb +1 -1
- data/app/models/katello/package_group.rb +1 -1
- data/app/models/katello/ping.rb +8 -3
- data/app/models/katello/pulp3/content_guard.rb +1 -1
- data/app/models/katello/purpose_status.rb +2 -2
- data/app/models/katello/repository.rb +23 -15
- data/app/models/katello/rhsm_fact_parser.rb +1 -1
- data/app/models/katello/root_repository.rb +2 -15
- data/app/models/katello/sync_plan.rb +8 -0
- data/app/models/setting/content.rb +3 -1
- data/app/services/cert/certs.rb +10 -2
- data/app/services/katello/candlepin/event_handler.rb +1 -0
- data/app/services/katello/host_status_manager.rb +7 -0
- data/app/services/katello/pulp/content.rb +1 -1
- data/app/services/katello/pulp/repository.rb +7 -7
- data/app/services/katello/pulp/repository/deb.rb +2 -2
- data/app/services/katello/pulp/repository/docker.rb +5 -5
- data/app/services/katello/pulp/repository/file.rb +2 -2
- data/app/services/katello/pulp/repository/ostree.rb +2 -2
- data/app/services/katello/pulp/repository/puppet.rb +2 -2
- data/app/services/katello/pulp/repository/yum.rb +5 -6
- data/app/services/katello/pulp/smart_proxy_repository.rb +1 -1
- data/app/services/katello/pulp3/ansible_collection.rb +2 -2
- data/app/services/katello/pulp3/api/core.rb +16 -0
- data/app/services/katello/pulp3/content.rb +3 -3
- data/app/services/katello/pulp3/content_view_version/export.rb +71 -0
- data/app/services/katello/pulp3/distribution.rb +2 -2
- data/app/services/katello/pulp3/docker_blob.rb +2 -2
- data/app/services/katello/pulp3/docker_manifest.rb +2 -2
- data/app/services/katello/pulp3/docker_manifest_list.rb +2 -2
- data/app/services/katello/pulp3/docker_tag.rb +2 -2
- data/app/services/katello/pulp3/erratum.rb +2 -2
- data/app/services/katello/pulp3/file_unit.rb +2 -2
- data/app/services/katello/pulp3/migration.rb +139 -34
- data/app/services/katello/pulp3/migration_plan.rb +50 -14
- data/app/services/katello/pulp3/migration_switchover.rb +41 -9
- data/app/services/katello/pulp3/module_stream.rb +2 -2
- data/app/services/katello/pulp3/package_group.rb +2 -2
- data/app/services/katello/pulp3/repository.rb +9 -9
- data/app/services/katello/pulp3/repository/docker.rb +18 -10
- data/app/services/katello/pulp3/repository/yum.rb +25 -13
- data/app/services/katello/pulp3/repository_mirror.rb +2 -1
- data/app/services/katello/pulp3/rpm.rb +2 -2
- data/app/services/katello/pulp3/smart_proxy_mirror_repository.rb +2 -2
- data/app/services/katello/pulp3/smart_proxy_repository.rb +1 -1
- data/app/services/katello/pulp3/srpm.rb +2 -2
- data/app/services/katello/pulp3/task_group.rb +1 -1
- data/app/services/katello/pulp3/yum_metadata_file.rb +2 -2
- data/app/services/katello/registration_manager.rb +9 -3
- data/app/services/katello/repository_type.rb +1 -1
- data/app/services/katello/smart_proxy_helper.rb +14 -17
- data/app/views/foreman/job_templates/install_errata_-_katello_ansible_default.erb +10 -2
- data/app/views/katello/api/v2/content_view_repositories/show_all.json.rabl +8 -0
- data/app/views/katello/api/v2/content_view_version_export_histories/index.json.rabl +7 -0
- data/app/views/katello/api/v2/content_view_version_export_histories/show.json.rabl +13 -0
- data/app/views/katello/api/v2/package_groups/show.json.rabl +1 -1
- data/app/views/katello/api/v2/packages/show.json.rabl +1 -1
- data/app/views/katello/api/v2/repositories/base.json.rabl +2 -1
- data/app/views/katello/api/v2/srpms/show.json.rabl +1 -1
- data/app/views/katello/api/v2/sync_plans/show.json.rabl +2 -1
- data/config/routes/api/rhsm.rb +1 -0
- data/config/routes/api/v2.rb +8 -1
- data/db/migrate/20200818040551_add_content_view_version_export_history.rb +13 -0
- data/db/migrate/20200818192230_update_system_purpose_status.rb +12 -0
- data/db/migrate/20200820145217_add_download_concurrency_to_katello_root_repositories.rb +5 -0
- data/db/migrate/20200910140340_remove_distribution_uuid.rb +5 -0
- data/db/migrate/20200914200906_remove_auto_enabled.rb +5 -0
- data/engines/bastion/app/assets/javascripts/bastion/bastion.js +1 -0
- data/engines/bastion/app/assets/javascripts/bastion/routing.module.js +1 -1
- data/engines/bastion/vendor/assets/javascripts/bastion/angular-ui-router/stateEvents.js +300 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/activation-keys.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-add-subscriptions.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-associations.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-subscriptions.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/details/content-credential-products.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/details/content-credential-repositories.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-errata-modal.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-host-collections-modal.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-module-streams-modal.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-repository-sets-modal.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-subscriptions-modal.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-traces-modal.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts-helper.service.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-debs-installed.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-errata.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-module-streams.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages-applicable.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages-installed.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-traces.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-add-host-collections.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-add-subscriptions.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-details-info.controller.js +4 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-host-collections.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-subscriptions.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html +2 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-views.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/content-view-composite-available-content-views.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/content-view-composite-content-views-list.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-docker-repositories.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-ostree-repositories.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-docker-repositories-list.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-ostree-repositories-list.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-versions.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/available-errata-filter.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/available-package-group-filter.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/content-view-puppet-module-names.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/content-view-puppet-module-versions.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/content-view-puppet-modules.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/content-view-version-content.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/debs.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/deb-content-views.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/deb-repositories.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/environment-content.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/erratum-repositories.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/details/file-content-views.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/details/file-repositories.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/files.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/host-collections.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de.po +57 -12
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/es.po +45 -8
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/fr.po +42 -5
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/it.po +36 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ja.po +36 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ko.po +36 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt_BR.po +45 -8
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ru.po +36 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_CN.po +36 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_TW.po +36 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/translations.js +4 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/organizations/fenced-pages.service.js +11 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/organizations/organization-selector.controller.js +5 -14
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/details/ostree-branch-repositories.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/details/package-repositories.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/packages.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/product-bulk-action.factory.js +1 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/products-bulk-sync-plan-modal.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/product-repositories.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-manage-content.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details.controller.js +6 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-details.html +7 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +0 -9
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +0 -11
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repository.factory.js +1 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.controller.js +16 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/views/products.html +6 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/puppet-module-content-views.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/puppet-module-repositories.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/puppet-modules.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/sync-plan-details-info.controller.js +4 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/views/sync-plan-info.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/sync-plans.controller.js +1 -1
- data/lib/katello/engine.rb +2 -0
- data/lib/katello/permission_creator.rb +14 -9
- data/lib/katello/tasks/clean_published_repo_directories.rake +3 -3
- data/lib/katello/tasks/pulp3_content_switchover.rake +24 -6
- data/lib/katello/tasks/pulp3_migration.rake +4 -2
- data/lib/katello/tasks/pulp3_post_migration_check.rake +2 -2
- data/lib/katello/tasks/reimport.rake +1 -1
- data/lib/katello/tasks/repository.rake +15 -2
- data/lib/katello/tasks/unify_hosts.rake +1 -0
- data/lib/katello/tasks/upgrades/3.11/update_puppet_repos.rake +3 -3
- data/lib/katello/tasks/upgrades/3.12/remove_pulp2_notifier.rake +2 -2
- data/lib/katello/tasks/upgrades/3.8/clear_checksum_type.rake +2 -2
- data/lib/katello/version.rb +1 -1
- data/locale/action_names.rb +47 -47
- data/locale/katello.pot +160 -160
- data/webpack/containers/Application/config.js +4 -4
- data/webpack/redux/actions/RedHatRepositories/helpers.js +1 -1
- data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +22 -32
- data/webpack/scenes/Subscriptions/Manifest/__tests__/SimpleContentAccess.test.js +0 -14
- data/webpack/scenes/Subscriptions/Manifest/index.js +2 -5
- data/webpack/scenes/Subscriptions/SubscriptionReducer.js +15 -6
- data/webpack/scenes/Subscriptions/SubscriptionsPage.js +0 -1
- data/webpack/scenes/Subscriptions/SubscriptionsSelectors.js +3 -0
- data/webpack/scenes/Subscriptions/__tests__/SubscriptionsReducer.test.js +24 -0
- data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsReducer.test.js.snap +114 -26
- metadata +67 -33
- data/app/lib/actions/candlepin/product/content_update_enablement.rb +0 -18
- data/app/lib/actions/katello/repository/content_update.rb +0 -41
- data/app/lib/actions/katello/repository/update_cv_repo_cert_guard.rb +0 -17
@@ -16,7 +16,7 @@
|
|
16
16
|
|
17
17
|
repositoriesNutupane = new Nutupane(Repository, params);
|
18
18
|
$scope.controllerName = 'katello_repositories';
|
19
|
-
repositoriesNutupane.
|
19
|
+
repositoriesNutupane.primaryOnly = true;
|
20
20
|
repositoriesNutupane.setSearchKey('repositoriesSearch');
|
21
21
|
|
22
22
|
$scope.table = repositoriesNutupane.table;
|
@@ -30,7 +30,7 @@ angular.module('Bastion.sync-plans').controller('SyncPlanDetailsInfoController',
|
|
30
30
|
function updateSyncPlan(syncPlan) {
|
31
31
|
var syncDate;
|
32
32
|
if (syncPlan['sync_date']) {
|
33
|
-
syncDate = new Date(syncPlan['sync_date']
|
33
|
+
syncDate = new Date(syncPlan['sync_date']);
|
34
34
|
} else {
|
35
35
|
syncDate = new Date();
|
36
36
|
}
|
@@ -68,11 +68,12 @@ angular.module('Bastion.sync-plans').controller('SyncPlanDetailsInfoController',
|
|
68
68
|
syncDate = new Date(syncPlan.syncDate),
|
69
69
|
syncTime = new Date(syncPlan.syncTime || new Date());
|
70
70
|
|
71
|
+
var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', hour: 'numeric', minute: 'numeric', second: 'numeric' };
|
72
|
+
|
71
73
|
syncDate.setHours(syncTime.getHours());
|
72
74
|
syncDate.setMinutes(syncTime.getMinutes());
|
73
75
|
syncDate.setSeconds(0);
|
74
|
-
syncPlan['sync_date'] = syncDate.
|
75
|
-
|
76
|
+
syncPlan['sync_date'] = syncDate.toLocaleString("en-US", options);
|
76
77
|
syncPlan.$update(function (response) {
|
77
78
|
updateSyncPlan(syncPlan);
|
78
79
|
deferred.resolve(response);
|
@@ -28,7 +28,7 @@ angular.module('Bastion.sync-plans').controller('SyncPlansController',
|
|
28
28
|
|
29
29
|
nutupane = new Nutupane(SyncPlan, params);
|
30
30
|
$scope.controllerName = 'katello_sync_plans';
|
31
|
-
nutupane.
|
31
|
+
nutupane.primaryOnly = true;
|
32
32
|
|
33
33
|
$scope.syncPlanTable = nutupane.table;
|
34
34
|
$scope.removeRow = nutupane.removeRow;
|
data/lib/katello/engine.rb
CHANGED
@@ -76,7 +76,9 @@ module Katello
|
|
76
76
|
# make sure the Katello plugin is initialized before `after_initialize`
|
77
77
|
# hook so that the resumed Dynflow tasks can rely on everything ready.
|
78
78
|
initializer 'katello.register_plugin', :before => :finisher_hook do
|
79
|
+
::Foreman::AccessControl::Permission.prepend ::Katello::Concerns::PermissionExtensions
|
79
80
|
require 'katello/plugin'
|
81
|
+
|
80
82
|
# extend builtin permissions from core with new actions
|
81
83
|
require 'katello/permissions'
|
82
84
|
end
|
@@ -71,7 +71,8 @@ module Katello
|
|
71
71
|
'katello/api/v2/content_view_filter_rules' => [:index, :show],
|
72
72
|
'katello/api/v2/content_view_histories' => [:index, :auto_complete_search],
|
73
73
|
'katello/api/v2/content_view_puppet_modules' => [:index, :show, :auto_complete_search],
|
74
|
-
'katello/api/v2/
|
74
|
+
'katello/api/v2/content_view_repositories' => [:show_all],
|
75
|
+
'katello/api/v2/content_view_versions' => [:index, :show, :auto_complete_search, :export_histories],
|
75
76
|
'katello/api/v2/content_view_components' => [:index, :show],
|
76
77
|
'katello/api/v2/packages' => [:index],
|
77
78
|
'katello/api/v2/package_groups' => [:index, :show, :auto_complete_search, :compare],
|
@@ -293,23 +294,24 @@ module Katello
|
|
293
294
|
:repo_compare_packages,
|
294
295
|
:repo_compare_puppet_modules]
|
295
296
|
},
|
296
|
-
:resource_type => 'Katello::Product'
|
297
|
+
:resource_type => 'Katello::Product',
|
298
|
+
:finder_scope => :readable
|
297
299
|
@plugin.permission :create_products,
|
298
300
|
{
|
299
301
|
'katello/api/v2/products' => [:create],
|
300
|
-
'katello/api/v2/repositories' => [:create],
|
301
302
|
'katello/api/v2/package_groups' => [:create]
|
302
303
|
},
|
303
304
|
:resource_type => 'Katello::Product'
|
304
305
|
@plugin.permission :edit_products,
|
305
306
|
{
|
306
307
|
'katello/api/v2/products' => [:update],
|
307
|
-
'katello/api/v2/repositories' => [:update, :remove_content, :import_uploads, :upload_content, :republish],
|
308
|
-
'katello/api/v2/products_bulk_actions' => [:update_sync_plans, :update_http_proxy],
|
308
|
+
'katello/api/v2/repositories' => [:create, :update, :remove_content, :import_uploads, :upload_content, :republish, :verify_checksum],
|
309
|
+
'katello/api/v2/products_bulk_actions' => [:update_sync_plans, :update_http_proxy, :verify_checksum_products],
|
309
310
|
'katello/api/v2/content_uploads' => [:create, :update, :destroy],
|
310
311
|
'katello/api/v2/organizations' => [:repo_discover, :cancel_repo_discover]
|
311
312
|
},
|
312
|
-
:resource_type => 'Katello::Product'
|
313
|
+
:resource_type => 'Katello::Product',
|
314
|
+
:finder_scope => :editable
|
313
315
|
@plugin.permission :destroy_products,
|
314
316
|
{
|
315
317
|
'katello/api/v2/products' => [:destroy],
|
@@ -318,7 +320,8 @@ module Katello
|
|
318
320
|
'katello/api/v2/repositories_bulk_actions' => [:destroy_repositories],
|
319
321
|
'katello/api/v2/package_groups' => [:destroy]
|
320
322
|
},
|
321
|
-
:resource_type => 'Katello::Product'
|
323
|
+
:resource_type => 'Katello::Product',
|
324
|
+
:finder_scope => :deletable
|
322
325
|
@plugin.permission :sync_products,
|
323
326
|
{
|
324
327
|
'katello/api/v2/products' => [:sync],
|
@@ -329,12 +332,14 @@ module Katello
|
|
329
332
|
'katello/api/v2/sync_plans' => [:sync],
|
330
333
|
'katello/sync_management' => [:index, :sync_status, :product_status, :sync, :destroy]
|
331
334
|
},
|
332
|
-
:resource_type => 'Katello::Product'
|
335
|
+
:resource_type => 'Katello::Product',
|
336
|
+
:finder_scope => :syncable
|
333
337
|
@plugin.permission :export_products,
|
334
338
|
{
|
335
339
|
'katello/api/v2/repositories' => [:export]
|
336
340
|
},
|
337
|
-
:resource_type => 'Katello::Product'
|
341
|
+
:resource_type => 'Katello::Product',
|
342
|
+
:finder_scope => :exportable
|
338
343
|
end
|
339
344
|
|
340
345
|
def subscription_permissions # rubocop:disable Metrics/MethodLength
|
@@ -10,12 +10,12 @@ namespace :katello do
|
|
10
10
|
end
|
11
11
|
|
12
12
|
yum_distributor_directory = Dir.glob "#{OLD_DIRECTORY}/yum_distributor/*"
|
13
|
-
|
14
|
-
|
13
|
+
primary_directory = Dir.glob "#{OLD_DIRECTORY}/*"
|
14
|
+
primary_directory.delete "#{OLD_DIRECTORY}/yum_distributor"
|
15
15
|
|
16
16
|
republish = []
|
17
17
|
delete = []
|
18
|
-
|
18
|
+
primary_directory.each do |directory|
|
19
19
|
repo_name = directory.split('/').last
|
20
20
|
(current_cv_directories.include?(repo_name) && yum_distributor_directory.exclude?("#{OLD_DIRECTORY}/yum_distributor/#{repo_name}")) ? republish << repo_name : delete << directory
|
21
21
|
end
|
@@ -1,14 +1,32 @@
|
|
1
1
|
require File.expand_path("../engine", File.dirname(__FILE__))
|
2
|
+
require "#{Katello::Engine.root}/app/services/katello/pulp3/migration_switchover"
|
2
3
|
|
3
4
|
namespace :katello do
|
4
5
|
desc "Runs a Pulp 3 migration of pulp3 hrefs to pulp ids for supported content types."
|
5
6
|
task :pulp3_content_switchover => :environment do
|
6
|
-
|
7
|
-
|
8
|
-
|
7
|
+
begin
|
8
|
+
User.current = User.anonymous_admin
|
9
|
+
|
10
|
+
ActiveRecord::Base.transaction do
|
11
|
+
switchover_service = Katello::Pulp3::MigrationSwitchover.new(SmartProxy.pulp_primary)
|
12
|
+
switchover_service.run
|
13
|
+
end
|
14
|
+
rescue Katello::Pulp3::SwitchOverError => e
|
15
|
+
$stderr.print(e.message)
|
16
|
+
exit 1
|
17
|
+
end
|
18
|
+
|
19
|
+
task = ForemanTasks.sync_task(Actions::Pulp3::ContentGuard::RefreshAllDistributions, SmartProxy.pulp_primary)
|
20
|
+
until !task.pending? || task.paused?
|
21
|
+
sleep(10)
|
22
|
+
task = ForemanTasks::Task.find(task.id)
|
23
|
+
end
|
24
|
+
if task.result == 'error' || task.result == 'pending'
|
25
|
+
msg _("Content Guard Configuration failed, switchover aborted. Switchover continuing, but after completion, you will want to investigate: https://#{Socket.gethostname}/foreman_tasks/tasks/#{task.id}")
|
26
|
+
Rails.logger.error(msg)
|
27
|
+
$stderr.print(msg)
|
28
|
+
else
|
29
|
+
puts _("Content Switchover completed successfully")
|
9
30
|
end
|
10
|
-
rescue Katello::Pulp3::SwitchoverError => e
|
11
|
-
$stderr.print(e.message)
|
12
|
-
exit 1
|
13
31
|
end
|
14
32
|
end
|
@@ -3,7 +3,7 @@ load "#{Katello::Engine.root}/lib/katello/tasks/common.rake"
|
|
3
3
|
namespace :katello do
|
4
4
|
desc "Runs a Pulp 2 to 3 Content Migration for supported types. May be run multiple times. Use wait=false to immediately return with a task url."
|
5
5
|
task :pulp3_migration => ["environment", "disable_dynflow", "check_ping"] do
|
6
|
-
task = ForemanTasks.async_task(Actions::Pulp3::ContentMigration)
|
6
|
+
task = ForemanTasks.async_task(Actions::Pulp3::ContentMigration, SmartProxy.pulp_primary, reimport_all: ENV['reimport_all'])
|
7
7
|
|
8
8
|
if ENV['wait'].nil? || ::Foreman::Cast.to_bool(ENV['wait'])
|
9
9
|
until !task.pending? || task.paused?
|
@@ -11,7 +11,9 @@ namespace :katello do
|
|
11
11
|
task = ForemanTasks::Task.find(task.id)
|
12
12
|
end
|
13
13
|
|
14
|
-
if task.result == '
|
14
|
+
if task.result == 'warning' || task.result == 'pending'
|
15
|
+
msg = _("Migration failed, You will want to investigate: https://#{Socket.gethostname}/foreman_tasks/tasks/#{task.id}\n")
|
16
|
+
$stderr.print(msg)
|
15
17
|
fail ForemanTasks::TaskError, task
|
16
18
|
else
|
17
19
|
puts _("Content Migration completed successfully")
|
@@ -4,10 +4,10 @@ namespace :katello do
|
|
4
4
|
desc "Runs a post Pulp3 migration check for supported content types."
|
5
5
|
task :pulp3_post_migration_check => :environment do
|
6
6
|
User.current = User.anonymous_admin
|
7
|
-
repository_types = Katello::Pulp3::Migration
|
7
|
+
repository_types = Katello::Pulp3::Migration.repository_types_for_migration
|
8
8
|
|
9
9
|
# Take care of repository deletions
|
10
|
-
ForemanTasks.sync_task(Actions::Pulp3::OrphanCleanup::DeleteOrphanedMigratedRepositories, SmartProxy.
|
10
|
+
ForemanTasks.sync_task(Actions::Pulp3::OrphanCleanup::DeleteOrphanedMigratedRepositories, SmartProxy.pulp_primary)
|
11
11
|
|
12
12
|
repository_types.each do |type|
|
13
13
|
# check version
|
@@ -25,7 +25,7 @@ namespace :katello do
|
|
25
25
|
|
26
26
|
Katello::RepositoryTypeManager.repository_types.each_value do |repo_type|
|
27
27
|
indexable_types = repo_type.content_types_to_index
|
28
|
-
if SmartProxy.
|
28
|
+
if SmartProxy.pulp_primary.pulp3_repository_type_support?(repo_type)
|
29
29
|
puts "\e[33mIgnoring types: #{indexable_types&.map { |type| type.model_class.name }}\e[0m\n"
|
30
30
|
else
|
31
31
|
models += indexable_types&.map(&:model_class)
|
@@ -65,6 +65,10 @@ namespace :katello do
|
|
65
65
|
handle_missing_repo(repo)
|
66
66
|
end
|
67
67
|
end
|
68
|
+
|
69
|
+
::Katello::RootRepository.orphaned.each do |root_repo|
|
70
|
+
handle_missing_root_repo(root_repo)
|
71
|
+
end
|
68
72
|
end
|
69
73
|
|
70
74
|
desc "Correct missing pulp repositories for puppet environments. Specify CONTENT_VIEW=name and LIFECYCLE_ENVIRONMENT=name to narrow repositories. COMMIT=true to perform operation."
|
@@ -135,9 +139,14 @@ namespace :katello do
|
|
135
139
|
end
|
136
140
|
|
137
141
|
def repo_exists?(repo)
|
138
|
-
|
142
|
+
if SmartProxy.pulp_primary!.pulp3_support?(repo)
|
143
|
+
backend_service = repo.backend_service(SmartProxy.pulp_primary!)
|
144
|
+
backend_service.api.repositories_api.read(backend_service.repository_reference.repository_href)
|
145
|
+
else
|
146
|
+
Katello.pulp_server.extensions.repository.retrieve(repo.pulp_id)
|
147
|
+
end
|
139
148
|
true
|
140
|
-
rescue RestClient::ResourceNotFound
|
149
|
+
rescue RestClient::ResourceNotFound, PulpRpmClient::ApiError
|
141
150
|
false
|
142
151
|
end
|
143
152
|
|
@@ -152,6 +161,10 @@ namespace :katello do
|
|
152
161
|
end
|
153
162
|
end
|
154
163
|
|
164
|
+
def handle_missing_root_repo(root_repo)
|
165
|
+
root_repo.destroy! if commit?
|
166
|
+
end
|
167
|
+
|
155
168
|
def handle_missing_puppet_env(puppet_env)
|
156
169
|
puts "Content View Puppet Environment #{puppet_env.id} Missing, Creating."
|
157
170
|
ForemanTasks.sync_task(::Actions::Katello::ContentViewPuppetEnvironment::Create, puppet_env) if commit?
|
@@ -2,7 +2,7 @@ namespace :katello do
|
|
2
2
|
namespace :upgrades do
|
3
3
|
namespace '3.11' do
|
4
4
|
def wait_on_task(task, time = 0.1)
|
5
|
-
task = SmartProxy.
|
5
|
+
task = SmartProxy.pulp_primary.pulp_api.resources.task.poll(task['task_id'])
|
6
6
|
return if Actions::Pulp::AbstractAsyncTask::FINISHED_STATES.include?(task['state'])
|
7
7
|
sleep time
|
8
8
|
wait_on_task(task, time + 0.2)
|
@@ -13,9 +13,9 @@ namespace :katello do
|
|
13
13
|
User.current = User.anonymous_admin
|
14
14
|
Katello::Repository.puppet_type.each do |repo|
|
15
15
|
puts "Refreshing repository #{repo.label} (#{repo.id})"
|
16
|
-
install_dist = repo.backend_service(SmartProxy.
|
16
|
+
install_dist = repo.backend_service(SmartProxy.pulp_primary).backend_data['distributors'].find { |dist| dist['distributor_type_id'] == 'puppet_install_distributor' }
|
17
17
|
if install_dist
|
18
|
-
response = SmartProxy.
|
18
|
+
response = SmartProxy.pulp_primary.pulp_api.resources.repository.delete_distributor(repo.pulp_id, install_dist['id'])
|
19
19
|
wait_on_task('task_id' => response['spawned_tasks'][0]['task_id'])
|
20
20
|
end
|
21
21
|
ForemanTasks.sync_task(::Actions::Pulp::Repository::Refresh, repo)
|
@@ -3,9 +3,9 @@ namespace :katello do
|
|
3
3
|
namespace '3.12' do
|
4
4
|
desc "removes the unused pulp2 notifier"
|
5
5
|
task :remove_pulp2_notifier => %w(environment) do
|
6
|
-
SmartProxy.
|
6
|
+
SmartProxy.pulp_primary!.pulp_api.resources.event_notifier.list.each do |notifier|
|
7
7
|
Rails.logger.info("Deleting notifier #{notifier['id']}")
|
8
|
-
SmartProxy.
|
8
|
+
SmartProxy.pulp_primary!.pulp_api.resources.event_notifier.delete(notifier['id'])
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
@@ -15,7 +15,7 @@ namespace :katello do
|
|
15
15
|
:download_policy => ::Runcible::Models::YumImporter::DOWNLOAD_IMMEDIATE
|
16
16
|
}
|
17
17
|
|
18
|
-
SmartProxy.
|
18
|
+
SmartProxy.pulp_primary.pulp_api.resources.repository.update_importer(repo.pulp_id, importer[:id], config) if (importer && importer[:id])
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
@@ -26,7 +26,7 @@ namespace :katello do
|
|
26
26
|
repo.update_attribute(:saved_checksum_type, nil)
|
27
27
|
|
28
28
|
if repo.find_distributor[:config]&.delete(:checksum_type)
|
29
|
-
SmartProxy.
|
29
|
+
SmartProxy.pulp_primary.pulp_api.resources.repository.update_distributor(
|
30
30
|
repo.pulp_id, repo.find_distributor[:id], repo.find_distributor[:config])
|
31
31
|
end
|
32
32
|
# rubocop:disable Lint/SuppressedException
|
data/lib/katello/version.rb
CHANGED
data/locale/action_names.rb
CHANGED
@@ -1,70 +1,70 @@
|
|
1
1
|
# Autogenerated!
|
2
|
-
_("
|
3
|
-
_("
|
4
|
-
_("
|
5
|
-
_("
|
6
|
-
_("
|
7
|
-
_("
|
8
|
-
_("Update")
|
9
|
-
_("Generate host applicability")
|
10
|
-
_("Bulk generate applicability for hosts")
|
11
|
-
_("Generate repository applicability")
|
12
|
-
_("Synchronize smart proxy")
|
13
|
-
_("Sync capsule")
|
14
|
-
_("Delete")
|
2
|
+
_("Index module streams")
|
3
|
+
_("Index package groups")
|
4
|
+
_("Upload into")
|
5
|
+
_("Index content")
|
6
|
+
_("Fetch pxe files")
|
7
|
+
_("Discover")
|
15
8
|
_("Errata mail")
|
16
|
-
_("
|
17
|
-
_("
|
18
|
-
_("
|
19
|
-
_("
|
20
|
-
_("
|
21
|
-
_("
|
22
|
-
_("
|
23
|
-
_("
|
24
|
-
_("
|
25
|
-
_("
|
26
|
-
_("
|
27
|
-
_("
|
9
|
+
_("Delete")
|
10
|
+
_("Delete Package Group")
|
11
|
+
_("Create")
|
12
|
+
_("Delete Product")
|
13
|
+
_("Reindex subscriptions")
|
14
|
+
_("Product Create")
|
15
|
+
_("Destroy")
|
16
|
+
_("Combined Profile Update")
|
17
|
+
_("Update release version for host")
|
18
|
+
_("Remove subscriptions")
|
19
|
+
_("Update Content Overrides")
|
20
|
+
_("Install package")
|
21
|
+
_("Update package")
|
22
|
+
_("Install package group")
|
23
|
+
_("Install Applicable Errata")
|
28
24
|
_("Attach subscriptions")
|
25
|
+
_("Update")
|
29
26
|
_("Auto attach subscriptions")
|
30
27
|
_("Destroy Content Host")
|
31
|
-
_("Install Applicable Errata")
|
32
28
|
_("Install erratum")
|
33
29
|
_("Hypervisors")
|
34
30
|
_("Hypervisors update")
|
35
|
-
_("Install package")
|
36
31
|
_("Remove package")
|
37
|
-
_("Update package")
|
38
|
-
_("Install package group")
|
39
32
|
_("Remove package group")
|
40
|
-
_("Remove subscriptions")
|
41
|
-
_("Update Content Overrides")
|
42
33
|
_("Update for host")
|
43
|
-
_("Update release version for host")
|
44
34
|
_("Package Profile Update")
|
45
|
-
_("
|
46
|
-
_("
|
47
|
-
_("
|
48
|
-
_("Delete Product")
|
49
|
-
_("Reindex subscriptions")
|
50
|
-
_("Delete Package Group")
|
51
|
-
_("Discover")
|
52
|
-
_("Fetch pxe files")
|
35
|
+
_("Abstract async task")
|
36
|
+
_("Update http proxy")
|
37
|
+
_("Export")
|
53
38
|
_("Filtered index content")
|
54
|
-
_("Upload into")
|
55
|
-
_("Index content")
|
56
39
|
_("Index errata")
|
57
|
-
_("Index module streams")
|
58
|
-
_("Index package groups")
|
59
40
|
_("Instance update")
|
41
|
+
_("Import facts")
|
42
|
+
_("Import Puppet classes")
|
43
|
+
_("Action with sub plans")
|
60
44
|
_("Remove Content")
|
61
45
|
_("Synchronize")
|
62
46
|
_("Update content urls")
|
63
47
|
_("Update http proxy details")
|
64
|
-
_("Disable")
|
65
|
-
_("Enable")
|
66
48
|
_("Update redhat repository")
|
67
49
|
_("Upload errata into")
|
68
50
|
_("Create Package Group")
|
51
|
+
_("Disable")
|
52
|
+
_("Enable")
|
69
53
|
_("Run Sync Plan:")
|
70
|
-
_("
|
54
|
+
_("Publish Lifecycle Environment Repositories")
|
55
|
+
_("Delete Lifecycle Environment")
|
56
|
+
_("Incremental Update")
|
57
|
+
_("Republish Version Repositories")
|
58
|
+
_("Remove Version")
|
59
|
+
_("Remove from Environment")
|
60
|
+
_("Remove Versions and Associations")
|
61
|
+
_("Promotion to Environment")
|
62
|
+
_("Publish")
|
63
|
+
_("Promote")
|
64
|
+
_("Incremental Update of Content View Version(s) ")
|
65
|
+
_("Sync capsule")
|
66
|
+
_("Synchronize smart proxy")
|
67
|
+
_("Generate repository applicability")
|
68
|
+
_("Bulk generate applicability for hosts")
|
69
|
+
_("Generate host applicability")
|
70
|
+
_("Delete Activation Key")
|