1[
2  {
3    "name": "set_target_fan_not_present",
4    "groups": [
5      {
6        "name": "air_cooled_zone0_fans",
7        "interface": "xyz.openbmc_project.Inventory.Item",
8        "property": { "name": "Present" }
9      }
10    ],
11    "triggers": [
12      {
13        "class": "init",
14        "method": "get_properties"
15      },
16      {
17        "class": "signal",
18        "signal": "properties_changed"
19      }
20    ],
21    "actions": [
22      {
23        "name": "count_state_before_target",
24        "count": 1,
25        "state": false,
26        "target": 255
27      }
28    ]
29  },
30  {
31    // Hold fans at the given target when a number of rotors are nonfunctional.
32    "name": "set_target_fan_not_functional",
33    "groups": [
34      {
35        "name": "fan3",
36        "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
37        "property": { "name": "Functional" }
38      },
39      {
40        "name": "fan4",
41        "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
42        "property": { "name": "Functional" }
43      },
44      {
45        "name": "fan5",
46        "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
47        "property": { "name": "Functional" }
48      },
49      {
50        "name": "fan6",
51        "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
52        "property": { "name": "Functional" }
53      },
54      {
55        "name": "fan7",
56        "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
57        "property": { "name": "Functional" }
58      },
59      {
60        "name": "fan8",
61        "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
62        "property": { "name": "Functional" }
63      }
64    ],
65    "triggers": [
66      {
67        "class": "init",
68        "method": "get_properties"
69      },
70      {
71        "class": "signal",
72        "signal": "properties_changed"
73      }
74    ],
75    "actions": [
76      {
77        "name": "count_state_before_target",
78        "count": 1,
79        "state": false,
80        "target": 255
81      }
82    ]
83  },
84  {
85    "name": "default_fan_floor_on_missing_service",
86    "groups": [
87        {
88        "name": "zone0_ambient",
89        "interface": "xyz.openbmc_project.Sensor.Value",
90        "property": { "name": "Value" }
91        }
92    ],
93    "triggers": [
94        {
95        "class": "init",
96        "method": "name_has_owner"
97        },
98        {
99        "class": "signal",
100        "signal": "name_owner_changed"
101        }
102    ],
103    "actions": [
104        {
105        "name": "call_actions_based_on_timer",
106        "timer": {
107            "interval": 5000000,
108            "type": "oneshot"
109        },
110        "actions": [
111            {
112            "name": "default_floor_on_missing_owner",
113            "groups": [
114              {
115              "name": "zone0_ambient",
116              "interface": "xyz.openbmc_project.Sensor.Value",
117              "property": { "name": "Value" }
118              }
119            ]
120            }
121        ]
122        }
123    ]
124  },
125  {
126    "name": "target_mapping_from_TS_temp",
127    "groups": [
128      {
129        "name": "zone0_ambient",
130        "interface": "xyz.openbmc_project.Sensor.Value",
131        "property": { "name": "Value" }
132      }
133    ],
134    "triggers": [
135      {
136        "class": "init",
137        "method": "get_properties"
138      },
139      {
140        "class": "signal",
141        "signal": "properties_changed"
142      },
143      {
144        "class": "timer",
145        "type": "repeating",
146        "interval": 5000000,
147        "preload_groups": true
148      }
149    ],
150    "actions": [
151      {
152        "name": "target_from_group_max",
153        "groups": [
154          {
155            "name": "zone0_ambient",
156            "interface": "xyz.openbmc_project.Sensor.Value",
157            "property": { "name": "Value" }
158          }
159        ],
160        "neg_hysteresis": 1,
161        "pos_hysteresis": 0,
162        "index": 0,
163        "map": [
164              { "value": 10.0, "target": 38.0 },
165              { "value": 18.0, "target": 38.0 },
166              { "value": 20.0, "target": 41.0 },
167              { "value": 21.0, "target": 43.0 },
168              { "value": 22.0, "target": 46.0 },
169              { "value": 24.0, "target": 48.0 },
170              { "value": 28.0, "target": 51.0 },
171              { "value": 32.0, "target": 56.0 },
172              { "value": 34.0, "target": 59.0 },
173              { "value": 36.0, "target": 61.0 },
174              { "value": 40.0, "target": 64.0 },
175              { "value": 41.0, "target": 66.0 },
176              { "value": 42.0, "target": 69.0 },
177              { "value": 43.0, "target": 71.0 },
178              { "value": 44.0, "target": 74.0 },
179              { "value": 45.0, "target": 77.0 },
180              { "value": 46.0, "target": 79.0 },
181              { "value": 47.0, "target": 82.0 },
182              { "value": 48.0, "target": 84.0 },
183              { "value": 49.0, "target": 87.0 },
184              { "value": 50.0, "target": 89.0 }
185        ]
186      }
187    ]
188  },
189  {
190    "name": "target_mapping_from_OCP_temp",
191    "groups": [
192      {
193        "name": "zone0_ocp",
194        "interface": "xyz.openbmc_project.Sensor.Value",
195        "property": { "name": "Value" }
196      }
197    ],
198    "triggers": [
199      {
200        "class": "init",
201        "method": "get_properties"
202      },
203      {
204        "class": "signal",
205        "signal": "properties_changed"
206      },
207      {
208        "class": "timer",
209        "type": "repeating",
210        "interval": 5000000,
211        "preload_groups": true
212      }
213    ],
214    "actions": [
215      {
216        "name": "target_from_group_max",
217        "groups": [
218          {
219            "name": "zone0_ocp",
220            "interface": "xyz.openbmc_project.Sensor.Value",
221            "property": { "name": "Value" }
222          }
223        ],
224        "neg_hysteresis": 2,
225        "pos_hysteresis": 2,
226        "index": 3,
227        "map": [
228          { "value": 10.0, "target": 38.0 },
229          { "value": 65.0, "target": 38.0 },
230          { "value": 66.0, "target": 43.0 },
231          { "value": 67.0, "target": 51.0 },
232          { "value": 68.0, "target": 54.0 },
233          { "value": 69.0, "target": 56.0 },
234          { "value": 70.0, "target": 61.0 },
235          { "value": 71.0, "target": 66.0 },
236          { "value": 72.0, "target": 71.0 },
237          { "value": 73.0, "target": 77.0 },
238          { "value": 74.0, "target": 82.0 },
239          { "value": 75.0, "target": 87.0 },
240          { "value": 76.0, "target": 92.0 },
241          { "value": 77.0, "target": 97.0 },
242          { "value": 78.0, "target": 102.0 },
243          { "value": 79.0, "target": 107.0 },
244          { "value": 80.0, "target": 112.0 },
245          { "value": 81.0, "target": 122.0 },
246          { "value": 82.0, "target": 128.0 },
247          { "value": 83.0, "target": 133.0 },
248          { "value": 84.0, "target": 140.0 },
249          { "value": 85.0, "target": 148.0 },
250          { "value": 86.0, "target": 156.0 },
251          { "value": 87.0, "target": 163.0 },
252          { "value": 88.0, "target": 171.0 },
253          { "value": 89.0, "target": 179.0 },
254          { "value": 90.0, "target": 186.0 },
255          { "value": 91.0, "target": 194.0 },
256          { "value": 92.0, "target": 201.0 },
257          { "value": 93.0, "target": 209.0 },
258          { "value": 94.0, "target": 217.0 },
259          { "value": 95.0, "target": 224.0 },
260          { "value": 96.0, "target": 232.0 },
261          { "value": 97.0, "target": 240.0 },
262          { "value": 98.0, "target": 247.0 },
263          { "value": 99.0, "target": 255.0 }
264        ]
265      }
266    ]
267  },
268  {
269    "name": "target_mapping_from_BP_NVME_temp",
270    "groups": [
271      {
272        "name": "zone0_bp_nvme",
273        "interface": "xyz.openbmc_project.Sensor.Value",
274        "property": { "name": "Value" }
275      }
276    ],
277    "triggers": [
278      {
279        "class": "init",
280        "method": "get_properties"
281      },
282      {
283        "class": "signal",
284        "signal": "properties_changed"
285      },
286      {
287        "class": "timer",
288        "type": "repeating",
289        "interval": 5000000,
290        "preload_groups": true
291      }
292    ],
293    "actions": [
294      {
295        "name": "target_from_group_max",
296        "groups": [
297          {
298            "name": "zone0_bp_nvme",
299            "interface": "xyz.openbmc_project.Sensor.Value",
300            "property": { "name": "Value" }
301          }
302        ],
303        "neg_hysteresis": 2,
304        "pos_hysteresis": 0,
305        "index": 4,
306        "map": [
307          { "value": 10.0, "target": 38.0 },
308          { "value": 35.0, "target": 38.0 },
309          { "value": 36.0, "target": 43.0 },
310          { "value": 37.0, "target": 48.0 },
311          { "value": 38.0, "target": 54.0 },
312          { "value": 39.0, "target": 59.0 },
313          { "value": 40.0, "target": 64.0 },
314          { "value": 41.0, "target": 66.0 },
315          { "value": 42.0, "target": 69.0 },
316          { "value": 43.0, "target": 71.0 },
317          { "value": 44.0, "target": 74.0 },
318          { "value": 45.0, "target": 77.0 },
319          { "value": 46.0, "target": 79.0 },
320          { "value": 47.0, "target": 82.0 },
321          { "value": 48.0, "target": 84.0 },
322          { "value": 49.0, "target": 87.0 },
323          { "value": 50.0, "target": 89.0 },
324          { "value": 51.0, "target": 99.0 },
325          { "value": 52.0, "target": 99.0 },
326          { "value": 53.0, "target": 105.0 },
327          { "value": 54.0, "target": 110.0 },
328          { "value": 55.0, "target": 115.0 },
329          { "value": 56.0, "target": 120.0 },
330          { "value": 57.0, "target": 125.0 },
331          { "value": 58.0, "target": 130.0 },
332          { "value": 59.0, "target": 135.0 },
333          { "value": 60.0, "target": 140.0 },
334          { "value": 61.0, "target": 150.0 },
335          { "value": 62.0, "target": 161.0 },
336          { "value": 63.0, "target": 171.0 },
337          { "value": 64.0, "target": 181.0 },
338          { "value": 65.0, "target": 191.0 },
339          { "value": 66.0, "target": 204.0 },
340          { "value": 67.0, "target": 217.0 },
341          { "value": 68.0, "target": 230.0 },
342          { "value": 69.0, "target": 255.0 }
343        ]
344      }
345    ]
346  },
347  {
348    "name": "target_mapping_from_M2_NVME_temp",
349    "groups": [
350      {
351        "name": "zone0_m2_nvme",
352        "interface": "xyz.openbmc_project.Sensor.Value",
353        "property": { "name": "Value" }
354      }
355    ],
356    "triggers": [
357      {
358        "class": "init",
359        "method": "get_properties"
360      },
361      {
362        "class": "signal",
363        "signal": "properties_changed"
364      },
365      {
366        "class": "timer",
367        "type": "repeating",
368        "interval": 5000000,
369        "preload_groups": true
370      }
371    ],
372    "actions": [
373      {
374        "name": "target_from_group_max",
375        "groups": [
376          {
377            "name": "zone0_m2_nvme",
378            "interface": "xyz.openbmc_project.Sensor.Value",
379            "property": { "name": "Value" }
380          }
381        ],
382        "neg_hysteresis": 2,
383        "pos_hysteresis": 0,
384        "index": 5,
385        "map": [
386          { "value": 10.0, "target": 38.0 },
387          { "value": 61.0, "target": 38.0 },
388          { "value": 68.0, "target": 38.0 },
389          { "value": 69.0, "target": 204.0 }
390        ]
391      }
392    ]
393  }
394]
395