Remove 'type' from payload

This commit is contained in:
Ana Rosas 2016-06-15 14:36:59 +02:00
parent 5949429f75
commit 41c274b222
6 changed files with 23 additions and 24 deletions

View File

@ -23,7 +23,7 @@ class Travis::Api::App
Metriks.meter("api.request.cancel_build").mark Metriks.meter("api.request.cancel_build").mark
if Travis::Features.owner_active?(:enqueue_to_hub, current_user) if Travis::Features.owner_active?(:enqueue_to_hub, current_user)
service = Travis::Enqueue::Services::CancelModel.new(current_user, { id: params[:id], type: :build }) service = Travis::Enqueue::Services::CancelModel.new(current_user, { build_id: params[:id] })
else else
service = self.service(:cancel_build, params.merge(source: 'api')) service = self.service(:cancel_build, params.merge(source: 'api'))
end end
@ -46,10 +46,11 @@ class Travis::Api::App
status 422 status 422
respond_with json respond_with json
else else
payload = { id: params[:id], user_id: current_user.id, source: 'api' }
if service.respond_to?(:push) if service.respond_to?(:push)
service.push service.push("build:cancel", payload)
else else
Travis::Sidekiq::BuildCancellation.perform_async(id: params[:id], user_id: current_user.id, source: 'api') Travis::Sidekiq::BuildCancellation.perform_async(payload)
end end
Metriks.meter("api.request.cancel_build.success").mark Metriks.meter("api.request.cancel_build.success").mark

View File

@ -30,7 +30,7 @@ class Travis::Api::App
Metriks.meter("api.request.cancel_job").mark Metriks.meter("api.request.cancel_job").mark
if Travis::Features.owner_active?(:enqueue_to_hub, current_user) if Travis::Features.owner_active?(:enqueue_to_hub, current_user)
service = Travis::Enqueue::Services::CancelModel.new(current_user, { id: params[:id], type: :job }) service = Travis::Enqueue::Services::CancelModel.new(current_user, { job_id: params[:id] })
else else
service = self.service(:cancel_job, params.merge(source: 'api')) service = self.service(:cancel_job, params.merge(source: 'api'))
end end
@ -53,10 +53,11 @@ class Travis::Api::App
status 422 status 422
respond_with json respond_with json
else else
payload = { id: params[:id], user_id: current_user.id, source: 'api' }
if service.respond_to?(:push) if service.respond_to?(:push)
service.push service.push("job:cancel", payload)
else else
Travis::Sidekiq::JobCancellation.perform_async(id: params[:id], user_id: current_user.id, source: 'api') Travis::Sidekiq::JobCancellation.perform_async(payload)
end end
Metriks.meter("api.request.cancel_job.success").mark Metriks.meter("api.request.cancel_job.success").mark

View File

@ -20,26 +20,27 @@ module Travis
messages messages
end end
def push def push(event, payload)
# target may have been retrieved with a :join query, so we need to reset the readonly status # target may have been retrieved with a :join query, so we need to reset the readonly status
if can_cancel? if can_cancel?
::Sidekiq::Client.push( ::Sidekiq::Client.push(
'queue' => 'hub', 'queue' => 'hub',
'class' => 'Travis::Hub::Sidekiq::Worker', 'class' => 'Travis::Hub::Sidekiq::Worker',
'args' => ["#{type}:cancel", @params] #'args' => ["#{type}:cancel", @params]
'args' => [event, payload]
) )
end end
end end
def type def type
@params[:type] @type ||= @params[:build_id] ? :build : :job
end end
def target def target
if type == :build if type == :build
@target = Build.find(@params[:id]) @target = Build.find(@params[:build_id])
else else
@target = Job.find(@params[:id]) @target = Job.find(@params[:job_id])
end end
end end
@ -47,6 +48,7 @@ module Travis
authorized? && target.cancelable? authorized? && target.cancelable?
end end
# check on web
def authorized? def authorized?
current_user.permission?(:pull, :repository_id => target.repository_id) current_user.permission?(:pull, :repository_id => target.repository_id)
end end

View File

@ -14,9 +14,8 @@ module Travis::API::V3
raise BuildNotCancelable if %w(passed failed canceled errored).include? find.state raise BuildNotCancelable if %w(passed failed canceled errored).include? find.state
payload = { id: id, user_id: user.id, source: 'api' } payload = { id: id, user_id: user.id, source: 'api' }
if Travis::Features.owner_active?(:enqueue_to_hub, user) if Travis::Features.owner_active?(:enqueue_to_hub, user)
payload[:type] = :build service = Travis::Enqueue::Services::CancelModel.new(user, { build_id: id })
service = Travis::Enqueue::Services::CancelModel.new(user, payload) service.push("build:cancel", payload)
service.push
else else
perform_async(:build_cancellation, payload) perform_async(:build_cancellation, payload)
end end

View File

@ -14,8 +14,8 @@ module Travis::API::V3
raise JobNotCancelable if %w(passed failed canceled errored).include? find.state raise JobNotCancelable if %w(passed failed canceled errored).include? find.state
payload = { id: id, user_id: user.id, source: 'api' } payload = { id: id, user_id: user.id, source: 'api' }
if Travis::Features.owner_active?(:enqueue_to_hub, user) if Travis::Features.owner_active?(:enqueue_to_hub, user)
service = Travis::Enqueue::Services::CancelModel.new(user, payload) service = Travis::Enqueue::Services::CancelModel.new(user, { job_id: id })
service.push service.push("job:cancel", payload)
else else
perform_async(:job_cancellation, payload) perform_async(:job_cancellation, payload)
end end

View File

@ -256,8 +256,7 @@ describe Travis::API::V3::Services::Build::Cancel do
example { expect(sidekiq_payload).to be == { example { expect(sidekiq_payload).to be == {
"id" => "#{build.id}", "id" => "#{build.id}",
"user_id"=> repo.owner_id, "user_id"=> repo.owner_id,
"source" => "api", "source" => "api"}
"type" => "build"}
} }
example { expect(Sidekiq::Client.last['queue']).to be == 'hub' } example { expect(Sidekiq::Client.last['queue']).to be == 'hub' }
@ -283,8 +282,7 @@ describe Travis::API::V3::Services::Build::Cancel do
example { expect(sidekiq_payload).to be == { example { expect(sidekiq_payload).to be == {
"id" => "#{build.id}", "id" => "#{build.id}",
"user_id"=> repo.owner_id, "user_id"=> repo.owner_id,
"source" => "api", "source" => "api"}
"type" => "build"}
} }
example { expect(Sidekiq::Client.last['queue']).to be == 'hub' } example { expect(Sidekiq::Client.last['queue']).to be == 'hub' }
@ -310,8 +308,7 @@ describe Travis::API::V3::Services::Build::Cancel do
example { expect(sidekiq_payload).to be == { example { expect(sidekiq_payload).to be == {
"id" => "#{build.id}", "id" => "#{build.id}",
"user_id"=> repo.owner_id, "user_id"=> repo.owner_id,
"source" => "api", "source" => "api"}
"type" => "build"}
} }
example { expect(Sidekiq::Client.last['queue']).to be == 'hub' } example { expect(Sidekiq::Client.last['queue']).to be == 'hub' }
@ -324,8 +321,7 @@ describe Travis::API::V3::Services::Build::Cancel do
example { expect(sidekiq_payload).to be == { example { expect(sidekiq_payload).to be == {
"id" => "#{build.id}", "id" => "#{build.id}",
"user_id"=> repo.owner_id, "user_id"=> repo.owner_id,
"source" => "api", "source" => "api"}
"type" => "build"}
} }
end end
end end