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:
parent
9d5c61b2f0
commit
1e8c00ac02
2 changed files with 9 additions and 1 deletions
|
@ -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
|
||||
|
|
|
@ -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():
|
||||
|
|
Loading…
Add table
Reference in a new issue