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_ATTR = 'log_attributes'
|
||||||
CONF_RATE = 'rate'
|
CONF_RATE = 'rate'
|
||||||
|
CONF_VALUE_MAP = 'value_mapping'
|
||||||
|
|
||||||
DEFAULT_HOST = 'localhost'
|
DEFAULT_HOST = 'localhost'
|
||||||
DEFAULT_PORT = 8125
|
DEFAULT_PORT = 8125
|
||||||
|
@ -34,6 +35,7 @@ CONFIG_SCHEMA = vol.Schema({
|
||||||
vol.Optional(CONF_PREFIX, default=DEFAULT_PREFIX): cv.string,
|
vol.Optional(CONF_PREFIX, default=DEFAULT_PREFIX): cv.string,
|
||||||
vol.Optional(CONF_RATE, default=DEFAULT_RATE):
|
vol.Optional(CONF_RATE, default=DEFAULT_RATE):
|
||||||
vol.All(vol.Coerce(int), vol.Range(min=1)),
|
vol.All(vol.Coerce(int), vol.Range(min=1)),
|
||||||
|
vol.Optional(CONF_VALUE_MAP, default=None): dict,
|
||||||
}),
|
}),
|
||||||
}, extra=vol.ALLOW_EXTRA)
|
}, extra=vol.ALLOW_EXTRA)
|
||||||
|
|
||||||
|
@ -47,6 +49,7 @@ def setup(hass, config):
|
||||||
port = conf.get(CONF_PORT)
|
port = conf.get(CONF_PORT)
|
||||||
sample_rate = conf.get(CONF_RATE)
|
sample_rate = conf.get(CONF_RATE)
|
||||||
prefix = conf.get(CONF_PREFIX)
|
prefix = conf.get(CONF_PREFIX)
|
||||||
|
value_mapping = conf.get(CONF_VALUE_MAP)
|
||||||
show_attribute_flag = conf.get(CONF_ATTR)
|
show_attribute_flag = conf.get(CONF_ATTR)
|
||||||
|
|
||||||
statsd_client = statsd.StatsClient(host=host, port=port, prefix=prefix)
|
statsd_client = statsd.StatsClient(host=host, port=port, prefix=prefix)
|
||||||
|
@ -59,7 +62,10 @@ def setup(hass, config):
|
||||||
return
|
return
|
||||||
|
|
||||||
try:
|
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:
|
except ValueError:
|
||||||
# Set the state to none and continue for any numeric attributes.
|
# Set the state to none and continue for any numeric attributes.
|
||||||
_state = None
|
_state = None
|
||||||
|
|
|
@ -86,6 +86,7 @@ class TestStatsd(unittest.TestCase):
|
||||||
config = {
|
config = {
|
||||||
'statsd': {
|
'statsd': {
|
||||||
'host': 'host',
|
'host': 'host',
|
||||||
|
'value_mapping': {'custom': 3}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -98,6 +99,7 @@ class TestStatsd(unittest.TestCase):
|
||||||
|
|
||||||
valid = {'1': 1,
|
valid = {'1': 1,
|
||||||
'1.0': 1.0,
|
'1.0': 1.0,
|
||||||
|
'custom': 3,
|
||||||
STATE_ON: 1,
|
STATE_ON: 1,
|
||||||
STATE_OFF: 0}
|
STATE_OFF: 0}
|
||||||
for in_, out in valid.items():
|
for in_, out in valid.items():
|
||||||
|
|
Loading…
Add table
Reference in a new issue