diff --git a/etc/monitors/network1/gateway.ini b/etc/monitors/network1/gateway.ini index 4d2d54b..ea0c593 100644 --- a/etc/monitors/network1/gateway.ini +++ b/etc/monitors/network1/gateway.ini @@ -13,6 +13,10 @@ sms_receivers = +329084320984,+39804932409 ; setting to None fails. just do not set this option. currently i get an error when tasks is not set here. need to be ; fixed. setting it like below works but is no good design for optional options. same for notifications. tasks = Redis +; maybe this should be some kind of range too, for example for the ping service like: 10.0.0.1-10.0.0.42 or more +; sophisticated kind of ranges... i will find a solution for that... like host groups in the old version of Linspector +; so we don't need to add a monitor for each host... but it would be a good idea to expose these hosts to become a +; monitor for each host internally. ;) host = 192.168.0.1 user = USERNAME password = PASSWORD diff --git a/linspector/core/monitor.py b/linspector/core/monitor.py index a56e39b..992b529 100644 --- a/linspector/core/monitor.py +++ b/linspector/core/monitor.py @@ -65,26 +65,20 @@ class Monitor: if notification_option not in notifications: notification_package = 'linspector.notifications.' + notification_option.lower() notification_module = importlib.import_module(notification_package) - notification = getattr(notification_module, notification_option + - 'Notification') - - notification.__init__(self, configuration, environment) + notification = notification_module.get(configuration, environment) notifications[notification_option] = notification - #print(__file__ + ' (73): ' + str(notifications)) + #print(__file__ + ' (70): ' + str(notifications)) - #print(__file__ + ' (75): ' + str(monitor_configuration)) + #print(__file__ + ' (72): ' + str(monitor_configuration)) if self.__monitor_configuration.get('monitor', 'service'): if monitor_configuration.get('monitor', 'service') not in services: service_package = 'linspector.services.' + \ monitor_configuration.get('monitor', 'service').lower() service_module = importlib.import_module(service_package) - service = getattr(service_module, - monitor_configuration.get('monitor', 'service') + 'Service') - - service.__init__(self, configuration, environment) + service = service_module.get(configuration, environment) services[monitor_configuration.get('monitor', 'service')] = service - #print(__file__ + ' (87): ' + str(services)) + #print(__file__ + ' (81): ' + str(services)) #service.execute(self) @@ -107,14 +101,13 @@ class Monitor: for task_option in task_list.split(','): if task_option not in tasks: - #print(__file__ + ' (110): ' + str(task_option)) + #print(__file__ + ' (104): ' + str(task_option)) task_package = 'linspector.tasks.' + task_option.lower() task_module = importlib.import_module(task_package) - task = getattr(task_module, task_option + 'Task') - task.__init__(self, configuration, environment) + task = task_module.get(configuration, environment) tasks[task_option] = task - #print(__file__ + ' (117): ' + str(tasks)) + #print(__file__ + ' (110): ' + str(tasks)) def get_identifier(self): return self.__identifier diff --git a/linspector/notifications/call.py b/linspector/notifications/call.py index e1dbe14..c82ddd7 100644 --- a/linspector/notifications/call.py +++ b/linspector/notifications/call.py @@ -26,6 +26,10 @@ from logging import getLogger logger = getLogger('linspector') +def get(configuration, environment): + return CallNotification(configuration, environment) + + class CallNotification: def __init__(self, configuration, environment): diff --git a/linspector/notifications/email.py b/linspector/notifications/email.py index 8674698..a82fe2c 100644 --- a/linspector/notifications/email.py +++ b/linspector/notifications/email.py @@ -26,6 +26,10 @@ from logging import getLogger logger = getLogger('linspector') +def get(configuration, environment): + return EmailNotification(configuration, environment) + + class EmailNotification: def __init__(self, configuration, environment): diff --git a/linspector/notifications/sms.py b/linspector/notifications/sms.py index 0c14fc4..84520a2 100644 --- a/linspector/notifications/sms.py +++ b/linspector/notifications/sms.py @@ -26,6 +26,10 @@ from logging import getLogger logger = getLogger('linspector') +def get(configuration, environment): + return SMSNotification(configuration, environment) + + class SMSNotification: def __init__(self, configuration, environment): diff --git a/linspector/notifications/twitter.py b/linspector/notifications/twitter.py index 5f627bb..2e3adbb 100644 --- a/linspector/notifications/twitter.py +++ b/linspector/notifications/twitter.py @@ -26,6 +26,10 @@ from logging import getLogger logger = getLogger('linspector') +def get(configuration, environment): + return TwitterNotification(configuration, environment) + + class TwitterNotification: def __init__(self, configuration, environment): diff --git a/linspector/notifications/xmpp.py b/linspector/notifications/xmpp.py index 84247c9..2a4a2de 100644 --- a/linspector/notifications/xmpp.py +++ b/linspector/notifications/xmpp.py @@ -26,6 +26,10 @@ from logging import getLogger logger = getLogger('linspector') +def get(configuration, environment): + return XMPPNotification(configuration, environment) + + class XMPPNotification: def __init__(self, configuration, environment): diff --git a/linspector/plugins/httpserver.py b/linspector/plugins/httpserver.py index 3790edd..c9646dd 100644 --- a/linspector/plugins/httpserver.py +++ b/linspector/plugins/httpserver.py @@ -29,6 +29,10 @@ from logging import getLogger logger = getLogger('linspector') +def get(configuration, environment): + return HTTPServerPlugin(configuration, environment) + + # TODO: check for all required configuration options and set defaults if needed. class HTTPServerPlugin: diff --git a/linspector/plugins/lish.py b/linspector/plugins/lish.py index c6c52ba..2e47f22 100644 --- a/linspector/plugins/lish.py +++ b/linspector/plugins/lish.py @@ -26,6 +26,10 @@ from logging import getLogger logger = getLogger('linspector') +def get(configuration, environment): + return LishPlugin(configuration, environment) + + # TODO: check for all required configuration options and set defaults if needed. class LishPlugin: diff --git a/linspector/services/dummy.py b/linspector/services/dummy.py index ef4b25e..0d09a75 100644 --- a/linspector/services/dummy.py +++ b/linspector/services/dummy.py @@ -26,6 +26,10 @@ from logging import getLogger logger = getLogger('linspector') +def get(configuration, environment): + return DummyService(configuration, environment) + + # TODO: check for all required configuration options and set defaults if needed. class DummyService: diff --git a/linspector/services/fritzboxuplink.py b/linspector/services/fritzboxuplink.py index d9a589e..defad84 100644 --- a/linspector/services/fritzboxuplink.py +++ b/linspector/services/fritzboxuplink.py @@ -26,6 +26,10 @@ from logging import getLogger logger = getLogger('linspector') +def get(configuration, environment): + return FritzboxUplinkService(configuration, environment) + + # TODO: check for all required configuration options and set defaults if needed. class FritzboxUplinkService: diff --git a/linspector/services/httpkeyword.py b/linspector/services/httpkeyword.py index f440290..8794a92 100644 --- a/linspector/services/httpkeyword.py +++ b/linspector/services/httpkeyword.py @@ -26,6 +26,10 @@ from logging import getLogger logger = getLogger('linspector') +def get(configuration, environment): + return HTTPKeywordService(configuration, environment) + + # TODO: check for all required configuration options and set defaults if needed. class HTTPKeywordService: diff --git a/linspector/services/ping.py b/linspector/services/ping.py index 30f4668..95cbdcf 100644 --- a/linspector/services/ping.py +++ b/linspector/services/ping.py @@ -26,6 +26,10 @@ from logging import getLogger logger = getLogger('linspector') +def get(configuration, environment): + return PingService(configuration, environment) + + # TODO: check for all required configuration options and set defaults if needed. class PingService: diff --git a/linspector/services/port.py b/linspector/services/port.py index 99daa45..28f7568 100644 --- a/linspector/services/port.py +++ b/linspector/services/port.py @@ -26,6 +26,10 @@ from logging import getLogger logger = getLogger('linspector') +def get(configuration, environment): + return PortService(configuration, environment) + + # TODO: check for all required configuration options and set defaults if needed. class PortService: diff --git a/linspector/services/random.py b/linspector/services/random.py index 1d4e324..7c53708 100644 --- a/linspector/services/random.py +++ b/linspector/services/random.py @@ -26,6 +26,10 @@ from logging import getLogger logger = getLogger('linspector') +def get(configuration, environment): + return RandomService(configuration, environment) + + # TODO: check for all required configuration options and set defaults if needed. class RandomService: diff --git a/linspector/services/shell.py b/linspector/services/shell.py index d81cc6a..b0b1d1f 100644 --- a/linspector/services/shell.py +++ b/linspector/services/shell.py @@ -26,6 +26,10 @@ from logging import getLogger logger = getLogger('linspector') +def get(configuration, environment): + return ShellService(configuration, environment) + + # TODO: check for all required configuration options and set defaults if needed. class ShellService: diff --git a/linspector/services/snmpget.py b/linspector/services/snmpget.py index 9b7b33b..b43acc6 100644 --- a/linspector/services/snmpget.py +++ b/linspector/services/snmpget.py @@ -26,6 +26,10 @@ from logging import getLogger logger = getLogger('linspector') +def get(configuration, environment): + return SNMPGetService(configuration, environment) + + # TODO: check for all required configuration options and set defaults if needed. class SNMPGetService: diff --git a/linspector/services/speedtest.py b/linspector/services/speedtest.py index 3997b4b..6aa63ee 100644 --- a/linspector/services/speedtest.py +++ b/linspector/services/speedtest.py @@ -30,6 +30,10 @@ from logging import getLogger logger = getLogger('linspector') +def get(configuration, environment): + return SpeedtestService(configuration, environment) + + # TODO: check for all required configuration options and set defaults if needed. class SpeedtestService: diff --git a/linspector/services/ssh.py b/linspector/services/ssh.py index 08935a3..91fb22e 100644 --- a/linspector/services/ssh.py +++ b/linspector/services/ssh.py @@ -26,6 +26,10 @@ from logging import getLogger logger = getLogger('linspector') +def get(configuration, environment): + return SSHService(configuration, environment) + + # TODO: check for all required configuration options and set defaults if needed. class SSHService: diff --git a/linspector/services/tcpconnect.py b/linspector/services/tcpconnect.py index 66ca5b4..2a564ec 100644 --- a/linspector/services/tcpconnect.py +++ b/linspector/services/tcpconnect.py @@ -26,6 +26,10 @@ from logging import getLogger logger = getLogger('linspector') +def get(configuration, environment): + return TCPConnectService(configuration, environment) + + # TODO: check for all required configuration options and set defaults if needed. class TCPConnectService: diff --git a/linspector/services/uptime.py b/linspector/services/uptime.py index 507a63f..5065fac 100644 --- a/linspector/services/uptime.py +++ b/linspector/services/uptime.py @@ -26,6 +26,10 @@ from logging import getLogger logger = getLogger('linspector') +def get(configuration, environment): + return UptimeService(configuration, environment) + + # TODO: check for all required configuration options and set defaults if needed. class UptimeService: diff --git a/linspector/tasks/filelogger.py b/linspector/tasks/filelogger.py index 10442af..be4dec7 100644 --- a/linspector/tasks/filelogger.py +++ b/linspector/tasks/filelogger.py @@ -26,6 +26,10 @@ from logging import getLogger logger = getLogger('linspector') +def get(configuration, environment): + return FileLoggerTask(configuration, environment) + + # TODO: check for all required configuration options and set defaults if needed. class FileLoggerTask: diff --git a/linspector/tasks/mariadb.py b/linspector/tasks/mariadb.py index 1ea8968..e8988d7 100644 --- a/linspector/tasks/mariadb.py +++ b/linspector/tasks/mariadb.py @@ -26,6 +26,10 @@ from logging import getLogger logger = getLogger('linspector') +def get(configuration, environment): + return MariaDBTask(configuration, environment) + + # TODO: check for all required configuration options and set defaults if needed. class MariaDBTask: diff --git a/linspector/tasks/redis.py b/linspector/tasks/redis.py index bb3a8b2..6737ba6 100644 --- a/linspector/tasks/redis.py +++ b/linspector/tasks/redis.py @@ -26,6 +26,10 @@ from logging import getLogger logger = getLogger('linspector') +def get(configuration, environment): + return RedisTask(configuration, environment) + + # TODO: check for all required configuration options and set defaults if needed. class RedisTask: diff --git a/linspector/tasks/sqlite.py b/linspector/tasks/sqlite.py index afc09e8..e9e6100 100644 --- a/linspector/tasks/sqlite.py +++ b/linspector/tasks/sqlite.py @@ -26,6 +26,10 @@ from logging import getLogger logger = getLogger('linspector') +def get(configuration, environment): + return SQLiteTask(configuration, environment) + + # TODO: check for all required configuration options and set defaults if needed. class SQLiteTask: