1
mirror of https://github.com/home-assistant/core synced 2024-08-31 05:57:13 +02:00
ha-core/homeassistant/components/notify/syslog.py
Fabian Affolter a4f1f6e724 Update docstrings (#7374)
* Update docstrings

* Update docstrings

* Update docstrings

* Update docstrings

* Update docstrings

* Update docstrings

* Update docstring

* Update docstrings

* Update docstrings

* Fix lint issues

* Update docstrings

* Revert changes in dict
2017-05-02 09:18:47 -07:00

97 lines
2.5 KiB
Python

"""
Syslog notification service.
For more details about this platform, please refer to the documentation at
https://home-assistant.io/components/notify.syslog/
"""
import logging
import voluptuous as vol
from homeassistant.components.notify import (
ATTR_TITLE, ATTR_TITLE_DEFAULT, PLATFORM_SCHEMA, BaseNotificationService)
_LOGGER = logging.getLogger(__name__)
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()),
})
def get_service(hass, config, discovery_info=None):
"""Get the syslog notification service."""
import syslog
facility = getattr(syslog, SYSLOG_FACILITY[config.get(CONF_FACILITY)])
option = getattr(syslog, SYSLOG_OPTION[config.get(CONF_OPTION)])
priority = getattr(syslog, SYSLOG_PRIORITY[config.get(CONF_PRIORITY)])
return SyslogNotificationService(facility, option, priority)
class SyslogNotificationService(BaseNotificationService):
"""Implement the syslog notification service."""
def __init__(self, facility, option, priority):
"""Initialize the service."""
self._facility = facility
self._option = option
self._priority = priority
def send_message(self, message="", **kwargs):
"""Send a message to a user."""
import syslog
title = kwargs.get(ATTR_TITLE, ATTR_TITLE_DEFAULT)
syslog.openlog(title, self._option, self._facility)
syslog.syslog(self._priority, message)
syslog.closelog()