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
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={})
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