old_console/devices/services/endpoint/endpoint_get_status.py
2024-11-02 14:12:45 +03:00

43 lines
1.5 KiB
Python

from devices.models.endpoint_device import EndpointModel
from devices.services.endpoint.endpoint_redis import RedisInterface
def get_status(request, pk: int) -> dict:
""" Function to respond with current Endpoint states. Current response states are:
config_errors,
request_config
:param request: request instance
:param pk: Corresponding Endpoint pk
:return: JSON response with endpoint configuration errors
"""
try:
endpoint = EndpointModel.objects.get(pk=pk)
except EndpointModel.DoesNotExist:
return {'status': 'error', 'reason': 'no such endpoint record'}
return {
'endpoint_config_errors': endpoint.config_errors,
'is_requested_config_correct': endpoint.is_requested_config_correct
}
class EndpointStatusService:
"""Service return endpoint connect status"""
def __init__(self, endpoint: EndpointModel):
if isinstance(endpoint, EndpointModel):
self.endpoint = endpoint
else:
self.endpoint = EndpointModel.objects.get(pk=endpoint.pk)
self.redis = RedisInterface()
def get_status(self) -> dict:
endpoint_status = {}
if self.redis.get_keepalive(self.endpoint.pk):
if self.endpoint.config_errors:
endpoint_status['status'] = 'config_errors'
endpoint_status['config_errors'] = self.endpoint.incorrect_settings
else:
endpoint_status['status'] = 'online'
else:
endpoint_status['status'] = 'offline'
return endpoint_status