blob: e5197b8ca9b00c975a12954e8289d3f4f603b1f0 [file] [log] [blame]
Matthew Barthf0f213c2021-10-19 13:32:31 -05001[
2 {
3 // Hold fans at the given target when a number of fans are missing.
4 "name": "fan(s) missing",
5 "groups": [
6 {
7 "name": "fan inventory",
8 "interface": "xyz.openbmc_project.Inventory.Item",
9 "property": { "name": "Present" }
10 }
11 ],
12 "triggers": [
13 {
14 "class": "init",
15 "method": "get_properties"
16 },
17 {
18 "class": "signal",
19 "signal": "properties_changed"
20 }
21 ],
22 "actions": [
23 {
24 "name": "count_state_before_target",
25 "count": 1,
26 "state": false,
27 "target": 11200
28 }
29 ]
Matthew Barth991020b2021-10-19 13:34:33 -050030 },
31 {
32 // Hold fans at the given target when a number of rotors are nonfunctional.
33 "name": "fan rotor(s) faulted",
34 "groups": [
35 {
36 "name": "fan0 rotor inventory",
37 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
38 "property": { "name": "Functional" }
39 },
40 {
41 "name": "fan1 rotor inventory",
42 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
43 "property": { "name": "Functional" }
44 },
45 {
46 "name": "fan2 rotor inventory",
47 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
48 "property": { "name": "Functional" }
49 },
50 {
51 "name": "fan3 rotor inventory",
52 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
53 "property": { "name": "Functional" }
54 },
55 {
56 "name": "fan4 rotor inventory",
57 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
58 "property": { "name": "Functional" }
59 },
60 {
61 "name": "fan5 rotor inventory",
62 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
63 "property": { "name": "Functional" }
64 }
65 ],
66 "triggers": [
67 {
68 "class": "init",
69 "method": "get_properties"
70 },
71 {
72 "class": "signal",
73 "signal": "properties_changed"
74 }
75 ],
76 "actions": [
77 {
78 "name": "count_state_before_target",
79 "count": 1,
80 "state": false,
81 "target": 11200
82 }
83 ]
Matthew Barth09b09e52021-10-28 15:29:13 -050084 },
85 {
86 // Hold fans at the given target when any critical service
87 // is not running for 5 seconds.
88 "name": "service(s) missing",
89 "groups": [
90 {
Matthew Barthf3a6d452021-11-23 14:41:43 -060091 "name": "fan inventory",
92 "interface": "xyz.openbmc_project.Inventory.Item",
93 "property": { "name": "Present" }
94 },
95 {
Matthew Barth09b09e52021-10-28 15:29:13 -050096 "name": "occ objects",
97 "interface": "org.open_power.OCC.Status",
98 "property": { "name": "OccActive" }
99 }
100 ],
101 "triggers": [
102 {
103 "class": "init",
104 "method": "name_has_owner"
105 },
106 {
107 "class": "signal",
108 "signal": "name_owner_changed"
109 }
110 ],
111 "actions": [
112 {
113 "name": "call_actions_based_on_timer",
114 "timer": {
115 "interval": 5000000,
116 "type": "oneshot"
117 },
118 "actions": [
119 {
120 "name": "set_target_on_missing_owner",
121 "groups": [
122 {
123 "name": "fan inventory",
124 "interface": "xyz.openbmc_project.Inventory.Item",
125 "property": { "name": "Present" }
126 },
127 {
128 "name": "occ objects",
129 "interface": "org.open_power.OCC.Status",
130 "property": { "name": "OccActive" }
131 }
132 ],
133 "target": 11200
134 }
135 ]
136 }
137 ]
Matt Spinler5934f092021-11-03 14:30:28 -0500138 },
139 {
140 // Set a fan floor if an OCC isn't active
141 "name": "Non-active OCCs",
142 "groups": [
143 {
144 "name": "occ objects",
145 "interface": "org.open_power.OCC.Status",
146 "property": {
147 "name": "OccActive"
148 }
149 }
150 ],
151 "triggers": [
152 {
153 "class": "signal",
154 "signal": "properties_changed"
155 },
156 {
157 "class": "signal",
158 "signal": "interfaces_added"
159 },
160 {
161 "class": "init",
162 "method": "get_properties"
163 }
164 ],
165 "actions": [
166 {
167 "name": "count_state_floor",
168 "count": 1,
169 "state": false,
170 "floor": 11200
171 }
172 ]
Matt Spinler323694a2021-11-11 16:03:18 -0600173 },
174 {
175 "name": "Set Proc 0 Core DVFS parameter",
176 "groups": [
177 {
178 "name": "proc 0 core dvfs temp",
179 "interface": "xyz.openbmc_project.Sensor.Value",
180 "property": { "name": "Value" }
181 }
182 ],
183 "triggers": [
184 {
185 "class": "init",
186 "method": "get_properties"
187 },
188 {
189 "class": "signal",
190 "signal": "interfaces_added"
191 },
192 {
193 "class": "signal",
194 "signal": "properties_changed"
195 }
196 ],
197 "actions": [
198 {
199 "name": "set_parameter_from_group_max",
200 "parameter_name": "proc_0_core_dvfs_temp",
201 "modifier": {
202 "operator": "minus",
203 "value": 3
204 }
205 }
206 ]
207 },
208 {
209 "name": "Set Proc 1 Core DVFS parameter",
210 "groups": [
211 {
212 "name": "proc 1 core dvfs temp",
213 "interface": "xyz.openbmc_project.Sensor.Value",
214 "property": { "name": "Value" }
215 }
216 ],
217 "triggers": [
218 {
219 "class": "init",
220 "method": "get_properties"
221 },
222 {
223 "class": "signal",
224 "signal": "interfaces_added"
225 },
226 {
227 "class": "signal",
228 "signal": "properties_changed"
229 }
230 ],
231 "actions": [
232 {
233 "name": "set_parameter_from_group_max",
234 "parameter_name": "proc_1_core_dvfs_temp",
235 "modifier": {
236 "operator": "minus",
237 "value": 3
238 }
239 }
240 ]
241 },
242 {
243 "name": "Set Proc 2 Core DVFS parameter",
244 "groups": [
245 {
246 "name": "proc 2 core dvfs temp",
247 "interface": "xyz.openbmc_project.Sensor.Value",
248 "property": { "name": "Value" }
249 }
250 ],
251 "triggers": [
252 {
253 "class": "init",
254 "method": "get_properties"
255 },
256 {
257 "class": "signal",
258 "signal": "interfaces_added"
259 },
260 {
261 "class": "signal",
262 "signal": "properties_changed"
263 }
264 ],
265 "actions": [
266 {
267 "name": "set_parameter_from_group_max",
268 "parameter_name": "proc_2_core_dvfs_temp",
269 "modifier": {
270 "operator": "minus",
271 "value": 3
272 }
273 }
274 ]
275 },
276 {
277 "name": "Set Proc 3 Core DVFS parameter",
278 "groups": [
279 {
280 "name": "proc 3 core dvfs temp",
281 "interface": "xyz.openbmc_project.Sensor.Value",
282 "property": { "name": "Value" }
283 }
284 ],
285 "triggers": [
286 {
287 "class": "init",
288 "method": "get_properties"
289 },
290 {
291 "class": "signal",
292 "signal": "interfaces_added"
293 },
294 {
295 "class": "signal",
296 "signal": "properties_changed"
297 }
298 ],
299 "actions": [
300 {
301 "name": "set_parameter_from_group_max",
302 "parameter_name": "proc_3_core_dvfs_temp",
303 "modifier": {
304 "operator": "minus",
305 "value": 3
306 }
307 }
308 ]
309 },
310 {
311 "name": "Set Proc 0 IO Ring DVFS parameter",
312 "groups": [
313 {
314 "name": "proc 0 ioring dvfs temp",
315 "interface": "xyz.openbmc_project.Sensor.Value",
316 "property": { "name": "Value" }
317 }
318 ],
319 "triggers": [
320 {
321 "class": "init",
322 "method": "get_properties"
323 },
324 {
325 "class": "signal",
326 "signal": "interfaces_added"
327 },
328 {
329 "class": "signal",
330 "signal": "properties_changed"
331 }
332 ],
333 "actions": [
334 {
335 "name": "set_parameter_from_group_max",
336 "parameter_name": "proc_0_ioring_dvfs_temp",
337 "modifier": {
338 "operator": "minus",
339 "value": 3
340 }
341 }
342 ]
343 },
344 {
345 "name": "Set Proc 1 IO Ring DVFS parameter",
346 "groups": [
347 {
348 "name": "proc 1 ioring dvfs temp",
349 "interface": "xyz.openbmc_project.Sensor.Value",
350 "property": { "name": "Value" }
351 }
352 ],
353 "triggers": [
354 {
355 "class": "init",
356 "method": "get_properties"
357 },
358 {
359 "class": "signal",
360 "signal": "interfaces_added"
361 },
362 {
363 "class": "signal",
364 "signal": "properties_changed"
365 }
366 ],
367 "actions": [
368 {
369 "name": "set_parameter_from_group_max",
370 "parameter_name": "proc_1_ioring_dvfs_temp",
371 "modifier": {
372 "operator": "minus",
373 "value": 3
374 }
375 }
376 ]
377 },
378 {
379 "name": "Set Proc 2 IO Ring DVFS parameter",
380 "groups": [
381 {
382 "name": "proc 2 ioring dvfs temp",
383 "interface": "xyz.openbmc_project.Sensor.Value",
384 "property": { "name": "Value" }
385 }
386 ],
387 "triggers": [
388 {
389 "class": "init",
390 "method": "get_properties"
391 },
392 {
393 "class": "signal",
394 "signal": "interfaces_added"
395 },
396 {
397 "class": "signal",
398 "signal": "properties_changed"
399 }
400 ],
401 "actions": [
402 {
403 "name": "set_parameter_from_group_max",
404 "parameter_name": "proc_2_ioring_dvfs_temp",
405 "modifier": {
406 "operator": "minus",
407 "value": 3
408 }
409 }
410 ]
411 },
412 {
413 "name": "Set Proc 3 IO Ring DVFS parameter",
414 "groups": [
415 {
416 "name": "proc 3 ioring dvfs temp",
417 "interface": "xyz.openbmc_project.Sensor.Value",
418 "property": { "name": "Value" }
419 }
420 ],
421 "triggers": [
422 {
423 "class": "init",
424 "method": "get_properties"
425 },
426 {
427 "class": "signal",
428 "signal": "properties_changed"
429 },
430 {
431 "class": "signal",
432 "signal": "interfaces_added"
433 }
434 ],
435 "actions": [
436 {
437 "name": "set_parameter_from_group_max",
438 "parameter_name": "proc_3_ioring_dvfs_temp",
439 "modifier": {
440 "operator": "minus",
441 "value": 3
442 }
443 }
444 ]
445 }
Matthew Barthf0f213c2021-10-19 13:32:31 -0500446]