app/lib/actions/pulp3/repository/commit_upload.rb in katello-4.2.0.rc1 vs app/lib/actions/pulp3/repository/commit_upload.rb in katello-4.2.0.rc2
- old
+ new
@@ -8,11 +8,34 @@
def invoke_external_task
repo = ::Katello::Repository.find(input[:repository_id])
repo_backend_service = repo.backend_service(smart_proxy)
uploads_api = repo_backend_service.core_api.uploads_api
- upload_commit = repo_backend_service.core_api.upload_commit_class.new(sha256: input[:sha256])
- output[:pulp_tasks] = [uploads_api.commit(input[:upload_href], upload_commit)]
+ duplicate_sha_artifact_list = ::Katello::Pulp3::Api::Core.new(smart_proxy).artifacts_api.list("sha256": input[:sha256])
+ duplicate_sha_artifact_href = duplicate_sha_artifact_list&.results&.first&.pulp_href
+ if duplicate_sha_artifact_href
+ uploads_api.delete(upload_href)
+ output[:artifact_href] = duplicate_sha_artifact_href
+ output[:pulp_tasks] = nil
+ else
+ output[:artifact_href] = nil
+ upload_commit = repo_backend_service.core_api.upload_commit_class.new(sha256: input[:sha256])
+ output[:pulp_tasks] = [uploads_api.commit(input[:upload_href], upload_commit)]
+ end
+ end
+
+ def check_for_errors
+ combined_tasks.each do |task|
+ if unique_error task.error
+ warn _("Duplicate artifact detected")
+ else
+ super
+ end
+ end
+ end
+
+ def unique_error(message)
+ message&.include?("code='unique'")
end
end
end
end
end