From 0b618b59e9502d2df0af94c370ac977474c26ceb Mon Sep 17 00:00:00 2001
From: Stefano Alberto Russo <stefano.russo@gmail.com>
Date: Tue, 16 Nov 2021 01:40:19 +0100
Subject: [PATCH] Fixed bug in starting tasks on the internal computing
 resource on port 22. Removed old internal computing resource volumes.

---
 .../rosetta/core_app/computing_managers.py    | 21 ++++++++++++-------
 1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/services/webapp/code/rosetta/core_app/computing_managers.py b/services/webapp/code/rosetta/core_app/computing_managers.py
index 0ab1aff..6fe2a40 100644
--- a/services/webapp/code/rosetta/core_app/computing_managers.py
+++ b/services/webapp/code/rosetta/core_app/computing_managers.py
@@ -94,18 +94,21 @@ class InternalSingleNodeComputingManager(SingleNodeComputingManager):
         # Init run command #--cap-add=NET_ADMIN --cap-add=NET_RAW
         run_command  = 'sudo docker run  --network=rosetta_default --name {}'.format(task.uuid)
 
+        if task.container.interface_port == 22:
+            if not task.container.supports_custom_interface_port:
+                raise ErrorMessage('This task container use the port number 22 which often has issues on the internal computing resource, and does not support custom interface ports, so we cannot run it.')
+            else:
+                task_port = 2222
+                run_command += ' -eBASE_PORT={} '.format(task_port)
+        else:
+            task_port = task.container.interface_port
+
         # Pass if any
         if not task.requires_proxy and task.password:
             run_command += ' -eAUTH_PASS={} '.format(task.password)
 
         # User data volume
-        run_command += ' -v {}/user-{}:/data'.format(settings.LOCAL_USER_DATA_DIR, task.user.id)
-
-        # Set registry string
-        #if task.container.registry == 'local':
-        #    registry_string = 'localhost:5000/'
-        #else:
-        #    registry_string  = 'docker.io/'
+        #run_command += ' -v {}/user-{}:/data'.format(settings.LOCAL_USER_DATA_DIR, task.user.id)
 
         # Host name, image entry command
         run_command += ' -h task-{} -d -t {}/{}:{}'.format(task.uuid, task.container.registry, task.container.image, task.container.tag)
@@ -131,10 +134,12 @@ class InternalSingleNodeComputingManager(SingleNodeComputingManager):
             task.id = tid
             task.status = TaskStatuses.running
             task.interface_ip = task_ip
-            task.interface_port = task.container.interface_port
+            task.interface_port = task_port
 
             # Save
             task.save()
+        
+        # Wait 10 seconds to see if the task is still up...
 
 
     def _stop_task(self, task):
-- 
GitLab