X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/cd0052e87bfa9d7e3d501427c7ff47e08c68d8d5..060d38d627bd1e51dd2b3c6e7de9af6aa7d7b6f3:/services/api/app/controllers/arvados/v1/schema_controller.rb diff --git a/services/api/app/controllers/arvados/v1/schema_controller.rb b/services/api/app/controllers/arvados/v1/schema_controller.rb index 2c55b15068..d5ba487d0f 100644 --- a/services/api/app/controllers/arvados/v1/schema_controller.rb +++ b/services/api/app/controllers/arvados/v1/schema_controller.rb @@ -1,3 +1,7 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: AGPL-3.0 + class Arvados::V1::SchemaController < ApplicationController skip_before_filter :catch_redirect_hint skip_before_filter :find_objects_for_index @@ -37,6 +41,15 @@ class Arvados::V1::SchemaController < ApplicationController defaultTrashLifetime: Rails.application.config.default_trash_lifetime, blobSignatureTtl: Rails.application.config.blob_signature_ttl, maxRequestSize: Rails.application.config.max_request_size, + dockerImageFormats: Rails.application.config.docker_image_formats, + crunchLogBytesPerEvent: Rails.application.config.crunch_log_bytes_per_event, + crunchLogSecondsBetweenEvents: Rails.application.config.crunch_log_seconds_between_events, + crunchLogThrottlePeriod: Rails.application.config.crunch_log_throttle_period, + crunchLogThrottleBytes: Rails.application.config.crunch_log_throttle_bytes, + crunchLogThrottleLines: Rails.application.config.crunch_log_throttle_lines, + crunchLimitLogBytesPerJob: Rails.application.config.crunch_limit_log_bytes_per_job, + crunchLogPartialLineThrottlePeriod: Rails.application.config.crunch_log_partial_line_throttle_period, + websocketUrl: Rails.application.config.websocket_address, parameters: { alt: { type: "string", @@ -82,12 +95,6 @@ class Arvados::V1::SchemaController < ApplicationController resources: {} } - if Rails.application.config.websocket_address - discovery[:websocketUrl] = Rails.application.config.websocket_address - elsif ENV['ARVADOS_WEBSOCKETS'] - discovery[:websocketUrl] = (root_url.sub /^http/, 'ws') + "websocket" - end - ActiveRecord::Base.descendants.reject(&:abstract_class?).each do |k| begin ctl_class = "Arvados::V1::#{k.to_s.pluralize}Controller".constantize @@ -186,14 +193,14 @@ class Arvados::V1::SchemaController < ApplicationController "https://api.curoverse.com/auth/arvados.readonly" ] }, - list: { - id: "arvados.#{k.to_s.underscore.pluralize}.list", + index: { + id: "arvados.#{k.to_s.underscore.pluralize}.index", path: k.to_s.underscore.pluralize, httpMethod: "GET", description: - %|List #{k.to_s.pluralize}. + %|Index #{k.to_s.pluralize}. - The list method returns a + The index method returns a resource list of matching #{k.to_s.pluralize}. For example: @@ -213,47 +220,6 @@ class Arvados::V1::SchemaController < ApplicationController } |, parameters: { - limit: { - type: "integer", - description: "Maximum number of #{k.to_s.underscore.pluralize} to return.", - default: "100", - format: "int32", - minimum: "0", - location: "query", - }, - offset: { - type: "integer", - description: "Number of #{k.to_s.underscore.pluralize} to skip before first returned record.", - default: "0", - format: "int32", - minimum: "0", - location: "query", - }, - filters: { - type: "array", - description: "Conditions for filtering #{k.to_s.underscore.pluralize}.", - location: "query" - }, - where: { - type: "object", - description: "Conditions for filtering #{k.to_s.underscore.pluralize}. (Deprecated. Use filters instead.)", - location: "query" - }, - order: { - type: "string", - description: "Order in which to return matching #{k.to_s.underscore.pluralize}.", - location: "query" - }, - select: { - type: "array", - description: "Select which fields to return", - location: "query" - }, - distinct: { - type: "boolean", - description: "Return each distinct object", - location: "query" - } }, response: { "$ref" => "#{k.to_s}List" @@ -377,25 +343,33 @@ class Arvados::V1::SchemaController < ApplicationController method = d_methods[action.to_sym] end if ctl_class.respond_to? "_#{action}_requires_parameters".to_sym - ctl_class.send("_#{action}_requires_parameters".to_sym).each do |k, v| + ctl_class.send("_#{action}_requires_parameters".to_sym).each do |l, v| if v.is_a? Hash - method[:parameters][k] = v + method[:parameters][l] = v else - method[:parameters][k] = {} + method[:parameters][l] = {} end - if !method[:parameters][k][:default].nil? + if !method[:parameters][l][:default].nil? # The JAVA SDK is sensitive to all values being strings - method[:parameters][k][:default] = method[:parameters][k][:default].to_s + method[:parameters][l][:default] = method[:parameters][l][:default].to_s end - method[:parameters][k][:type] ||= 'string' - method[:parameters][k][:description] ||= '' - method[:parameters][k][:location] = (route.segment_keys.include?(k) ? 'path' : 'query') - if method[:parameters][k][:required].nil? - method[:parameters][k][:required] = v != false + method[:parameters][l][:type] ||= 'string' + method[:parameters][l][:description] ||= '' + method[:parameters][l][:location] = (route.segment_keys.include?(l) ? 'path' : 'query') + if method[:parameters][l][:required].nil? + method[:parameters][l][:required] = v != false end end end d_methods[action.to_sym] = method + + if action == 'index' + list_method = method.dup + list_method[:id].sub!('index', 'list') + list_method[:description].sub!('Index', 'List') + list_method[:description].sub!('index', 'list') + d_methods[:list] = list_method + end end end end