예제 #1
0
파일: detail.py 프로젝트: nens/sitesetup
def copy_databases(drop_and_create_db=True):
    """Runs copy_individual_database for each applicable database."""
    for dbname in config('databases'):
        # TODO Ignore databases other than default for now
        if dbname != 'default':
            print("Skipped database '%s'." % (dbname,))
            continue

        if can_copy_database(dbname):
            copy_individual_database(dbname, drop_and_create_db)
        else:
            print("Can't copy database '%s'." % dbname)
예제 #2
0
파일: detail.py 프로젝트: nens/sitesetup
def copy_individual_database(dbname='default', drop_and_create_db=True):
    """Copies the production database(s) to the staging environment."""
    if not can_copy_database(dbname):
        # Doublecheck in case this is called directly
        return

    from_db = production_config('databases')[dbname]
    to_db = config('databases')[dbname]

    if confirm(("Copy data for db {db_name} from {from_host}" +
               " to {to_host}?").format(from_host=from_db['HOST'],
                                        to_host=to_db['HOST'],
                                        db_name=to_db['NAME']),
               default=False):

        filename = '{dbname}_dump.sql'.format(dbname=from_db['NAME'])

        with cd('/tmp'):
            print(green("Password for {from_db_host} is {from_db_pw}.".format(
                    from_db_host=from_db['HOST'],
                    from_db_pw=from_db['PASSWORD'])))
            local('pg_dump -c -h {dbhost} -U {dbuser} {dbname} -f {fn}'.format(
                    dbhost=from_db['HOST'], dbuser=from_db['USER'],
                    dbname=from_db['NAME'], fn=filename))

            if drop_and_create_db:
                drop_database(dbname)
                create_individual_database(dbname)

            print(green("Password for {to_db_host} is {to_db_pw}.".format(
                    to_db_host=to_db['HOST'], to_db_pw=to_db['PASSWORD'])))
            local('psql -h {host} -U {user} {db_name} < {fn}'.format(
                    host=to_db['HOST'], user=to_db['USER'],
                    db_name=to_db['NAME'],
                    fn=filename))

            local('rm %s' % filename)