******************************************************************************/
#include "db_ido/hostdbobject.hpp"
+#include "db_ido/hostgroupdbobject.hpp"
#include "db_ido/dbtype.hpp"
#include "db_ido/dbvalue.hpp"
#include "db_ido/dbevents.hpp"
{
Host::Ptr host = static_pointer_cast<Host>(GetObject());
+ /* groups */
+ Array::Ptr groups = host->GetGroups();
+
+ if (groups) {
+ ObjectLock olock(groups);
+ BOOST_FOREACH(const String& groupName, groups) {
+ HostGroup::Ptr group = HostGroup::GetByName(groupName);
+
+ DbQuery query1;
+ query1.Table = DbType::GetByName("HostGroup")->GetTable() + "_members";
+ query1.Type = DbQueryDelete;
+ query1.Category = DbCatConfig;
+ query1.WhereCriteria = new Dictionary();
+ query1.WhereCriteria->Set("instance_id", 0); /* DbConnection class fills in real ID */
+ query1.WhereCriteria->Set("hostgroup_id", DbValue::FromObjectInsertID(group));
+ query1.WhereCriteria->Set("host_object_id", host);
+ OnQuery(query1);
+
+ DbQuery query2;
+ query2.Table = DbType::GetByName("HostGroup")->GetTable() + "_members";
+ query2.Type = DbQueryInsert;
+ query2.Category = DbCatConfig;
+ query2.Fields = new Dictionary();
+ query2.Fields->Set("instance_id", 0); /* DbConnection class fills in real ID */
+ query2.Fields->Set("hostgroup_id", DbValue::FromObjectInsertID(group));
+ query2.Fields->Set("host_object_id", host);
+ OnQuery(query2);
+ }
+ }
+
/* parents */
BOOST_FOREACH(const Checkable::Ptr& checkable, host->GetParents()) {
Host::Ptr parent = dynamic_pointer_cast<Host>(checkable);
{
return Empty;
}
-
-void HostGroupDbObject::OnConfigUpdate(void)
-{
- HostGroup::Ptr group = static_pointer_cast<HostGroup>(GetObject());
-
- DbQuery query1;
- query1.Table = DbType::GetByName("HostGroup")->GetTable() + "_members";
- query1.Type = DbQueryDelete;
- query1.Category = DbCatConfig;
- query1.WhereCriteria = new Dictionary();
- query1.WhereCriteria->Set("instance_id", 0); /* DbConnection class fills in real ID */
- query1.WhereCriteria->Set("hostgroup_id", DbValue::FromObjectInsertID(group));
- OnQuery(query1);
-
- BOOST_FOREACH(const Host::Ptr& host, group->GetMembers()) {
- DbQuery query2;
- query2.Table = DbType::GetByName("HostGroup")->GetTable() + "_members";
- query2.Type = DbQueryInsert;
- query2.Category = DbCatConfig;
- query2.Fields = new Dictionary();
- query2.Fields->Set("instance_id", 0); /* DbConnection class fills in real ID */
- query2.Fields->Set("hostgroup_id", DbValue::FromObjectInsertID(group));
- query2.Fields->Set("host_object_id", host);
- OnQuery(query2);
- }
-}
virtual Dictionary::Ptr GetConfigFields(void) const override;
virtual Dictionary::Ptr GetStatusFields(void) const override;
-protected:
- virtual void OnConfigUpdate(void) override;
-
private:
static void MembersChangedHandler(const HostGroup::Ptr& hgfilter);
};
******************************************************************************/
#include "db_ido/servicedbobject.hpp"
+#include "db_ido/servicegroupdbobject.hpp"
#include "db_ido/dbtype.hpp"
#include "db_ido/dbvalue.hpp"
#include "db_ido/dbevents.hpp"
{
Service::Ptr service = static_pointer_cast<Service>(GetObject());
+ /* groups */
+ Array::Ptr groups = service->GetGroups();
+
+ if (groups) {
+ ObjectLock olock(groups);
+ BOOST_FOREACH(const String& groupName, groups) {
+ ServiceGroup::Ptr group = ServiceGroup::GetByName(groupName);
+
+ DbQuery query1;
+ query1.Table = DbType::GetByName("ServiceGroup")->GetTable() + "_members";
+ query1.Type = DbQueryDelete;
+ query1.Category = DbCatConfig;
+ query1.WhereCriteria = new Dictionary();
+ query1.WhereCriteria->Set("instance_id", 0); /* DbConnection class fills in real ID */
+ query1.WhereCriteria->Set("servicegroup_id", DbValue::FromObjectInsertID(group));
+ query1.WhereCriteria->Set("service_object_id", service);
+ OnQuery(query1);
+
+ DbQuery query2;
+ query2.Table = DbType::GetByName("ServiceGroup")->GetTable() + "_members";
+ query2.Type = DbQueryInsert;
+ query2.Category = DbCatConfig;
+ query2.Fields = new Dictionary();
+ query2.Fields->Set("instance_id", 0); /* DbConnection class fills in real ID */
+ query2.Fields->Set("servicegroup_id", DbValue::FromObjectInsertID(group));
+ query2.Fields->Set("service_object_id", service);
+ OnQuery(query2);
+ }
+ }
+
/* service dependencies */
Log(LogDebug, "ServiceDbObject")
<< "service dependencies for '" << service->GetName() << "'";
{
return Empty;
}
-
-void ServiceGroupDbObject::OnConfigUpdate(void)
-{
- ServiceGroup::Ptr group = static_pointer_cast<ServiceGroup>(GetObject());
-
- DbQuery query1;
- query1.Table = DbType::GetByName("ServiceGroup")->GetTable() + "_members";
- query1.Type = DbQueryDelete;
- query1.Category = DbCatConfig;
- query1.WhereCriteria = new Dictionary();
- query1.WhereCriteria->Set("instance_id", 0); /* DbConnection class fills in real ID */
- query1.WhereCriteria->Set("servicegroup_id", DbValue::FromObjectInsertID(group));
- OnQuery(query1);
-
- BOOST_FOREACH(const Service::Ptr& service, group->GetMembers()) {
- DbQuery query2;
- query2.Table = DbType::GetByName("ServiceGroup")->GetTable() + "_members";
- query2.Type = DbQueryInsert;
- query2.Category = DbCatConfig;
- query2.Fields = new Dictionary();
- query2.Fields->Set("instance_id", 0); /* DbConnection class fills in real ID */
- query2.Fields->Set("servicegroup_id", DbValue::FromObjectInsertID(group));
- query2.Fields->Set("service_object_id", service);
- OnQuery(query2);
- }
-}
virtual Dictionary::Ptr GetConfigFields(void) const override;
virtual Dictionary::Ptr GetStatusFields(void) const override;
-
-protected:
- virtual void OnConfigUpdate(void) override;
};
}
******************************************************************************/
#include "db_ido/userdbobject.hpp"
+#include "db_ido/usergroupdbobject.hpp"
#include "db_ido/dbtype.hpp"
#include "db_ido/dbvalue.hpp"
#include "icinga/user.hpp"
Dictionary::Ptr fields = new Dictionary();
User::Ptr user = static_pointer_cast<User>(GetObject());
+ /* groups */
+ Array::Ptr groups = user->GetGroups();
+
+ if (groups) {
+ ObjectLock olock(groups);
+ BOOST_FOREACH(const String& groupName, groups) {
+ UserGroup::Ptr group = UserGroup::GetByName(groupName);
+
+ DbQuery query1;
+ query1.Table = DbType::GetByName("UserGroup")->GetTable() + "_members";
+ query1.Type = DbQueryDelete;
+ query1.Category = DbCatConfig;
+ query1.WhereCriteria = new Dictionary();
+ query1.WhereCriteria->Set("instance_id", 0); /* DbConnection class fills in real ID */
+ query1.WhereCriteria->Set("contactgroup_id", DbValue::FromObjectInsertID(group));
+ query1.WhereCriteria->Set("contact_object_id", user);
+ OnQuery(query1);
+
+ DbQuery query2;
+ query2.Table = DbType::GetByName("UserGroup")->GetTable() + "_members";
+ query2.Type = DbQueryInsert;
+ query2.Category = DbCatConfig;
+ query2.Fields = new Dictionary();
+ query2.Fields->Set("instance_id", 0); /* DbConnection class fills in real ID */
+ query2.Fields->Set("contactgroup_id", DbValue::FromObjectInsertID(group));
+ query2.Fields->Set("contact_object_id", user);
+ OnQuery(query2);
+ }
+ }
+
/* contact addresses */
Log(LogDebug, "UserDbObject")
<< "contact addresses for '" << user->GetName() << "'";
{
return Empty;
}
-
-void UserGroupDbObject::OnConfigUpdate(void)
-{
- UserGroup::Ptr group = static_pointer_cast<UserGroup>(GetObject());
-
- DbQuery query1;
- query1.Table = DbType::GetByName("UserGroup")->GetTable() + "_members";
- query1.Type = DbQueryDelete;
- query1.Category = DbCatConfig;
- query1.WhereCriteria = new Dictionary();
- query1.WhereCriteria->Set("instance_id", 0);
- query1.WhereCriteria->Set("contactgroup_id", DbValue::FromObjectInsertID(group));
- OnQuery(query1);
-
- BOOST_FOREACH(const User::Ptr& user, group->GetMembers()) {
- DbQuery query2;
- query2.Table = DbType::GetByName("UserGroup")->GetTable() + "_members";
- query2.Type = DbQueryInsert;
- query2.Category = DbCatConfig;
- query2.Fields = new Dictionary();
- query2.Fields->Set("instance_id", 0); /* DbConnection class fills in real ID */
- query2.Fields->Set("contactgroup_id", DbValue::FromObjectInsertID(group));
- query2.Fields->Set("contact_object_id", user);
- OnQuery(query2);
- }
-}
virtual Dictionary::Ptr GetConfigFields(void) const override;
virtual Dictionary::Ptr GetStatusFields(void) const override;
-
-protected:
- virtual void OnConfigUpdate(void) override;
};
}