mirror of
https://github.com/Icinga/icinga2.git
synced 2025-07-30 00:54:30 +02:00
Access custom attributes as ${host,service,user}.vars.<name>$.
Refs #5855
This commit is contained in:
parent
34092f0a52
commit
e309a5d330
@ -258,11 +258,23 @@ String Host::StateTypeToString(StateType type)
|
|||||||
|
|
||||||
bool Host::ResolveMacro(const String& macro, const CheckResult::Ptr&, String *result) const
|
bool Host::ResolveMacro(const String& macro, const CheckResult::Ptr&, String *result) const
|
||||||
{
|
{
|
||||||
|
String key;
|
||||||
|
Dictionary::Ptr vars;
|
||||||
|
|
||||||
/* require prefix for object macros */
|
/* require prefix for object macros */
|
||||||
if (macro.SubStr(0, 5) == "host.") {
|
if (macro.SubStr(0, 5) == "host.") {
|
||||||
String key = macro.SubStr(5);
|
key = macro.SubStr(5);
|
||||||
|
|
||||||
if (key == "name") {
|
if (key.SubStr(0, 5) == "vars.") {
|
||||||
|
vars = GetVars();
|
||||||
|
String vars_key = key.SubStr(5);
|
||||||
|
|
||||||
|
if (vars && vars->Contains(vars_key)) {
|
||||||
|
*result = vars->Get(vars_key);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (key == "name") {
|
||||||
*result = GetName();
|
*result = GetName();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -369,13 +381,13 @@ bool Host::ResolveMacro(const String& macro, const CheckResult::Ptr&, String *re
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
|
vars = GetVars();
|
||||||
|
|
||||||
Dictionary::Ptr vars = GetVars();
|
if (vars && vars->Contains(macro)) {
|
||||||
|
*result = vars->Get(macro);
|
||||||
if (vars && vars->Contains(macro)) {
|
return true;
|
||||||
*result = vars->Get(macro);
|
}
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -128,11 +128,22 @@ String Service::StateTypeToString(StateType type)
|
|||||||
|
|
||||||
bool Service::ResolveMacro(const String& macro, const CheckResult::Ptr& cr, String *result) const
|
bool Service::ResolveMacro(const String& macro, const CheckResult::Ptr& cr, String *result) const
|
||||||
{
|
{
|
||||||
|
String key;
|
||||||
|
Dictionary::Ptr vars;
|
||||||
|
|
||||||
/* require prefix for object macros */
|
/* require prefix for object macros */
|
||||||
if (macro.SubStr(0, 8) == "service.") {
|
if (macro.SubStr(0, 8) == "service.") {
|
||||||
String key = macro.SubStr(8);
|
key = macro.SubStr(8);
|
||||||
|
|
||||||
if (key == "description") {
|
if (key.SubStr(0, 5) == "vars.") {
|
||||||
|
vars = GetVars();
|
||||||
|
String vars_key = key.SubStr(5);
|
||||||
|
|
||||||
|
if (vars && vars->Contains(vars_key)) {
|
||||||
|
*result = vars->Get(vars_key);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else if (key == "description") {
|
||||||
*result = GetShortName();
|
*result = GetShortName();
|
||||||
return true;
|
return true;
|
||||||
} else if (key == "displayname") {
|
} else if (key == "displayname") {
|
||||||
@ -199,13 +210,13 @@ bool Service::ResolveMacro(const String& macro, const CheckResult::Ptr& cr, Stri
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
|
vars = GetVars();
|
||||||
|
|
||||||
Dictionary::Ptr vars = GetVars();
|
if (vars && vars->Contains(macro)) {
|
||||||
|
*result = vars->Get(macro);
|
||||||
if (vars && vars->Contains(macro)) {
|
return true;
|
||||||
*result = vars->Get(macro);
|
}
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -68,24 +68,35 @@ TimePeriod::Ptr User::GetNotificationPeriod(void) const
|
|||||||
|
|
||||||
bool User::ResolveMacro(const String& macro, const CheckResult::Ptr&, String *result) const
|
bool User::ResolveMacro(const String& macro, const CheckResult::Ptr&, String *result) const
|
||||||
{
|
{
|
||||||
|
String key;
|
||||||
|
Dictionary::Ptr vars;
|
||||||
|
|
||||||
/* require prefix for object macros */
|
/* require prefix for object macros */
|
||||||
if (macro.SubStr(0, 5) == "user.") {
|
if (macro.SubStr(0, 5) == "user.") {
|
||||||
String key = macro.SubStr(5);
|
key = macro.SubStr(5);
|
||||||
|
|
||||||
if (key == "name") {
|
if (key.SubStr(0, 5) == "vars.") {
|
||||||
|
vars = GetVars();
|
||||||
|
String vars_key = key.SubStr(5);
|
||||||
|
|
||||||
|
if (vars && vars->Contains(vars_key)) {
|
||||||
|
*result = vars->Get(vars_key);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else if (key == "name") {
|
||||||
*result = GetName();
|
*result = GetName();
|
||||||
return true;
|
return true;
|
||||||
} else if (key == "displayname") {
|
} else if (key == "displayname") {
|
||||||
*result = GetDisplayName();
|
*result = GetDisplayName();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
|
vars = GetVars();
|
||||||
|
|
||||||
Dictionary::Ptr vars = GetVars();
|
if (vars && vars->Contains(macro)) {
|
||||||
|
*result = vars->Get(macro);
|
||||||
if (vars && vars->Contains(macro)) {
|
return true;
|
||||||
*result = vars->Get(macro);
|
}
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user