f6308c528f6beae6ad6e3824e6d15495edca3e13
[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     return send_error("Unsupported legacy jobs API",
32                       status: 400)
33   end
34
35   def queue_size
36     return send_error("Unsupported legacy jobs API",
37                       status: 400)
38   end
39
40   def self._create_requires_parameters
41     (super rescue {}).
42       merge({
43               find_or_create: {
44                 type: 'boolean', required: false, default: false
45               },
46               filters: {
47                 type: 'array', required: false
48               },
49               minimum_script_version: {
50                 type: 'string', required: false
51               },
52               exclude_script_versions: {
53                 type: 'array', required: false
54               },
55             })
56   end
57
58   def self._queue_requires_parameters
59     self._index_requires_parameters
60   end
61
62   protected
63
64   def load_filters_param
65     begin
66       super
67       attrs = resource_attrs rescue {}
68       @filters = Job.load_job_specific_filters attrs, @filters, @read_users
69     rescue ArgumentError => error
70       send_error(error.message)
71       false
72     else
73       true
74     end
75   end
76 end