diff options
author | Saku Ytti <saku@ytti.fi> | 2016-09-28 16:14:35 +0300 |
---|---|---|
committer | Saku Ytti <saku@ytti.fi> | 2016-09-28 16:14:35 +0300 |
commit | e638e7c9685d375afbfba2949943da1c542dae53 (patch) | |
tree | ce2f25bfd9fadbb7480360fc7125c1b12ece9a10 /lib/oxidized/source/http.rb | |
parent | a4df8447d7126f3d333a95b97f688421684141e3 (diff) |
interpolate node variable values
Empty value was variably considered "" or nil, now it will always be ""
string.
Now "nil", "false", "true" strings are converted to their respective
types nil, false and true.
This also means we cannot have verbatim strings by that name, like if
your password was "false", you're shit out of luck. If this is the case,
we can add some __false__ hack or consider other similar solutions.
Fixes #500
Fixes #534
May break stuff with ""/nil changing now, but as it was not consistent
to begin with, I find it acceptable. Users now may need to manually
enter nil in some fields to regain old behaviour.
Diffstat (limited to 'lib/oxidized/source/http.rb')
-rw-r--r-- | lib/oxidized/source/http.rb | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/oxidized/source/http.rb b/lib/oxidized/source/http.rb index 93361a2..38387ad 100644 --- a/lib/oxidized/source/http.rb +++ b/lib/oxidized/source/http.rb @@ -43,9 +43,11 @@ class HTTP < Source end keys[:model] = map_model keys[:model] if keys.key? :model - # map node specific vars, empty value is considered as nil + # map node specific vars vars = {} - @cfg.vars_map.each { |key, position| vars[key.to_sym] = line[position].to_s.empty? ? nil : line[position] } + @cfg.vars_map.each do |key, position| + vars[key.to_sym] = node_var_interpolate line[position] + end keys[:vars] = vars unless vars.empty? nodes << keys |