Event groups are optional
Change-Id: I2ff925e9433aedb028244d6c8867c2de5a786730
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
diff --git a/control/gen-fan-zone-defs.py b/control/gen-fan-zone-defs.py
index 994ad6b..a6c34b6 100755
--- a/control/gen-fan-zone-defs.py
+++ b/control/gen-fan-zone-defs.py
@@ -241,51 +241,52 @@
Extract and construct the groups for the given event.
"""
groups = []
- for eGroups in edata['groups']:
- if ('zone_conditions' in eGroups) and \
- (eGroups['zone_conditions'] is not None):
- # Zone conditions are optional in the events yaml but skip
- # if this event's condition is not in this zone's conditions
- if all('name' in z and z['name'] is not None and
- not any(c['name'] == z['name'] for c in zCond)
- for z in eGroups['zone_conditions']):
- continue
+ if ('groups' in edata) and (edata['groups'] is not None):
+ for eGroups in edata['groups']:
+ if ('zone_conditions' in eGroups) and \
+ (eGroups['zone_conditions'] is not None):
+ # Zone conditions are optional in the events yaml but skip
+ # if this event's condition is not in this zone's conditions
+ if all('name' in z and z['name'] is not None and
+ not any(c['name'] == z['name'] for c in zCond)
+ for z in eGroups['zone_conditions']):
+ continue
- # Zone numbers are optional in the events yaml but skip if this
- # zone's zone number is not in the event's zone numbers
- if all('zones' in z and z['zones'] is not None and
- zNum not in z['zones']
- for z in eGroups['zone_conditions']):
- continue
- eGroup = next(g for g in events['groups']
- if g['name'] == eGroups['name'])
+ # Zone numbers are optional in the events yaml but skip if this
+ # zone's zone number is not in the event's zone numbers
+ if all('zones' in z and z['zones'] is not None and
+ zNum not in z['zones']
+ for z in eGroups['zone_conditions']):
+ continue
+ eGroup = next(g for g in events['groups']
+ if g['name'] == eGroups['name'])
- group = {}
- members = []
- group['name'] = eGroup['name']
- for m in eGroup['members']:
- member = {}
- member['path'] = eGroup['type']
- member['object'] = (eGroup['type'] + m)
- member['interface'] = eGroups['interface']
- member['property'] = eGroups['property']['name']
- member['type'] = eGroups['property']['type']
- # Use defined service to note member on zone object
- if ('service' in eGroup) and \
- (eGroup['service'] is not None):
- member['service'] = eGroup['service']
- # Add expected group member's property value if given
- if ('value' in eGroups['property']) and \
- (eGroups['property']['value'] is not None):
- if isinstance(eGroups['property']['value'], str) or \
- "string" in str(member['type']).lower():
- member['value'] = (
- "\"" + eGroups['property']['value'] + "\"")
- else:
- member['value'] = eGroups['property']['value']
- members.append(member)
- group['members'] = members
- groups.append(group)
+ group = {}
+ members = []
+ group['name'] = eGroup['name']
+ for m in eGroup['members']:
+ member = {}
+ member['path'] = eGroup['type']
+ member['object'] = (eGroup['type'] + m)
+ member['interface'] = eGroups['interface']
+ member['property'] = eGroups['property']['name']
+ member['type'] = eGroups['property']['type']
+ # Use defined service to note member on zone object
+ if ('service' in eGroup) and \
+ (eGroup['service'] is not None):
+ member['service'] = eGroup['service']
+ # Add expected group member's property value if given
+ if ('value' in eGroups['property']) and \
+ (eGroups['property']['value'] is not None):
+ if isinstance(eGroups['property']['value'], str) or \
+ "string" in str(member['type']).lower():
+ member['value'] = (
+ "\"" + eGroups['property']['value'] + "\"")
+ else:
+ member['value'] = eGroups['property']['value']
+ members.append(member)
+ group['members'] = members
+ groups.append(group)
return groups