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-05-04 00:52:54 -0500
commit4f2f08d447147fdfe88366c4c9a7cf013e12c5e2 (patch)
tree0374983c155a63b10f374eedc0df0c0a37557102
parent1f31c03d0a05dc18467f995e7220232a4a51e938 (diff)
downloadphosphor-fan-presence-4f2f08d447147fdfe88366c4c9a7cf013e12c5e2.tar.gz
phosphor-fan-presence-4f2f08d447147fdfe88366c4c9a7cf013e12c5e2.zip
Allow per-zone preconditions
This lays the groundwork for CPU population-dependent fan control
-rwxr-xr-xcontrol/gen-fan-zone-defs.py21
1 files changed, 20 insertions, 1 deletions
diff --git a/control/gen-fan-zone-defs.py b/control/gen-fan-zone-defs.py
index 43d98bc..2f227b9 100755
--- a/control/gen-fan-zone-defs.py
+++ b/control/gen-fan-zone-defs.py
@@ -659,10 +659,29 @@ 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 'groups' in p:
+ for g in p['groups']:
+ if 'zone_conditions' in g:
+ zone_allowed = False
+ for zc in g['zone_conditions']:
+ if 'zones' in zc:
+ 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