From 3ca02dfe6386df759d4a1759f7a7a0c55b5f5f03 Mon Sep 17 00:00:00 2001 From: Chelsea486MHz Date: Thu, 4 Jan 2024 16:20:27 +0100 Subject: [PATCH] Implemented registration --- compute/app.py | 29 +++++++++++++++++++++-------- deployments/docker-compose.yml | 13 +++++++------ manager/app.py | 8 ++++---- 3 files changed, 32 insertions(+), 18 deletions(-) diff --git a/compute/app.py b/compute/app.py index b116f88..a44415f 100644 --- a/compute/app.py +++ b/compute/app.py @@ -5,6 +5,19 @@ # Initialize Flask app = Flask(__name__) +# Register to the manager node +manager = os.environ.get('MANAGER_ENDPOINT') +print('Attempting registration with manager node at {}...'.format(manager)) +response = requests.post('{}/api/manager/register'.format(manager), + headers={'Authorization': os.environ.get('TOKEN')}, + json={'compute_endpoint': os.environ.get('ENDPOINT')}, + timeout=5) +if not response.json().get('success'): + print('FATAL: Failed to register with the manager node.') + exit(1) +else: + print('Registered.') + def authenticate(request, type='any'): # Convert type to integer @@ -61,56 +74,56 @@ def api_common_type(): def api_compute_update(): if not authenticate(request, 'manager'): return 'Unauthorized', 401 - return response + return jsonify({'success': True}), 200 @app.route('/api/compute/configure', methods=['POST']) def api_compute_configure(): if not authenticate(request, 'manager'): return 'Unauthorized', 401 - return response + return jsonify({'success': True}), 200 @app.route('/api/compute/assign', methods=['POST']) def api_compute_assign(): if not authenticate(request, 'manager'): return 'Unauthorized', 401 - return response + return jsonify({'success': True}), 200 @app.route('/api/compute/potential/gravity', methods=['POST']) def api_compute_potential_gravity(): if not authenticate(request, 'manager'): return 'Unauthorized', 401 - return response + return jsonify({'success': True}), 200 @app.route('/api/compute/potential/electrostatic', methods=['POST']) def api_compute_potential_electrostatic(): if not authenticate(request, 'manager'): return 'Unauthorized', 401 - return response + return jsonify({'success': True}), 200 @app.route('/api/compute/force/gravity', methods=['POST']) def api_compute_force_gravity(): if not authenticate(request, 'manager'): return 'Unauthorized', 401 - return response + return jsonify({'success': True}), 200 @app.route('/api/compute/force/electrostatic', methods=['POST']) def api_compute_force_electrostatic(): if not authenticate(request, 'manager'): return 'Unauthorized', 401 - return response + return jsonify({'success': True}), 200 @app.route('/api/compute/integrate', methods=['POST']) def api_compute_integrate(): if not authenticate(request, 'manager'): return 'Unauthorized', 401 - return response + return jsonify({'success': True}), 200 if __name__ == '__main__': diff --git a/deployments/docker-compose.yml b/deployments/docker-compose.yml index 2bcc146..1f2841a 100644 --- a/deployments/docker-compose.yml +++ b/deployments/docker-compose.yml @@ -8,15 +8,16 @@ services: - auth - manager environment: - AUTH_ENDPOINT: 'http://auth:5000' - MANAGER_ENDPOINT: 'http://manager:5000' - TOKEN: 'Kq5AfYtpYkcGbPnm0z2I_SIRGRem-zKmXA5rnPguUIB7y2DNQTW1KIYouV9IaHH6' + ENDPOINT: 'http://compute:5000' # How this node can be reached + AUTH_ENDPOINT: 'http://auth:5000' # Where to reach the Stargazer authentication gateway + MANAGER_ENDPOINT: 'http://manager:5000' # Where to reach the Stargazer manager + TOKEN: 'Kq5AfYtpYkcGbPnm0z2I_SIRGRem-zKmXA5rnPguUIB7y2DNQTW1KIYouV9IaHH6' # Compute token unique to this node used to authenticate with the manager auth: image: chelsea486mhz/stargazer-auth restart: unless-stopped environment: - USER_TOKEN: 'DrERUGbWdDltQmkii0Mswney_dgDnUKFAwMC-TYB-C2zMnOuQeHgPtsHhBWzgoIg' + USER_TOKEN: 'DrERUGbWdDltQmkii0Mswney_dgDnUKFAwMC-TYB-C2zMnOuQeHgPtsHhBWzgoIg' # User token manager: image: chelsea486mhz/stargazer-manager @@ -24,5 +25,5 @@ services: depends_on: - auth environment: - AUTH_ENDPOINT: 'http://auth:5000' - TOKEN: '3gEy0rWMRqXfJw9aLKzzSuhXggxGTLL4bYsTt-VdmFcmOWQ_ZCwTswvZM6kNVg2r' \ No newline at end of file + AUTH_ENDPOINT: 'http://auth:5000' # Where to reach the Stargazer authentication gateway + TOKEN: '3gEy0rWMRqXfJw9aLKzzSuhXggxGTLL4bYsTt-VdmFcmOWQ_ZCwTswvZM6kNVg2r' # Manager token unique to this node \ No newline at end of file diff --git a/manager/app.py b/manager/app.py index cd95f28..49db08e 100644 --- a/manager/app.py +++ b/manager/app.py @@ -62,28 +62,28 @@ def api_common_type(): def api_manager_register(): if not authenticate(request, 'compute'): return 'Unauthorized', 401 - return response + return jsonify({'success': True}), 200 @app.route('/api/manager/unregister', methods=['POST']) def api_manager_unregister(): if not authenticate(request, 'compute'): return 'Unauthorized', 401 - return response + return jsonify({'success': True}), 200 @app.route('/api/manager/configure', methods=['POST']) def api_manager_configure(): if not authenticate(request, 'user'): return 'Unauthorized', 401 - return response + return jsonify({'success': True}), 200 @app.route('/api/manager/simulate', methods=['POST']) def api_manager_simulate(): if not authenticate(request, 'user'): return 'Unauthorized', 401 - return response + return jsonify({'success': True}), 200 if __name__ == '__main__':