Add event init trigger

An event defined with an init trigger will run the event's actions
upon the event initializing. An event initializes when the fan control
application starts or at anytime an event's precondition is valid.

Tested:
    Used missing fan action to set a speed at application start
    Used missing fan action to set a speed upon valid precondition

Change-Id: I96a36425a2ca345371c27d7b580070bec28acaa1
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
diff --git a/control/templates/defs.mako b/control/templates/defs.mako
index d574c57..9d66461 100644
--- a/control/templates/defs.mako
+++ b/control/templates/defs.mako
@@ -3,6 +3,23 @@
     return ''.join(4*' '*depth+line for line in str.splitlines(True))
 %>\
 
+<%def name="genParams(par)" buffered="True">
+%if ('type' in par['hparams']) and \
+    (par['hparams']['type'] is not None):
+handler::${par['handler']}<${par['hparams']['type']}>(
+%else:
+handler::${par['handler']}(
+%endif
+%for i, hpk in enumerate(par['hparams']['params']):
+    %if (i+1) != len(par['hparams']['params']):
+    ${par['hparams'][hpk]},
+    %else:
+    ${par['hparams'][hpk]}
+    %endif
+%endfor
+)
+</%def>\
+
 <%def name="genHandler(sig)" buffered="True">
 %if ('type' in sig['sparams']) and \
     (sig['sparams']['type'] is not None):
@@ -13,20 +30,8 @@
 %for spk in sig['sparams']['params']:
 ${sig['sparams'][spk]},
 %endfor
-%if ('type' in sig['hparams']) and \
-    (sig['hparams']['type'] is not None):
-handler::${sig['handler']}<${sig['hparams']['type']}>(
-%else:
-handler::${sig['handler']}(
-%endif
-%for i, hpk in enumerate(sig['hparams']['params']):
-    %if (i+1) != len(sig['hparams']['params']):
-    ${sig['hparams'][hpk]},
-    %else:
-    ${sig['hparams'][hpk]}
-    %endif
-%endfor
-))
+${genParams(par=sig)}\
+)
 </%def>\
 
 <%def name="genSSE(event)" buffered="True">
@@ -90,5 +95,16 @@
     )),
     %endfor
     %endif
+    %if ('init' in event['triggers']):
+    %for i in event['triggers']['init']:
+    make_trigger(trigger::init(
+        %if ('handler' in i):
+        make_handler(\
+        ${indent(genParams(par=i), 3)}\
+        )
+        %endif
+    )),
+    %endfor
+    %endif
 },
 </%def>\