add deep environment variables replacement in configuration

This commit is contained in:
emile 2017-02-11 13:11:10 -05:00 committed by Suyog Rao
parent 5d6848f840
commit de289435bb

View file

@ -47,6 +47,23 @@ module LogStash::Config::Mixin
base.extend(LogStash::Config::Mixin::DSL) base.extend(LogStash::Config::Mixin::DSL)
end end
# Recursive method to replace environment variable references in parameters
def deep_replace(value)
if (value.is_a?(Hash))
value.each do |valueHashKey, valueHashValue|
value[valueHashKey.to_s] = deep_replace(valueHashValue)
end
else
if (value.is_a?(Array))
value.each_index do | valueArrayIndex|
value[valueArrayIndex] = deep_replace(value[valueArrayIndex])
end
else
return replace_env_placeholders(value)
end
end
end
def config_init(params) def config_init(params)
# Validation will modify the values inside params if necessary. # Validation will modify the values inside params if necessary.
# For example: converting a string to a number, etc. # For example: converting a string to a number, etc.
@ -105,19 +122,7 @@ module LogStash::Config::Mixin
# Resolve environment variables references # Resolve environment variables references
params.each do |name, value| params.each do |name, value|
if (value.is_a?(Hash)) params[name.to_s] = deep_replace(value)
value.each do |valueHashKey, valueHashValue|
value[valueHashKey.to_s] = replace_env_placeholders(valueHashValue)
end
else
if (value.is_a?(Array))
value.each_index do |valueArrayIndex|
value[valueArrayIndex] = replace_env_placeholders(value[valueArrayIndex])
end
else
params[name.to_s] = replace_env_placeholders(value)
end
end
end end