]> granicus.if.org Git - icinga2/commitdiff
Resolve macros in dictionary values
authorMichael Friedrich <michael.friedrich@netways.de>
Wed, 11 Feb 2015 14:58:59 +0000 (15:58 +0100)
committerMichael Friedrich <michael.friedrich@netways.de>
Wed, 11 Feb 2015 14:58:59 +0000 (15:58 +0100)
refs #7311

lib/icinga/macroprocessor.cpp

index 8a578842b99893274490329ba55e865e8f444a6c..aac8fb4ab2241eb03a9f952bdc5e19920df98c89 100644 (file)
@@ -59,6 +59,19 @@ Value MacroProcessor::ResolveMacros(const Value& str, const ResolverList& resolv
                }
 
                result = resultArr;
+       } else if (str.IsObjectType<Dictionary>()) {
+               Dictionary::Ptr resultDict = new Dictionary();
+               Dictionary::Ptr dict = str;
+
+               ObjectLock olock(dict);
+
+               BOOST_FOREACH(const Dictionary::Pair& kv, dict) {
+                       /* Note: don't escape macros here. */
+                       resultDict->Set(kv.first, InternalResolveMacros(kv.second, resolvers, cr, missingMacro,
+                           EscapeCallback(), resolvedMacros, useResolvedMacros));
+               }
+
+               result = resultDict;
        } else if (str.IsObjectType<Function>()) {
                result = EvaluateFunction(str, resolvers, cr, missingMacro, escapeFn, resolvedMacros, useResolvedMacros, 0);
        } else {