summaryrefslogtreecommitdiffstats
path: root/presence/pfpgen.py
diff options
context:
space:
mode:
authorBrad Bishop <bradleyb@fuzziesquirrel.com>2017-07-25 19:59:46 -0400
committerPatrick Williams <patrick@stwcx.xyz>2017-08-02 20:18:19 +0000
commitfcbedca0d847c27fdeab59cda9c6659d8640b6dd (patch)
tree165fe3c760f9896979eefc0f0732551abd75a2ea /presence/pfpgen.py
parent00b520827e5d16fc8262783e1ccf8de89a213006 (diff)
downloadphosphor-fan-presence-fcbedca0d847c27fdeab59cda9c6659d8640b6dd.tar.gz
phosphor-fan-presence-fcbedca0d847c27fdeab59cda9c6659d8640b6dd.zip
presence: Add parser support for any of
Add support for the anyof yaml keyword. Change-Id: Ib28ca8ef9959cec29cb2d15a0bf758668375895f Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Diffstat (limited to 'presence/pfpgen.py')
-rwxr-xr-xpresence/pfpgen.py23
1 files changed, 21 insertions, 2 deletions
diff --git a/presence/pfpgen.py b/presence/pfpgen.py
index 1e22ac7..00ba900 100755
--- a/presence/pfpgen.py
+++ b/presence/pfpgen.py
@@ -194,8 +194,26 @@ class Rpolicy(ConfigEntry):
self.fan = get_index(objs, 'fan', self.fan)
+class AnyOf(Rpolicy, Renderer):
+ '''Default policy handler (policy:type:anyof).'''
+
+ def __init__(self, *a, **kw):
+ kw['name'] = 'anyof-{}'.format(kw['fan'])
+ super(AnyOf, self).__init__(**kw)
+
+ def setup(self, objs):
+ super(AnyOf, self).setup(objs)
+
+ def construct(self, loader, indent):
+ return self.render(
+ loader,
+ 'anyof.mako.hpp',
+ f=self,
+ indent=indent)
+
+
class Fallback(Rpolicy, Renderer):
- '''Default policy handler (policy:type:fallback).'''
+ '''Fallback policy handler (policy:type:fallback).'''
def __init__(self, *a, **kw):
kw['name'] = 'fallback-{}'.format(kw['fan'])
@@ -230,7 +248,7 @@ class Fan(ConfigEntry):
factory = Everything.classmap(self.rpolicy['type'])
rpolicy = factory(**self.rpolicy)
else:
- rpolicy = Fallback(fan=self.name)
+ rpolicy = AnyOf(fan=self.name)
for m in self.methods:
m['policy'] = rpolicy.name
@@ -252,6 +270,7 @@ class Everything(Renderer):
handler methods.'''
class_map = {
+ 'anyof': AnyOf,
'fan': Fan,
'fallback': Fallback,
'gpio': Gpio,
OpenPOWER on IntegriCloud