def restore_db(release=None): """ Restores backup back to version, uses current version by default. """ assert "mysql_user" in env, "Missing mysqL_user in env" assert "mysql_password" in env, "Missing mysql_password in env" assert "mysql_host" in env, "Missing mysql_host in env" assert "mysql_db" in env, "Missing mysql_db in env" if not release: release = paths.get_current_release_name() if not release: raise Exception("Release %s was not found" % release) backup_file = "mysql/%s.sql.gz" % release backup_path = paths.get_backup_path(backup_file) if not env.exists(backup_path): raise Exception("Backup file %s not found" % backup_path) env.run("gunzip < %s | mysql -u %s -p%s -h %s %s" % (backup_path, env.mysql_user, env.mysql_password, env.mysql_host, env.mysql_db))
def backup_db(release=None, limit=5): """ Backup database and associate it with current release """ assert "psql_user" in env, "Missing psql_user in env" assert "psql_db" in env, "Missing psql_db in env" assert "psql_password" in env, "Missing psql_password in env" if not release: release = paths.get_current_release_name() max_versions = limit+1 if not release: logger.info("No releases present, skipping task") return remote_file = "postgresql/%s.sql.tar.gz" % release remote_path = paths.get_backup_path(remote_file) env.run("mkdir -p %s" % paths.get_backup_path("postgresql")) with context_managers.shell_env(PGPASSWORD=env.psql_password): env.run("pg_dump -h localhost -Fc -f %s -U %s %s -x -O" % ( remote_path, env.psql_user, env.psql_db )) # Remove older releases env.run("ls -dt %s/* | tail -n +%s | xargs rm -rf" % ( paths.get_backup_path("postgresql"), max_versions) )
def backup_db(release=None, limit=5): """ Backup database and associate it with current release """ assert "mysql_user" in env, "Missing mysqL_user in env" assert "mysql_password" in env, "Missing mysql_password in env" assert "mysql_host" in env, "Missing mysql_host in env" assert "mysql_db" in env, "Missing mysql_db in env" if not release: release = paths.get_current_release_name() max_versions = limit+1 if not release: return env.run("mkdir -p %s" % paths.get_backup_path("mysql")) backup_file = "mysql/%s.sql.gz" % release backup_path = paths.get_backup_path(backup_file) env.run("mysqldump -u %s -p%s -h %s %s | gzip -c > %s" % (env.mysql_user, env.mysql_password, env.mysql_host, env.mysql_db, backup_path)) # Remove older releases env.run("ls -dt %s/* | tail -n +%s | xargs rm -rf" % ( paths.get_backup_path("mysql"), max_versions) )
def test_default_maxreleases(self): """ Run 7 deploys and verify that 5 are saved, and that the first release is really removed. """ hooks.register_hook("copy", empty_copy) with settings(source_path="src", warn_only=True): setup() deploy() release_name = paths.get_current_release_name() first_release_path = paths.get_releases_path(release_name) # TODO: Find a better solution then using time.sleep for i in range(6): time.sleep(1) deploy() releases = len(os.listdir(paths.get_releases_path())) self.assertEquals(releases, 5) self.assertFalse(env.exists(first_release_path))
def backup_db(release=None, limit=5): """ Backup database and associate it with current release """ assert "psql_user" in env, "Missing psql_user in env" assert "psql_db" in env, "Missing psql_db in env" assert "psql_password" in env, "Missing psql_password in env" if not release: release = paths.get_current_release_name() max_versions = limit + 1 if not release: logger.info("No releases present, skipping task") return remote_file = "postgresql/%s.sql.tar.gz" % release remote_path = paths.get_backup_path(remote_file) env.run("mkdir -p %s" % paths.get_backup_path("postgresql")) with context_managers.shell_env(PGPASSWORD=env.psql_password): env.run("pg_dump -h localhost -Fc -f %s -U %s %s -x -O" % (remote_path, env.psql_user, env.psql_db)) # Remove older releases env.run("ls -dt %s/* | tail -n +%s | xargs rm -rf" % (paths.get_backup_path("postgresql"), max_versions))
def restore_db(release=None): """ Restores backup back to version, uses current version by default. """ if not release: release = paths.get_current_release_name() if not release: raise Exception("Release %s was not found" % release) backup_file = "postgresql/%s.sql.gz" % release backup_path = paths.get_backup_path(backup_file) if not env.exists(backup_path): raise Exception("Backup file %s not found" % backup_path) with context_managers.shell_env(PGPASSWORD=env.psql_password): env.run("pg_restore --clean -h localhost -d %s -U %s '%s'" % (env.psql_db, env.psql_user, backup_path))
def restore_db(release=None): """ Restores backup back to version, uses current version by default. """ if not release: release = paths.get_current_release_name() if not release: raise Exception("Release %s was not found" % release) backup_file = "postgresql/%s.sql.gz" % release backup_path = paths.get_backup_path(backup_file) if not env.exists(backup_path): raise Exception("Backup file %s not found" % backup_path) with context_managers.shell_env(PGPASSWORD=env.psql_password): env.run("pg_restore --clean -h localhost -d %s -U %s '%s'" % ( env.psql_db, env.psql_user, backup_path) )
def test_deploy_rollback(self): hooks.register_hook("copy", empty_copy) with settings( source_path="src", warn_only=True): setup() deploy() release_name = paths.get_current_release_name() deploy() # Run another callback so we can can roll back rollback() self.assertTrue(os.path.exists(os.path.join( env.app_path, "current", "app.txt") )) releases = len(os.listdir(os.path.join(env.app_path, "releases"))) self.assertEquals(releases, 1) self.assertTrue(env.exists(paths.get_releases_path(release_name)))