X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/17028c6f18a3e83b39de1655b6bfeafe2938220d..ee38970362aa72e8aeb875ce15028fffd7834a3b:/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 222b106a97..aee5d1f951 100644 --- a/services/api/app/controllers/arvados/v1/schema_controller.rb +++ b/services/api/app/controllers/arvados/v1/schema_controller.rb @@ -25,13 +25,18 @@ class Arvados::V1::SchemaController < ApplicationController def discovery_doc Rails.cache.fetch 'arvados_v1_rest_discovery' do Rails.application.eager_load! + remoteHosts = {} + Rails.configuration.RemoteClusters.each {|k,v| if k != :"*" then remoteHosts[k] = v["Host"] end } discovery = { kind: "discovery#restDescription", discoveryVersion: "v1", id: "arvados:v1", name: "arvados", version: "v1", - revision: "20131114", + # format is YYYYMMDD, must be fixed with (needs to be linearly + # sortable), updated manually, may be used by clients to + # determine availability of API server features. + revision: "20190926", source_version: AppVersion.hash, sourceVersion: AppVersion.hash, # source_version should be deprecated in the future packageVersion: AppVersion.package_version, @@ -39,7 +44,7 @@ class Arvados::V1::SchemaController < ApplicationController title: "Arvados API", description: "The API to interact with Arvados.", documentationLink: "http://doc.arvados.org/api/index.html", - defaultCollectionReplication: Rails.configuration.Collections["DefaultReplication"], + defaultCollectionReplication: Rails.configuration.Collections.DefaultReplication, protocol: "rest", baseUrl: root_url + "arvados/v1/", basePath: "/arvados/v1/", @@ -47,26 +52,27 @@ class Arvados::V1::SchemaController < ApplicationController servicePath: "arvados/v1/", batchPath: "batch", uuidPrefix: Rails.configuration.ClusterID, - defaultTrashLifetime: Rails.configuration.Collections["DefaultTrashLifetime"], - blobSignatureTtl: Rails.configuration.Collections["BlobSigningTTL"], - maxRequestSize: Rails.configuration.API["MaxRequestSize"], - maxItemsPerResponse: Rails.configuration.API["MaxItemsPerResponse"], - dockerImageFormats: Rails.configuration.Containers["SupportedDockerImageFormats"], - crunchLogBytesPerEvent: Rails.configuration.Containers["Logging"]["LogBytesPerEvent"], - crunchLogSecondsBetweenEvents: Rails.configuration.Containers["Logging"]["LogSecondsBetweenEvents"], - crunchLogThrottlePeriod: Rails.configuration.Containers["Logging"]["LogThrottlePeriod"], - crunchLogThrottleBytes: Rails.configuration.Containers["Logging"]["LogThrottleBytes"], - crunchLogThrottleLines: Rails.configuration.Containers["Logging"]["LogThrottleLines"], - crunchLimitLogBytesPerJob: Rails.configuration.Containers["Logging"]["LimitLogBytesPerJob"], - crunchLogPartialLineThrottlePeriod: Rails.configuration.Containers["Logging"]["LogPartialLineThrottlePeriod"], - crunchLogUpdatePeriod: Rails.configuration.Containers["Logging"]["LogUpdatePeriod"], - crunchLogUpdateSize: Rails.configuration.Containers["Logging"]["LogUpdateSize"], - remoteHosts: Rails.configuration.RemoteClusters.map {|k,v| v["Host"]}, - remoteHostsViaDNS: Rails.configuration.RemoteClusters["*"]["Proxy"], - websocketUrl: Rails.configuration.Services["Websocket"]["ExternalURL"].to_s, - workbenchUrl: Rails.configuration.Services["Workbench1"]["ExternalURL"].to_s, - keepWebServiceUrl: Rails.configuration.Services["WebDAV"]["ExternalURL"].to_s, - gitUrl: Rails.configuration.Services["GitHTTP"]["ExternalURL"].to_s, + defaultTrashLifetime: Rails.configuration.Collections.DefaultTrashLifetime, + blobSignatureTtl: Rails.configuration.Collections.BlobSigningTTL, + maxRequestSize: Rails.configuration.API.MaxRequestSize, + maxItemsPerResponse: Rails.configuration.API.MaxItemsPerResponse, + dockerImageFormats: Rails.configuration.Containers.SupportedDockerImageFormats.keys, + crunchLogBytesPerEvent: Rails.configuration.Containers.Logging.LogBytesPerEvent, + crunchLogSecondsBetweenEvents: Rails.configuration.Containers.Logging.LogSecondsBetweenEvents, + crunchLogThrottlePeriod: Rails.configuration.Containers.Logging.LogThrottlePeriod, + crunchLogThrottleBytes: Rails.configuration.Containers.Logging.LogThrottleBytes, + crunchLogThrottleLines: Rails.configuration.Containers.Logging.LogThrottleLines, + crunchLimitLogBytesPerJob: Rails.configuration.Containers.Logging.LimitLogBytesPerJob, + crunchLogPartialLineThrottlePeriod: Rails.configuration.Containers.Logging.LogPartialLineThrottlePeriod, + crunchLogUpdatePeriod: Rails.configuration.Containers.Logging.LogUpdatePeriod, + crunchLogUpdateSize: Rails.configuration.Containers.Logging.LogUpdateSize, + remoteHosts: remoteHosts, + remoteHostsViaDNS: Rails.configuration.RemoteClusters["*"].Proxy, + websocketUrl: Rails.configuration.Services.Websocket.ExternalURL.to_s, + workbenchUrl: Rails.configuration.Services.Workbench1.ExternalURL.to_s, + workbench2Url: Rails.configuration.Services.Workbench2.ExternalURL.to_s, + keepWebServiceUrl: Rails.configuration.Services.WebDAV.ExternalURL.to_s, + gitUrl: Rails.configuration.Services.GitHTTP.ExternalURL.to_s, parameters: { alt: { type: "string", @@ -398,8 +404,30 @@ class Arvados::V1::SchemaController < ApplicationController end end end - Rails.configuration.API["DisabledAPIs"].each do |method| - ctrl, action = method.split('.', 2) + + discovery[:resources]['configs'] = { + methods: { + get: { + id: "arvados.configs.get", + path: "config", + httpMethod: "GET", + description: "Get public config", + parameters: { + }, + parameterOrder: [ + ], + response: { + }, + scopes: [ + "https://api.curoverse.com/auth/arvados", + "https://api.curoverse.com/auth/arvados.readonly" + ] + }, + } + } + + Rails.configuration.API.DisabledAPIs.each do |method, _| + ctrl, action = method.to_s.split('.', 2) discovery[:resources][ctrl][:methods].delete(action.to_sym) end discovery