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 putFile(fileName): configuration.check() if configuration.current()['runLocally']: print red("putFile not supported when 'runLocally' is set!") exit(1) methods.call('files', 'put', configuration.current(), filename=fileName)
def putFile(fileName): configuration.check() if configuration.current()['runLocally']: log.error("putFile not supported when 'runLocally' is set!") exit(1) methods.call('files', 'put', configuration.current(), filename=fileName)
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 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 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": 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 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() 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"]: 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 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 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 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 getTemplate(configName): settings = configuration.get_all_configurations() config = False if not configName: config = configuration.current() else: if configName in settings['hosts']: config = configuration.get(configName) if config and 'blueprint' in config: return config['blueprint'] if config and 'docker' in config: docker_config_name = config['docker']['configuration'] else: docker_config_name = configName if docker_config_name: docker_config = configuration.getDockerConfig(docker_config_name) if docker_config and 'blueprint' in docker_config: return docker_config['blueprint'] if settings and 'blueprint' in settings: return settings['blueprint'] return False
def docker(command=False, **kwargs): configuration.check() methods.call('docker', 'runCommand', configuration.current(), command=command, **kwargs)
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 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 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 getBackup(commit): configuration.check() files = get_backup_files(commit) for file in files: remotePath = configuration.current("backupFolder") + "/" + file["file"] localPath = "./" + file["file"] get(remote_path=remotePath, local_path=localPath)
def getFile(remotePath, localPath='./'): configuration.check() methods.call('files', 'get', configuration.current(), remotePath=remotePath, localPath=localPath)
def getBackup(commit): configuration.check() files = get_backup_files(commit) for file in files: remotePath = configuration.current('backupFolder') + "/" + file['file'] localPath = './' + file['file'] get(remote_path=remotePath, local_path=localPath)
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 restore(commit, cleanupBeforeRestore=0): configuration.check() files = get_backup_files(commit) methods.runTask(configuration.current(), 'restore', files=files, cleanupBeforeRestore=cleanupBeforeRestore) reset()
def script(scriptKey=False, *args, **kwargs): configuration.check() scripts = configuration.current('scripts') scriptData = scripts[scriptKey] if scriptKey in scripts else False if not scriptData: scripts = configuration.getSettings('scripts') scriptData = scripts[scriptKey] if scriptKey in scripts else False if not scriptData: log.error('Could not find any script named "%s" in fabfile.yaml' % scriptKey) if configuration.current('scripts'): print 'Available scripts in %s:\n - ' % configuration.current( 'config_name') + '\n - '.join( configuration.current('scripts').keys()) if configuration.getSettings('scripts'): print 'Available scripts: \n - ' + '\n - '.join( configuration.getSettings('scripts').keys()) exit(1) if isinstance(scriptData, dict): if 'defaults' in scriptData: kwargs = configuration.data_merge(scriptData['defaults'], kwargs) scriptData = scriptData['script'] # compute arguments: arguments = ' '.join(args) for key in kwargs.keys(): arguments += ' ' + key + '="' + kwargs[key] + '"' variables = { 'arguments': kwargs, } variables['arguments']['combined'] = arguments if scriptData: methods.call('script', 'runScript', configuration.current(), script=scriptData, variables=variables)
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 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 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 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: print ("Configuration for " + config_name) for key, value in config.items(): if isinstance(value, dict): print (key) for dict_key, dict_value in value.items(): print (" " + dict_key.ljust(23) + ": " + str(dict_value)) elif hasattr(value, "__len__") and not hasattr(value, "strip"): print key for list_value in value: print (" ".ljust(25) + ": " + str(list_value)) else: print (key.ljust(25) + ": " + str(value))
def getProperty(in_key): configuration.check() with hide('output', 'running', 'warnings'): keys = in_key.split('/') c = configuration.current() for key in keys: if key in c: c = c[key] else: print red('property "%s" not found!' % in_key) exit(1) print c exit(0)
def getProperty(in_key): configuration.check() with hide('output', 'running', 'warnings'): keys = in_key.split('/') c = configuration.current() for key in keys: if key in c: c = c[key] else: log.error('property "%s" not found!' % in_key) exit(1) print c exit(0)
def getProperty(in_key): configuration.check() with hide("output", "running", "warnings"): keys = in_key.split("/") c = configuration.current() for key in keys: if key in c: c = c[key] else: print red('property "%s" not found!' % in_key) exit(1) print c exit(0)
def script(scriptKey = False, *args, **kwargs): configuration.check() scripts = configuration.current('scripts') scriptData = scripts[scriptKey] if scriptKey in scripts else False if not scriptData: scripts = configuration.getSettings('scripts') scriptData = scripts[scriptKey] if scriptKey in scripts else False if not scriptData: log.error('Could not find any script named "%s" in fabfile.yaml' % scriptKey) if configuration.current('scripts'): print 'Available scripts in %s:\n - ' % configuration.current('config_name') + '\n - '.join(configuration.current('scripts').keys()) if configuration.getSettings('scripts'): print 'Available scripts: \n - ' + '\n - '.join(configuration.getSettings('scripts').keys()) exit(1) if isinstance(scriptData, dict): if 'defaults' in scriptData: kwargs = configuration.data_merge(scriptData['defaults'], kwargs) scriptData = scriptData['script'] # compute arguments: arguments = ' '.join(args) for key in kwargs.keys(): arguments += ' ' + key + '="' + kwargs[key]+'"' variables = { 'arguments': kwargs, } variables['arguments']['combined'] = arguments if scriptData: methods.call('script', 'runScript', configuration.current(), script=scriptData, variables=variables)
def script(scriptKey=False, *args, **kwargs): configuration.check() scripts = configuration.current("scripts") scriptData = scripts[scriptKey] if scriptKey in scripts else False if not scriptData: scripts = configuration.getSettings("scripts") scriptData = scripts[scriptKey] if scriptKey in scripts else False if not scriptData: print red('Could not find any script named "%s" in fabfile.yaml' % scriptKey) if configuration.current("scripts"): print "Available scripts in %s:\n - " % configuration.current("config_name") + "\n - ".join( configuration.current("scripts").keys() ) if configuration.getSettings("scripts"): print "Available scripts: \n - " + "\n - ".join(configuration.getSettings("scripts").keys()) exit(1) if isinstance(scriptData, dict): if "defaults" in scriptData: kwargs = configuration.data_merge(scriptData["defaults"], kwargs) scriptData = scriptData["script"] # compute arguments: arguments = " ".join(args) for key in kwargs.keys(): arguments += " " + key + '="' + kwargs[key] + '"' variables = {"arguments": kwargs} variables["arguments"]["combined"] = arguments if scriptData: methods.call("script", "runScript", configuration.current(), script=scriptData, variables=variables)
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 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 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 drupalconsole(drupal_command): configuration.check(['drupalconsole']) methods.call('drupalconsole', 'drupalconsole', configuration.current(), command=drupal_command)
def doctor(**kwargs): configuration.check() methods.runTask(configuration.current(), 'doctor', **kwargs)
def notify(message): configuration.check() methods.runTask(configuration.current(), 'notify', message=message)
def copyFilesFrom(source_config_name): configuration.check() source_configuration = configuration.get(source_config_name) methods.runTask(configuration.current(), 'copyFilesFrom', source_config=source_configuration)
def restoreSQLFromFile(full_file_name): configuration.check() methods.runTask(configuration.current(), 'restoreSQLFromFile', sourceFile = full_file_name)
def drush(drush_command): configuration.check(['drush7', 'drush8']) methods.call('drush', 'drush', configuration.current(), command=drush_command)
def version(): configuration.check('git') version = methods.call('git', 'getVersion', configuration.current()) print green('%s @ %s tagged with: %s' % (configuration.getSettings('name'), configuration.current('config_name'), version))
def reset(**kwargs): configuration.check() methods.runTask(configuration.current(), 'reset', **kwargs)
def ssh(): configuration.check(['ssh']) methods.call('ssh', 'openShell', configuration.current())
def composer(composer_command): configuration.check(['composer']) methods.call('composer', 'composer', configuration.current(), command=composer_command)