summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaptor Engineering Development Team <support@raptorengineering.com>2018-01-23 21:21:42 -0600
committerRaptor Engineering Development Team <support@raptorengineering.com>2018-04-28 20:52:15 -0500
commit9d50046d54cd2c1ff340ef33d259522d2ca8a0b8 (patch)
tree8d4409b2d400107feb4e262a0e1d4a0b64b93bbe
parent1f31c03d0a05dc18467f995e7220232a4a51e938 (diff)
downloadphosphor-fan-presence-9d50046d54cd2c1ff340ef33d259522d2ca8a0b8.tar.gz
phosphor-fan-presence-9d50046d54cd2c1ff340ef33d259522d2ca8a0b8.zip
Allow per-zone preconditions
This lays the groundwork for CPU population-dependent fan control
-rwxr-xr-xcontrol/gen-fan-zone-defs.py19
1 files changed, 18 insertions, 1 deletions
diff --git a/control/gen-fan-zone-defs.py b/control/gen-fan-zone-defs.py
index 43d98bc..f39a414 100755
--- a/control/gen-fan-zone-defs.py
+++ b/control/gen-fan-zone-defs.py
@@ -659,10 +659,27 @@ def getEventsInZone(zone_num, zone_conditions, events_data):
# Add precondition if given
if ('precondition' in e) and \
(e['precondition'] is not None):
- event['pc'] = addPrecondition(zone_num,
+ precondition_applies_to_zone = True
+ if 'events' in e['precondition']:
+ for p in e['precondition']['events']:
+ # Verify precondition applies to current zone
+ if 'zone_conditions' in p:
+ for zc in p['zone_conditions']:
+ if 'zones' in zc:
+ zone_allowed = False
+ for z in zc['zones']:
+ if z == zone_num:
+ zone_allowed = True
+ if zone_allowed == False:
+ precondition_applies_to_zone = False
+
+ if precondition_applies_to_zone == True:
+ event['pc'] = addPrecondition(zone_num,
zone_conditions,
e,
events_data)
+ else:
+ continue
else:
event = getEvent(zone_num, zone_conditions, e, events_data)
if not event:
OpenPOWER on IntegriCloud