Permit a job to update its output and log attributes even if those
authorTom Clegg <tom@curoverse.com>
Sun, 20 Apr 2014 02:50:54 +0000 (22:50 -0400)
committerTom Clegg <tom@curoverse.com>
Sun, 20 Apr 2014 02:50:54 +0000 (22:50 -0400)
collections have not yet been registered with apiserver.

services/api/app/models/job.rb
services/api/test/fixtures/jobs.yml
services/api/test/functional/arvados/v1/jobs_controller_test.rb

index 0b2247bc21d99196b839f58a0dca37a2d10c284f..61aa7dc6e5c3505f6c45b5575fdff2344a3b6a85 100644 (file)
@@ -71,7 +71,7 @@ class Job < ArvadosModel
   end
 
   def skip_uuid_read_permission_check
-    super + %w(cancelled_by_client_uuid)
+    super + %w(cancelled_by_client_uuid output log)
   end
 
   def ensure_script_version_is_commit
index 81e8cb3b1e37c13ba35e47d4e841df5009b7866d..427982859c43244cdc4fdc5551691814ac3ce102 100644 (file)
@@ -145,4 +145,23 @@ nondeterminisic_job_run:
     input: fa7aeb5140e2848d39b416daeef4ffc5+45
     an_integer: "1"
   success: true
-  nondeterministic: true
\ No newline at end of file
+  nondeterministic: true
+
+nearly_finished_job:
+  uuid: zzzzz-8i9sb-2gx6rz0pjl033w3
+  owner_uuid: zzzzz-tpzed-xurymjxw79nv3jz
+  repository: arvados
+  script: doesnotexist
+  script_version: 309e25a64fe994867db8459543af372f850e25b9
+  script_parameters:
+    input: b519d9cb706a29fc7ea24dbea2f05851+249025
+  started_at: <%= 3.minute.ago.to_s(:db) %>
+  finished_at: ~
+  running: true
+  success: ~
+  tasks_summary:
+    failed: 0
+    todo: 0
+    running: 1
+    done: 0
+  runtime_constraints: {}
index 9904c833c8ca7ae6841d7e3dbbd440c48607b291..398c8671f86515823f4a37c36152ee89f1daf1c5 100644 (file)
@@ -235,5 +235,20 @@ class Arvados::V1::JobsControllerTest < ActionController::TestCase
     assert_response 422
   end
 
+  test "finish a job" do
+    authorize_with :active
+    put :update, {
+      id: jobs(:nearly_finished_job).uuid,
+      job: {
+        output_uuid: '551392cc37a317abf865b95f66f4ef94+101',
+        log: '9215de2a951a721f5f156bc08cf63ad7+93',
+        tasks_summary: {done: 1, running: 0, todo: 0, failed: 0},
+        success: true,
+        running: false,
+        finished_at: Time.now.to_s
+      }
+    }
+    assert_response :success
+  end
 
 end