mirror of
https://github.com/home-assistant/core.git
synced 2025-07-16 17:57:11 +00:00
Use voluptuous for syslog (#3120)
This commit is contained in:
parent
586e47d08d
commit
9e38255c26
@ -6,63 +6,76 @@ https://home-assistant.io/components/notify.syslog/
|
|||||||
"""
|
"""
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
import voluptuous as vol
|
||||||
|
|
||||||
from homeassistant.components.notify import (
|
from homeassistant.components.notify import (
|
||||||
ATTR_TITLE, ATTR_TITLE_DEFAULT, DOMAIN, BaseNotificationService)
|
ATTR_TITLE, ATTR_TITLE_DEFAULT, PLATFORM_SCHEMA, BaseNotificationService)
|
||||||
from homeassistant.helpers import validate_config
|
|
||||||
|
|
||||||
|
CONF_FACILITY = 'facility'
|
||||||
|
CONF_OPTION = 'option'
|
||||||
|
CONF_PRIORITY = 'priority'
|
||||||
|
|
||||||
|
SYSLOG_FACILITY = {
|
||||||
|
'kernel': 'LOG_KERN',
|
||||||
|
'user': 'LOG_USER',
|
||||||
|
'mail': 'LOG_MAIL',
|
||||||
|
'daemon': 'LOG_DAEMON',
|
||||||
|
'auth': 'LOG_KERN',
|
||||||
|
'LPR': 'LOG_LPR',
|
||||||
|
'news': 'LOG_NEWS',
|
||||||
|
'uucp': 'LOG_UUCP',
|
||||||
|
'cron': 'LOG_CRON',
|
||||||
|
'syslog': 'LOG_SYSLOG',
|
||||||
|
'local0': 'LOG_LOCAL0',
|
||||||
|
'local1': 'LOG_LOCAL1',
|
||||||
|
'local2': 'LOG_LOCAL2',
|
||||||
|
'local3': 'LOG_LOCAL3',
|
||||||
|
'local4': 'LOG_LOCAL4',
|
||||||
|
'local5': 'LOG_LOCAL5',
|
||||||
|
'local6': 'LOG_LOCAL6',
|
||||||
|
'local7': 'LOG_LOCAL7',
|
||||||
|
}
|
||||||
|
|
||||||
|
SYSLOG_OPTION = {
|
||||||
|
'pid': 'LOG_PID',
|
||||||
|
'cons': 'LOG_CONS',
|
||||||
|
'ndelay': 'LOG_NDELAY',
|
||||||
|
'nowait': 'LOG_NOWAIT',
|
||||||
|
'perror': 'LOG_PERROR',
|
||||||
|
}
|
||||||
|
|
||||||
|
SYSLOG_PRIORITY = {
|
||||||
|
5: 'LOG_EMERG',
|
||||||
|
4: 'LOG_ALERT',
|
||||||
|
3: 'LOG_CRIT',
|
||||||
|
2: 'LOG_ERR',
|
||||||
|
1: 'LOG_WARNING',
|
||||||
|
0: 'LOG_NOTICE',
|
||||||
|
-1: 'LOG_INFO',
|
||||||
|
-2: 'LOG_DEBUG',
|
||||||
|
}
|
||||||
|
|
||||||
|
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||||
|
vol.Optional(CONF_FACILITY, default='syslog'):
|
||||||
|
vol.In(SYSLOG_FACILITY.keys()),
|
||||||
|
vol.Optional(CONF_OPTION, default='pid'): vol.In(SYSLOG_OPTION.keys()),
|
||||||
|
vol.Optional(CONF_PRIORITY, default=-1): vol.In(SYSLOG_PRIORITY.keys()),
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def get_service(hass, config):
|
def get_service(hass, config):
|
||||||
"""Get the syslog notification service."""
|
"""Get the syslog notification service."""
|
||||||
if not validate_config({DOMAIN: config},
|
|
||||||
{DOMAIN: ['facility', 'option', 'priority']},
|
|
||||||
_LOGGER):
|
|
||||||
return None
|
|
||||||
|
|
||||||
import syslog
|
import syslog
|
||||||
|
|
||||||
_facility = {
|
facility = getattr(syslog, SYSLOG_FACILITY[config.get(CONF_FACILITY)])
|
||||||
'kernel': syslog.LOG_KERN,
|
option = getattr(syslog, SYSLOG_OPTION[config.get(CONF_OPTION)])
|
||||||
'user': syslog.LOG_USER,
|
priority = getattr(syslog, SYSLOG_PRIORITY[config.get(CONF_PRIORITY)])
|
||||||
'mail': syslog.LOG_MAIL,
|
|
||||||
'daemon': syslog.LOG_DAEMON,
|
|
||||||
'auth': syslog.LOG_KERN,
|
|
||||||
'LPR': syslog.LOG_LPR,
|
|
||||||
'news': syslog.LOG_NEWS,
|
|
||||||
'uucp': syslog.LOG_UUCP,
|
|
||||||
'cron': syslog.LOG_CRON,
|
|
||||||
'syslog': syslog.LOG_SYSLOG,
|
|
||||||
'local0': syslog.LOG_LOCAL0,
|
|
||||||
'local1': syslog.LOG_LOCAL1,
|
|
||||||
'local2': syslog.LOG_LOCAL2,
|
|
||||||
'local3': syslog.LOG_LOCAL3,
|
|
||||||
'local4': syslog.LOG_LOCAL4,
|
|
||||||
'local5': syslog.LOG_LOCAL5,
|
|
||||||
'local6': syslog.LOG_LOCAL6,
|
|
||||||
'local7': syslog.LOG_LOCAL7,
|
|
||||||
}.get(config['facility'], 40)
|
|
||||||
|
|
||||||
_option = {
|
return SyslogNotificationService(facility, option, priority)
|
||||||
'pid': syslog.LOG_PID,
|
|
||||||
'cons': syslog.LOG_CONS,
|
|
||||||
'ndelay': syslog.LOG_NDELAY,
|
|
||||||
'nowait': syslog.LOG_NOWAIT,
|
|
||||||
'perror': syslog.LOG_PERROR
|
|
||||||
}.get(config['option'], 10)
|
|
||||||
|
|
||||||
_priority = {
|
|
||||||
5: syslog.LOG_EMERG,
|
|
||||||
4: syslog.LOG_ALERT,
|
|
||||||
3: syslog.LOG_CRIT,
|
|
||||||
2: syslog.LOG_ERR,
|
|
||||||
1: syslog.LOG_WARNING,
|
|
||||||
0: syslog.LOG_NOTICE,
|
|
||||||
-1: syslog.LOG_INFO,
|
|
||||||
-2: syslog.LOG_DEBUG
|
|
||||||
}.get(config['priority'], -1)
|
|
||||||
|
|
||||||
return SyslogNotificationService(_facility, _option, _priority)
|
|
||||||
|
|
||||||
|
|
||||||
# pylint: disable=too-few-public-methods
|
# pylint: disable=too-few-public-methods
|
||||||
|
Loading…
x
Reference in New Issue
Block a user