app/controllers/katello/api/v2/repositories_controller.rb in katello-4.3.0.rc2.1 vs app/controllers/katello/api/v2/repositories_controller.rb in katello-4.3.0.rc3

- old
+ new

@@ -21,11 +21,11 @@ before_action :find_product_for_create, :only => [:create] before_action :find_organization_from_product, :only => [:create] before_action :find_unauthorized_katello_resource, :only => [:gpg_key_content] before_action :find_authorized_katello_resource, :only => [:show, :update, :destroy, :sync, :remove_content, :upload_content, :republish, - :import_uploads, :verify_checksum] + :import_uploads, :verify_checksum, :reclaim_space] before_action :find_content, :only => :remove_content before_action :find_organization_from_repo, :only => [:update] before_action :error_on_rh_product, :only => [:create] before_action :check_import_parameters, :only => [:import_uploads] before_action(:only => [:create, :update]) { find_content_credential CONTENT_CREDENTIAL_GPG_KEY_TYPE } @@ -232,10 +232,14 @@ msg = _("Invalid params provided - content_type must be one of %s") % RepositoryTypeManager.creatable_repository_types(false).keys.join(",") fail HttpErrors::UnprocessableEntity, msg end + if !repo_params[:url].nil? && URI(repo_params[:url]).userinfo + fail "Do not include the username/password in the URL. Use the username/password settings instead." + end + gpg_key = get_content_credential(repo_params, CONTENT_CREDENTIAL_GPG_KEY_TYPE) ssl_ca_cert = get_content_credential(repo_params, CONTENT_CREDENTIAL_SSL_CA_CERT_TYPE) ssl_client_cert = get_content_credential(repo_params, CONTENT_CREDENTIAL_SSL_CLIENT_CERT_TYPE) ssl_client_key = get_content_credential(repo_params, CONTENT_CREDENTIAL_SSL_CLIENT_KEY_TYPE) @@ -315,17 +319,29 @@ respond_for_async :resource => task rescue Errors::InvalidActionOptionError => e raise HttpErrors::BadRequest, e.message end + api :POST, "/repositories/:id/reclaim_space", N_("Reclaim space from an On Demand repository") + param :id, :number, :required => true, :desc => N_("repository ID") + def reclaim_space + task = async_task(::Actions::Pulp3::Repository::ReclaimSpace, @repository) + respond_for_async :resource => task + rescue Errors::InvalidActionOptionError => e + raise HttpErrors::BadRequest, e.message + end + api :PUT, "/repositories/:id", N_("Update a repository") param :id, :number, :required => true, :desc => N_("repository ID") param :name, String, :required => false param :description, String, :desc => N_("description of the repository"), :required => false param_group :repo def update repo_params = repository_params + if !repo_params[:url].nil? && URI(repo_params[:url]).userinfo + fail "Do not include the username/password in the URL. Use the username/password settings instead." + end if @repository.generic? generic_remote_options = generic_remote_options_hash(repo_params) repo_params[:generic_remote_options] = generic_remote_options.to_json RepositoryTypeManager.generic_remote_options.each do |option| @@ -419,14 +435,20 @@ uploads = (params[:uploads] || []).map do |upload| upload.permit(:id, :content_unit_id, :size, :checksum, :name, :digest).to_h end begin + upload_args = { + content_type: params[:content_type], + generate_metadata: generate_metadata, + sync_capsule: sync_capsule + } + upload_args.merge!(generic_content_type_import_upload_args) + respond_for_async(resource: send( async ? :async_task : :sync_task, - ::Actions::Katello::Repository::ImportUpload, @repository, uploads, - generate_metadata: generate_metadata, sync_capsule: sync_capsule, content_type: params[:content_type])) + ::Actions::Katello::Repository::ImportUpload, @repository, uploads, upload_args)) rescue => e raise HttpErrors::BadRequest, e.message end end @@ -613,9 +635,19 @@ generic_remote_options = {} RepositoryTypeManager.generic_remote_options(content_type: repo_params[:content_type]).each do |option| generic_remote_options[option.name] = repo_params[option.name] end generic_remote_options + end + + def generic_content_type_import_upload_args + args = {} + @repository.repository_type&.import_attributes&.collect do |import_attribute| + if params[import_attribute.api_param] + args[import_attribute.api_param] = params[import_attribute.api_param] + end + end + args end def check_import_parameters @repository.repository_type&.import_attributes&.each do |import_attribute| if import_attribute.required && params[import_attribute.api_param].blank?