summaryrefslogtreecommitdiffstats
path: root/lib/icinga/checkable.ti
blob: 6f7a5daee4602ede66d0bfef1379a4eef3955614 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */

#include "icinga/icingaapplication.hpp"
#include "icinga/customvarobject.hpp"
#include "base/array.hpp"
#impl_include "icinga/checkcommand.hpp"
#impl_include "icinga/eventcommand.hpp"

library icinga;

namespace icinga
{

code {{{
/**
 * The acknowledgement type of a service.
 *
 * @ingroup icinga
 */
enum AcknowledgementType
{
	AcknowledgementNone = 0,
	AcknowledgementNormal = 1,
	AcknowledgementSticky = 2
};
}}}

abstract class Checkable : CustomVarObject
{
	[config, required, navigation] name(CheckCommand) check_command (CheckCommandRaw) {
		navigate {{{
			return CheckCommand::GetByName(GetCheckCommandRaw());
		}}}
	};
	[config] int max_check_attempts {
		default {{{ return 3; }}}
	};
	[config, navigation] name(TimePeriod) check_period (CheckPeriodRaw) {
		navigate {{{
			return TimePeriod::GetByName(GetCheckPeriodRaw());
		}}}
	};
	[config] Value check_timeout;
	[config] double check_interval {
		default {{{ return 5 * 60; }}}
	};
	[config] double retry_interval {
		default {{{ return 60; }}}
	};
	[config, navigation] name(EventCommand) event_command (EventCommandRaw) {
		navigate {{{
			return EventCommand::GetByName(GetEventCommandRaw());
		}}}
	};
	[config] bool volatile;

	[config] bool enable_active_checks {
		default {{{ return true; }}}
	};
	[config] bool enable_passive_checks {
		default {{{ return true; }}}
	};
	[config] bool enable_event_handler {
		default {{{ return true; }}}
	};
	[config] bool enable_notifications {
		default {{{ return true; }}}
	};
	[config] bool enable_flapping {
		default {{{ return false; }}}
	};
	[config] bool enable_perfdata {
		default {{{ return true; }}}
	};

	[config] array(String) flapping_ignore_states;
	[no_user_view, no_user_modify] int flapping_ignore_states_filter_real (FlappingIgnoreStatesFilter);

	[config, deprecated] double flapping_threshold;

	[config] double flapping_threshold_low {
		default {{{ return 25; }}}
	};

	[config] double flapping_threshold_high{
		default {{{ return 30; }}}
	};

	[config] String notes;
	[config] String notes_url;
	[config] String action_url;
	[config] String icon_image;
	[config] String icon_image_alt;

	[state] Timestamp next_check;
	[state, no_user_view, no_user_modify] Timestamp last_check_started;

	[state] int check_attempt {
		default {{{ return 1; }}}
	};
	[state, enum, no_user_view, no_user_modify] ServiceState state_raw {
		default {{{ return ServiceUnknown; }}}
	};
	[state, enum] StateType state_type {
		default {{{ return StateTypeSoft; }}}
	};
	[state, enum, no_user_view, no_user_modify] ServiceState last_state_raw {
		default {{{ return ServiceUnknown; }}}
	};
	[state, enum, no_user_view, no_user_modify] ServiceState last_hard_state_raw {
		default {{{ return ServiceUnknown; }}}
	};
	[state, no_user_view, no_user_modify] "unsigned short" last_hard_states_raw {
		default {{{ return /* current */ 99 * 100 + /* previous */ 99; }}}
	};
	[state, no_user_view, no_user_modify] "unsigned short" last_soft_states_raw {
		default {{{ return /* current */ 99 * 100 + /* previous */ 99; }}}
	};
	[state, enum] StateType last_state_type {
		default {{{ return StateTypeSoft; }}}
	};
	[state] bool last_reachable {
		default {{{ return true; }}}
	};
	[state] CheckResult::Ptr last_check_result;
	[state] Timestamp last_state_change {
		default {{{ return Application::GetStartTime(); }}}
	};
	[state] Timestamp last_hard_state_change {
		default {{{ return Application::GetStartTime(); }}}
	};
	[state] Timestamp last_state_unreachable;

	[state] Timestamp previous_state_change {
		default {{{ return Application::GetStartTime(); }}}
	};
	[no_storage] int severity {
		get;
	};
	[no_storage] bool problem {
		get;
	};
	[no_storage] bool handled {
		get;
	};
	[no_storage] Timestamp next_update {
		get;
	};

	[state] bool force_next_check;
	[state] int acknowledgement (AcknowledgementRaw) {
		default {{{ return AcknowledgementNone; }}}
	};
	[state] Timestamp acknowledgement_expiry;
	[state] Timestamp acknowledgement_last_change;
	[state] bool force_next_notification;
	[no_storage] Timestamp last_check {
		get;
	};
	[no_storage] int downtime_depth {
		get;
	};

	[state] double flapping_current {
		default {{{ return 0; }}}
	};
	[state] Timestamp flapping_last_change;

	[state, enum, no_user_view, no_user_modify] ServiceState flapping_last_state {
		default {{{ return ServiceUnknown; }}}
	};
	[state, no_user_view, no_user_modify] int flapping_buffer;
	[state, no_user_view, no_user_modify] int flapping_index;
	[state, protected] bool flapping;
	[state, no_user_view, no_user_modify] int suppressed_notifications {
		default {{{ return 0; }}}
	};
	[state, enum, no_user_view, no_user_modify] ServiceState state_before_suppression {
		default {{{ return ServiceOK; }}}
	};

	[config, navigation] name(Endpoint) command_endpoint (CommandEndpointRaw) {
		navigate {{{
			return Endpoint::GetByName(GetCommandEndpointRaw());
		}}}
	};

	[state, no_user_modify] Dictionary::Ptr executions;
	[state, no_user_view, no_user_modify] Dictionary::Ptr pending_executions;
};

}