summaryrefslogtreecommitdiffstats
path: root/monitor/gen-fan-monitor-defs.py
diff options
context:
space:
mode:
authorMatthew Barth <msbarth@us.ibm.com>2018-05-03 10:55:11 -0500
committerMatthew Barth <msbarth@us.ibm.com>2018-05-03 16:56:43 -0500
commit33618bc1845e5e7c4e12a2d2ed7f1c47a6a03de1 (patch)
tree261917d3c3e836c080cd506ce6eb39bc25643b66 /monitor/gen-fan-monitor-defs.py
parent81748b1425e453b6a815a7b8ed2fa861d3068ac7 (diff)
downloadphosphor-fan-presence-33618bc1845e5e7c4e12a2d2ed7f1c47a6a03de1.tar.gz
phosphor-fan-presence-33618bc1845e5e7c4e12a2d2ed7f1c47a6a03de1.zip
Add generation of propertiesMatch condition
Update the mako template to generate conditions within the FanDefinition sections when a condition is defined for a fan. Each supported condition function's parameters are generated within a `getCondParams` mako method, allowing easy support of additional conditions with differing parameters. Tested: A given condition's function and parameters generate correctly No condition function is generated on a fan where not defined Resolves: openbmc/openbmc#2976 Change-Id: I3f0b30702fdcef6749929d85543270863eb26381 Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
Diffstat (limited to 'monitor/gen-fan-monitor-defs.py')
-rwxr-xr-xmonitor/gen-fan-monitor-defs.py32
1 files changed, 31 insertions, 1 deletions
diff --git a/monitor/gen-fan-monitor-defs.py b/monitor/gen-fan-monitor-defs.py
index 83dcbc0..a5f225b 100755
--- a/monitor/gen-fan-monitor-defs.py
+++ b/monitor/gen-fan-monitor-defs.py
@@ -16,10 +16,32 @@ from the MRW.
"""
-tmpl = '''/* This is a generated file. */
+tmpl = '''\
+<%!
+def indent(str, depth):
+ return ''.join(4*' '*depth+line for line in str.splitlines(True))
+%>\
+<%def name="getCondParams(cond)" buffered="True">
+%if (cond['name'] == 'propertiesMatch'):
+std::vector<PropertyState>{
+ %for i in cond['properties']:
+ PropertyState{
+ {
+ "${i['object']}",
+ "${i['interface']}",
+ "${i['property']['name']}"
+ },
+ static_cast<${i['property']['type']}>(${str(i['property']['value']).lower()})
+ },
+ %endfor
+}
+%endif
+</%def>\
+/* This is a generated file. */
#include "fan_defs.hpp"
#include "types.hpp"
#include "groups.hpp"
+#include "conditions.hpp"
using namespace phosphor::fan::monitor;
using namespace phosphor::fan::trust;
@@ -50,6 +72,14 @@ const std::vector<FanDefinition> fanDefinitions
${offset}},
%endfor
},
+ %if ('condition' in fan_data) and \
+ (fan_data['condition'] is not None):
+ make_condition(condition::${fan_data['condition']['name']}(\
+ ${indent(getCondParams(cond=fan_data['condition']), 5)}\
+ ))
+ %else:
+ {}
+ %endif
},
%endfor
};
OpenPOWER on IntegriCloud