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 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 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 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 copyFilesFrom(source_config_name): configuration.check() source_configuration = configuration.get(source_config_name) methods.runTask(configuration.current(), 'copyFilesFrom', source_config=source_configuration)
def config(configName='local'): c = configuration.get(configName) configuration.apply(c, configName)
def doctor(self, config, **kwargs): with hide('output', 'running'), warn_only(): print "Check SSH keyforwading: ", output = local(' echo xx${SSH_AUTH_SOCK}xx', capture=True) if output.stdout.strip() == 'xxxx': log.error( 'SSH Keyforwarding is not working correctly, SSH_AUTH_SOCK is not available!' ) exit(1) else: log.info('SSH Keyforwarding seems to work.') print "Check SSH key-agent: ", output = local('ssh-add -l', capture=True) if output.return_code != 0: log.error( 'SSH key-agent has no private keys, please add it via "ssh-add".' ) exit(1) else: log.info('SSH key-agent has one or more private keys.') if 'sshTunnel' in config: print "Check SSH tunnel: ", cfg = config['sshTunnel'] if not self.doctor_ssh_connection({ 'host': cfg['bridgeHost'], 'port': cfg['bridgePort'], 'user': cfg['bridgeUser'] }): exit(1) self.preflight('dummyTask', config) print "Check SSH connection: ", if not self.doctor_ssh_connection(config): exit(1) if 'remote' in kwargs: remote_config = configuration.get(kwargs['remote']) if 'sshTunnel' in remote_config: # First check if we can ssh into bridge-host. print "Check SSH tunnel to remote source: ", cfg = remote_config['sshTunnel'] if not self.doctor_ssh_connection({ 'host': cfg['bridgeHost'], 'port': cfg['bridgePort'], 'user': cfg['bridgeUser'] }): exit(1) # create tunnel self.createTunnelFromLocalToSource(config, remote_config) # ssh from local into remote host if not self.doctor_ssh_connection(remote_config): exit(1) # Test ssh connection from inside host to source host. if 'sshTunnel' in remote_config: self.createTunnelFromHostToSource(config, remote_config) ssh_cmd = 'ssh -A -o StrictHostKeyChecking=no -o PasswordAuthentication=no -o BatchMode=yes -o ConnectTimeout=5' cmd_on_host = ssh_cmd + " -p {port} {user}@{host} echo ok".format( **remote_config) cmd = ssh_cmd + ' -p {port} {user}@{host} "' + cmd_on_host + '"' cmd = cmd.format(**config) print "Check SSH-connection from %s to %s: " % ( config['config_name'], remote_config['config_name']), output = local(cmd, capture=True) if output.return_code != 0: log.error('Connection failed!') log.error('Try: %s' % cmd) print output.stdout exit(1) else: log.info('Connection established!')