Move where=[] to filters=[]
[arvados.git] / services / api / app / controllers / arvados / v1 / jobs_controller.rb
index 1b2f941805fe40f7cdfa7cb1988e59521ee201b1..a715d0ef29d8117dea8de020af6084234af2e52d 100644 (file)
@@ -3,8 +3,10 @@ class Arvados::V1::JobsController < ApplicationController
   accept_attribute_as_json :runtime_constraints, Hash
   accept_attribute_as_json :tasks_summary, Hash
   skip_before_filter :find_object_by_uuid, :only => :queue
+  skip_before_filter :render_404_if_no_object, :only => :queue
 
   def index
+    return super unless @where.is_a? Hash
     want_ancestor = @where[:script_version_descends_from]
     if want_ancestor
       # Check for missing commit_ancestor rows, and create them if
@@ -40,6 +42,12 @@ class Arvados::V1::JobsController < ApplicationController
     super
   end
 
+  def cancel
+    reload_object_before_update
+    @object.update_attributes cancelled_at: Time.now
+    show
+  end
+
   class LogStreamer
     Q_UPDATE_INTERVAL = 12
     def initialize(job, opts={})
@@ -111,17 +119,25 @@ class Arvados::V1::JobsController < ApplicationController
 
   def self._log_tail_follow_requires_parameters
     {
-      buffer_size: {type: 'integer', required: false}
+      buffer_size: {type: 'integer', required: false, default: 2**13}
     }
   end
   def log_tail_follow
     if !@object.andand.uuid
       return render_not_found
     end
-    self.response.headers['Last-Modified'] = Time.now.ctime.to_s
-    self.response_body = LogStreamer.new @object, {
-      buffer_size: (params[:buffer_size] || 2**13)
-    }
+    if client_accepts_plain_text_stream
+      self.response.headers['Last-Modified'] = Time.now.ctime.to_s
+      self.response_body = LogStreamer.new @object, {
+        buffer_size: (params[:buffer_size].to_i rescue 2**13)
+      }
+    else
+      render json: {
+        href: url_for(uuid: @object.uuid),
+        comment: ('To retrieve the log stream as plain text, ' +
+                  'use a request header like "Accept: text/plain"')
+      }
+    end
   end
 
   def queue