def createDestroyHelper(stages, command, **kwargs): dockerConfig = configuration.getDockerConfig( configuration.current()['docker']['configuration']) for step in stages: step['dockerConfig'] = dockerConfig log.info(command + ': current stage: \'{stage}\' via \'{connection}\''.format( **step)) hostConfig = {} for key in ['host', 'user', 'port']: hostConfig[key] = configuration.current()[key], methods.call(step['connection'], 'getHostConfig', configuration.current(), hostConfig=hostConfig) hostString = join_host_strings(**hostConfig) with _settings(host_string=hostString): methods.runTask(configuration.current(), command, quiet=True, **step)
def copyDBFrom(source_config_name): configuration.check() source_configuration = configuration.get(source_config_name) methods.runTask(configuration.current(), 'copyDBFrom', source_config=source_configuration, nextTasks=['reset'])
def updateApp(**kwargs): configuration.check() config = configuration.current() if config['type'] != 'dev': print red('Task updateApp is not supported for this configuration. Please check if "type" is set correctly.') exit(1) backupDB() methods.runTask(configuration.current(), 'updateApp', **kwargs)
def updateApp(**kwargs): configuration.check() config = configuration.current() if config['type'] != 'dev': log.error('Task updateApp is not supported for this configuration. Please check if "type" is set correctly.') exit(1) backupDB() methods.runTask(configuration.current(), 'updateApp', **kwargs)
def updateApp(**kwargs): configuration.check() config = configuration.current() if config["type"] != "dev": print red('Task updateApp is not supported for this configuration. Please check if "type" is set correctly.') exit(1) backupDB() methods.runTask(configuration.current(), "updateApp", **kwargs)
def install(**kwargs): configuration.check() config = configuration.current() if config['type'] == 'prod' or not config['supportsInstalls']: print red('Task install is not supported for this configuration. Please check if "type" and "supportsInstalls" is set correctly.') exit(1) methods.runTask(configuration.current(), 'install', nextTasks=['reset'], **kwargs)
def restore(commit, cleanupBeforeRestore=0): configuration.check() files = get_backup_files(commit) methods.runTask(configuration.current(), 'restore', files=files, cleanupBeforeRestore=cleanupBeforeRestore) reset()
def deploy(overrideBranch=False): configuration.check() config = configuration.current() if overrideBranch: config["branch"] = overrideBranch if config["backupBeforeDeploy"]: backup(withFiles=False) methods.runTask(config, "deploy", nextTasks=["reset"])
def backup(withFiles=True): configuration.check() print green( 'backing up files and database of "%s" @ "%s"' % (configuration.getSettings("name"), configuration.current("config_name")) ) i = datetime.datetime.now() basename = [configuration.current("config_name"), i.strftime("%Y-%m-%d--%H-%M-%S")] methods.runTask(configuration.current(), "backup", withFiles=withFiles, baseName=basename)
def deploy(overrideBranch=False): configuration.check() config = configuration.current() if overrideBranch: config['branch'] = overrideBranch if config['backupBeforeDeploy']: backup(withFiles=False) methods.runTask(config, 'deploy', nextTasks=['reset'])
def install(**kwargs): configuration.check() config = configuration.current() if config["type"] == "prod" or not config["supportsInstalls"]: print red( 'Task install is not supported for this configuration. Please check if "type" and "supportsInstalls" is set correctly.' ) exit(1) methods.runTask(configuration.current(), "install", nextTasks=["reset"], **kwargs)
def backup(withFiles = True): configuration.check() print green('backing up files and database of "%s" @ "%s"' % (configuration.getSettings('name'), configuration.current('config_name'))) i = datetime.datetime.now() basename = [ configuration.current('config_name'), i.strftime('%Y-%m-%d--%H-%M-%S') ] methods.runTask(configuration.current(), 'backup', withFiles = withFiles, baseName = basename)
def backup(withFiles = True): configuration.check() log.info('backing up files and database of "%s" @ "%s"' % (configuration.getSettings('name'), configuration.current('config_name'))) i = datetime.datetime.now() basename = [ configuration.current('config_name'), i.strftime('%Y-%m-%d--%H-%M-%S') ] methods.runTask(configuration.current(), 'backup', withFiles = withFiles, baseName = basename)
def install(**kwargs): configuration.check() config = configuration.current() if config['type'] == 'prod' or not config['supportsInstalls']: log.error('Task install is not supported for this configuration. Please check if "type" and "supportsInstalls" is set correctly.') exit(1) if 'nextTasks' not in kwargs: kwargs['nextTasks'] = ['reset'] methods.runTask(configuration.current(), 'install', **kwargs)
def install(**kwargs): configuration.check() config = configuration.current() if config['type'] == 'prod' or not config['supportsInstalls']: log.error( 'Task install is not supported for this configuration. Please check if "type" and "supportsInstalls" is set correctly.' ) exit(1) if 'nextTasks' not in kwargs: kwargs['nextTasks'] = ['reset'] methods.runTask(configuration.current(), 'install', **kwargs)
def getFilesDump(): configuration.check(); file_name = '--'.join([configuration.current('config_name'), time.strftime("%Y%m%d-%H%M%S")]) + '.tgz' log.info('Get files dump from %s' % configuration.current('config_name')) file_name = configuration.current('tmpFolder') + '/' + file_name methods.runTask(configuration.current(), 'backupFiles', backup_file_name = file_name) getFile(file_name) if configuration.current()['runLocally']: local('rm ' + file_name) else: run('rm ' + file_name);
def getSQLDump(): configuration.check() file_name = "--".join([configuration.current("config_name"), time.strftime("%Y%m%d-%H%M%S")]) + ".sql" print green("Get SQL dump from %s" % configuration.current("config_name")) file_name = "/tmp/" + file_name methods.runTask(configuration.current(), "backupSql", backup_file_name=file_name) if configuration.current("supportsZippedBackups"): file_name += ".gz" getFile(file_name) run("rm " + file_name)
def about(config_name=False): if not config_name: config = configuration.current() config_name = configuration.current('config_name') else: config = configuration.get(config_name) if config: additional_info = {} methods.runTask(config, 'about', data = additional_info) about_helper('Host-configuration for ' + config_name, config, 2) for key, val in additional_info.items(): print "" about_helper(key + ' for ' + config_name, val, 2)
def getSQLDump(): configuration.check() file_name = '--'.join([configuration.current('config_name'), time.strftime("%Y%m%d-%H%M%S")]) + '.sql' log.info('Get SQL dump from %s' % configuration.current('config_name')) file_name = configuration.current('tmpFolder') + '/' + file_name methods.runTask(configuration.current(), 'backupSql', backup_file_name = file_name) if configuration.current('supportsZippedBackups'): file_name += '.gz' getFile(file_name) if configuration.current()['runLocally']: local('rm ' + file_name) else: run('rm ' + file_name);
def createDestroyHelper(stages, command, **kwargs): dockerConfig = configuration.getDockerConfig(configuration.current()['docker']['configuration']) for step in stages: step['dockerConfig'] = dockerConfig log.info(command + ': current stage: \'{stage}\' via \'{connection}\''.format(**step)) hostConfig = {} for key in ['host', 'user', 'port']: hostConfig[key] = configuration.current()[key], methods.call(step['connection'], 'getHostConfig', configuration.current(), hostConfig=hostConfig) hostString = join_host_strings(**hostConfig) with _settings(host_string = hostString): methods.runTask(configuration.current(), command, quiet=True, **step)
def getSQLDump(): configuration.check() file_name = '--'.join([configuration.current('config_name'), time.strftime("%Y%m%d-%H%M%S")]) + '.sql' print green('Get SQL dump from %s' % configuration.current('config_name')) file_name = '/tmp/' + file_name methods.runTask(configuration.current(), 'backupSql', backup_file_name = file_name) if configuration.current('supportsZippedBackups'): file_name += '.gz' getFile(file_name) if configuration.current()['runLocally']: local('rm ' + file_name) else: run('rm ' + file_name);
def getFilesDump(): configuration.check() file_name = '--'.join( [configuration.current('config_name'), time.strftime("%Y%m%d-%H%M%S")]) + '.tgz' log.info('Get files dump from %s' % configuration.current('config_name')) file_name = configuration.current('tmpFolder') + '/' + file_name methods.runTask(configuration.current(), 'backupFiles', backup_file_name=file_name) getFile(file_name) if configuration.current()['runLocally']: local('rm ' + file_name) else: run('rm ' + file_name)
def listBackups(commit = False): configuration.check() results = [] if commit: results = get_backup_files(commit) print "\nFound last backup for %s and commit %s:" % (configuration.current('config_name'), commit) else: methods.runTask(configuration.current(), 'listBackups', results = results) results = sorted(results, key = lambda l: (l['date'], l['time'])) print "\nFound backups for "+ configuration.current('config_name') + ":" last_date = '' for result in results: if result['date'] == last_date: result['date'] = ' ' else: last_date = result['date'] print "{date} {time} | {commit:<30} | {method:<10} | {file}".format(**result)
def get_backup_files(commit): results = [] methods.runTask(configuration.current(), "listBackups", results=results) results = sorted(results, key=lambda l: (l["date"], l["time"])) # get latest hash for commit. hash = False for result in results: if result["commit"] == commit: hash = result["hash"] # search for hash. if not hash: for result in results: if result["hash"] == commit: hash = result["hash"] if not hash: print red("Coud not find requested backup: %s" % commit) listBackups() exit() else: return filter(lambda r: r["hash"] == hash, results)
def get_backup_files(commit): results = [] methods.runTask(configuration.current(), 'listBackups', results = results) results = sorted(results, key = lambda l: (l['date'], l['time'])) # get latest hash for commit. hash = False for result in results: if result['commit'] == commit: hash = result['hash'] # search for hash. if not hash: for result in results: if result['hash'] == commit: hash = result['hash'] if not hash: print red('Coud not find requested backup: %s' % commit) listBackups() exit() else: return filter(lambda r: r['hash'] == hash, results)
def get_backup_files(commit): results = [] methods.runTask(configuration.current(), 'listBackups', results = results) results = sorted(results, key = lambda l: (l['date'], l['time'])) # get latest hash for commit. hash = False for result in results: if result['commit'] == commit: hash = result['hash'] # search for hash. if not hash: for result in results: if result['hash'] == commit: hash = result['hash'] if not hash: log.error('Coud not find requested backup: %s' % commit) listBackups() exit() else: return filter(lambda r: r['hash'] == hash, results)
def reset(**kwargs): configuration.check() methods.runTask(configuration.current(), 'reset', **kwargs)
def restoreSQLFromFile(full_file_name): configuration.check() methods.runTask(configuration.current(), 'restoreSQLFromFile', sourceFile = full_file_name)
def copyFilesFrom(source_config_name): configuration.check() source_configuration = configuration.get(source_config_name) methods.runTask(configuration.current(), 'copyFilesFrom', source_config=source_configuration)
def notify(message): configuration.check() methods.runTask(configuration.current(), 'notify', message=message)
def restore(commit, cleanupBeforeRestore=0): configuration.check() files = get_backup_files(commit) methods.runTask(configuration.current(), 'restore', files = files, cleanupBeforeRestore = cleanupBeforeRestore) reset()
def doctor(**kwargs): configuration.check() methods.runTask(configuration.current(), 'doctor', **kwargs)