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

create ping endpoint

parent b3bfb811
Branches
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