Adding support for mapping keys to value in statsd (#8665)

* Adding ability to map specific states to values

* Adding test for mapping
This commit is contained in:
Richard Cox 2017-07-26 23:58:34 -07:00 committed by Pascal Vizeli
parent 9d5c61b2f0
commit 1e8c00ac02
2 changed files with 9 additions and 1 deletions

View file

@ -19,6 +19,7 @@ _LOGGER = logging.getLogger(__name__)
CONF_ATTR = 'log_attributes'
CONF_RATE = 'rate'
CONF_VALUE_MAP = 'value_mapping'
DEFAULT_HOST = 'localhost'
DEFAULT_PORT = 8125
@ -34,6 +35,7 @@ CONFIG_SCHEMA = vol.Schema({
vol.Optional(CONF_PREFIX, default=DEFAULT_PREFIX): cv.string,
vol.Optional(CONF_RATE, default=DEFAULT_RATE):
vol.All(vol.Coerce(int), vol.Range(min=1)),
vol.Optional(CONF_VALUE_MAP, default=None): dict,
}),
}, extra=vol.ALLOW_EXTRA)
@ -47,6 +49,7 @@ def setup(hass, config):
port = conf.get(CONF_PORT)
sample_rate = conf.get(CONF_RATE)
prefix = conf.get(CONF_PREFIX)
value_mapping = conf.get(CONF_VALUE_MAP)
show_attribute_flag = conf.get(CONF_ATTR)
statsd_client = statsd.StatsClient(host=host, port=port, prefix=prefix)
@ -59,7 +62,10 @@ def setup(hass, config):
return
try:
_state = state_helper.state_as_number(state)
if value_mapping and state.state in value_mapping:
_state = float(value_mapping[state.state])
else:
_state = state_helper.state_as_number(state)
except ValueError:
# Set the state to none and continue for any numeric attributes.
_state = None

View file

@ -86,6 +86,7 @@ class TestStatsd(unittest.TestCase):
config = {
'statsd': {
'host': 'host',
'value_mapping': {'custom': 3}
}
}
@ -98,6 +99,7 @@ class TestStatsd(unittest.TestCase):
valid = {'1': 1,
'1.0': 1.0,
'custom': 3,
STATE_ON: 1,
STATE_OFF: 0}
for in_, out in valid.items():