diff env/lib/python3.7/site-packages/planemo/database/postgres_docker.py @ 5:9b1c78e6ba9c draft default tip

"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
author shellac
date Mon, 01 Jun 2020 08:59:25 -0400
parents 79f47841a781
children
line wrap: on
line diff
--- a/env/lib/python3.7/site-packages/planemo/database/postgres_docker.py	Thu May 14 16:47:39 2020 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-"""Module describes a :class:`DatabaseSource` for managed, dockerized postgres databases."""
-import time
-
-from galaxy.tool_util.deps import (
-    docker_util,
-    dockerfiles,
-)
-from galaxy.tool_util.deps.commands import execute
-from galaxy.util import unicodify
-
-from .interface import DatabaseSource
-from .postgres import _CommandBuilder, ExecutesPostgresSqlMixin
-
-DEFAULT_CONTAINER_NAME = "planemopostgres"
-DEFAULT_POSTGRES_PASSWORD = "mysecretpassword"
-DEFAULT_POSTGRES_PORT_EXPOSE = 15432
-
-
-def docker_ps(args, **kwds):
-    return docker_util.command_list("ps", args, **kwds)
-
-
-def docker_exec(name, commands=[], **kwds):
-    return docker_util.command_list("exec", [name] + commands, **kwds)
-
-
-def is_running_container(name=DEFAULT_CONTAINER_NAME, **kwds):
-    ps_command = docker_ps(["--format", "{{.Names}}"], **kwds)
-    running_containers = unicodify(execute(ps_command))
-    containers = running_containers.splitlines()
-    return name in containers
-
-
-def start_postgres_docker(name=DEFAULT_CONTAINER_NAME, password=DEFAULT_POSTGRES_PASSWORD, port=DEFAULT_POSTGRES_PORT_EXPOSE, **kwds):
-    run_command = docker_util.command_list(
-        "run",
-        ["-p", "%d:5432" % port, "--name", name, "-e", "POSTGRES_PASSWORD=%s" % password, "--rm", "-d", "postgres"],
-        **kwds
-    )
-    execute(run_command)
-
-
-def stop_postgres_docker(name=DEFAULT_CONTAINER_NAME, **kwds):
-    stop_command = docker_util.command_list(
-        "stop",
-        [name],
-        **kwds
-    )
-    execute(stop_command)
-
-
-class DockerPostgresDatabaseSource(ExecutesPostgresSqlMixin, DatabaseSource):
-    """Postgres database running inside a Docker container."""
-
-    def __init__(self, **kwds):
-        """Construct a postgres database source from planemo configuration."""
-        self.psql_path = 'psql'
-        self.database_user = 'postgres'
-        self.database_password = DEFAULT_POSTGRES_PASSWORD
-        self.database_host = 'localhost'  # TODO: Make docker host
-        self.database_port = DEFAULT_POSTGRES_PORT_EXPOSE
-        self._kwds = kwds
-        self._docker_host_kwds = dockerfiles.docker_host_args(**kwds)
-        if not is_running_container(**self._docker_host_kwds):
-            start_postgres_docker(**self._docker_host_kwds)
-            # Hack to give docker a bit of time to boot up and allow psql to start.
-            time.sleep(30)
-
-    def sqlalchemy_url(self, identifier):
-        """Return URL or form postgresql://username:password@localhost/mydatabase."""
-        return "postgresql://%s:%s@%s:%d/%s" % (
-            self.database_user,
-            self.database_password,
-            self.database_host,
-            self.database_port,
-            identifier
-        )
-
-    def _psql_command_builder(self, *args):
-        base_command = docker_exec(DEFAULT_CONTAINER_NAME, [self.psql_path], **self._docker_host_kwds)
-        command_builder = _CommandBuilder(*base_command)
-        # Print only tuples so output is easier to parse
-        command_builder.append_command("--tuples-only")
-        command_builder.append_command("--username", self.database_user)
-        command_builder.append_command("-P", "pager=off")
-        command_builder.extend_command(args)
-        return command_builder
-
-
-__all__ = (
-    'DockerPostgresDatabaseSource',
-)