Skip to content
Snippets Groups Projects
Commit 35cdede9 authored by Stefano Alberto Russo's avatar Stefano Alberto Russo
Browse files

Fixed issue in checking task interface status on the connect view.

parent 15054114
Branches
No related tags found
No related merge requests found
...@@ -1133,27 +1133,41 @@ def task_connect(request): ...@@ -1133,27 +1133,41 @@ def task_connect(request):
# Ensure that the tunnel and proxy are set up # Ensure that the tunnel and proxy are set up
setup_tunnel_and_proxy(task) setup_tunnel_and_proxy(task)
# Set default interface status as unknown
task.interface_status = 'unknown'
# Check if task interface is up # Check if task interface is up
if task.status == 'running': if task.status == 'running':
logger.debug('Checking if task interface is running by trying to establish connection via local tunnel on port "{}"'.format(task.tcp_tunnel_port)) logger.debug('Checking if task interface is running by trying to establish connection via local tunnel on port "{}"'.format(task.tcp_tunnel_port))
s = socket.socket()
if task.container.interface_protocol.startswith('http'):
try: try:
s.settimeout(1) if task.requires_tcp_tunnel:
s.connect(('127.0.0.1', task.tcp_tunnel_port)) requests.get('{}://localhost:{}'.format(task.container.interface_protocol, task.tcp_tunnel_port), timeout=3)
# Not necessary, we just check that the container interfcae is up
#if not s.recv(10):
# logger.debug('No data read from socket')
# raise Exception('Could not read any data from socket')
except Exception:
logger.debug('Could not connect to task interface')
task.interface_status = 'unknown'
else: else:
logger.debug('task interface is answering') requests.get('{}://{}:{}'.format(task.container.interface_protocol, task.interface_ip, task.interface_port), timeout=3)
logger.debug('Task interface is answering')
task.interface_status = 'running' task.interface_status = 'running'
finally: except Exception as e:
s.close() logger.debug('Could not connect to task interface ({})'.format(e))
else: else:
task.interface_status = 'unknown' pass
# # TODO: the following raises a TimeoutError even if the connection is active and with requests work. Why?
# with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
# s.settimeout(3)
# try:
# s.connect(('localhost', task.tcp_tunnel_port))
# if not s.recv(10):
# logger.debug('No data read from socket')
# raise Exception('Could not read any data from socket')
# except Exception as e:
# logger.debug('Could not connect to task interface via socket ({})'.format(e))
# task.interface_status = 'unknown'
# else:
# logger.debug('Task interface is answering via socket')
# task.interface_status = 'running'
data ={} data ={}
data['task'] = task data['task'] = task
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment