From 506e0f0f7aa4ad516446778301bb0e7d2880206e Mon Sep 17 00:00:00 2001 From: carlad Date: Tue, 19 Apr 2016 15:26:28 +0200 Subject: [PATCH] add check for state on job restart and cancel --- lib/travis/api/v3.rb | 2 ++ lib/travis/api/v3/queries/job.rb | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/lib/travis/api/v3.rb b/lib/travis/api/v3.rb index dd8c2af6..8a7cb55f 100644 --- a/lib/travis/api/v3.rb +++ b/lib/travis/api/v3.rb @@ -35,6 +35,8 @@ module Travis NotImplemented = ServerError .create('request not (yet) implemented', status: 501) RequestLimitReached = ClientError .create('request limit reached for resource', status: 429) AlreadySyncing = ClientError .create('sync already in progress', status: 409) + AlreadyRunning = ClientError .create('job already running', status: 409) + NotCancelable = ClientError .create('job is not running, cannot canel', status: 409) MethodNotAllowed = ClientError .create('method not allowed', status: 405) end end diff --git a/lib/travis/api/v3/queries/job.rb b/lib/travis/api/v3/queries/job.rb index 79efdc87..a1b8fb4d 100644 --- a/lib/travis/api/v3/queries/job.rb +++ b/lib/travis/api/v3/queries/job.rb @@ -8,12 +8,17 @@ module Travis::API::V3 end def cancel(user) + puts find.state + raise NotCancelable if %w(passed failed cancelled errored).include? find.state payload = { id: id, user_id: user.id, source: 'api' } perform_async(:job_cancellation, payload) payload end def restart(user) + puts find.state + puts find.state.class + raise AlreadyRunning if %w(received queued started).include? find.state payload = { id: id, user_id: user.id, source: 'api' } perform_async(:job_restart, payload) payload