Skip to content
Snippets Groups Projects
Commit 8c164e57 authored by REIG Julien's avatar REIG Julien
Browse files

Merge branch 'com-between-node' into 'master'

Fix: Connection between nodes

See merge request chephren/mock-cheops!12
parents f2745000 0c8cc106
No related branches found
No related tags found
1 merge request!12Fix: Connection between nodes
......@@ -42,7 +42,7 @@ class ResourceResource(Resource):
update_state(Status.ONLINE, node_address)
return {"message": "Resource not found"}, 404
request_addresses = list(map(normalize_url, request_addresses))
request_addresses = list(map(lambda x: normalize_url(x, True), request_addresses))
if len(request_addresses) > 0 and node_address in request_addresses:
request_addresses.remove(node_address)
......@@ -63,7 +63,7 @@ class ResourceResource(Resource):
update_state(Status.UPDATING, node_address)
request_addresses: list[str] = request.get_json().get('addresses', [])
request_addresses = list(map(normalize_url, request_addresses))
request_addresses = list(map(lambda x: normalize_url(x, True), request_addresses))
resource = get_resource(id)
if resource is None:
......
......@@ -34,7 +34,7 @@ class ResourcesResource(Resource):
request_command: Optional[str] = request.get_json().get('command')
request_name: Optional[str] = request.get_json().get('name')
request_addresses: list[str] = request.get_json().get('addresses', [])
request_addresses = list(map(normalize_url, request_addresses))
request_addresses = list(map(lambda x: normalize_url(x, True), request_addresses))
if request_command is None:
update_state(Status.ONLINE, node_address)
......@@ -44,7 +44,7 @@ class ResourcesResource(Resource):
update_state(Status.ONLINE, node_address)
return {"message": "name is missing"}, 400
if (len(request_addresses) != 0 and node_address in request_addresses):
if len(request_addresses) != 0 and node_address in request_addresses:
request_addresses.remove(node_address)
resource = ResourceModel(
......
......@@ -27,19 +27,20 @@ class StartNode(Resource):
return {"message": "Node already started."}, 403
else:
node_address = normalize_url(request.host_url)
node_address_intern = normalize_url(request.host_url, True)
update_state(Status.STARTING, node_address)
resources = get_resource_queue(node_address)
resources = get_resource_queue(node_address_intern)
for resource in resources:
insert_resource(resource)
clear_resource_queue(node_address)
clear_resource_queue(node_address_intern)
commands = get_command_queue(node_address)
commands = get_command_queue(node_address_intern)
for command in commands:
resource_id = command['resource_id']
cm = command['command']
insert_command(resource_id, cm)
clear_command_queue(node_address)
clear_command_queue(node_address_intern)
time.sleep(5)
update_state(Status.ONLINE, node_address)
......
......@@ -8,6 +8,8 @@ services:
- .:/app
environment:
- NODE_FILE=node1
networks:
- my_network
node2:
build: .
......@@ -17,6 +19,8 @@ services:
- .:/app
environment:
- NODE_FILE=node2
networks:
- my_network
node3:
build: .
......@@ -26,6 +30,8 @@ services:
- .:/app
environment:
- NODE_FILE=node3
networks:
- my_network
node4:
build: .
......@@ -35,3 +41,8 @@ services:
- .:/app
environment:
- NODE_FILE=node4
networks:
- my_network
networks:
my_network:
\ No newline at end of file
......@@ -8,10 +8,25 @@ from models.command import Command
from models.resource import Resource
from utils.database_utils import insert_command_queue, insert_resource_queue
nodes = {
'http://localhost:3000/': 'http://node1:3000/',
'http://localhost:3001/': 'http://node2:3000/',
'http://localhost:3002/': 'http://node3:3000/',
'http://localhost:3003/': 'http://node4:3000/',
}
def normalize_url(url: str):
def normalize_url(url: str, inter: bool = False):
parsed_url = urlparse(url)
return parsed_url.scheme + "://" + parsed_url.netloc + "/"
format = parsed_url.scheme + "://" + parsed_url.netloc + "/"
if inter:
url = nodes.get(url,None)
if url is None:
print('normalize intern', url, file=sys.stderr)
return
return url
else:
return format
def send_resource_to_other_nodes(addresses: list[str], resource: Resource):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment