13996: Fixing test WIP
[arvados.git] / services / api / app / controllers / arvados / v1 / schema_controller.rb
index fc13f893b518fb986e342c4c9b9c69a91acdd31d..5f042877de2afa5e3a8fa62cd0004cb75e0aa22e 100644 (file)
@@ -39,41 +39,34 @@ 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.default_collection_replication,
+        defaultCollectionReplication: Rails.configuration.Collections["DefaultReplication"],
         protocol: "rest",
         baseUrl: root_url + "arvados/v1/",
         basePath: "/arvados/v1/",
         rootUrl: root_url,
         servicePath: "arvados/v1/",
         batchPath: "batch",
-        uuidPrefix: Rails.application.config.uuid_prefix,
-        defaultTrashLifetime: Rails.application.config.default_trash_lifetime,
-        blobSignatureTtl: Rails.application.config.blob_signature_ttl,
-        maxRequestSize: Rails.application.config.max_request_size,
-        maxItemsPerResponse: Rails.application.config.max_items_per_response,
-        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,
-        crunchLogUpdatePeriod: Rails.application.config.crunch_log_update_period,
-        crunchLogUpdateSize: Rails.application.config.crunch_log_update_size,
-        remoteHosts: Rails.configuration.remote_hosts,
-        remoteHostsViaDNS: Rails.configuration.remote_hosts_via_dns,
-        websocketUrl: Rails.application.config.websocket_address,
-        workbenchUrl: Rails.application.config.workbench_address,
-        keepWebServiceUrl: Rails.application.config.keep_web_service_url,
-        gitUrl: case Rails.application.config.git_repo_https_base
-                when false
-                  ''
-                when true
-                  'https://git.%s.arvadosapi.com/' % Rails.configuration.uuid_prefix
-                else
-                  Rails.application.config.git_repo_https_base
-                end,
+        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"],
+        workbenchUrl: Rails.configuration.Services["Workbench1"]["ExternalURL"],
+        keepWebServiceUrl: Rails.configuration.Services["WebDAV"]["ExternalURL"],
+        gitUrl: Rails.configuration.Services["GitHTTP"]["ExternalURL"],
         parameters: {
           alt: {
             type: "string",
@@ -134,6 +127,14 @@ class Arvados::V1::SchemaController < ApplicationController
             object_properties[col.name] = {
               type: k.serialized_attributes[col.name].object_class.to_s
             }
+          elsif k.attribute_types[col.name].is_a? JsonbType::Hash
+            object_properties[col.name] = {
+              type: Hash.to_s
+            }
+          elsif k.attribute_types[col.name].is_a? JsonbType::Array
+            object_properties[col.name] = {
+              type: Array.to_s
+            }
           else
             object_properties[col.name] = {
               type: col.type
@@ -397,7 +398,7 @@ class Arvados::V1::SchemaController < ApplicationController
           end
         end
       end
-      Rails.configuration.disable_api_methods.each do |method|
+      Rails.configuration.API["DisabledAPIs"].each do |method|
         ctrl, action = method.split('.', 2)
         discovery[:resources][ctrl][:methods].delete(action.to_sym)
       end