mirror of https://github.com/Icinga/icinga2.git
parent
f34778eb86
commit
6f51230a79
|
@ -38,7 +38,6 @@ DynamicObject::DynamicObject(const Dictionary::Ptr& serializedObject)
|
||||||
RegisterAttribute("__name", Attribute_Config, &m_Name);
|
RegisterAttribute("__name", Attribute_Config, &m_Name);
|
||||||
RegisterAttribute("__type", Attribute_Config, &m_Type);
|
RegisterAttribute("__type", Attribute_Config, &m_Type);
|
||||||
RegisterAttribute("__local", Attribute_Config, &m_Local);
|
RegisterAttribute("__local", Attribute_Config, &m_Local);
|
||||||
RegisterAttribute("__abstract", Attribute_Config, &m_Abstract);
|
|
||||||
RegisterAttribute("__source", Attribute_Local, &m_Source);
|
RegisterAttribute("__source", Attribute_Local, &m_Source);
|
||||||
RegisterAttribute("methods", Attribute_Config, &m_Methods);
|
RegisterAttribute("methods", Attribute_Config, &m_Methods);
|
||||||
|
|
||||||
|
@ -339,14 +338,6 @@ bool DynamicObject::IsLocal(void) const
|
||||||
return m_Local;
|
return m_Local;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @threadsafety Always.
|
|
||||||
*/
|
|
||||||
bool DynamicObject::IsAbstract(void) const
|
|
||||||
{
|
|
||||||
return m_Abstract;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @threadsafety Always.
|
* @threadsafety Always.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -71,7 +71,6 @@ public:
|
||||||
String GetName(void) const;
|
String GetName(void) const;
|
||||||
|
|
||||||
bool IsLocal(void) const;
|
bool IsLocal(void) const;
|
||||||
bool IsAbstract(void) const;
|
|
||||||
bool IsRegistered(void) const;
|
bool IsRegistered(void) const;
|
||||||
|
|
||||||
void SetSource(const String& value);
|
void SetSource(const String& value);
|
||||||
|
@ -113,7 +112,6 @@ private:
|
||||||
Attribute<String> m_Name;
|
Attribute<String> m_Name;
|
||||||
Attribute<String> m_Type;
|
Attribute<String> m_Type;
|
||||||
Attribute<bool> m_Local;
|
Attribute<bool> m_Local;
|
||||||
Attribute<bool> m_Abstract;
|
|
||||||
Attribute<String> m_Source;
|
Attribute<String> m_Source;
|
||||||
Attribute<Dictionary::Ptr> m_Methods;
|
Attribute<Dictionary::Ptr> m_Methods;
|
||||||
|
|
||||||
|
|
|
@ -31,15 +31,17 @@ signals2::signal<void (const ConfigItem::Ptr&)> ConfigItem::OnRemoved;
|
||||||
*
|
*
|
||||||
* @param type The object type.
|
* @param type The object type.
|
||||||
* @param name The name of the item.
|
* @param name The name of the item.
|
||||||
|
* @param unit The unit of the item.
|
||||||
|
* @param abstract Whether the item is a template.
|
||||||
* @param exprl Expression list for the item.
|
* @param exprl Expression list for the item.
|
||||||
* @param parents Parent objects for the item.
|
* @param parents Parent objects for the item.
|
||||||
* @param debuginfo Debug information.
|
* @param debuginfo Debug information.
|
||||||
*/
|
*/
|
||||||
ConfigItem::ConfigItem(const String& type, const String& name,
|
ConfigItem::ConfigItem(const String& type, const String& name,
|
||||||
const String& unit, const ExpressionList::Ptr& exprl,
|
const String& unit, bool abstract, const ExpressionList::Ptr& exprl,
|
||||||
const vector<String>& parents, const DebugInfo& debuginfo)
|
const vector<String>& parents, const DebugInfo& debuginfo)
|
||||||
: m_Type(type), m_Name(name), m_Unit(unit), m_ExpressionList(exprl),
|
: m_Type(type), m_Name(name), m_Unit(unit), m_Abstract(abstract),
|
||||||
m_Parents(parents), m_DebugInfo(debuginfo)
|
m_ExpressionList(exprl), m_Parents(parents), m_DebugInfo(debuginfo)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -73,6 +75,16 @@ String ConfigItem::GetUnit(void) const
|
||||||
return m_Unit;
|
return m_Unit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks whether the item is abstract.
|
||||||
|
*
|
||||||
|
* @returns true if the item is abstract, false otherwise.
|
||||||
|
*/
|
||||||
|
bool ConfigItem::IsAbstract(void) const
|
||||||
|
{
|
||||||
|
return m_Abstract;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves the debug information for the configuration item.
|
* Retrieves the debug information for the configuration item.
|
||||||
*
|
*
|
||||||
|
@ -251,7 +263,7 @@ DynamicObject::Ptr ConfigItem::Commit(void)
|
||||||
/* Update or create the object and apply the configuration settings. */
|
/* Update or create the object and apply the configuration settings. */
|
||||||
bool was_null = false;
|
bool was_null = false;
|
||||||
|
|
||||||
if (!dobj) {
|
if (!dobj && !IsAbstract()) {
|
||||||
dobj = dtype->CreateObject(update);
|
dobj = dtype->CreateObject(update);
|
||||||
was_null = true;
|
was_null = true;
|
||||||
}
|
}
|
||||||
|
@ -265,10 +277,12 @@ DynamicObject::Ptr ConfigItem::Commit(void)
|
||||||
m_DynamicObject = dobj;
|
m_DynamicObject = dobj;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dobj->IsAbstract())
|
if (dobj) {
|
||||||
|
if (IsAbstract())
|
||||||
dobj->Unregister();
|
dobj->Unregister();
|
||||||
else
|
else
|
||||||
dobj->Register();
|
dobj->Register();
|
||||||
|
}
|
||||||
|
|
||||||
/* notify our children of the update */
|
/* notify our children of the update */
|
||||||
BOOST_FOREACH(const ConfigItem::WeakPtr wchild, children) {
|
BOOST_FOREACH(const ConfigItem::WeakPtr wchild, children) {
|
||||||
|
|
|
@ -35,12 +35,13 @@ public:
|
||||||
typedef weak_ptr<ConfigItem> WeakPtr;
|
typedef weak_ptr<ConfigItem> WeakPtr;
|
||||||
|
|
||||||
ConfigItem(const String& type, const String& name, const String& unit,
|
ConfigItem(const String& type, const String& name, const String& unit,
|
||||||
const ExpressionList::Ptr& exprl, const vector<String>& parents,
|
bool abstract, const ExpressionList::Ptr& exprl, const vector<String>& parents,
|
||||||
const DebugInfo& debuginfo);
|
const DebugInfo& debuginfo);
|
||||||
|
|
||||||
String GetType(void) const;
|
String GetType(void) const;
|
||||||
String GetName(void) const;
|
String GetName(void) const;
|
||||||
String GetUnit(void) const;
|
String GetUnit(void) const;
|
||||||
|
bool IsAbstract(void) const;
|
||||||
|
|
||||||
vector<String> GetParents(void) const;
|
vector<String> GetParents(void) const;
|
||||||
|
|
||||||
|
@ -75,6 +76,7 @@ private:
|
||||||
String m_Type; /**< The object type. */
|
String m_Type; /**< The object type. */
|
||||||
String m_Name; /**< The name. */
|
String m_Name; /**< The name. */
|
||||||
String m_Unit; /**< The compilation unit. */
|
String m_Unit; /**< The compilation unit. */
|
||||||
|
bool m_Abstract; /**< Whether this is a template. */
|
||||||
|
|
||||||
ExpressionList::Ptr m_ExpressionList;
|
ExpressionList::Ptr m_ExpressionList;
|
||||||
vector<String> m_Parents; /**< The names of parent configuration
|
vector<String> m_Parents; /**< The names of parent configuration
|
||||||
|
|
|
@ -139,9 +139,6 @@ ConfigItem::Ptr ConfigItemBuilder::Compile(void)
|
||||||
Expression localExpr("__local", OperatorSet, m_Local, m_DebugInfo);
|
Expression localExpr("__local", OperatorSet, m_Local, m_DebugInfo);
|
||||||
exprl->AddExpression(localExpr);
|
exprl->AddExpression(localExpr);
|
||||||
|
|
||||||
Expression abstractExpr("__abstract", OperatorSet, m_Abstract, m_DebugInfo);
|
return boost::make_shared<ConfigItem>(m_Type, m_Name, m_Unit, m_Abstract, exprl, m_Parents,
|
||||||
exprl->AddExpression(abstractExpr);
|
|
||||||
|
|
||||||
return boost::make_shared<ConfigItem>(m_Type, m_Name, m_Unit, exprl, m_Parents,
|
|
||||||
m_DebugInfo);
|
m_DebugInfo);
|
||||||
}
|
}
|
||||||
|
|
|
@ -208,9 +208,8 @@ void Host::UpdateSlaveServices(void)
|
||||||
|
|
||||||
ConfigItem::Ptr item = ConfigItem::GetObject("Host", GetName());
|
ConfigItem::Ptr item = ConfigItem::GetObject("Host", GetName());
|
||||||
|
|
||||||
/* Don't create slave services unless we own this object
|
/* Don't create slave services unless we own this object */
|
||||||
* and it's not a template. */
|
if (!item)
|
||||||
if (!item || IsAbstract())
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Dictionary::Ptr oldServices = m_SlaveServices;
|
Dictionary::Ptr oldServices = m_SlaveServices;
|
||||||
|
|
|
@ -191,9 +191,8 @@ void Service::UpdateSlaveNotifications(void)
|
||||||
|
|
||||||
item = ConfigItem::GetObject("Service", GetName());
|
item = ConfigItem::GetObject("Service", GetName());
|
||||||
|
|
||||||
/* Don't create slave notifications unless we own this object
|
/* Don't create slave notifications unless we own this object */
|
||||||
* and it's not a template. */
|
if (!item)
|
||||||
if (!item || IsAbstract())
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
@ -362,7 +362,7 @@ void Service::OnAttributeChanged(const String& name)
|
||||||
ConfigItem::Ptr item = ConfigItem::GetObject("Service", GetName());
|
ConfigItem::Ptr item = ConfigItem::GetObject("Service", GetName());
|
||||||
|
|
||||||
/* update the next check timestamp if we're the owner of this service */
|
/* update the next check timestamp if we're the owner of this service */
|
||||||
if (item && !IsAbstract())
|
if (item)
|
||||||
UpdateNextCheck();
|
UpdateNextCheck();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue