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?