katello 4.13.1 → 4.14.0.rc1.1
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/assets/javascripts/katello/hosts/host_and_hostgroup_edit.js +12 -8
- data/app/assets/javascripts/katello/locale/bn/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/bn_IN/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/ca/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/cs/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/cs_CZ/katello.js +275 -23
- data/app/assets/javascripts/katello/locale/de/katello.js +280 -28
- data/app/assets/javascripts/katello/locale/de_AT/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/de_DE/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/el/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/en/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/en_GB/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/en_US/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/es/katello.js +276 -24
- data/app/assets/javascripts/katello/locale/et_EE/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/fr/katello.js +283 -31
- data/app/assets/javascripts/katello/locale/gl/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/gu/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/he_IL/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/hi/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/id/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/it/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/ja/katello.js +283 -31
- data/app/assets/javascripts/katello/locale/ka/katello.js +280 -28
- data/app/assets/javascripts/katello/locale/kn/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/ko/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/ml_IN/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/mr/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/nl_NL/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/or/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/pa/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/pl/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/pl_PL/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/pt/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/pt_BR/katello.js +276 -24
- data/app/assets/javascripts/katello/locale/ro/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/ro_RO/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/ru/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/sl/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/sv_SE/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/ta/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/ta_IN/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/te/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/tr/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/vi/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/vi_VN/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/zh/katello.js +274 -22
- data/app/assets/javascripts/katello/locale/zh_CN/katello.js +283 -31
- data/app/assets/javascripts/katello/locale/zh_TW/katello.js +274 -22
- data/app/controllers/katello/api/registry/registry_proxies_controller.rb +118 -74
- data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +15 -10
- data/app/controllers/katello/api/v2/activation_keys_controller.rb +1 -1
- data/app/controllers/katello/api/v2/api_controller.rb +7 -0
- data/app/controllers/katello/api/v2/content_view_versions_controller.rb +4 -4
- data/app/controllers/katello/api/v2/debs_controller.rb +3 -2
- data/app/controllers/katello/api/v2/environments_controller.rb +2 -4
- data/app/controllers/katello/api/v2/host_contents_controller.rb +8 -3
- data/app/controllers/katello/api/v2/host_errata_controller.rb +4 -4
- data/app/controllers/katello/api/v2/host_packages_controller.rb +2 -2
- data/app/controllers/katello/api/v2/organizations_controller.rb +1 -1
- data/app/controllers/katello/api/v2/packages_controller.rb +13 -3
- data/app/controllers/katello/api/v2/repositories_bulk_actions_controller.rb +6 -2
- data/app/controllers/katello/api/v2/repositories_controller.rb +3 -4
- data/app/controllers/katello/api/v2/repository_sets_controller.rb +13 -14
- data/app/controllers/katello/api/v2/subscriptions_controller.rb +15 -9
- data/app/controllers/katello/api/v2/sync_controller.rb +2 -2
- data/app/controllers/katello/application_controller.rb +1 -1
- data/app/controllers/katello/concerns/api/v2/authorization.rb +3 -2
- data/app/controllers/katello/concerns/api/v2/hosts_controller_extensions.rb +28 -0
- data/app/controllers/katello/concerns/api/v2/registration_commands_controller_extensions.rb +1 -1
- data/app/controllers/katello/concerns/api/v2/registration_controller_extensions.rb +4 -0
- data/app/controllers/katello/concerns/api/v2/repository_content_controller.rb +4 -3
- data/app/controllers/katello/concerns/hosts_controller_extensions.rb +2 -4
- data/app/controllers/katello/remote_execution_controller.rb +53 -58
- data/app/helpers/katello/hosts_and_hostgroups_helper.rb +19 -2
- data/app/helpers/katello/katello_urls_helper.rb +1 -1
- data/app/lib/actions/katello/alternate_content_source/alternate_content_source_common.rb +1 -1
- data/app/lib/actions/katello/alternate_content_source/update.rb +2 -1
- data/app/lib/actions/katello/capsule_content/verify_checksum.rb +1 -2
- data/app/lib/actions/katello/content_view/publish.rb +1 -0
- data/app/lib/actions/katello/content_view_version/create_repos.rb +1 -0
- data/app/lib/actions/katello/content_view_version/incremental_update.rb +3 -2
- data/app/lib/actions/katello/environment/{publish_repositories.rb → publish_container_repositories.rb} +10 -8
- data/app/lib/actions/katello/foreman/content_update.rb +4 -6
- data/app/lib/actions/katello/host/hypervisors_update.rb +6 -4
- data/app/lib/actions/katello/repository/create.rb +4 -4
- data/app/lib/actions/katello/repository/import_upload.rb +4 -6
- data/app/lib/actions/katello/repository/metadata_generate.rb +1 -0
- data/app/lib/actions/katello/repository/update.rb +3 -3
- data/app/lib/actions/katello/repository_set/enable_repository.rb +5 -6
- data/app/lib/actions/middleware/backend_services_check.rb +3 -2
- data/app/lib/actions/pulp3/abstract_async_task.rb +2 -4
- data/app/lib/actions/pulp3/capsule_content/verify_checksum.rb +1 -2
- data/app/lib/actions/pulp3/orchestration/repository/copy_all_units.rb +5 -1
- data/app/lib/actions/pulp3/orchestration/repository/delete.rb +5 -2
- data/app/lib/actions/pulp3/repository/save_version.rb +3 -5
- data/app/lib/katello/concerns/base_template_scope_extensions.rb +5 -9
- data/app/lib/katello/errors.rb +1 -0
- data/app/lib/katello/http_resource.rb +1 -0
- data/app/lib/katello/lazy_accessor.rb +1 -1
- data/app/lib/katello/resources/candlepin/candlepin_ping.rb +0 -5
- data/app/lib/katello/resources/candlepin/owner.rb +1 -1
- data/app/lib/katello/resources/candlepin/pool.rb +1 -2
- data/app/lib/katello/resources/candlepin/upstream_job.rb +1 -1
- data/app/lib/katello/resources/cdn.rb +3 -2
- data/app/lib/katello/resources/discovery/yum.rb +3 -3
- data/app/lib/katello/util/cdn_var_substitutor.rb +5 -3
- data/app/lib/katello/util/data.rb +3 -2
- data/app/lib/katello/util/errata.rb +4 -3
- data/app/lib/katello/util/package.rb +3 -3
- data/app/lib/katello/util/path_with_substitutions.rb +1 -1
- data/app/lib/katello/util/report_table.rb +3 -2
- data/app/lib/katello/util/url_matcher.rb +1 -1
- data/app/lib/katello/validators/alternate_content_source_path_validator.rb +4 -3
- data/app/lib/katello/validators/alternate_content_source_products_validator.rb +5 -7
- data/app/lib/katello/validators/container_image_name_validator.rb +1 -1
- data/app/lib/katello/validators/katello_name_format_validator.rb +2 -2
- data/app/lib/katello/validators/no_trailing_space_validator.rb +2 -2
- data/app/lib/katello/validators/prior_validator.rb +2 -2
- data/app/lib/katello/validators/product_unique_attribute_validator.rb +2 -4
- data/app/models/katello/activation_key.rb +4 -6
- data/app/models/katello/alternate_content_source.rb +1 -1
- data/app/models/katello/authorization/host_tracer.rb +1 -2
- data/app/models/katello/authorization/product.rb +1 -1
- data/app/models/katello/candlepin/repository_mapper.rb +2 -2
- data/app/models/katello/concerns/host_managed_extensions.rb +41 -10
- data/app/models/katello/concerns/hostgroup_extensions.rb +2 -4
- data/app/models/katello/concerns/location_extensions.rb +2 -4
- data/app/models/katello/concerns/operatingsystem_extensions.rb +84 -16
- data/app/models/katello/concerns/smart_proxy_extensions.rb +4 -4
- data/app/models/katello/concerns/subscription_facet_host_extensions.rb +2 -0
- data/app/models/katello/content_view.rb +5 -1
- data/app/models/katello/content_view_environment.rb +19 -4
- data/app/models/katello/content_view_environment_content_facet.rb +11 -0
- data/app/models/katello/erratum.rb +1 -1
- data/app/models/katello/event.rb +1 -1
- data/app/models/katello/glue/provider.rb +1 -2
- data/app/models/katello/hash_util.rb +1 -1
- data/app/models/katello/host/content_facet.rb +16 -3
- data/app/models/katello/host/subscription_facet.rb +27 -4
- data/app/models/katello/host_collection.rb +12 -8
- data/app/models/katello/pool.rb +5 -1
- data/app/models/katello/product.rb +7 -4
- data/app/models/katello/provider.rb +1 -2
- data/app/models/katello/repository.rb +18 -4
- data/app/models/katello/root_repository.rb +19 -0
- data/app/models/katello/rpm.rb +2 -2
- data/app/models/katello/subscription_facet_pool.rb +1 -1
- data/app/models/katello/sync_plan.rb +5 -4
- data/app/models/katello/task_status.rb +18 -18
- data/app/presenters/katello/product_host_count_presenter.rb +10 -0
- data/app/services/katello/candlepin/consumer.rb +11 -11
- data/app/services/katello/candlepin/message_handler.rb +3 -2
- data/app/services/katello/content_unit_indexer.rb +6 -0
- data/app/services/katello/pulp3/alternate_content_source.rb +1 -3
- data/app/services/katello/pulp3/api/core.rb +1 -1
- data/app/services/katello/pulp3/api/docker.rb +10 -0
- data/app/services/katello/pulp3/content_view_version/export.rb +1 -0
- data/app/services/katello/pulp3/content_view_version/import.rb +6 -4
- data/app/services/katello/pulp3/content_view_version/importable_products.rb +1 -3
- data/app/services/katello/pulp3/repository/apt.rb +4 -16
- data/app/services/katello/pulp3/repository/yum.rb +9 -5
- data/app/services/katello/pulp3/repository.rb +2 -2
- data/app/services/katello/pulp3/repository_mirror.rb +2 -9
- data/app/services/katello/pulp3/task.rb +4 -2
- data/app/services/katello/registration_manager.rb +13 -3
- data/app/services/katello/smart_proxy_helper.rb +1 -0
- data/app/views/dashboard/_host_collection_widget.html.erb +5 -4
- data/app/views/foreman/job_templates/install_errata.erb +2 -0
- data/app/views/foreman/job_templates/install_errata_-_katello_ansible_default.erb +2 -0
- data/app/views/foreman/job_templates/install_errata_by_search_query.erb +2 -0
- data/app/views/foreman/job_templates/install_errata_by_search_query_-_katello_ansible_default.erb +3 -1
- data/app/views/foreman/job_templates/install_packages_by_search_query_-_katello_ansible_default.erb +1 -1
- data/app/views/foreman/job_templates/remove_packages_by_search_query_-_katello_ansible_default.erb +2 -2
- data/app/views/foreman/job_templates/resolve_traces.erb +5 -1
- data/app/views/foreman/job_templates/update_packages_by_search_query_-_katello_ansible_default.erb +1 -1
- data/app/views/foreman/job_templates/upload_profile.erb +2 -0
- data/app/views/foreman/smart_proxies/_reclaim_space.html.erb +7 -5
- data/app/views/katello/api/v2/content_facet/base.json.rabl +18 -2
- data/app/views/katello/api/v2/packages/thindex.json.rabl +6 -0
- data/app/views/katello/api/v2/repositories/show.json.rabl +8 -8
- data/app/views/katello/api/v2/repository_sets/show.json.rabl +1 -1
- data/app/views/katello/api/v2/subscription_facet/base.json.rabl +1 -1
- data/app/views/katello/api/v2/subscriptions/index.json.rabl +1 -0
- data/app/views/katello/api/v2/subscriptions/show.json.rabl +1 -0
- data/app/views/overrides/activation_keys/_host_environment_select.html.erb +14 -11
- data/app/views/overrides/activation_keys/_host_synced_content_select.html.erb +4 -4
- data/config/routes/api/v2.rb +3 -1
- data/config/routes.rb +1 -3
- data/db/migrate/20160114200145_add_mirror_on_sync_to_repositories.rb +1 -0
- data/db/migrate/20160131182301_add_download_policy_to_katello_repositories.rb +1 -0
- data/db/migrate/20210119162528_delete_puppet_and_ostree_repos.rb +3 -0
- data/db/migrate/20240522165308_add_priority_to_content_view_environment_content_facet.rb +5 -0
- data/db/migrate/20240621121212_katello_repository_debs_id_bigint.rb +6 -0
- data/db/migrate/20240729192228_add_convert2rhel_to_host_facets.rb +9 -0
- data/db/seeds.d/102-organizations.rb +5 -7
- data/db/seeds.d/150-module_job_templates.rb +7 -9
- data/db/seeds.d/75-job_templates.rb +9 -16
- data/engines/bastion_katello/README.md +3 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-errata.controller.js +3 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/views/deb-info.html +6 -6
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum-content-hosts.html +2 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +4 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/details/views/package-info.html +6 -6
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +28 -27
- data/engines/bastion_katello/lib/bastion_katello/engine.rb +2 -2
- data/lib/katello/engine.rb +1 -8
- data/lib/katello/permission_creator.rb +3 -2
- data/lib/katello/plugin.rb +31 -27
- data/lib/katello/tasks/clean_old_file_repos.rake +2 -4
- data/lib/katello/tasks/reset.rake +3 -4
- data/lib/katello/version.rb +1 -1
- data/lib/katello.rb +0 -2
- data/lib/monkeys/ar_postgres_evr_t.rb +2 -0
- data/locale/action_names.rb +1 -1
- data/locale/bn/katello.po +274 -22
- data/locale/bn_IN/katello.po +274 -22
- data/locale/ca/katello.po +274 -22
- data/locale/cs/katello.po +274 -22
- data/locale/cs_CZ/katello.po +275 -23
- data/locale/de/katello.po +280 -28
- data/locale/de_AT/katello.po +274 -22
- data/locale/de_DE/katello.po +274 -22
- data/locale/el/katello.po +274 -22
- data/locale/en/katello.po +274 -22
- data/locale/en_GB/katello.po +274 -22
- data/locale/en_US/katello.po +274 -22
- data/locale/es/katello.po +276 -24
- data/locale/et_EE/katello.po +274 -22
- data/locale/fr/katello.po +283 -31
- data/locale/gl/katello.po +274 -22
- data/locale/gu/katello.po +274 -22
- data/locale/he_IL/katello.po +274 -22
- data/locale/hi/katello.po +274 -22
- data/locale/id/katello.po +274 -22
- data/locale/it/katello.po +274 -22
- data/locale/ja/katello.po +283 -31
- data/locale/ka/katello.po +280 -28
- data/locale/katello.pot +1001 -527
- data/locale/kn/katello.po +274 -22
- data/locale/ko/katello.po +274 -22
- data/locale/ml_IN/katello.po +274 -22
- data/locale/mr/katello.po +274 -22
- data/locale/nl_NL/katello.po +274 -22
- data/locale/or/katello.po +274 -22
- data/locale/pa/katello.po +274 -22
- data/locale/pl/katello.po +274 -22
- data/locale/pl_PL/katello.po +274 -22
- data/locale/pt/katello.po +274 -22
- data/locale/pt_BR/katello.po +276 -24
- data/locale/ro/katello.po +274 -22
- data/locale/ro_RO/katello.po +274 -22
- data/locale/ru/katello.po +274 -22
- data/locale/sl/katello.po +274 -22
- data/locale/sv_SE/katello.po +274 -22
- data/locale/ta/katello.po +274 -22
- data/locale/ta_IN/katello.po +274 -22
- data/locale/te/katello.po +274 -22
- data/locale/tr/katello.po +274 -22
- data/locale/vi/katello.po +274 -22
- data/locale/vi_VN/katello.po +274 -22
- data/locale/zh/katello.po +274 -22
- data/locale/zh_CN/katello.po +283 -31
- data/locale/zh_TW/katello.po +274 -22
- data/webpack/ForemanColumnExtensions/index.js +44 -1
- data/webpack/components/Table/TableWrapper.js +6 -0
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ChangeHostCVModal.js +24 -3
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ContentViewDetailsCard.js +124 -56
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/HostContentViewActions.js +2 -3
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/__tests__/contentViewDetailsCard.test.js +44 -10
- data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionActions.js +83 -31
- data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionConstants.js +1 -0
- data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionHooks.js +1 -1
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/remoteExecutionActions.test.js +44 -0
- data/webpack/components/extensions/HostDetails/Tabs/customizedRexUrlHelpers.js +22 -7
- data/webpack/components/extensions/Hosts/ActionsBar/ActionsBar.scss +14 -0
- data/webpack/components/extensions/Hosts/ActionsBar/index.js +82 -23
- data/webpack/components/extensions/Hosts/BulkActions/BulkChangeHostCVModal/index.js +5 -2
- data/webpack/components/extensions/Hosts/BulkActions/BulkErrataWizard/02_BulkErrataTable.js +171 -0
- data/webpack/components/extensions/Hosts/BulkActions/BulkErrataWizard/04_Review.js +160 -0
- data/webpack/components/extensions/Hosts/BulkActions/BulkErrataWizard/04_ReviewFooter.js +99 -0
- data/webpack/components/extensions/Hosts/BulkActions/BulkErrataWizard/BulkErrataWizard.js +157 -0
- data/webpack/components/extensions/Hosts/BulkActions/BulkErrataWizard/index.js +24 -0
- data/webpack/components/extensions/Hosts/BulkActions/BulkPackagesWizard/02_BulkPackagesTable.js +157 -0
- data/webpack/components/extensions/Hosts/BulkActions/BulkPackagesWizard/04_Review.js +168 -0
- data/webpack/components/extensions/Hosts/BulkActions/BulkPackagesWizard/04_ReviewFooter.js +141 -0
- data/webpack/components/extensions/Hosts/BulkActions/BulkPackagesWizard/BulkPackagesWizard.js +252 -0
- data/webpack/components/extensions/Hosts/BulkActions/BulkPackagesWizard/index.js +24 -0
- data/webpack/components/extensions/Hosts/BulkActions/HostReview.js +176 -0
- data/webpack/components/extensions/Hosts/TableRowActions/index.js +17 -0
- data/webpack/global_index.js +11 -3
- data/webpack/redux/actions/RedHatRepositories/repositorySetRepositories.js +5 -6
- data/webpack/redux/reducers/RedHatRepositories/__tests__/repositorySetRepositories.test.js +1 -1
- data/webpack/redux/reducers/RedHatRepositories/repositorySetRepositories.js +1 -1
- data/webpack/scenes/ContentViews/Copy/CopyContentViewModal.js +2 -1
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewAddModal.js +2 -1
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewBulkAddModal.js +2 -1
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +2 -1
- data/webpack/scenes/ContentViews/Details/ContentViewDetails.js +2 -1
- data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +2 -2
- data/webpack/scenes/ContentViews/Publish/CVPublishForm.js +2 -1
- data/webpack/scenes/ContentViews/Publish/CVPublishReview.js +3 -2
- data/webpack/scenes/ContentViews/Publish/PublishContentViewWizard.js +2 -1
- data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +2 -1
- data/webpack/scenes/ContentViews/components/CVBreadCrumb.js +2 -1
- data/webpack/scenes/ContentViews/components/ContentViewSelect/ContentViewSelectOption.js +2 -2
- data/webpack/scenes/Subscriptions/Details/SubscriptionAttributes.js +1 -0
- data/webpack/scenes/Subscriptions/Details/__tests__/__snapshots__/SubscriptionDetailInfo.test.js.snap +10 -0
- data/webpack/scenes/Subscriptions/SubscriptionConstants.js +6 -0
- data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsPage.test.js.snap +2 -0
- data/webpack/scenes/Subscriptions/__tests__/subscriptions.fixtures.js +14 -0
- data/webpack/scenes/Subscriptions/components/SubscriptionsTable/SubscriptionsTableHelpers.js +1 -0
- data/webpack/scenes/Subscriptions/components/SubscriptionsTable/SubscriptionsTableSchema.js +10 -0
- data/webpack/scenes/Subscriptions/components/SubscriptionsTable/__tests__/SubscriptionsTable.fixtures.js +1 -0
- data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/__snapshots__/SubscriptionsToolbar.test.js.snap +10 -0
- data/webpack/scenes/Tasks/helpers.js +1 -1
- metadata +25 -111
- data/app/assets/javascripts/katello/containers/container.js +0 -304
- data/app/lib/katello/util/http_helper.rb +0 -15
- data/app/models/732bd3db9f64c621c64d2be4f2a838727aac0845.patch +0 -61
- data/app/models/katello/repository.rb.bak +0 -978
- data/app/services/katello/pulp3/content_view_version/import_validator.rb.bak +0 -166
- data/app/services/katello/pulp3/content_view_version/importable_repositories.rb.bak +0 -164
- data/lib/katello/tasks/update_repository_expiry.rake +0 -114
- data/locale/bn/LC_MESSAGES/katello.mo +0 -0
- data/locale/bn/katello.po.time_stamp +0 -0
- data/locale/bn_IN/LC_MESSAGES/katello.mo +0 -0
- data/locale/bn_IN/katello.po.time_stamp +0 -0
- data/locale/ca/LC_MESSAGES/katello.mo +0 -0
- data/locale/ca/katello.po.time_stamp +0 -0
- data/locale/cs/LC_MESSAGES/katello.mo +0 -0
- data/locale/cs/katello.po.time_stamp +0 -0
- data/locale/cs_CZ/LC_MESSAGES/katello.mo +0 -0
- data/locale/cs_CZ/katello.po.time_stamp +0 -0
- data/locale/de/LC_MESSAGES/katello.mo +0 -0
- data/locale/de/katello.po.time_stamp +0 -0
- data/locale/de_AT/LC_MESSAGES/katello.mo +0 -0
- data/locale/de_AT/katello.po.time_stamp +0 -0
- data/locale/de_DE/LC_MESSAGES/katello.mo +0 -0
- data/locale/de_DE/katello.po.time_stamp +0 -0
- data/locale/el/LC_MESSAGES/katello.mo +0 -0
- data/locale/el/katello.po.time_stamp +0 -0
- data/locale/en/LC_MESSAGES/katello.mo +0 -0
- data/locale/en/katello.po.time_stamp +0 -0
- data/locale/en_GB/LC_MESSAGES/katello.mo +0 -0
- data/locale/en_GB/katello.po.time_stamp +0 -0
- data/locale/en_US/LC_MESSAGES/katello.mo +0 -0
- data/locale/en_US/katello.po.time_stamp +0 -0
- data/locale/es/LC_MESSAGES/katello.mo +0 -0
- data/locale/es/katello.po.time_stamp +0 -0
- data/locale/et_EE/LC_MESSAGES/katello.mo +0 -0
- data/locale/et_EE/katello.po.time_stamp +0 -0
- data/locale/fr/LC_MESSAGES/katello.mo +0 -0
- data/locale/fr/katello.po.time_stamp +0 -0
- data/locale/gl/LC_MESSAGES/katello.mo +0 -0
- data/locale/gl/katello.po.time_stamp +0 -0
- data/locale/gu/LC_MESSAGES/katello.mo +0 -0
- data/locale/gu/katello.po.time_stamp +0 -0
- data/locale/he_IL/LC_MESSAGES/katello.mo +0 -0
- data/locale/he_IL/katello.po.time_stamp +0 -0
- data/locale/hi/LC_MESSAGES/katello.mo +0 -0
- data/locale/hi/katello.po.time_stamp +0 -0
- data/locale/id/LC_MESSAGES/katello.mo +0 -0
- data/locale/id/katello.po.time_stamp +0 -0
- data/locale/it/LC_MESSAGES/katello.mo +0 -0
- data/locale/it/katello.po.time_stamp +0 -0
- data/locale/ja/LC_MESSAGES/katello.mo +0 -0
- data/locale/ja/katello.po.time_stamp +0 -0
- data/locale/ka/LC_MESSAGES/katello.mo +0 -0
- data/locale/ka/katello.po.time_stamp +0 -0
- data/locale/kn/LC_MESSAGES/katello.mo +0 -0
- data/locale/kn/katello.po.time_stamp +0 -0
- data/locale/ko/LC_MESSAGES/katello.mo +0 -0
- data/locale/ko/katello.po.time_stamp +0 -0
- data/locale/ml_IN/LC_MESSAGES/katello.mo +0 -0
- data/locale/ml_IN/katello.po.time_stamp +0 -0
- data/locale/mr/LC_MESSAGES/katello.mo +0 -0
- data/locale/mr/katello.po.time_stamp +0 -0
- data/locale/nl_NL/LC_MESSAGES/katello.mo +0 -0
- data/locale/nl_NL/katello.po.time_stamp +0 -0
- data/locale/or/LC_MESSAGES/katello.mo +0 -0
- data/locale/or/katello.po.time_stamp +0 -0
- data/locale/pa/LC_MESSAGES/katello.mo +0 -0
- data/locale/pa/katello.po.time_stamp +0 -0
- data/locale/pl/LC_MESSAGES/katello.mo +0 -0
- data/locale/pl/katello.po.time_stamp +0 -0
- data/locale/pl_PL/LC_MESSAGES/katello.mo +0 -0
- data/locale/pl_PL/katello.po.time_stamp +0 -0
- data/locale/pt/LC_MESSAGES/katello.mo +0 -0
- data/locale/pt/katello.po.time_stamp +0 -0
- data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
- data/locale/pt_BR/katello.po.time_stamp +0 -0
- data/locale/ro/LC_MESSAGES/katello.mo +0 -0
- data/locale/ro/katello.po.time_stamp +0 -0
- data/locale/ro_RO/LC_MESSAGES/katello.mo +0 -0
- data/locale/ro_RO/katello.po.time_stamp +0 -0
- data/locale/ru/LC_MESSAGES/katello.mo +0 -0
- data/locale/ru/katello.po.time_stamp +0 -0
- data/locale/sl/LC_MESSAGES/katello.mo +0 -0
- data/locale/sl/katello.po.time_stamp +0 -0
- data/locale/sv_SE/LC_MESSAGES/katello.mo +0 -0
- data/locale/sv_SE/katello.po.time_stamp +0 -0
- data/locale/ta/LC_MESSAGES/katello.mo +0 -0
- data/locale/ta/katello.po.time_stamp +0 -0
- data/locale/ta_IN/LC_MESSAGES/katello.mo +0 -0
- data/locale/ta_IN/katello.po.time_stamp +0 -0
- data/locale/te/LC_MESSAGES/katello.mo +0 -0
- data/locale/te/katello.po.time_stamp +0 -0
- data/locale/tr/LC_MESSAGES/katello.mo +0 -0
- data/locale/tr/katello.po.time_stamp +0 -0
- data/locale/vi/LC_MESSAGES/katello.mo +0 -0
- data/locale/vi/katello.po.time_stamp +0 -0
- data/locale/vi_VN/LC_MESSAGES/katello.mo +0 -0
- data/locale/vi_VN/katello.po.time_stamp +0 -0
- data/locale/zh/LC_MESSAGES/katello.mo +0 -0
- data/locale/zh/katello.po.time_stamp +0 -0
- data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
- data/locale/zh_CN/katello.po.time_stamp +0 -0
- data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
- data/locale/zh_TW/katello.po.time_stamp +0 -0
- data/webpack/global_test_setup.js.bak +0 -59
- data/webpack/utils/useKatelloDocUrl.js +0 -18
@@ -58,8 +58,8 @@ module Actions
|
|
58
58
|
|
59
59
|
def run
|
60
60
|
repository = ::Katello::Repository.find(input[:repository_id])
|
61
|
-
if input[:sync_capsule]
|
62
|
-
ForemanTasks.async_task(Katello::Repository::CapsuleSync, repository)
|
61
|
+
if input[:sync_capsule] && (Setting[:foreman_proxy_content_auto_sync])
|
62
|
+
ForemanTasks.async_task(Katello::Repository::CapsuleSync, repository)
|
63
63
|
end
|
64
64
|
output[:upload_results] = results_to_json(input[:upload_results])
|
65
65
|
rescue ::Katello::Errors::CapsuleCannotBeReached # skip any capsules that cannot be connected to
|
@@ -92,10 +92,8 @@ module Actions
|
|
92
92
|
json_results << {:type => 'file'}
|
93
93
|
end
|
94
94
|
end
|
95
|
-
|
96
|
-
|
97
|
-
json_results << {:type => 'file'}
|
98
|
-
end
|
95
|
+
if !json_results.size && (result[:content_unit_href])
|
96
|
+
json_results << {:type => 'file'}
|
99
97
|
end
|
100
98
|
end
|
101
99
|
json_results
|
@@ -3,6 +3,7 @@ module Actions
|
|
3
3
|
module Repository
|
4
4
|
class MetadataGenerate < Actions::EntryAction
|
5
5
|
def plan(repository, options = {})
|
6
|
+
return if repository.root.is_container_push && repository.library_instance?
|
6
7
|
action_subject(repository)
|
7
8
|
repository.check_ready_to_act!
|
8
9
|
source_repository = options.fetch(:source_repository, nil)
|
@@ -92,7 +92,7 @@ module Actions
|
|
92
92
|
# match the ACS content type and have a non-nil URL
|
93
93
|
product = repository.product
|
94
94
|
repo_content_types = Set.new
|
95
|
-
product.
|
95
|
+
product.acs_compatible_repositories.each do |test_repo|
|
96
96
|
# we need to check id because test_repo will still contain the old, non-nil url
|
97
97
|
repo_content_types.add(test_repo.content_type) if (repository.id != test_repo.id) && test_repo.url.present?
|
98
98
|
end
|
@@ -110,11 +110,11 @@ module Actions
|
|
110
110
|
end
|
111
111
|
|
112
112
|
def create_acs?(old_url, new_url)
|
113
|
-
old_url.nil? && new_url.present?
|
113
|
+
(old_url.nil? || old_url.start_with?('uln')) && new_url.present? && !new_url.start_with?('uln')
|
114
114
|
end
|
115
115
|
|
116
116
|
def delete_acs?(old_url, new_url)
|
117
|
-
old_url.present? && new_url.nil?
|
117
|
+
old_url.present? && (new_url.nil? || new_url.start_with?('uln'))
|
118
118
|
end
|
119
119
|
end
|
120
120
|
end
|
@@ -6,8 +6,7 @@ module Actions
|
|
6
6
|
_("Enable")
|
7
7
|
end
|
8
8
|
|
9
|
-
def plan(product, content, substitutions,
|
10
|
-
override_arch: nil)
|
9
|
+
def plan(product, content, substitutions, opts = {})
|
11
10
|
mapper = ::Katello::Candlepin::RepositoryMapper.new(product,
|
12
11
|
content,
|
13
12
|
substitutions)
|
@@ -16,10 +15,10 @@ module Actions
|
|
16
15
|
fail ::Katello::Errors::ConflictException, _("The repository is already enabled")
|
17
16
|
end
|
18
17
|
repository = mapper.build_repository
|
19
|
-
repository.root.arch = override_arch if override_arch.present?
|
20
|
-
if override_url
|
21
|
-
repository.root.url = override_url
|
22
|
-
repository.root.download_policy = ::Katello::RootRepository::DOWNLOAD_IMMEDIATE if URI(override_url).scheme == 'file'
|
18
|
+
repository.root.arch = opts[:override_arch] if opts[:override_arch].present?
|
19
|
+
if opts[:override_url]
|
20
|
+
repository.root.url = opts[:override_url]
|
21
|
+
repository.root.download_policy = ::Katello::RootRepository::DOWNLOAD_IMMEDIATE if URI(opts[:override_url]).scheme == 'file'
|
23
22
|
end
|
24
23
|
plan_action(Repository::Create, repository, clone: false)
|
25
24
|
action_subject(repository)
|
@@ -28,9 +28,10 @@ module Actions
|
|
28
28
|
def capsule_id(args)
|
29
29
|
capsule_id = nil
|
30
30
|
args.each do |arg|
|
31
|
-
|
31
|
+
case arg
|
32
|
+
when SmartProxy
|
32
33
|
capsule_id = arg.id
|
33
|
-
|
34
|
+
when Hash
|
34
35
|
capsule_id = arg[:capsule_id] || arg[:smart_proxy_id]
|
35
36
|
end
|
36
37
|
break if capsule_id
|
@@ -96,10 +96,9 @@ module Actions
|
|
96
96
|
def transform_task_response(response)
|
97
97
|
response = [] if response.nil?
|
98
98
|
response = [response] unless response.is_a?(Array)
|
99
|
-
response
|
99
|
+
response.map do |task|
|
100
100
|
task.as_json
|
101
101
|
end
|
102
|
-
response
|
103
102
|
end
|
104
103
|
|
105
104
|
def check_for_errors
|
@@ -166,8 +165,7 @@ module Actions
|
|
166
165
|
def get_task_label(name, href)
|
167
166
|
name = name.split('.').last if name
|
168
167
|
href = href.split('-').last[0...-1] if href
|
169
|
-
|
170
|
-
label
|
168
|
+
"%s (ID: %s)" % [name, href]
|
171
169
|
end
|
172
170
|
end
|
173
171
|
end
|
@@ -17,8 +17,7 @@ module Actions
|
|
17
17
|
if repository
|
18
18
|
[repository]
|
19
19
|
else
|
20
|
-
|
21
|
-
repositories
|
20
|
+
smart_proxy_helper.repositories_available_to_capsule(environment, content_view).by_rpm_count
|
22
21
|
end
|
23
22
|
end
|
24
23
|
end
|
@@ -23,7 +23,7 @@ module Actions
|
|
23
23
|
plan_action(Actions::Pulp3::Repository::SaveVersion, target_repo, tasks: action.output[:pulp_tasks])
|
24
24
|
copy_actions = []
|
25
25
|
#since we're creating a new version from the first repo, start copying at the 2nd
|
26
|
-
source_repositories[1
|
26
|
+
source_repositories[1..].each do |source_repo|
|
27
27
|
# TODO: In a future refactor, can :copy_all be utilized? Filters should not be needed in this code segment.
|
28
28
|
copy_actions << plan_action(Actions::Pulp3::Repository::CopyContent, source_repo, smart_proxy, target_repo,
|
29
29
|
filter_ids: filter_ids, solve_dependencies: solve_dependencies,
|
@@ -32,6 +32,10 @@ module Actions
|
|
32
32
|
plan_action(Actions::Pulp3::Repository::SaveVersion, target_repo, tasks: copy_actions.last.output[:pulp_tasks])
|
33
33
|
end
|
34
34
|
end
|
35
|
+
elsif source_repositories.first.root.is_container_push
|
36
|
+
copy_action = plan_action(Actions::Pulp3::Repository::CopyContent, source_repositories.first, smart_proxy, target_repo,
|
37
|
+
copy_all: true)
|
38
|
+
plan_action(Actions::Pulp3::Repository::SaveVersion, target_repo, tasks: copy_action.output[:pulp_tasks])
|
35
39
|
else
|
36
40
|
plan_self(source_version_repo_id: source_repositories.first.id,
|
37
41
|
target_repo_id: target_repo.id)
|
@@ -9,10 +9,13 @@ module Actions
|
|
9
9
|
plan_action(Actions::Pulp3::Repository::DeleteDistributions, repository.id, smart_proxy)
|
10
10
|
|
11
11
|
if repository.content_view.default?
|
12
|
-
#
|
12
|
+
# Container push repositories must be deleted through the distribution
|
13
|
+
return if repository.root.is_container_push
|
14
|
+
|
15
|
+
# We're deleting the library instance, so just delete the whole pulp3 repo
|
13
16
|
plan_action(Actions::Pulp3::Repository::Delete, repository.id, smart_proxy)
|
14
17
|
elsif repository.environment.nil?
|
15
|
-
#
|
18
|
+
# We're deleting the archived instance, so delete the version
|
16
19
|
plan_action(Actions::Pulp3::Repository::DeleteVersion, repository, smart_proxy)
|
17
20
|
end
|
18
21
|
end
|
@@ -20,11 +20,9 @@ module Actions
|
|
20
20
|
end
|
21
21
|
|
22
22
|
output[:publication_provided] = false
|
23
|
-
if input[:tasks].present?
|
24
|
-
|
25
|
-
|
26
|
-
output[:publication_provided] = true
|
27
|
-
end
|
23
|
+
if input[:tasks].present? && (publication_href = ::Katello::Pulp3::Task.publication_href(input[:tasks]))
|
24
|
+
repo.update(:publication_href => publication_href)
|
25
|
+
output[:publication_provided] = true
|
28
26
|
end
|
29
27
|
|
30
28
|
if version_href
|
@@ -259,13 +259,9 @@ module Katello
|
|
259
259
|
labels = 'label ^ (Actions::Katello::Host::Erratum::Install, Actions::Katello::Host::Erratum::ApplicableErrataInstall)'
|
260
260
|
select = 'foreman_tasks_tasks.*'
|
261
261
|
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
select += ',template_invocations.id AS template_invocation_id'
|
266
|
-
else
|
267
|
-
select += ',NULL AS template_invocation_id'
|
268
|
-
end
|
262
|
+
new_labels = 'label = Actions::RemoteExecution::RunHostJob AND remote_execution_feature.label ^ (katello_errata_install, katello_errata_install_by_search)'
|
263
|
+
labels = [labels, new_labels].map { |label| "(#{label})" }.join(' OR ')
|
264
|
+
select += ',template_invocations.id AS template_invocation_id'
|
269
265
|
|
270
266
|
search = [search_up_to, search_since, search_result, "state = stopped", labels].compact.join(' and ')
|
271
267
|
|
@@ -302,8 +298,8 @@ module Katello
|
|
302
298
|
current_erratum_errata_type = current_erratum[1]
|
303
299
|
current_erratum_issued = current_erratum.last
|
304
300
|
|
305
|
-
if filter_errata_type != 'all'
|
306
|
-
next
|
301
|
+
if filter_errata_type != 'all' && !(filter_errata_type == current_erratum_errata_type)
|
302
|
+
next
|
307
303
|
end
|
308
304
|
|
309
305
|
hash = {
|
data/app/lib/katello/errors.rb
CHANGED
@@ -24,7 +24,7 @@ module Katello
|
|
24
24
|
def lazy_accessor(*args)
|
25
25
|
options = args.extract_options!
|
26
26
|
@lazy_attributes = [] if @lazy_attributes.nil?
|
27
|
-
@lazy_attributes
|
27
|
+
@lazy_attributes.concat args
|
28
28
|
@lazy_attributes_options ||= {}
|
29
29
|
fail ArgumentError, "Attribute names must be symbols" if args.any? { |attribute| !attribute.is_a?(Symbol) }
|
30
30
|
redefined_attr = args.find { |attribute| instance_methods.include?(attribute.to_s) }
|
@@ -65,7 +65,7 @@ module Katello
|
|
65
65
|
response = JSON.parse(response_json).with_indifferent_access
|
66
66
|
if wait_until_complete && response['state'] == 'CREATED'
|
67
67
|
while !response['state'].nil? && response['state'] != 'FINISHED' && response['state'] != 'ERROR'
|
68
|
-
path = join_path('candlepin', response['statusPath'][1
|
68
|
+
path = join_path('candlepin', response['statusPath'][1..])
|
69
69
|
response_json = self.get(path, self.default_headers)
|
70
70
|
response = JSON.parse(response_json).with_indifferent_access
|
71
71
|
end
|
@@ -13,8 +13,7 @@ module Katello
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def create(owner_key, attrs)
|
16
|
-
|
17
|
-
pool
|
16
|
+
self.post("/candlepin/owners/#{owner_key}/pools", attrs.to_json, self.default_headers).body
|
18
17
|
end
|
19
18
|
|
20
19
|
def find(pool_id)
|
@@ -11,7 +11,7 @@ module Katello
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def get(id, upstream)
|
14
|
-
url = API_URL
|
14
|
+
url = ENV['REDHAT_RHSM_API_URL'] || API_URL
|
15
15
|
response = Resources::Candlepin::UpstreamConsumer.start_upstream_export("#{url}#{path(id)}", upstream['idCert']['cert'],
|
16
16
|
upstream['idCert']['key'], nil)
|
17
17
|
job = JSON.parse(response)
|
@@ -104,9 +104,10 @@ module Katello
|
|
104
104
|
# very old infrastructure for now, but that was considered better than having an insecure default.
|
105
105
|
net.min_version = OpenSSL::SSL::TLS1_2_VERSION
|
106
106
|
|
107
|
-
|
107
|
+
case @options[:verify_ssl]
|
108
|
+
when false, OpenSSL::SSL::VERIFY_NONE
|
108
109
|
net.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
109
|
-
|
110
|
+
when Integer
|
110
111
|
net.verify_mode = @options[:verify_ssl]
|
111
112
|
net.verify_callback = lambda do |preverify_ok, ssl_context|
|
112
113
|
if !preverify_ok || ssl_context.error != 0
|
@@ -22,7 +22,7 @@ module Katello
|
|
22
22
|
if @uri.scheme == 'file'
|
23
23
|
crawl_file_path(uri(resume_point))
|
24
24
|
elsif %w(http https).include?(@uri.scheme)
|
25
|
-
spidr_crawl_pages(resume_point)
|
25
|
+
spidr_crawl_pages(uri(resume_point))
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
@@ -54,6 +54,7 @@ module Katello
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def spidr_crawl_pages(url)
|
57
|
+
url = url.to_s
|
57
58
|
user, password = @upstream_username, @upstream_password
|
58
59
|
Spidr.site(url, proxy: spidr_proxy_details) do |spider|
|
59
60
|
spider.authorized.add(url, user, password) if user && password
|
@@ -85,8 +86,7 @@ module Katello
|
|
85
86
|
# * link ends with '/' so it should be a directory
|
86
87
|
# * link doesn't end with '/Packages/', as this increases
|
87
88
|
# processing time and memory usage considerably
|
88
|
-
|
89
|
-
return url.hostname == @uri.hostname && !@crawled.include?(url.to_s) &&
|
89
|
+
return url.path.starts_with?(@uri.path) && url.hostname == @uri.hostname && !@crawled.include?(url.to_s) &&
|
90
90
|
url.path.ends_with?('/') && !url.path.ends_with?('/Packages/')
|
91
91
|
end
|
92
92
|
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
module Katello
|
2
2
|
module Util
|
3
3
|
class CdnVarSubstitutor
|
4
|
-
attr_reader :good_listings
|
5
|
-
|
4
|
+
attr_reader :good_listings, :bad_listings
|
5
|
+
|
6
6
|
# cdn_resource - an object providing access to CDN. It has to
|
7
7
|
# provide a get method that takes a path (e.g.
|
8
8
|
# /content/rhel/6.2/listing) and returns the body response)
|
@@ -68,7 +68,9 @@ module Katello
|
|
68
68
|
|
69
69
|
futures.each do |future|
|
70
70
|
resolved << future.value
|
71
|
-
|
71
|
+
if future.rejected?
|
72
|
+
fail Errors::CdnSubstitutionError, "Failed at scanning for repository: #{future.reason}"
|
73
|
+
end
|
72
74
|
end
|
73
75
|
end
|
74
76
|
|
@@ -13,7 +13,8 @@ module Katello
|
|
13
13
|
options[:prefix_keys] ||= []
|
14
14
|
options[:prefix] ||= '_'
|
15
15
|
|
16
|
-
|
16
|
+
case obj
|
17
|
+
when Hash
|
17
18
|
|
18
19
|
ostructized_hash = {}
|
19
20
|
obj.each do |key, value|
|
@@ -31,7 +32,7 @@ module Katello
|
|
31
32
|
end
|
32
33
|
return OpenStruct.new ostructized_hash
|
33
34
|
|
34
|
-
|
35
|
+
when Array
|
35
36
|
|
36
37
|
return obj.map { |r| ostructize(r, options) }
|
37
38
|
|
@@ -29,11 +29,12 @@ module Katello
|
|
29
29
|
|
30
30
|
def get_pulp_filter_type(type)
|
31
31
|
filter_type = type.downcase
|
32
|
-
|
32
|
+
case filter_type
|
33
|
+
when "bugfix"
|
33
34
|
return ::Katello::Erratum::BUGZILLA
|
34
|
-
|
35
|
+
when "enhancement"
|
35
36
|
return ::Katello::Erratum::ENHANCEMENT
|
36
|
-
|
37
|
+
when "security"
|
37
38
|
return ::Katello::Erratum::SECURITY
|
38
39
|
end
|
39
40
|
end
|
@@ -75,8 +75,8 @@ module Katello
|
|
75
75
|
vrea = [package[:version], package[:release]].compact.join('-')
|
76
76
|
vrea = vrea + '.' + package[:arch] unless package[:arch].nil?
|
77
77
|
vrea = vrea + '.' + package[:suffix] unless package[:suffix].nil?
|
78
|
-
|
79
|
-
vrea = package[:epoch] + ':' + vrea
|
78
|
+
if !package[:epoch].nil? && (package[:epoch].to_i != 0 || include_zero_epoch)
|
79
|
+
vrea = package[:epoch] + ':' + vrea
|
80
80
|
end
|
81
81
|
vrea
|
82
82
|
end
|
@@ -135,7 +135,7 @@ module Katello
|
|
135
135
|
end
|
136
136
|
|
137
137
|
def self.valid_package_characters
|
138
|
-
/[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
|
138
|
+
/[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\-._+,]+/
|
139
139
|
end
|
140
140
|
|
141
141
|
def self.setup_shared_unique_filter(repoids, search_mode, search_results)
|
@@ -25,7 +25,7 @@ module Katello
|
|
25
25
|
def substitutions_needed
|
26
26
|
# e.g. if content_url = "/content/dist/rhel/server/7/$releasever/$basearch/kickstart"
|
27
27
|
# return ['releasever', 'basearch']
|
28
|
-
split_path.map { |word| word.start_with?('$') ? word[1
|
28
|
+
split_path.map { |word| word.start_with?('$') ? word[1..] : nil }.compact
|
29
29
|
end
|
30
30
|
|
31
31
|
def substitutable?
|
@@ -3,11 +3,12 @@ module Katello
|
|
3
3
|
class AlternateContentSourcePathValidator < ActiveModel::EachValidator
|
4
4
|
def validate_each(record, attribute, value)
|
5
5
|
if value
|
6
|
-
|
6
|
+
case attribute
|
7
|
+
when :base_url
|
7
8
|
unless AlternateContentSourcePathValidator.validate_base_url(value)
|
8
9
|
record.errors[attribute] << N_("%s is not a valid path") % value
|
9
10
|
end
|
10
|
-
|
11
|
+
when :subpaths
|
11
12
|
unless AlternateContentSourcePathValidator.validate_subpaths(value)
|
12
13
|
record.errors[attribute] << N_('All subpaths must have a slash at the end and none at the front')
|
13
14
|
end
|
@@ -16,7 +17,7 @@ module Katello
|
|
16
17
|
end
|
17
18
|
|
18
19
|
def self.validate_base_url(base_url)
|
19
|
-
base_url =~ /\A#{URI::DEFAULT_PARSER.make_regexp}\z/
|
20
|
+
base_url =~ /\A(?!uln:\/\/)(#{URI::DEFAULT_PARSER.make_regexp})\z/
|
20
21
|
end
|
21
22
|
|
22
23
|
# Subpaths must have a slash at the end and none at the front: 'path/'
|
@@ -2,13 +2,11 @@ module Katello
|
|
2
2
|
module Validators
|
3
3
|
class AlternateContentSourceProductsValidator < ActiveModel::EachValidator
|
4
4
|
def validate_each(record, attribute, value)
|
5
|
-
if value
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
record.errors.add(attribute, _("%{name} has no %{type} repositories with upstream URLs to add to the alternate content source.") % { name: product.name, type: content_type })
|
11
|
-
end
|
5
|
+
if value && (attribute == :product_id)
|
6
|
+
product = ::Katello::Product.find(value)
|
7
|
+
content_type = record.alternate_content_source.content_type
|
8
|
+
if product.acs_compatible_repositories.with_type(content_type).empty?
|
9
|
+
record.errors.add(attribute, _("%{name} has no %{type} repositories with upstream URLs to add to the alternate content source.") % { name: product.name, type: content_type })
|
12
10
|
end
|
13
11
|
end
|
14
12
|
end
|
@@ -8,7 +8,7 @@ module Katello
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def self.validate_name(name)
|
11
|
-
if name.empty? || name.length > 255 || !/\A([a-z0-9]+[a-z0-9
|
11
|
+
if name.empty? || name.length > 255 || !/\A([a-z0-9]+[a-z0-9\-_.]*)+(\/[a-z0-9]+[a-z0-9\-_.]*)*\z/.match?(name)
|
12
12
|
return false
|
13
13
|
end
|
14
14
|
true
|
@@ -13,8 +13,8 @@ module Katello
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def self.validate_length(record, attribute, value, min_length = 1)
|
16
|
-
if value
|
17
|
-
record.errors[attribute] << _("must contain at least %s character") % min_length
|
16
|
+
if value && !(value.length >= min_length)
|
17
|
+
record.errors[attribute] << _("must contain at least %s character") % min_length
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
@@ -6,8 +6,8 @@ module Katello
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def self.validate_trailing_space(record, attribute, value)
|
9
|
-
if value
|
10
|
-
record.errors[attribute] << _("must not contain leading or trailing white spaces.")
|
9
|
+
if value && !(value.strip == value)
|
10
|
+
record.errors[attribute] << _("must not contain leading or trailing white spaces.")
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
@@ -7,8 +7,8 @@ module Katello
|
|
7
7
|
# this is because in v1.0 we want
|
8
8
|
# prior to have only one child (unless its the Library)
|
9
9
|
ancestor = record.prior
|
10
|
-
if ancestor && !ancestor.library?
|
11
|
-
record.errors[:prior] << _("prior environment can only have one child")
|
10
|
+
if ancestor && !ancestor.library? && (ancestor.successors.count == 1 && !ancestor.successors.include?(record))
|
11
|
+
record.errors[:prior] << _("prior environment can only have one child")
|
12
12
|
end
|
13
13
|
end
|
14
14
|
end
|
@@ -12,10 +12,8 @@ module Katello
|
|
12
12
|
def unique_attribute?(record, attribute, value)
|
13
13
|
unique = true
|
14
14
|
|
15
|
-
if record.provider && !record.provider.redhat_provider? && record.send("#{attribute}_changed?")
|
16
|
-
|
17
|
-
unique = false
|
18
|
-
end
|
15
|
+
if record.provider && !record.provider.redhat_provider? && record.send("#{attribute}_changed?") && Product.in_org(record.provider.organization).where(attribute => value).exists?
|
16
|
+
unique = false
|
19
17
|
end
|
20
18
|
|
21
19
|
unique
|
@@ -182,12 +182,10 @@ module Katello
|
|
182
182
|
end
|
183
183
|
|
184
184
|
def validate_destroyable!
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
"before deleting." % {name: name})
|
190
|
-
end
|
185
|
+
if !organization.being_deleted? && Parameter.where(name: 'kt_activation_keys').pluck(:value).any? { |value| value.split(",").include?(name) }
|
186
|
+
fail _("This activation key is associated to one or more Hosts/Hostgroups. "\
|
187
|
+
"Search and unassociate Hosts/Hostgroups using params.kt_activation_keys ~ \"%{name}\" "\
|
188
|
+
"before deleting." % {name: name})
|
191
189
|
end
|
192
190
|
true
|
193
191
|
end
|
@@ -54,7 +54,7 @@ module Katello
|
|
54
54
|
validates :content_type, inclusion: {
|
55
55
|
in: ->(_) { RepositoryTypeManager.defined_repository_types.keys & CONTENT_TYPES },
|
56
56
|
allow_blank: false,
|
57
|
-
message: ->(_, _) { _("is not allowed for ACS. Must be one of the following: %s") % (RepositoryTypeManager.defined_repository_types.keys & CONTENT_TYPES).join(',') }
|
57
|
+
message: ->(_, _) { _("is not allowed for ACS. Must be one of the following: %s") % (RepositoryTypeManager.defined_repository_types.keys & CONTENT_TYPES).sort.join(',') }
|
58
58
|
}
|
59
59
|
validates :content_type, if: -> { rhui? }, inclusion: {
|
60
60
|
in: [::Katello::Repository::YUM_TYPE],
|
@@ -19,7 +19,7 @@ module Katello
|
|
19
19
|
|
20
20
|
def deletable?
|
21
21
|
promoted_repos = repositories.select { |repo| repo.promoted? }
|
22
|
-
authorized?(:destroy_products) && promoted_repos.empty?
|
22
|
+
authorized?(:destroy_products) && (promoted_repos.empty? || Setting[:delete_repo_across_cv])
|
23
23
|
end
|
24
24
|
|
25
25
|
module ClassMethods
|
@@ -64,7 +64,7 @@ module Katello
|
|
64
64
|
sorted_substitutions = substitutions.sort_by { |k, _| k.to_s }.map(&:last)
|
65
65
|
repo_name_parts = [content.name,
|
66
66
|
sorted_substitutions].flatten.compact
|
67
|
-
repo_name_parts.join(" ").gsub(/[^a-z0-9
|
67
|
+
repo_name_parts.join(" ").gsub(/[^a-z0-9\-._ ]/i, "")
|
68
68
|
end
|
69
69
|
|
70
70
|
def path
|
@@ -83,7 +83,7 @@ module Katello
|
|
83
83
|
|
84
84
|
def feed_url
|
85
85
|
return if product.organization.cdn_configuration.export_sync?
|
86
|
-
@feed_url ||= if product.cdn_resource
|
86
|
+
@feed_url ||= if product.cdn_resource.respond_to?(:repository_url)
|
87
87
|
product.cdn_resource.repository_url(content_label: content.label, arch: arch, major: version[:major], minor: version[:minor])
|
88
88
|
else
|
89
89
|
product.repo_url(path)
|