16306: Merge branch 'master'
[arvados.git] / services / api / app / controllers / arvados / v1 / jobs_controller.rb
1 # Copyright (C) The Arvados Authors. All rights reserved.
2 #
3 # SPDX-License-Identifier: AGPL-3.0
4
5 class Arvados::V1::JobsController < ApplicationController
6   accept_attribute_as_json :components, Hash
7   accept_attribute_as_json :script_parameters, Hash
8   accept_attribute_as_json :runtime_constraints, Hash
9   accept_attribute_as_json :tasks_summary, Hash
10   skip_before_action :find_object_by_uuid, :only => [:queue, :queue_size]
11   skip_before_action :render_404_if_no_object, :only => [:queue, :queue_size]
12
13   include DbCurrentTime
14
15   def create
16     return send_error("Unsupported legacy jobs API",
17                       status: 400)
18   end
19
20   def cancel
21     return send_error("Unsupported legacy jobs API",
22                       status: 400)
23   end
24
25   def lock
26     return send_error("Unsupported legacy jobs API",
27                       status: 400)
28   end
29
30   def queue
31     @objects = []
32     index
33   end
34
35   def queue_size
36     render :json => {:queue_size => 0}
37   end
38
39   def self._create_requires_parameters
40     (super rescue {}).
41       merge({
42               find_or_create: {
43                 type: 'boolean', required: false, default: false,
44               },
45               filters: {
46                 type: 'array', required: false,
47               },
48               minimum_script_version: {
49                 type: 'string', required: false,
50               },
51               exclude_script_versions: {
52                 type: 'array', required: false,
53               },
54             })
55   end
56
57   def self._queue_requires_parameters
58     self._index_requires_parameters
59   end
60
61   protected
62
63   def load_filters_param
64     begin
65       super
66       attrs = resource_attrs rescue {}
67       @filters = Job.load_job_specific_filters attrs, @filters, @read_users
68     rescue ArgumentError => error
69       send_error(error.message)
70       false
71     else
72       true
73     end
74   end
75 end