]> granicus.if.org Git - icinga2/commitdiff
Fix missing insert IDs for hostgroups.
authorGunnar Beutner <gunnar.beutner@netways.de>
Mon, 5 Aug 2013 13:57:40 +0000 (15:57 +0200)
committerGunnar Beutner <gunnar.beutner@netways.de>
Mon, 5 Aug 2013 13:57:40 +0000 (15:57 +0200)
lib/ido/hostgroupdbobject.cpp
lib/ido/hostgroupdbobject.h

index fab1b7a368d04213220151e014a80f39a5d4dcc7..0517300de20f47578de6a806d5c9c0cd2fda346a 100644 (file)
@@ -20,7 +20,6 @@
 #include "ido/hostgroupdbobject.h"
 #include "ido/dbtype.h"
 #include "ido/dbvalue.h"
-#include "icinga/hostgroup.h"
 #include "base/objectlock.h"
 #include "base/initialize.h"
 #include "base/dynamictype.h"
@@ -37,7 +36,7 @@ HostGroupDbObject::HostGroupDbObject(const DbType::Ptr& type, const String& name
 
 void HostGroupDbObject::StaticInitialize(void)
 {
-       HostGroup::OnMembersChanged.connect(&HostGroupDbObject::MembersChangedHandler);
+       HostGroup::OnMembersChanged.connect(boost::bind(&HostGroupDbObject::MembersChangedHandler, HostGroup::Ptr()));
 }
 
 Dictionary::Ptr HostGroupDbObject::GetConfigFields(void) const
@@ -57,10 +56,11 @@ Dictionary::Ptr HostGroupDbObject::GetStatusFields(void) const
 
 void HostGroupDbObject::OnConfigUpdate(void)
 {
-       MembersChangedHandler();
+       HostGroup::Ptr group = static_pointer_cast<HostGroup>(GetObject());
+       MembersChangedHandler(group);
 }
 
-void HostGroupDbObject::MembersChangedHandler(void)
+void HostGroupDbObject::MembersChangedHandler(const HostGroup::Ptr& hgfilter)
 {
        DbQuery query1;
        query1.Table = DbType::GetByName("HostGroup")->GetTable() + "_members";
@@ -72,6 +72,9 @@ void HostGroupDbObject::MembersChangedHandler(void)
        BOOST_FOREACH(const DynamicObject::Ptr& object, DynamicType::GetObjects("HostGroup")) {
                HostGroup::Ptr hg = static_pointer_cast<HostGroup>(object);
 
+               if (hgfilter && hg != hgfilter)
+                       continue;
+
                BOOST_FOREACH(const Host::Ptr& host, hg->GetMembers()) {
                        DbQuery query2;
                        query2.Table = DbType::GetByName("HostGroup")->GetTable() + "_members";
index a09399045a083fd77712374308ded784af7cfc4b..07fe7d150ff4edecfc3007e660ecf557abb71c26 100644 (file)
@@ -21,6 +21,7 @@
 #define HOSTGROUPDBOBJECT_H
 
 #include "ido/dbobject.h"
+#include "icinga/hostgroup.h"
 #include "base/dynamicobject.h"
 
 namespace icinga
@@ -47,7 +48,7 @@ protected:
        virtual void OnConfigUpdate(void);
 
 private:
-       static void MembersChangedHandler(void);
+       static void MembersChangedHandler(const HostGroup::Ptr& hgfilter);
 };
 
 }