[ARVADOS] updated: 8eaed3be04eb6356920b764f8ae370ddf8ace94c
Git user
git at public.curoverse.com
Thu Sep 8 16:16:08 EDT 2016
Summary of changes:
sdk/go/dispatch/dispatch.go | 7 -----
services/api/app/models/arvados_model.rb | 4 +--
services/api/app/models/container.rb | 12 ++++----
.../arvados/v1/containers_controller_test.rb | 32 ++++------------------
.../crunch-dispatch-slurm/crunch-dispatch-slurm.go | 3 +-
5 files changed, 15 insertions(+), 43 deletions(-)
via 8eaed3be04eb6356920b764f8ae370ddf8ace94c (commit)
via 5afa718bbfbe9cded6a852af216788629c3afc72 (commit)
via c0650d1d845b08668445fa5245d0e532b38afb95 (commit)
via 15a9dff29d3e5c16d936650c16b498fba1002860 (commit)
from 934694fb672f0768ec61701009a4eb2e149d6431 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
commit 8eaed3be04eb6356920b764f8ae370ddf8ace94c
Author: Tom Clegg <tom at curoverse.com>
Date: Thu Sep 8 16:15:11 2016 -0400
9898: Code cleanup.
diff --git a/services/api/test/functional/arvados/v1/containers_controller_test.rb b/services/api/test/functional/arvados/v1/containers_controller_test.rb
index 45149b2..3a22de8 100644
--- a/services/api/test/functional/arvados/v1/containers_controller_test.rb
+++ b/services/api/test/functional/arvados/v1/containers_controller_test.rb
@@ -50,8 +50,7 @@ class Arvados::V1::ContainersControllerTest < ActionController::TestCase
assert_nil json_response['auth']
end
- test "lock and unlock container" do
- # lock container
+ test "lock container" do
authorize_with :dispatch1
post :lock, {id: containers(:queued).uuid}
assert_response :success
@@ -59,12 +58,11 @@ class Arvados::V1::ContainersControllerTest < ActionController::TestCase
assert_equal 'Locked', container.state
assert_not_nil container.locked_by_uuid
assert_not_nil container.auth_uuid
+ end
- # unlock container
- @test_counter = 0 # Reset executed action counter
- @controller = Arvados::V1::ContainersController.new
+ test "unlock container" do
authorize_with :dispatch1
- post :unlock, {id: container.uuid}
+ post :unlock, {id: containers(:locked).uuid}
assert_response :success
container = Container.where(uuid: container.uuid).first
assert_equal 'Queued', container.state
diff --git a/services/crunch-dispatch-slurm/crunch-dispatch-slurm.go b/services/crunch-dispatch-slurm/crunch-dispatch-slurm.go
index ac77644..b33dc64 100644
--- a/services/crunch-dispatch-slurm/crunch-dispatch-slurm.go
+++ b/services/crunch-dispatch-slurm/crunch-dispatch-slurm.go
@@ -260,14 +260,13 @@ func monitorSubmitOrCancel(dispatcher *dispatch.Dispatcher, container arvados.Co
log.Printf("Error getting final container state: %v", err)
}
- var st arvados.ContainerState
switch con.State {
case dispatch.Locked:
log.Printf("Container %s in state %v but missing from slurm queue, changing to %v.",
container.UUID, con.State, dispatch.Queued)
dispatcher.Unlock(container.UUID)
case dispatch.Running:
- st = dispatch.Cancelled
+ st := dispatch.Cancelled
log.Printf("Container %s in state %v but missing from slurm queue, changing to %v.",
container.UUID, con.State, st)
dispatcher.UpdateState(container.UUID, st)
commit 5afa718bbfbe9cded6a852af216788629c3afc72
Author: Tom Clegg <tom at curoverse.com>
Date: Thu Sep 8 16:14:22 2016 -0400
9898: Check previous state after obtaining row lock.
diff --git a/services/api/app/models/container.rb b/services/api/app/models/container.rb
index ba169cc..11040ff 100644
--- a/services/api/app/models/container.rb
+++ b/services/api/app/models/container.rb
@@ -77,20 +77,20 @@ class Container < ArvadosModel
end
def lock
- if self.state == Locked
- raise AlreadyLockedError
- end
with_lock do
+ if self.state == Locked
+ raise AlreadyLockedError
+ end
self.state = Locked
self.save!
end
end
def unlock
- if self.state == Queued
- raise InvalidStateTransitionError
- end
with_lock do
+ if self.state == Queued
+ raise InvalidStateTransitionError
+ end
self.state = Queued
self.save!
end
commit c0650d1d845b08668445fa5245d0e532b38afb95
Author: Tom Clegg <tom at curoverse.com>
Date: Thu Sep 8 16:13:29 2016 -0400
9898: Change state transition error responses from 403 to 422.
diff --git a/services/api/app/models/arvados_model.rb b/services/api/app/models/arvados_model.rb
index f89e9f4..51673f7 100644
--- a/services/api/app/models/arvados_model.rb
+++ b/services/api/app/models/arvados_model.rb
@@ -42,13 +42,13 @@ class ArvadosModel < ActiveRecord::Base
class AlreadyLockedError < StandardError
def http_status
- 403
+ 422
end
end
class InvalidStateTransitionError < StandardError
def http_status
- 403
+ 422
end
end
diff --git a/services/api/test/functional/arvados/v1/containers_controller_test.rb b/services/api/test/functional/arvados/v1/containers_controller_test.rb
index 04c66a7..45149b2 100644
--- a/services/api/test/functional/arvados/v1/containers_controller_test.rb
+++ b/services/api/test/functional/arvados/v1/containers_controller_test.rb
@@ -74,8 +74,8 @@ class Arvados::V1::ContainersControllerTest < ActionController::TestCase
[
[:queued, :lock, :success, 'Locked'],
- [:queued, :unlock, 403, 'Queued'],
- [:locked, :lock, 403, 'Locked'],
+ [:queued, :unlock, 422, 'Queued'],
+ [:locked, :lock, 422, 'Locked'],
[:running, :lock, 422, 'Running'],
[:running, :unlock, 422, 'Running'],
].each do |fixture, action, response, state|
commit 15a9dff29d3e5c16d936650c16b498fba1002860
Author: Tom Clegg <tom at curoverse.com>
Date: Thu Sep 8 16:11:59 2016 -0400
9898: Remove unused code
diff --git a/sdk/go/dispatch/dispatch.go b/sdk/go/dispatch/dispatch.go
index aa79747..a486132 100644
--- a/sdk/go/dispatch/dispatch.go
+++ b/sdk/go/dispatch/dispatch.go
@@ -193,13 +193,6 @@ func (dispatcher *Dispatcher) handleUpdate(container arvados.Container) {
// UpdateState makes an API call to change the state of a container.
func (dispatcher *Dispatcher) UpdateState(uuid string, newState arvados.ContainerState) error {
- if newState == Locked {
- return dispatcher.Lock(uuid)
- } else if newState == Queued {
- return dispatcher.Unlock(uuid)
- }
-
- // All other states
err := dispatcher.Arv.Update("containers", uuid,
arvadosclient.Dict{
"container": arvadosclient.Dict{"state": newState}},
diff --git a/services/api/test/functional/arvados/v1/containers_controller_test.rb b/services/api/test/functional/arvados/v1/containers_controller_test.rb
index abaa612..04c66a7 100644
--- a/services/api/test/functional/arvados/v1/containers_controller_test.rb
+++ b/services/api/test/functional/arvados/v1/containers_controller_test.rb
@@ -72,24 +72,6 @@ class Arvados::V1::ContainersControllerTest < ActionController::TestCase
assert_nil container.auth_uuid
end
- def create_new_container attrs={}
- attrs = {
- command: ['echo', 'foo'],
- container_image: 'img',
- output_path: '/tmp',
- priority: 1,
- runtime_constraints: {"vcpus" => 1, "ram" => 1},
- }
- c = Container.new attrs.merge(attrs)
- c.save!
- cr = ContainerRequest.new attrs.merge(attrs)
- cr.save!
- assert cr.update_attributes(container_uuid: c.uuid,
- state: ContainerRequest::Committed,
- ), show_errors(cr)
- return c
- end
-
[
[:queued, :lock, :success, 'Locked'],
[:queued, :unlock, 403, 'Queued'],
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list