Example #1
0
def read_backup(c, folder, docker_volume, host):
    """A function to read the database dump into the database."""
    inv_docker.stop(c)
    inv_docker.start(c)
    settings = inv_base.read_settings("development")
    postgres_backup_folder = settings[folder]
    user, group = inv_base.uid_gid(c)
    postgresdata_backup_server_files = os.popen(
        f"ls {postgres_backup_folder}").read().strip().split("\n")
    file = postgresdata_backup_server_files[-1]
    file = file[:file.rfind(".tar.gz")]
    logging.info(
        f"The database dump archive is unpacked.: '{postgres_backup_folder}/{file}.tar.gz'"
    )

    command = f"tar -xzf {postgres_backup_folder}/{file}.tar.gz -C {postgres_backup_folder}"
    if host == "development":
        c.run(command)
    elif host == "production":
        inv_rsync.ssh(c, settings["REMOTE_USER"], settings["REMOTE_HOST"],
                      command)

    logging.info(
        f"The database dump was unpacked.: '{postgres_backup_folder}/{file}.out'"
    )
    inv_base.docker_compose(
        c,
        f"run -u {user}:{group} --rm postgres bash -c 'psql -h postgres -U postgres -f {docker_volume}/{file}.out --quiet'"
    )
    delete_db_dump(c, host, postgres_backup_folder, file)
    inv_docker.stop(c)
    inv_docker.start(c)
Example #2
0
def run(c, cmd):
    """Start a service from the Docker Compose file, for example: docker django"""
    inv_logging.task(run.__name__)
    user, group = inv_base.uid_gid(c)
    inv_logging.cmd(cmd)
    inv_base.docker_compose(c, f"run -u {user}:{group} {cmd}", pty=True)
    inv_logging.success(run.__name__)
Example #3
0
def npm(c, cmd):
    """This task is used to respond to the packet manager npm, for example: npm install date-fns"""
    inv_logging.task(npm.__name__)
    user, group = inv_base.uid_gid(c)
    inv_logging.cmd(cmd)
    inv_base.docker_compose(c, f"run -u {user}:{group} node npm {cmd}", pty=True)
    inv_logging.success(npm.__name__)
Example #4
0
def build(c):
    """This task is used to build the Javascript components"""
    inv_logging.task(build.__name__)
    user, group = inv_base.uid_gid(c)
    inv_base.docker_compose(c, f"run -u {user}:{group} node npm run build", pty=True)
    logging.info("The Javascript components were built, minified and zipped.")
    inv_docker.stop(c)
    inv_logging.success(build.__name__)
Example #5
0
def dump_backup(c, host):
    """A function for the database dump."""
    inv_docker.stop(c)
    inv_docker.start(c)
    settings = inv_base.read_settings(host)

    if host == "development":
        postgres_backup_folder = f"{settings['postgres_backup_folder']}"
    elif host == "production":
        postgres_backup_folder = f"{settings['docker']['INSTALLFOLDER']}{settings['postgres_backup_server_folder']}"

    user, group = inv_base.uid_gid(c)
    file = f"postgres_{host}_backup_{datetime.datetime.now().strftime('%Y%m%d%H%M')}"
    inv_base.docker_compose(
        c,
        f"run -u {user}:{group} --rm postgres bash -c 'pg_dumpall -c -U postgres -h postgres > /var/backup/{file}.out'",
        pty=True)
    logging.info(
        f"A database dump was saved in the file: '{postgres_backup_folder}/{file}.out"
    )

    command = f"tar -czf {postgres_backup_folder}/{file}.tar.gz -C {postgres_backup_folder} {file}.out"
    if host == "development":
        c.run(command)
    elif host == "production":
        inv_rsync.ssh(c, settings["REMOTE_USER"], settings["REMOTE_HOST"],
                      command)
    logging.info(
        f"A database dump was saved in the file: '{postgres_backup_folder}/{file}.tar.gz'"
    )

    delete_db_dump(c, host, postgres_backup_folder, file)

    logging.info(
        f"The uncompressed database dump was deleted: '{postgres_backup_folder}/{file}.out'"
    )

    inv_docker.stop(c)
    inv_docker.start(c)
    return postgres_backup_folder, file, settings
Example #6
0
def lint(c):
    """This task is used to embellish the code"""
    inv_logging.task(lint.__name__)
    user, group = inv_base.uid_gid(c)
    inv_base.docker_compose(c, f"run -u {user}:{group} node npm run lint", pty=True)
    inv_logging.success(lint.__name__)