1 /* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */
3 #ifndef CLUSTEREVENTS_H
4 #define CLUSTEREVENTS_H
6 #include "icinga/checkable.hpp"
7 #include "icinga/host.hpp"
8 #include "icinga/checkcommand.hpp"
9 #include "icinga/eventcommand.hpp"
10 #include "icinga/notificationcommand.hpp"
21 static void StaticInitialize();
23 static void CheckResultHandler(const Checkable::Ptr& checkable, const CheckResult::Ptr& cr, const MessageOrigin::Ptr& origin);
24 static Value CheckResultAPIHandler(const MessageOrigin::Ptr& origin, const Dictionary::Ptr& params);
26 static void NextCheckChangedHandler(const Checkable::Ptr& checkable, const MessageOrigin::Ptr& origin);
27 static Value NextCheckChangedAPIHandler(const MessageOrigin::Ptr& origin, const Dictionary::Ptr& params);
29 static void NextNotificationChangedHandler(const Notification::Ptr& notification, const MessageOrigin::Ptr& origin);
30 static Value NextNotificationChangedAPIHandler(const MessageOrigin::Ptr& origin, const Dictionary::Ptr& params);
32 static void ForceNextCheckChangedHandler(const Checkable::Ptr& checkable, const MessageOrigin::Ptr& origin);
33 static Value ForceNextCheckChangedAPIHandler(const MessageOrigin::Ptr& origin, const Dictionary::Ptr& params);
35 static void ForceNextNotificationChangedHandler(const Checkable::Ptr& checkable, const MessageOrigin::Ptr& origin);
36 static Value ForceNextNotificationChangedAPIHandler(const MessageOrigin::Ptr& origin, const Dictionary::Ptr& params);
38 static void AcknowledgementSetHandler(const Checkable::Ptr& checkable, const String& author, const String& comment, AcknowledgementType type,
39 bool notify, bool persistent, double expiry, const MessageOrigin::Ptr& origin);
40 static Value AcknowledgementSetAPIHandler(const MessageOrigin::Ptr& origin, const Dictionary::Ptr& params);
42 static void AcknowledgementClearedHandler(const Checkable::Ptr& checkable, const MessageOrigin::Ptr& origin);
43 static Value AcknowledgementClearedAPIHandler(const MessageOrigin::Ptr& origin, const Dictionary::Ptr& params);
45 static Value ExecuteCommandAPIHandler(const MessageOrigin::Ptr& origin, const Dictionary::Ptr& params);
47 static Dictionary::Ptr MakeCheckResultMessage(const Checkable::Ptr& checkable, const CheckResult::Ptr& cr);
49 static void SendNotificationsHandler(const Checkable::Ptr& checkable, NotificationType type,
50 const CheckResult::Ptr& cr, const String& author, const String& text, const MessageOrigin::Ptr& origin);
51 static Value SendNotificationsAPIHandler(const MessageOrigin::Ptr& origin, const Dictionary::Ptr& params);
53 static void NotificationSentUserHandler(const Notification::Ptr& notification, const Checkable::Ptr& checkable, const User::Ptr& user,
54 NotificationType notificationType, const CheckResult::Ptr& cr, const String& author, const String& commentText, const String& command, const MessageOrigin::Ptr& origin);
55 static Value NotificationSentUserAPIHandler(const MessageOrigin::Ptr& origin, const Dictionary::Ptr& params);
57 static void NotificationSentToAllUsersHandler(const Notification::Ptr& notification, const Checkable::Ptr& checkable, const std::set<User::Ptr>& users,
58 NotificationType notificationType, const CheckResult::Ptr& cr, const String& author, const String& commentText, const MessageOrigin::Ptr& origin);
59 static Value NotificationSentToAllUsersAPIHandler(const MessageOrigin::Ptr& origin, const Dictionary::Ptr& params);
61 static int GetCheckRequestQueueSize();
62 static void LogRemoteCheckQueueInformation();
65 static boost::mutex m_Mutex;
66 static std::deque<std::function<void ()>> m_CheckRequestQueue;
67 static bool m_CheckSchedulerRunning;
68 static int m_ChecksExecutedDuringInterval;
69 static int m_ChecksDroppedDuringInterval;
70 static Timer::Ptr m_LogTimer;
72 static void RemoteCheckThreadProc();
73 static void EnqueueCheck(const MessageOrigin::Ptr& origin, const Dictionary::Ptr& params);
74 static void ExecuteCheckFromQueue(const MessageOrigin::Ptr& origin, const Dictionary::Ptr& params);
79 #endif /* CLUSTEREVENTS_H */