diff --git a/app/controllers/katello/api/v2/repositories_controller.rb b/app/controllers/katello/api/v2/repositories_controller.rb index 111f1dd0132..2581285c02a 100644 --- a/app/controllers/katello/api/v2/repositories_controller.rb +++ b/app/controllers/katello/api/v2/repositories_controller.rb @@ -7,9 +7,7 @@ class Api::V2::RepositoriesController < Api::V2::ApiController # rubocop:disable generic_repo_wrap_params << option.name end - repo_wrap_params = RootRepository.attribute_names + generic_repo_wrap_params - - wrap_parameters :repository, :include => repo_wrap_params + wrap_parameters RootRepository, name: :repository, :include => generic_repo_wrap_params CONTENT_CREDENTIAL_GPG_KEY_TYPE = "gpg_key".freeze CONTENT_CREDENTIAL_SSL_CA_CERT_TYPE = "ssl_ca_cert".freeze @@ -493,7 +491,7 @@ def upload_content param :async, :bool, desc: N_("Do not wait for the ImportUpload action to finish. Default: false") param 'publish_repository', :bool, :desc => N_("Whether or not to regenerate the repository on disk. Default: true") param 'sync_capsule', :bool, :desc => N_("Whether or not to sync an external capsule after upload. Default: true") - param :content_type, RepositoryTypeManager.uploadable_content_types(false).map(&:label), :required => false, :desc => N_("content type ('deb', 'docker_manifest', 'file', 'ostree_ref', 'rpm', 'srpm')") + param :content_type, :callable_enum, of: -> { RepositoryTypeManager.uploadable_content_types(false).map(&:label) }, :required => false, :desc => N_("content type ('deb', 'docker_manifest', 'file', 'ostree_ref', 'rpm', 'srpm')") param :uploads, Array, :desc => N_("Array of uploads to import") do param 'id', String, :required => true param 'content_unit_id', String @@ -502,12 +500,6 @@ def upload_content param 'name', String, :desc => N_("Needs to only be set for file repositories or docker tags"), :required => true param 'digest', String, :desc => N_("Needs to only be set for docker tags") end - Katello::RepositoryTypeManager.generic_repository_types.each_pair do |_, repo_type| - repo_type.import_attributes.each do |import_attribute| - param import_attribute.api_param, import_attribute.type, - :desc => N_(import_attribute.description) - end - end def import_uploads generate_metadata = ::Foreman::Cast.to_bool(params.fetch(:publish_repository, true)) sync_capsule = ::Foreman::Cast.to_bool(params.fetch(:sync_capsule, true)) diff --git a/app/controllers/katello/concerns/api/v2/dynamic_params/repositories.rb b/app/controllers/katello/concerns/api/v2/dynamic_params/repositories.rb new file mode 100644 index 00000000000..194807348db --- /dev/null +++ b/app/controllers/katello/concerns/api/v2/dynamic_params/repositories.rb @@ -0,0 +1,20 @@ +module Katello + module Concerns + module Api::V2 + module DynamicParams + module Repositories + extend ::Apipie::DSL::Concern + + lazy_update_api(:import_uploads) do + ::Katello::RepositoryTypeManager.generic_repository_types.each_pair do |_, repo_type| + repo_type.import_attributes.each do |import_attribute| + param import_attribute.api_param, import_attribute.type, + :desc => N_(import_attribute.description) + end + end + end + end + end + end + end +end diff --git a/config/initializers/dynamic_params.rb b/config/initializers/dynamic_params.rb new file mode 100644 index 00000000000..20f743bba3d --- /dev/null +++ b/config/initializers/dynamic_params.rb @@ -0,0 +1,3 @@ +Rails.application.config.after_initialize do + Katello::Api::V2::RepositoriesController.include Katello::Concerns::Api::V2::DynamicParams::Repositories +end