end
def self.remote_host(uuid_prefix:)
- Rails.configuration.RemoteClusters[uuid_prefix]["Host"] ||
- (Rails.configuration.RemoteClusters["*"]["Proxy"] &&
+ Rails.configuration.RemoteClusters[uuid_prefix].Host ||
+ (Rails.configuration.RemoteClusters["*"].Proxy &&
uuid_prefix+".arvadosapi.com")
end
loc.strip_hints!
coll_match = readable_by(*readers).where(portable_data_hash: loc.to_s).limit(1)
rc = Rails.configuration.RemoteClusters.select{ |k|
- k != "*" && k != Rails.configuration.ClusterID}
+ k != :"*" && k != Rails.configuration.ClusterID}
if coll_match.any? or rc.length == 0
return get_compatible_images(readers, pattern, coll_match)
else
%w(application.default application).each do |cfgfile|
path = "#{::Rails.root.to_s}/config/#{cfgfile}.yml"
if File.exist? path
- yaml = ERB.new(IO.read path).result(binding)
- confs = YAML.load(yaml, deserialize_symbols: true)
+ confs = ConfigLoader.load(path)
# Ignore empty YAML file:
next if confs == false
application_config.deep_merge!(confs['common'] || {})
db_config = {}
path = "#{::Rails.root.to_s}/config/database.yml"
if File.exist? path
- yaml = ERB.new(IO.read path).result(binding)
- confs = YAML.load(yaml, deserialize_symbols: true)
+ confs = ConfigLoader.load(path)
db_config.deep_merge!(confs[::Rails.env.to_s] || {})
end
# For config migration, we've previously populated the PostgreSQL
# section of the config from database.yml
#
-ENV["DATABASE_URL"] = "postgresql://#{$arvados_config["PostgreSQL"]["Connection"]["User"]}:#{$arvados_config["PostgreSQL"]["Connection"]["Password"]}@#{dbhost}/#{$arvados_config["PostgreSQL"]["Connection"]["DBName"]}?template=#{$arvados_config["PostgreSQL"]["Connection"]["Template"]}&encoding=#{$arvados_config["PostgreSQL"]["Connection"]["client_encoding"]}&pool=#{$arvados_config["PostgreSQL"]["ConnectionPool"]}"
+ENV["DATABASE_URL"] = "postgresql://#{$arvados_config["PostgreSQL"]["Connection"]["User"]}:"+
+ "#{$arvados_config["PostgreSQL"]["Connection"]["Password"]}@"+
+ "#{dbhost}/#{$arvados_config["PostgreSQL"]["Connection"]["DBName"]}?"+
+ "template=#{$arvados_config["PostgreSQL"]["Connection"]["Template"]}&"+
+ "encoding=#{$arvados_config["PostgreSQL"]["Connection"]["client_encoding"]}&"+
+ "pool=#{$arvados_config["PostgreSQL"]["ConnectionPool"]}"
Server::Application.configure do
ConfigLoader.copy_into_config $arvados_config, config
def self.copy_into_config src, dst
src.each do |k, v|
- dst.send "#{k}=", Marshal.load(Marshal.dump v)
+ dst.send "#{k}=", self.to_OrderedOptions(v)
end
end
+ def self.to_OrderedOptions confs
+ if confs.is_a? Hash
+ opts = ActiveSupport::OrderedOptions.new
+ confs.each do |k,v|
+ opts[k] = self.to_OrderedOptions(v)
+ end
+ opts
+ elsif confs.is_a? Array
+ confs.map { |v| self.to_OrderedOptions v }
+ else
+ confs
+ end
+ end
+
+ def self.load path
+ yaml = ERB.new(IO.read path).result(binding)
+ YAML.load(yaml, deserialize_symbols: false)
+ end
+
end
ready.pop
@remote_server = srv
@remote_host = "127.0.0.1:#{srv.config[:Port]}"
- Rails.configuration.RemoteClusters = Rails.configuration.RemoteClusters.merge({'zbbbb' => {"Host" => @remote_host},
- 'zbork' => {"Host" => @remote_host}})
+ Rails.configuration.RemoteClusters = Rails.configuration.RemoteClusters.merge({zbbbb: ActiveSupport::InheritableOptions.new({Host: @remote_host}),
+ zbork: ActiveSupport::InheritableOptions.new({Host: @remote_host})})
Arvados::V1::SchemaController.any_instance.stubs(:root_url).returns "https://#{@remote_host}"
@stub_status = 200
@stub_content = {
test "allow unrecognized container when there are remote_hosts" do
set_user_from_auth :active
- Rails.configuration.RemoteClusters = {"foooo" => {"Host" => "bar.com"} }
+ Rails.configuration.RemoteClusters = Rails.configuration.RemoteClusters.merge({foooo: ActiveSupport::InheritableOptions.new({Host: "bar.com"})})
Container.resolve_container_image('acbd18db4cc2f85cedef654fccc4a4d8+3')
end