blob: 65cfbeb258cbc491b01840cbaa8a00e3ad5b6143 [file] [log] [blame]
Ben_Paifba51212019-08-05 18:34:34 +08001# Witherspoon fan error policy for PDM.
2#
3# * Create a NotPresent error if fan 0, 1, 2, 3, 4, or 5 is not present for more
4# than 20 seconds.
5# * Create a Nonfunctional error if fan 0, 1, 2, 3, 4, or 5 is not
6# functional for any amount of time.
7#
8# The system must be powered on in both of these cases.
9# Note: An error is created each time the chassis powers on.
10#
11# * Watch for fans to become both present and functional, and then resolve
12# their errors
13
14- name: fan0
15 class: group
16 group: path
17 members:
18 - meta: FAN
19 path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0
20
21- name: fan1
22 class: group
23 group: path
24 members:
25 - meta: FAN
26 path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1
27
28- name: fan2
29 class: group
30 group: path
31 members:
32 - meta: FAN
33 path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2
34
35- name: fan3
36 class: group
37 group: path
38 members:
39 - meta: FAN
40 path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3
41
42- name: fan4
43 class: group
44 group: path
45 members:
46 - meta: FAN
47 path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan4
48
49- name: fan5
50 class: group
51 group: path
52 members:
53 - meta: FAN
54 path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan5
55
56
57- name: chassis state
58 description: >
59 'Witherspoon has a single chassis to monitor.'
60 class: group
61 group: path
62 members:
63 - meta: CHASSISSTATE
64 path: /xyz/openbmc_project/state/chassis0
65
66- name: chassis
67 description: >
68 'Witherspoon has a single chassis to monitor.'
69 class: group
70 group: path
71 members:
72 - meta: CHASSIS
73 path: /xyz/openbmc_project/inventory/system/chassis
74
75
76- name: fan present
77 description: >
78 'Monitor the presence state of each fan.'
79 class: group
80 group: property
81 type: boolean
82 members:
83 - interface: xyz.openbmc_project.Inventory.Item
84 meta: PRESENT
85 property: Present
86
87- name: fan functional
88 description: >
89 'Monitor the functional state of each fan.'
90 class: group
91 group: property
92 type: boolean
93 members:
94 - interface: xyz.openbmc_project.State.Decorator.OperationalStatus
95 meta: FUNCTIONAL
96 property: Functional
97
98- name: fan present and functional
99 description: >
100 'Monitor the present and functional state of each fan.'
101 class: group
102 group: property
103 type: boolean
104 members:
105 - interface: xyz.openbmc_project.Inventory.Item
106 meta: PRESENT
107 property: Present
108 - interface: xyz.openbmc_project.State.Decorator.OperationalStatus
109 meta: FUNCTIONAL
110 property: Functional
111
112- name: chassis powered
113 description: >
114 'Monitor the chassis power state.'
115 class: group
116 group: property
117 type: string
118 members:
119 - interface: xyz.openbmc_project.State.Chassis
120 meta: CHASSIS_STATE
121 property: CurrentPowerState
122
123- name: chassis air cooled
124 description: >
125 'The chassis cooling type.'
126 class: group
127 group: property
128 type: boolean
129 members:
130 - interface: xyz.openbmc_project.Inventory.Decorator.CoolingType
131 meta: COOLING_TYPE
132 property: WaterCooled
133
134- name: watch chassis state
135 description: >
136 'Trigger logic on chassis power state changes.'
137 class: watch
138 watch: property
139 paths: chassis state
140 properties: chassis powered
141 callback: check power
142
143- name: watch fan0 presence
144 description: >
145 'Trigger logic on fan0 presence state changes.'
146 class: watch
147 watch: property
148 paths: fan0
149 properties: fan present
150 callback: check power fan0 presence
151
152- name: watch fan0 functional
153 description: >
154 'Trigger logic on fan0 functional state changes.'
155 class: watch
156 watch: property
157 paths: fan0
158 properties: fan functional
159 callback: check power fan0 functional
160
161- name: watch fan1 presence
162 description: >
163 'Trigger logic on fan1 presence state changes.'
164 class: watch
165 watch: property
166 paths: fan1
167 properties: fan present
168 callback: check power fan1 presence
169
170- name: watch fan1 functional
171 description: >
172 'Trigger logic on fan1 functional state changes.'
173 class: watch
174 watch: property
175 paths: fan1
176 properties: fan functional
177 callback: check power fan1 functional
178
179- name: watch fan2 presence
180 description: >
181 'Trigger logic on fan2 presence state changes.'
182 class: watch
183 watch: property
184 paths: fan2
185 properties: fan present
186 callback: check power fan2 presence
187
188- name: watch fan2 functional
189 description: >
190 'Trigger logic on fan2 functional state changes.'
191 class: watch
192 watch: property
193 paths: fan2
194 properties: fan functional
195 callback: check power fan2 functional
196
197- name: watch fan3 presence
198 description: >
199 'Trigger logic on fan3 presence state changes.'
200 class: watch
201 watch: property
202 paths: fan3
203 properties: fan present
204 callback: check power fan3 presence
205
206- name: watch fan3 functional
207 description: >
208 'Trigger logic on fan3 functional state changes.'
209 class: watch
210 watch: property
211 paths: fan3
212 properties: fan functional
213 callback: check power fan3 functional
214
215- name: watch fan4 presence
216 description: >
217 'Trigger logic on fan4 presence state changes.'
218 class: watch
219 watch: property
220 paths: fan4
221 properties: fan present
222 callback: check power fan4 presence
223
224- name: watch fan4 functional
225 description: >
226 'Trigger logic on fan4 functional state changes.'
227 class: watch
228 watch: property
229 paths: fan4
230 properties: fan functional
231 callback: check power fan4 functional
232
233- name: watch fan5 presence
234 description: >
235 'Trigger logic on fan5 presence state changes.'
236 class: watch
237 watch: property
238 paths: fan5
239 properties: fan present
240 callback: check power fan5 presence
241
242- name: watch fan5 functional
243 description: >
244 'Trigger logic on fan5 functional state changes.'
245 class: watch
246 watch: property
247 paths: fan5
248 properties: fan functional
249 callback: check power fan5 functional
250
251- name: watch fan0 present and functional for resolving error logs
252 description: >
253 'On fan present or functional state changes, check if errors need to be resolved.'
254 class: watch
255 watch: property
256 paths: fan0
257 properties: fan present and functional
258 callback: resolve fan0 errors if present and functional
259
260- name: watch fan1 present and functional for resolving error logs
261 description: >
262 'On fan present or functional state changes, check if errors need to be resolved.'
263 class: watch
264 watch: property
265 paths: fan1
266 properties: fan present and functional
267 callback: resolve fan1 errors if present and functional
268
269- name: watch fan2 present and functional for resolving error logs
270 description: >
271 'On fan present or functional state changes, check if errors need to be resolved.'
272 class: watch
273 watch: property
274 paths: fan2
275 properties: fan present and functional
276 callback: resolve fan2 errors if present and functional
277
278- name: watch fan3 present and functional for resolving error logs
279 description: >
280 'On fan present or functional state changes, check if errors need to be resolved.'
281 class: watch
282 watch: property
283 paths: fan3
284 properties: fan present and functional
285 callback: resolve fan3 errors if present and functional
286
287- name: watch fan4 present and functional for resolving error logs
288 description: >
289 'On fan present or functional state changes, check if errors need to be resolved.'
290 class: watch
291 watch: property
292 paths: fan4
293 properties: fan present and functional
294 callback: resolve fan4 errors if present and functional
295
296- name: watch fan5 present and functional for resolving error logs
297 description: >
298 'On fan present or functional state changes, check if errors need to be resolved.'
299 class: watch
300 watch: property
301 paths: fan5
302 properties: fan present and functional
303 callback: resolve fan5 errors if present and functional
304
305- name: check power
306 description: >
307 'If the chassis has power, check all fans.'
308 class: condition
309 condition: count
310 paths: chassis state
311 properties: chassis powered
312 callback: check fans
313 countop: '>'
314 countbound: 0
315 op: '=='
316 bound: xyz.openbmc_project.State.Chassis.PowerState.On
317
318- name: check power fan0 presence
319 description: >
320 'If the chassis has power, check presence of fan0.'
321 class: condition
322 condition: count
323 paths: chassis state
324 properties: chassis powered
325 callback: check fan0 presence
326 countop: '>'
327 countbound: 0
328 op: '=='
329 bound: xyz.openbmc_project.State.Chassis.PowerState.On
330
331- name: check power fan0 functional
332 description: >
333 'If the chassis has power, check functional of fan0.'
334 class: condition
335 condition: count
336 paths: chassis state
337 properties: chassis powered
338 callback: check fan0 functional
339 countop: '>'
340 countbound: 0
341 op: '=='
342 bound: xyz.openbmc_project.State.Chassis.PowerState.On
343
344- name: check power fan1 presence
345 description: >
346 'If the chassis has power, check presence of fan1.'
347 class: condition
348 condition: count
349 paths: chassis state
350 properties: chassis powered
351 callback: check fan1 presence
352 countop: '>'
353 countbound: 0
354 op: '=='
355 bound: xyz.openbmc_project.State.Chassis.PowerState.On
356
357- name: check power fan1 functional
358 description: >
359 'If the chassis has power, check functional of fan1.'
360 class: condition
361 condition: count
362 paths: chassis state
363 properties: chassis powered
364 callback: check fan1 functional
365 countop: '>'
366 countbound: 0
367 op: '=='
368 bound: xyz.openbmc_project.State.Chassis.PowerState.On
369
370- name: check power fan2 presence
371 description: >
372 'If the chassis has power, check presence of fan2.'
373 class: condition
374 condition: count
375 paths: chassis state
376 properties: chassis powered
377 callback: check fan2 presence
378 countop: '>'
379 countbound: 0
380 op: '=='
381 bound: xyz.openbmc_project.State.Chassis.PowerState.On
382
383- name: check power fan2 functional
384 description: >
385 'If the chassis has power, check functional of fan2.'
386 class: condition
387 condition: count
388 paths: chassis state
389 properties: chassis powered
390 callback: check fan2 functional
391 countop: '>'
392 countbound: 0
393 op: '=='
394 bound: xyz.openbmc_project.State.Chassis.PowerState.On
395
396- name: check power fan3 presence
397 description: >
398 'If the chassis has power, check presence of fan3.'
399 class: condition
400 condition: count
401 paths: chassis state
402 properties: chassis powered
403 callback: check fan3 presence
404 countop: '>'
405 countbound: 0
406 op: '=='
407 bound: xyz.openbmc_project.State.Chassis.PowerState.On
408
409- name: check power fan3 functional
410 description: >
411 'If the chassis has power, check functional of fan3.'
412 class: condition
413 condition: count
414 paths: chassis state
415 properties: chassis powered
416 callback: check fan3 functional
417 countop: '>'
418 countbound: 0
419 op: '=='
420 bound: xyz.openbmc_project.State.Chassis.PowerState.On
421
422- name: check power fan4 presence
423 description: >
424 'If the chassis has power, check presence of fan4.'
425 class: condition
426 condition: count
427 paths: chassis state
428 properties: chassis powered
429 callback: check fan4 presence
430 countop: '>'
431 countbound: 0
432 op: '=='
433 bound: xyz.openbmc_project.State.Chassis.PowerState.On
434
435- name: check power fan4 functional
436 description: >
437 'If the chassis has power, check functional of fan4.'
438 class: condition
439 condition: count
440 paths: chassis state
441 properties: chassis powered
442 callback: check fan4 functional
443 countop: '>'
444 countbound: 0
445 op: '=='
446 bound: xyz.openbmc_project.State.Chassis.PowerState.On
447
448- name: check power fan5 presence
449 description: >
450 'If the chassis has power, check presence of fan5.'
451 class: condition
452 condition: count
453 paths: chassis state
454 properties: chassis powered
455 callback: check fan5 presence
456 countop: '>'
457 countbound: 0
458 op: '=='
459 bound: xyz.openbmc_project.State.Chassis.PowerState.On
460
461- name: check power fan5 functional
462 description: >
463 'If the chassis has power, check functional of fan5.'
464 class: condition
465 condition: count
466 paths: chassis state
467 properties: chassis powered
468 callback: check fan5 functional
469 countop: '>'
470 countbound: 0
471 op: '=='
472 bound: xyz.openbmc_project.State.Chassis.PowerState.On
473
474- name: check fans
475 description: >
476 'Verify each of the 12 fans are present.'
477 class: callback
478 callback: group
479 members:
480 - check fan0 presence
481 - check fan1 presence
482 - check fan2 presence
483 - check fan3 presence
484 - check fan4 presence
485 - check fan5 presence
486 - check fan0 functional
487 - check fan1 functional
488 - check fan2 functional
489 - check fan3 functional
490 - check fan4 functional
491 - check fan5 functional
492
493- name: check fan0 presence
494 description: >
495 'If this condition passes fan0 has been unplugged for more than 20 seconds.'
496 class: condition
497 condition: count
498 paths: fan0
499 properties: fan present
500 defer: 20000000us
501 callback: notpresent fan0 error
502 countop: '<'
503 countbound: 1
504 op: '=='
505 bound: true
506
507- name: check fan0 functional
508 description: >
509 'If this condition passes fan0 has been marked as nonfunctional.'
510 class: condition
511 condition: count
512 paths: fan0
513 properties: fan functional
514 callback: nonfunctional fan0 error
515 countop: '>'
516 countbound: 0
517 op: '=='
518 bound: false
519
520- name: check fan1 presence
521 description: >
522 'If this condition passes fan1 has been unplugged for more than 20 seconds.'
523 class: condition
524 condition: count
525 paths: fan1
526 properties: fan present
527 defer: 20000000us
528 callback: notpresent fan1 error
529 countop: '<'
530 countbound: 1
531 op: '=='
532 bound: true
533
534- name: check fan1 functional
535 description: >
536 'If this condition passes fan1 has been marked as nonfunctional.'
537 class: condition
538 condition: count
539 paths: fan1
540 properties: fan functional
541 callback: nonfunctional fan1 error
542 countop: '>'
543 countbound: 0
544 op: '=='
545 bound: false
546
547- name: check fan2 presence
548 description: >
549 'If this condition passes fan2 has been unplugged for more than 20 seconds.'
550 class: condition
551 condition: count
552 paths: fan2
553 properties: fan present
554 defer: 20000000us
555 callback: notpresent fan2 error
556 countop: '<'
557 countbound: 1
558 op: '=='
559 bound: true
560
561- name: check fan2 functional
562 description: >
563 'If this condition passes fan2 has been marked as nonfunctional.'
564 class: condition
565 condition: count
566 paths: fan2
567 properties: fan functional
568 callback: nonfunctional fan2 error
569 countop: '>'
570 countbound: 0
571 op: '=='
572 bound: false
573
574- name: check fan3 presence
575 description: >
576 'If this condition passes fan3 has been unplugged for more than 20 seconds.'
577 class: condition
578 condition: count
579 paths: fan3
580 properties: fan present
581 defer: 20000000us
582 callback: notpresent fan3 error
583 countop: '<'
584 countbound: 1
585 op: '=='
586 bound: true
587
588- name: check fan3 functional
589 description: >
590 'If this condition passes fan3 has been marked as nonfunctional.'
591 class: condition
592 condition: count
593 paths: fan3
594 properties: fan functional
595 callback: nonfunctional fan3 error
596 countop: '>'
597 countbound: 0
598 op: '=='
599 bound: false
600
601- name: check fan4 presence
602 description: >
603 'If this condition passes fan4 has been unplugged for more than 20 seconds.'
604 class: condition
605 condition: count
606 paths: fan4
607 properties: fan present
608 defer: 20000000us
609 callback: notpresent fan4 error
610 countop: '<'
611 countbound: 1
612 op: '=='
613 bound: true
614
615- name: check fan4 functional
616 description: >
617 'If this condition passes fan4 has been marked as nonfunctional.'
618 class: condition
619 condition: count
620 paths: fan4
621 properties: fan functional
622 callback: nonfunctional fan4 error
623 countop: '>'
624 countbound: 0
625 op: '=='
626 bound: false
627
628- name: check fan5 presence
629 description: >
630 'If this condition passes fan5 has been unplugged for more than 20 seconds.'
631 class: condition
632 condition: count
633 paths: fan5
634 properties: fan present
635 defer: 20000000us
636 callback: notpresent fan5 error
637 countop: '<'
638 countbound: 1
639 op: '=='
640 bound: true
641
642- name: check fan5 functional
643 description: >
644 'If this condition passes fan5 has been marked as nonfunctional.'
645 class: condition
646 condition: count
647 paths: fan5
648 properties: fan functional
649 callback: nonfunctional fan5 error
650 countop: '>'
651 countbound: 0
652 op: '=='
653 bound: false
654
655- name: notpresent fan0 error
656 class: callback
657 callback: elog
658 paths: fan0
659 properties: fan present
660 error: xyz::openbmc_project::Inventory::Error::NotPresent
661 metadata:
662 - name: xyz::openbmc_project::Inventory::NotPresent::CALLOUT_INVENTORY_PATH
663 value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0
664 type: string
665
666- name: nonfunctional fan0 error
667 class: callback
668 callback: elog
669 paths: fan0
670 properties: fan functional
671 error: xyz::openbmc_project::Inventory::Error::Nonfunctional
672 metadata:
673 - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH
674 value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0
675 type: string
676
677- name: notpresent fan1 error
678 class: callback
679 callback: elog
680 paths: fan1
681 properties: fan present
682 error: xyz::openbmc_project::Inventory::Error::NotPresent
683 metadata:
684 - name: xyz::openbmc_project::Inventory::NotPresent::CALLOUT_INVENTORY_PATH
685 value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1
686 type: string
687
688- name: nonfunctional fan1 error
689 class: callback
690 callback: elog
691 paths: fan1
692 properties: fan functional
693 error: xyz::openbmc_project::Inventory::Error::Nonfunctional
694 metadata:
695 - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH
696 value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1
697 type: string
698
699- name: notpresent fan2 error
700 class: callback
701 callback: elog
702 paths: fan2
703 properties: fan present
704 error: xyz::openbmc_project::Inventory::Error::NotPresent
705 metadata:
706 - name: xyz::openbmc_project::Inventory::NotPresent::CALLOUT_INVENTORY_PATH
707 value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2
708 type: string
709
710- name: nonfunctional fan2 error
711 class: callback
712 callback: elog
713 paths: fan2
714 properties: fan functional
715 error: xyz::openbmc_project::Inventory::Error::Nonfunctional
716 metadata:
717 - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH
718 value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2
719 type: string
720
721- name: notpresent fan3 error
722 class: callback
723 callback: elog
724 paths: fan3
725 properties: fan present
726 error: xyz::openbmc_project::Inventory::Error::NotPresent
727 metadata:
728 - name: xyz::openbmc_project::Inventory::NotPresent::CALLOUT_INVENTORY_PATH
729 value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3
730 type: string
731
732- name: nonfunctional fan3 error
733 class: callback
734 callback: elog
735 paths: fan3
736 properties: fan functional
737 error: xyz::openbmc_project::Inventory::Error::Nonfunctional
738 metadata:
739 - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH
740 value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3
741 type: string
742
743- name: notpresent fan4 error
744 class: callback
745 callback: elog
746 paths: fan4
747 properties: fan present
748 error: xyz::openbmc_project::Inventory::Error::NotPresent
749 metadata:
750 - name: xyz::openbmc_project::Inventory::NotPresent::CALLOUT_INVENTORY_PATH
751 value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan4
752 type: string
753
754- name: nonfunctional fan4 error
755 class: callback
756 callback: elog
757 paths: fan4
758 properties: fan functional
759 error: xyz::openbmc_project::Inventory::Error::Nonfunctional
760 metadata:
761 - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH
762 value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan4
763 type: string
764
765- name: notpresent fan5 error
766 class: callback
767 callback: elog
768 paths: fan5
769 properties: fan present
770 error: xyz::openbmc_project::Inventory::Error::NotPresent
771 metadata:
772 - name: xyz::openbmc_project::Inventory::NotPresent::CALLOUT_INVENTORY_PATH
773 value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan5
774 type: string
775
776- name: nonfunctional fan5 error
777 class: callback
778 callback: elog
779 paths: fan5
780 properties: fan functional
781 error: xyz::openbmc_project::Inventory::Error::Nonfunctional
782 metadata:
783 - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH
784 value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan5
785 type: string
786
787- name: resolve fan0 errors if present and functional
788 description: >
789 'If fan0 is present and functional, call the resolve fan0 errors callback.'
790 class: condition
791 condition: count
792 paths: fan0
793 properties: fan present and functional
794 callback: resolve fan0 errors
795 countop: '=='
796 countbound: 2
797 op: '=='
798 bound: true
799
800- name: resolve fan1 errors if present and functional
801 description: >
802 'If fan1 is present and functional, call the resolve fan1 errors callback.'
803 class: condition
804 condition: count
805 paths: fan1
806 properties: fan present and functional
807 callback: resolve fan1 errors
808 countop: '=='
809 countbound: 2
810 op: '=='
811 bound: true
812
813- name: resolve fan2 errors if present and functional
814 description: >
815 'If fan2 is present and functional, call the resolve fan2 errors callback.'
816 class: condition
817 condition: count
818 paths: fan2
819 properties: fan present and functional
820 callback: resolve fan2 errors
821 countop: '=='
822 countbound: 2
823 op: '=='
824 bound: true
825
826- name: resolve fan3 errors if present and functional
827 description: >
828 'If fan3 is present and functional, call the resolve fan3 errors callback.'
829 class: condition
830 condition: count
831 paths: fan3
832 properties: fan present and functional
833 callback: resolve fan3 errors
834 countop: '=='
835 countbound: 2
836 op: '=='
837 bound: true
838
839- name: resolve fan4 errors if present and functional
840 description: >
841 'If fan4 is present and functional, call the resolve fan4 errors callback.'
842 class: condition
843 condition: count
844 paths: fan4
845 properties: fan present and functional
846 callback: resolve fan4 errors
847 countop: '=='
848 countbound: 2
849 op: '=='
850 bound: true
851
852- name: resolve fan5 errors if present and functional
853 description: >
854 'If fan5 is present and functional, call the resolve fan5 errors callback.'
855 class: condition
856 condition: count
857 paths: fan5
858 properties: fan present and functional
859 callback: resolve fan5 errors
860 countop: '=='
861 countbound: 2
862 op: '=='
863 bound: true
864
865- name: resolve fan0 errors
866 class: callback
867 callback: resolve callout
868 paths: fan0
869 properties: fan present and functional
870 callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0
871
872- name: resolve fan1 errors
873 class: callback
874 callback: resolve callout
875 paths: fan1
876 properties: fan present and functional
877 callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1
878
879- name: resolve fan2 errors
880 class: callback
881 callback: resolve callout
882 paths: fan2
883 properties: fan present and functional
884 callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2
885
886- name: resolve fan3 errors
887 class: callback
888 callback: resolve callout
889 paths: fan3
890 properties: fan present and functional
891 callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3
892
893- name: resolve fan4 errors
894 class: callback
895 callback: resolve callout
896 paths: fan4
897 properties: fan present and functional
898 callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan4
899
900- name: resolve fan5 errors
901 class: callback
902 callback: resolve callout
903 paths: fan5
904 properties: fan present and functional
905 callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan5