Skip to content
Snippets Groups Projects
Unverified Commit 82e07a03 authored by REIG Julien's avatar REIG Julien
Browse files

create ping endpoint

parent b3bfb811
No related branches found
No related tags found
1 merge request!11create ping endpoint
import time
from flask import Blueprint, request
from flask_restful import Api, Resource
from consts.status import Status, response_offline
from utils.database_utils import get_state
from utils.http_utils import normalize_url, ping
state_controller = Blueprint('state_controller', __name__)
api = Api(state_controller)
class PingController(Resource):
def get(self):
if get_state() == Status.OFFLINE:
return response_offline, 403
node_addresses = request.headers.getlist("addresses")
if (node_addresses is None or len(node_addresses) == 0):
return {"message": "No addresses provided."}, 400
node_addresses = list(map(normalize_url, node_addresses))
results = ping(node_addresses)
return results, 200
api.add_resource(PingController, '/ping')
......@@ -3,8 +3,8 @@ import sys
from urllib.parse import urlparse
import requests
from models.command import Command
from models.command import Command
from models.resource import Resource
from utils.database_utils import insert_command_queue, insert_resource_queue
......@@ -54,3 +54,20 @@ def send_command_to_other_nodes(addresses: list[str], resource_id: str, command:
except Exception as e:
print('Address', address, e, file=sys.stderr)
insert_command_queue(address, resource_id, command)
def ping(addresses: list[str]):
results = {}
for address in addresses:
try:
result = requests.get(f"{address}/api/ping")
if result.status_code != 200:
print('Address', address, 'Status code:',
result.status_code, file=sys.stderr)
results[address] = result.status_code == 200
except requests.exceptions.RequestException as e:
print('Address', address, e, file=sys.stderr)
results[address] = False
except Exception as e:
print('Address', address, e, file=sys.stderr)
results[address] = False
return results
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment