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

Method SendAcknowledgementSet

lib/icingadb/icingadb-objects.cpp:2449–2505  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2447}
2448
2449void IcingaDB::SendAcknowledgementSet(const Checkable::Ptr& checkable, const String& author, const String& comment, AcknowledgementType type, bool persistent, double changeTime, double expiry)
2450{
2451 if (!GetActive()) {
2452 return;
2453 }
2454
2455 Host::Ptr host;
2456 Service::Ptr service;
2457 tie(host, service) = GetHostService(checkable);
2458
2459 /* Update checkable state as is_acknowledged may have changed. */
2460 EnqueueConfigObject(checkable, icingadb::task_queue::FullState);
2461
2462 RedisConnection::Query xAdd ({
2463 "XADD", "icinga:history:stream:acknowledgement", "*",
2464 "environment_id", m_EnvironmentId,
2465 "host_id", GetObjectIdentifier(host),
2466 "event_type", "ack_set",
2467 "author", author,
2468 "comment", comment,
2469 "is_sticky", Convert::ToString((unsigned short)(type == AcknowledgementSticky)),
2470 "is_persistent", Convert::ToString((unsigned short)persistent)
2471 });
2472
2473 if (service) {
2474 xAdd.emplace_back("object_type");
2475 xAdd.emplace_back("service");
2476 xAdd.emplace_back("service_id");
2477 xAdd.emplace_back(GetObjectIdentifier(checkable));
2478 } else {
2479 xAdd.emplace_back("object_type");
2480 xAdd.emplace_back("host");
2481 }
2482
2483 auto endpoint (Endpoint::GetLocalEndpoint());
2484
2485 if (endpoint) {
2486 xAdd.emplace_back("endpoint_id");
2487 xAdd.emplace_back(GetObjectIdentifier(endpoint));
2488 }
2489
2490 if (expiry > 0) {
2491 xAdd.emplace_back("expire_time");
2492 xAdd.emplace_back(Convert::ToString(TimestampToMilliseconds(expiry)));
2493 }
2494
2495 long long setTs = TimestampToMilliseconds(changeTime);
2496
2497 xAdd.emplace_back("set_time");
2498 xAdd.emplace_back(Convert::ToString(setTs));
2499 xAdd.emplace_back("event_id");
2500 xAdd.emplace_back(CalcEventID("ack_set", checkable, changeTime));
2501 xAdd.emplace_back("id");
2502 xAdd.emplace_back(HashValue(new Array({m_EnvironmentId, checkable->GetName(), setTs})));
2503
2504 m_HistoryBulker.ProduceOne(std::move(xAdd));
2505}
2506

Callers 1

Calls 2

ProduceOneMethod · 0.80
GetNameMethod · 0.45

Tested by

no test coverage detected