Fixed comment format (now renders properly)
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user