MCPcopy Create free account
hub / github.com/Icinga/icinga2 / OnConfigUpdateHeavy

Method OnConfigUpdateHeavy

lib/db_ido/servicedbobject.cpp:143–286  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

141}
142
143void ServiceDbObject::OnConfigUpdateHeavy()
144{
145 Service::Ptr service = static_pointer_cast<Service>(GetObject());
146
147 /* groups */
148 Array::Ptr groups = service->GetGroups();
149
150 std::vector<DbQuery> queries;
151
152 DbQuery query1;
153 query1.Table = DbType::GetByName("ServiceGroup")->GetTable() + "_members";
154 query1.Type = DbQueryDelete;
155 query1.Category = DbCatConfig;
156 query1.WhereCriteria = new Dictionary({
157 { "service_object_id", service }
158 });
159 queries.emplace_back(std::move(query1));
160
161 if (groups) {
162 ObjectLock olock(groups);
163 for (String groupName : groups) {
164 ServiceGroup::Ptr group = ServiceGroup::GetByName(groupName);
165
166 DbQuery query2;
167 query2.Table = DbType::GetByName("ServiceGroup")->GetTable() + "_members";
168 query2.Type = DbQueryInsert;
169 query2.Category = DbCatConfig;
170 query2.Fields = new Dictionary({
171 { "instance_id", 0 }, /* DbConnection class fills in real ID */
172 { "servicegroup_id", DbValue::FromObjectInsertID(group) },
173 { "service_object_id", service }
174 });
175 query2.WhereCriteria = new Dictionary({
176 { "instance_id", 0 }, /* DbConnection class fills in real ID */
177 { "servicegroup_id", DbValue::FromObjectInsertID(group) },
178 { "service_object_id", service }
179 });
180 queries.emplace_back(std::move(query2));
181 }
182 }
183
184 DbObject::OnMultipleQueries(queries);
185
186 /* service dependencies */
187 queries.clear();
188
189 DbQuery query2;
190 query2.Table = GetType()->GetTable() + "dependencies";
191 query2.Type = DbQueryDelete;
192 query2.Category = DbCatConfig;
193 query2.WhereCriteria = new Dictionary({
194 { "dependent_service_object_id", service }
195 });
196 queries.emplace_back(std::move(query2));
197
198 for (const Dependency::Ptr& dep : service->GetDependencies()) {
199 Checkable::Ptr parent = dep->GetParent();
200

Callers

nothing calls this directly

Calls 7

LogClass · 0.85
GetTableMethod · 0.80
GetDependenciesMethod · 0.80
clearMethod · 0.45
GetParentMethod · 0.45
GetNameMethod · 0.45
GetPeriodMethod · 0.45

Tested by

no test coverage detected