diff --git a/app.py b/app.py index 6d23bc4..aef71e6 100644 --- a/app.py +++ b/app.py @@ -1,4 +1,7 @@ #!/usr/bin/env python3 +""" +This is the top level module, containing the main application. Launching this file will launch the scheduler part of the consumer application. +""" import sentry_sdk import time import os @@ -8,10 +11,6 @@ from redis_super_storage import RedisSuperStorage from communicators import ConsumerCommunicator, ProducerCommunicator from ip_watchdog import IPWatchdog -""" -Scheduler -""" - __author__ = "@kocsisr" __copyright__ = "Copyright 2020, GoldenPogácsa Team" __module_name__ = "app" @@ -20,13 +19,33 @@ __version__text__ = "1" sentry_sdk.init("https://0a106e104e114bc9a3fa47f9cb0db2f4@sentry.kmlabz.com/10") -def get_initial_ip_list(): +def get_initial_ip_list() -> list: + """ + This method is used to parse the content of INITIAL_SERVERS environment variable. + The contents of this variable is a list of ip addresses separated by commas. + This mehod returns a Python native `list` object containing the addreseses provided. + + :return: A list of ip addresses provided by the environmental variable + """ ip_list = os.environ['INITIAL_SERVERS'].split(',') logging.debug('Initial ip list ' + ", ".join(ip_list)) return ip_list def main(): + """ + This is the main method of the scheduler application. + + This method does basically the followings: + * Sets up logging + * Creates the RedisSuperStorage object (connecting to Redis database) + * Sets up communicators and IP watchdog + * Performs an initial synchronization to all other consumers. + * Starts the main loop which does roughly the following: + * Syncrhronizes with all other consumers + * Check if ip address changed. If yes, then push updates to all producers. + * Wait `RUN_INTERVAL` seconds (provided by envvar) + """ # set logging preferences logging.basicConfig(filename='', level=logging.DEBUG) diff --git a/communicators.py b/communicators.py index 0d8f910..edb84f0 100644 --- a/communicators.py +++ b/communicators.py @@ -1,4 +1,8 @@ #!/usr/bin/env python3 +""" +This module contains the classes used for communicating with other consumers as well as the producers themselves. +""" + import os import logging import requests diff --git a/ip_watchdog.py b/ip_watchdog.py index b2126a6..a05bfef 100644 --- a/ip_watchdog.py +++ b/ip_watchdog.py @@ -1,4 +1,7 @@ #!/usr/bin/env python3 +""" +This module contains the IPWatchdog class which is responsible for detecting ip address changes on the host machine. +""" from typing import Tuple import logging import socket diff --git a/redis_super_storage.py b/redis_super_storage.py index 46bc10c..1ea528a 100644 --- a/redis_super_storage.py +++ b/redis_super_storage.py @@ -1,4 +1,7 @@ #!/usr/bin/env python3 +""" +This module contains the RedisSuperStorage module which is responsible to store and load the data structure used by the constumer. +""" import redis import os import json