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 26e2c15274
commit efc0a0c598

View file

@ -47,6 +47,23 @@ module LogStash::Config::Mixin
base.extend(LogStash::Config::Mixin::DSL)
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)
# Validation will modify the values inside params if necessary.
# For example: converting a string to a number, etc.
@ -105,19 +122,7 @@ module LogStash::Config::Mixin
# Resolve environment variables references
params.each do |name, value|
if (value.is_a?(Hash))
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
params[name.to_s] = deep_replace(value)
end