Lot of refactoring to prepare project renaming to my old and similiar project linspector

This commit is contained in:
Johannes Findeisen 2022-09-24 23:53:06 +02:00
commit 6ff165e761
29 changed files with 99 additions and 59 deletions

View file

@ -15,6 +15,23 @@ nearly does not exist.
## Development
### To do
**Everything!** :) Just outlining the idea and creating code and structure skeletons
at the moment!
### Ideas
- MAYBE rename this project to linspector and see it as an update. This is a nice idea
because [Linspector](https://hanez.org/linspector/) has it's GitHub organisation,
domain etc. And all I do here is
a better Linspector. Even all nice and useful features and ideas from Linspector but
also uplink should be reimplemented here.
- Think about adding [APScheduler](https://pypi.org/project/APScheduler/) for
scheduling execution of the monitors instead of a self constructed thread
structure... was very nice to get the job done in Linspector.
### Manifest
- All of this project **must be MIT licensed**. When using 3rd party libraries make
@ -27,11 +44,6 @@ nearly does not exist.
- Inline comment should be all lowercase. Descriptions and documentation comments
must be natural language.
### To do
**Everything!** :) Just outlining the idea and creating code and structure skeletons
at the moment!
### Version numbering
According to: [https://wiki.unixpeople.org/linux_kernel_version_numbering](https://wiki.unixpeople.org/linux_kernel_version_numbering)

View file

@ -27,14 +27,16 @@ import sys
from logging import getLogger
from monipy.configuration import Configuration
from monipy.environment import Environment
from monipy.monipyd import Monipyd
from monipy.core.configuration import Configuration
from monipy.core.environment import Environment
from monipy.core.monipy import Monipy
# will only be used when running in daemon mode.
# from monipy.core.monipyd import Monipyd
__version__ = '0.1'
__author__ = 'Johannes Findeisen <you@hanez.org>'
logger = getLogger('monipyd')
logger = getLogger('monipy')
def parse_args():
@ -62,8 +64,8 @@ def main():
sys.exit(1)
environment = Environment(configuration)
monipyd = Monipyd(configuration, environment)
monipy = Monipy(configuration, environment)
# monipyd = Monipyd(configuration, environment)
if __name__ == '__main__':

View file

@ -43,4 +43,5 @@ speedtest_url = https://go.microsoft.com/fwlink/?Linkid=850641
; if types can or must be configured before use; for now no use case seen.
; every type can be configured in it's own ini file in etc/types; there no type name as prefix is not needed.
;[types]
[types]
foo = bar

View file

@ -27,9 +27,11 @@ import os
from logging import getLogger
logger = getLogger('monipyd')
logger = getLogger('monipy')
# TODO: check for all required configuration options and set defaults if needed. do this only for
# options in the "monipy" section of monipy.ini.
class Configuration:
def __init__(self, configuration_path):
@ -74,3 +76,11 @@ class Configuration:
return self.__configuration.get(section, option)
else:
return None
# this function can be called by notifications, plugins and types to set a default value if not
# configured. since all objects have access to the configuration this should not be done from
# any other place because it can break monipy.
# maybe it can be used for dynamic runtime configuration later but need to think about it.
def set_option(self, section, option, value):
if not self.__configuration.has_option(section, option):
self.__configuration.set(section, option, value)

View file

@ -29,7 +29,7 @@ import time
from logging import getLogger
logger = getLogger('monipyd')
logger = getLogger('monipy')
class Daemon:

View file

@ -23,11 +23,14 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
from logging import getLogger
logger = getLogger('monipyd')
logger = getLogger('monipy')
class Environment:
"""
Object for storing environment variables at runtime. These variables must not affect the
stability of monipy.
"""
def __init__(self, configuration):
self.__configuration = configuration

View file

@ -23,7 +23,7 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
from logging import getLogger
logger = getLogger('monipyd')
logger = getLogger('monipy')
# The logger can be used by any monitor to write arbitrary data to any arbitrary place.

View file

@ -23,7 +23,7 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
from logging import getLogger
logger = getLogger('monipyd')
logger = getLogger('monipy')
class Model:

View file

@ -23,7 +23,7 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
from logging import getLogger
logger = getLogger('monipyd')
logger = getLogger('monipy')
class Monipy:

View file

@ -24,12 +24,13 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
from logging import getLogger
from monipy.daemon import Daemon
logger = getLogger('monipyd')
logger = getLogger('monipy')
# TODO: check for all required configuration options and set defaults if needed.
class Monipyd(Daemon):
def __init__(self, configuration, environment):
super().__init__('/tmp/uplink.pid')
super().__init__(configuration.get_option('monipy', 'pid_file'))
self.__configuration = configuration
self.__environment = environment

View file

@ -23,7 +23,7 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
from logging import getLogger
logger = getLogger('monipyd')
logger = getLogger('monipy')
class Monitor:

View file

@ -23,9 +23,12 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
from logging import getLogger
logger = getLogger('monipyd')
logger = getLogger('monipy')
# monitors could, should be added (and maybe changed) at runtime to add new monitors without
# restarting the daemon. maybe add a reset function to each monitor to reset the monitor at runtime
# when changed dynamically.
class Monitors:
def __init__(self, configuration, environment):

View file

@ -23,7 +23,7 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
from logging import getLogger
logger = getLogger('monipyd')
logger = getLogger('monipy')
class Notification:

View file

@ -23,7 +23,7 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
from logging import getLogger
logger = getLogger('monipyd')
logger = getLogger('monipy')
class Notifications:

View file

@ -23,7 +23,7 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
from logging import getLogger
logger = getLogger('monipyd')
logger = getLogger('monipy')
class Plugin:

View file

@ -23,7 +23,7 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
from logging import getLogger
logger = getLogger('monipyd')
logger = getLogger('monipy')
class Plugins:

View file

@ -23,7 +23,7 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
from logging import getLogger
logger = getLogger('monipyd')
logger = getLogger('monipy')
class Type:

View file

@ -23,7 +23,7 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
from logging import getLogger
logger = getLogger('monipyd')
logger = getLogger('monipy')
class Types:

View file

@ -22,7 +22,7 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""
from logging import getLogger
from monipy.notications.notification import Notification
from monipy.core.notification import Notification
logger = getLogger('monipyd')

View file

@ -22,9 +22,9 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""
from logging import getLogger
from monipy.notications.notification import Notification
from monipy.core.notification import Notification
logger = getLogger('monipyd')
logger = getLogger('monipy')
class SmsNotification(Notification):

View file

@ -25,11 +25,12 @@ import cherrypy
import json
from logging import getLogger
from monipy.plugins.plugin import Plugin
from monipy.core.plugin import Plugin
logger = getLogger('monipyd')
logger = getLogger('monipy')
# TODO: check for all required configuration options and set defaults if needed.
class HTTPServerPlugin(Plugin):
def __init__(self, configuration, environment):

View file

@ -22,11 +22,12 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""
from logging import getLogger
from monipy.plugins.plugin import Plugin
from monipy.core.plugin import Plugin
logger = getLogger('monipyd')
logger = getLogger('monipy')
# TODO: check for all required configuration options and set defaults if needed.
class MariadbPlugin(Plugin):
def __init__(self, configuration, environment):

View file

@ -22,11 +22,12 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""
from logging import getLogger
from monipy.plugins.plugin import Plugin
from monipy.core.plugin import Plugin
logger = getLogger('monipyd')
logger = getLogger('monipy')
# TODO: check for all required configuration options and set defaults if needed.
class RedisPlugin(Plugin):
def __init__(self, configuration, environment):

View file

@ -22,11 +22,12 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""
from logging import getLogger
from monipy.plugins.plugin import Plugin
from monipy.core.plugin import Plugin
logger = getLogger('monipyd')
# TODO: check for all required configuration options and set defaults if needed.
class SqlitePlugin(Plugin):
def __init__(self, configuration, environment):

View file

@ -22,12 +22,13 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""
from logging import getLogger
from monipy.types.type import Type
from monipy.core.monitor import Monitor
logger = getLogger('monipyd')
logger = getLogger('monipy')
class FritzboxType(Type):
# TODO: check for all required configuration options and set defaults if needed.
class FritzboxMonitor(Monitor):
def __init__(self, configuration, environment):
super().__init__(configuration, environment)

View file

@ -22,12 +22,13 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""
from logging import getLogger
from monipy.types.type import Type
from monipy.core.monitor import Monitor
logger = getLogger('monipyd')
logger = getLogger('monipy')
class PingType(Type):
# TODO: check for all required configuration options and set defaults if needed.
class PingMonitor(Monitor):
def __init__(self, configuration, environment):
super().__init__(configuration, environment)

View file

@ -22,12 +22,13 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""
from logging import getLogger
from monipy.types.type import Type
from monipy.core.monitor import Monitor
logger = getLogger('monipyd')
logger = getLogger('monipy')
class PortType(Type):
# TODO: check for all required configuration options and set defaults if needed.
class PortType(Monitor):
def __init__(self, configuration, environment):
super().__init__(configuration, environment)

View file

@ -27,12 +27,13 @@ import time
from logging import getLogger
from monipy.types.type import Type
from monipy.core.monitor import Monitor
logger = getLogger('monipyd')
logger = getLogger('monipy')
class SpeedtestType(Type):
# TODO: check for all required configuration options and set defaults if needed.
class SpeedtestMonitor(Monitor):
def __init__(self, configuration, environment):
super().__init__(configuration, environment)