| 2505 | } |
| 2506 | |
| 2507 | void IcingaDB::SendAcknowledgementCleared(const Checkable::Ptr& checkable, const String& removedBy, double changeTime, double ackLastChange) |
| 2508 | { |
| 2509 | if (!GetActive()) { |
| 2510 | return; |
| 2511 | } |
| 2512 | |
| 2513 | Host::Ptr host; |
| 2514 | Service::Ptr service; |
| 2515 | tie(host, service) = GetHostService(checkable); |
| 2516 | |
| 2517 | /* Update checkable state as is_acknowledged may have changed. */ |
| 2518 | EnqueueConfigObject(checkable, icingadb::task_queue::FullState); |
| 2519 | |
| 2520 | RedisConnection::Query xAdd ({ |
| 2521 | "XADD", "icinga:history:stream:acknowledgement", "*", |
| 2522 | "environment_id", m_EnvironmentId, |
| 2523 | "host_id", GetObjectIdentifier(host), |
| 2524 | "clear_time", Convert::ToString(TimestampToMilliseconds(changeTime)), |
| 2525 | "event_type", "ack_clear" |
| 2526 | }); |
| 2527 | |
| 2528 | if (service) { |
| 2529 | xAdd.emplace_back("object_type"); |
| 2530 | xAdd.emplace_back("service"); |
| 2531 | xAdd.emplace_back("service_id"); |
| 2532 | xAdd.emplace_back(GetObjectIdentifier(checkable)); |
| 2533 | } else { |
| 2534 | xAdd.emplace_back("object_type"); |
| 2535 | xAdd.emplace_back("host"); |
| 2536 | } |
| 2537 | |
| 2538 | auto endpoint (Endpoint::GetLocalEndpoint()); |
| 2539 | |
| 2540 | if (endpoint) { |
| 2541 | xAdd.emplace_back("endpoint_id"); |
| 2542 | xAdd.emplace_back(GetObjectIdentifier(endpoint)); |
| 2543 | } |
| 2544 | |
| 2545 | long long setTs = TimestampToMilliseconds(ackLastChange); |
| 2546 | |
| 2547 | xAdd.emplace_back("set_time"); |
| 2548 | xAdd.emplace_back(Convert::ToString(setTs)); |
| 2549 | xAdd.emplace_back("event_id"); |
| 2550 | xAdd.emplace_back(CalcEventID("ack_clear", checkable, ackLastChange)); |
| 2551 | xAdd.emplace_back("id"); |
| 2552 | xAdd.emplace_back(HashValue(new Array({m_EnvironmentId, checkable->GetName(), setTs}))); |
| 2553 | |
| 2554 | if (!removedBy.IsEmpty()) { |
| 2555 | xAdd.emplace_back("cleared_by"); |
| 2556 | xAdd.emplace_back(removedBy); |
| 2557 | } |
| 2558 | |
| 2559 | m_HistoryBulker.ProduceOne(std::move(xAdd)); |
| 2560 | } |
| 2561 | |
| 2562 | void IcingaDB::ForwardHistoryEntries() |
| 2563 | { |
no test coverage detected