diff build_ctb_gene.py @ 29:b8ecf55d8987 draft

planemo upload for repository https://github.com/SANBI-SA/tools-sanbi-uwc.git commit a97b08e4a7c05855b6409588ff50d3716071dd80
author sanbi-uwc
date Mon, 23 May 2016 06:36:29 -0400
parents 4864d5866418
children 60aedbda386d
line wrap: on
line diff
--- a/build_ctb_gene.py	Mon May 23 03:36:17 2016 -0400
+++ b/build_ctb_gene.py	Mon May 23 06:36:29 2016 -0400
@@ -8,6 +8,7 @@
 import shutil
 import datetime
 import time
+import random
 from subprocess import check_call, check_output, CalledProcessError
 
 import logging
@@ -24,6 +25,7 @@
         # assert args != None
         self.args = args
         self.mount_point = None
+        self.docker_instance_name = "build_ctb_gene_" + str(random.randrange(0, 1000, 2))
 
     def build_ctb_gene(self):
         # cmdline_str = "build_ctb_gene goterms {}".format(self.args.input_file)
@@ -72,28 +74,27 @@
         except CalledProcessError:
             print("Error running docker stop build_ctb_gene", file=sys.stderr)
 
-    def docker_rm(self):
-        cmd_str = 'docker rm build_ctb_gene'
-        cmd = self.newSplit(cmd_str)
-        check_call(cmd)
-
     def docker_run(self):
         self.mount_point = "{}/neo4j/data".format(os.getcwd())
-        cmd_str = "docker run -d -p 7474:7474 -v {}:/data -e NEO4J_AUTH=none --name build_ctb_gene neo4j:2.3".format(
-            self.mount_point)
+
+        cmd_str = "docker run -d -P -v {}:/data -e NEO4J_AUTH=none --name {} thoba/neo4j_galaxy_ie".format(
+            self.mount_point, self.docker_instance_name)
         cmd = self.newSplit(cmd_str)
-        check_call(cmd)
+        try:
+            check_call(cmd)
+        except CalledProcessError:
+            print("Error running docker run by build_ctb_gene", file=sys.stderr)
 
-    def docker_container_check(self):
-        cmd_str = 'docker ps -a -f name=build_ctb_gene | grep build_ctb_gene'
-        output = False
+    def inspect_docker(self, cmd_str):
+        cmd_str = "docker inspect --format='{{(index (index .NetworkSettings.Ports {}) 0).HostPort}}' {}".format(
+            "7474/tcp", self.docker_instance_name
+        )
+        output = None
         try:
             output = check_output(cmd_str, shell=True)
         except CalledProcessError:
-            print("Error running docker container check", file=sys.stderr)
-        if output:
-            return True
-        return False
+            print("Error running get_docker_port by build_ctb_gene", file=sys.stderr)
+        return output
 
 
 def main():
@@ -105,13 +106,15 @@
     ctb_gene_runner = BuildCtbRunner(args)
 
     # boot up a neo4j docker container
-    if ctb_gene_runner.docker_container_check():
-        ctb_gene_runner.docker_stop()
-        ctb_gene_runner.docker_rm()
     ctb_gene_runner.docker_run()
 
+    # get the port of the docker container
+    cmd_str = 'docker inspect --format=\'{{(index (index .NetworkSettings.Ports "7474/tcp") 0).HostPort}}\' {}'.format(
+        ctb_gene_runner.docker_instance_name)
+
     # TODO: randomise the ports/names/mount_point and use the autokill image
-    export_cmd = "export NEO4J_REST_URL=http://localhost:7474/db/data/"
+    export_cmd = 'export NEO4J_REST_URL=http://localhost:{}/db/data/'.format(
+        ctb_gene_runner.inspect_docker(cmd_str)[:-1])
     try:
         os.system(export_cmd)
     except (OSError, ValueError), e: