Fixed comment format (now renders properly)
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2020-04-08 18:17:39 +02:00
parent ccf6bc0fff
commit dfc3b73673
5 changed files with 88 additions and 55 deletions

View File

@@ -1,12 +1,13 @@
#!/usr/bin/env python
"""
Consumer locator module, that manages the list of consumers.
"""
import datetime
from communicator import Communicator
import os
"""
Consumer locator module, that manages the list of consumers.
"""
__author__ = "@dscharnitzky"
__copyright__ = "Copyright 2020, GoldenPogácsa Team"
@@ -18,14 +19,16 @@ KNOWNCONSUMER = os.getenv("PRODUCER_KNOWNCONSUMER",'10.69.42.1')
class ConsumerLocator:
"""
Component responsible for managing the list of consumers. Requires an instance of :class:'communicator.Communicator'
Component responsible for managing the list of consumers. Requires an instance of :class:`communicator.Communicator`
"""
def __init__(self, uuid: str, communicator: Communicator):
"""Initializes the object.
Gets the known consumer's IP address from the PRODUCER_KNOWNCONSUMER envar.
:param: uuid: Not used
:param: communicator: the :class:'communicator.Communicator' instance that will be used for the low level
:param str uuid: Not used
:param communicator: the :class:'communicator.Communicator' instance that will be used for the low level
communication.
"""
self.consumerlist = [{"Host": KNOWNCONSUMER, "State": True, "LastOk": datetime.datetime.now()}]
@@ -34,9 +37,11 @@ class ConsumerLocator:
def learnconsumerlist(self) -> None:
""""Learns the list of consumers from the current consumer.
Calls :func:'~communicator.Communicator.didiscoveravailableconsumers', adds the learned consumers to the list
if are not present, and then calls :func:'~consumerlocator.ConsumerLocator.updateconsumerlist'
:return: None
Calls :func:`communicator.Communicator.didiscoveravailableconsumers`, adds the learned consumers to the list
if are not present, and then calls :func:`consumerlocator.ConsumerLocator.updateconsumerlist`
:returns: None
"""
recievedconsumerlist = self.communicator.discoveravailableconsumers()
if recievedconsumerlist is None:
@@ -54,8 +59,10 @@ class ConsumerLocator:
def updateconsumerlist(self) -> None:
""" Updates the consumer list based on their availability.
Marks for each consumer if they are available or not. If a consumer is not available for some time (1 hour),
the it will be deleted from the list.
:return: None
"""
removelist = []
@@ -72,9 +79,11 @@ class ConsumerLocator:
def updateconsumer(self):
"""If the current consumer is not available, checks all the consumers in the list and updates the current one.
Calls :func:'~consumerlocator.ConsumerLocator.checkcurrentconsumer' and if needed
:func:'~consumerlocator.ConsumerLocator.updateconsumerlist'. Sets the :class:'communicator.Communicator'
current instance with :func:'~communicator.Communicator.set_currentconsumer'.
Calls :func:`consumerlocator.ConsumerLocator.checkcurrentconsumer` and if needed
:func:`consumerlocator.ConsumerLocator.updateconsumerlist`. Sets the :class:`communicator.Communicator`
current instance with :func:`communicator.Communicator.set_currentconsumer`.
:return: the current consumer or None if there are no available customers at the moment.
"""
@@ -98,15 +107,15 @@ class ConsumerLocator:
return None
def getcurrentconsumer(self) -> str:
"""
Returns the currently selected consumer's IP address.
"""Returns the currently selected consumer's IP address.
:return: the current consumer
"""
return self.currentconsumer["Host"]
def checkcurrentconsumer(self) -> bool:
"""
Check the current consumer's health.
"""Check the current consumer's health.
:return: True if OK, False if fail
"""
if self.currentconsumer is None: