Mercurial > repos > shellac > guppy_basecaller
comparison env/lib/python3.7/site-packages/planemo/galaxy/serve.py @ 0:26e78fe6e8c4 draft
"planemo upload commit c699937486c35866861690329de38ec1a5d9f783"
| author | shellac |
|---|---|
| date | Sat, 02 May 2020 07:14:21 -0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:26e78fe6e8c4 |
|---|---|
| 1 """Abstractions for serving out development Galaxy servers.""" | |
| 2 from __future__ import print_function | |
| 3 | |
| 4 import contextlib | |
| 5 import os | |
| 6 import time | |
| 7 | |
| 8 from planemo import ( | |
| 9 io, | |
| 10 network_util | |
| 11 ) | |
| 12 from .config import galaxy_config | |
| 13 from .ephemeris_sleep import sleep | |
| 14 from .run import ( | |
| 15 run_galaxy_command, | |
| 16 ) | |
| 17 | |
| 18 | |
| 19 def serve(ctx, runnables=[], **kwds): | |
| 20 """Serve a Galaxy instance with artifacts defined by paths.""" | |
| 21 try: | |
| 22 return _serve(ctx, runnables, **kwds) | |
| 23 except Exception as e: | |
| 24 ctx.vlog("Problem serving Galaxy", exception=e) | |
| 25 raise | |
| 26 | |
| 27 | |
| 28 def _serve(ctx, runnables, **kwds): | |
| 29 engine = kwds.get("engine", "galaxy") | |
| 30 if engine == "docker_galaxy": | |
| 31 kwds["dockerize"] = True | |
| 32 | |
| 33 daemon = kwds.get("daemon", False) | |
| 34 if daemon: | |
| 35 kwds["no_cleanup"] = True | |
| 36 | |
| 37 port = kwds.get("port", None) | |
| 38 if port is None: | |
| 39 port = network_util.get_free_port() | |
| 40 kwds["port"] = port | |
| 41 | |
| 42 with galaxy_config(ctx, runnables, **kwds) as config: | |
| 43 cmd = config.startup_command(ctx, **kwds) | |
| 44 action = "Starting Galaxy" | |
| 45 exit_code = run_galaxy_command( | |
| 46 ctx, | |
| 47 cmd, | |
| 48 config.env, | |
| 49 action, | |
| 50 ) | |
| 51 if exit_code: | |
| 52 message = "Problem running Galaxy command [%s]." % config.log_contents | |
| 53 io.warn(message) | |
| 54 raise Exception(message) | |
| 55 host = kwds.get("host", "127.0.0.1") | |
| 56 | |
| 57 timeout = 500 | |
| 58 galaxy_url = "http://%s:%s" % (host, port) | |
| 59 galaxy_alive = sleep(galaxy_url, verbose=ctx.verbose, timeout=timeout) | |
| 60 if not galaxy_alive: | |
| 61 raise Exception("Attempted to serve Galaxy at %s, but it failed to start in %d seconds." % (galaxy_url, timeout)) | |
| 62 config.install_workflows() | |
| 63 if kwds.get("pid_file"): | |
| 64 real_pid_file = config.pid_file | |
| 65 if os.path.exists(config.pid_file): | |
| 66 os.symlink(real_pid_file, kwds["pid_file"]) | |
| 67 else: | |
| 68 io.warn("Can't find Galaxy pid file [%s] to link" % real_pid_file) | |
| 69 return config | |
| 70 | |
| 71 | |
| 72 @contextlib.contextmanager | |
| 73 def shed_serve(ctx, install_args_list, **kwds): | |
| 74 """Serve a daemon instance of Galaxy with specified repositories installed.""" | |
| 75 with serve_daemon(ctx, **kwds) as config: | |
| 76 install_deps = not kwds.get("skip_dependencies", False) | |
| 77 io.info("Installing repositories - this may take some time...") | |
| 78 for install_args in install_args_list: | |
| 79 install_args["install_tool_dependencies"] = install_deps | |
| 80 install_args["install_repository_dependencies"] = True | |
| 81 install_args["new_tool_panel_section_label"] = "Shed Installs" | |
| 82 config.install_repo( | |
| 83 **install_args | |
| 84 ) | |
| 85 config.wait_for_all_installed() | |
| 86 yield config | |
| 87 | |
| 88 | |
| 89 @contextlib.contextmanager | |
| 90 def serve_daemon(ctx, runnables=[], **kwds): | |
| 91 """Serve a daemonized Galaxy instance with artifacts defined by paths.""" | |
| 92 config = None | |
| 93 try: | |
| 94 kwds["daemon"] = True | |
| 95 config = serve(ctx, runnables, **kwds) | |
| 96 yield config | |
| 97 finally: | |
| 98 if config: | |
| 99 if ctx.verbose: | |
| 100 print("Galaxy Log:") | |
| 101 print(config.log_contents) | |
| 102 config.kill() | |
| 103 if not kwds.get("no_cleanup", False): | |
| 104 config.cleanup() | |
| 105 | |
| 106 | |
| 107 def sleep_for_serve(): | |
| 108 # This is bad, do something better... | |
| 109 time.sleep(1000000) | |
| 110 | |
| 111 | |
| 112 __all__ = ( | |
| 113 "serve", | |
| 114 "serve_daemon", | |
| 115 "shed_serve", | |
| 116 ) |
