def get_file_from_manager(remote_source_path, destination_path): key_filename = os.path.expanduser(utils.get_management_key()) with fab.settings( fab.hide('running', 'stdout'), host_string=utils.build_manager_host_string(), key_filename=key_filename, port=utils.get_management_port()): fab.get(remote_source_path, destination_path)
def dev(args, task, tasks_file): management_ip = utils.get_management_server_ip() _execute(username=get_management_user(), port=get_management_port(), key=get_management_key(), ip=management_ip, task=task, tasks_file=tasks_file, args=args)
def _open_interactive_shell(host_string, command=''): """Used as fabric's open_shell=True doesn't work well. (Disfigures coloring and such...) """ ssh_key_path = os.path.expanduser(utils.get_management_key()) port = utils.get_management_port() cmd = ['ssh', '-t', host_string, '-i', ssh_key_path, '-p', port] if command: cmd.append(command) subprocess.call(cmd)
def put_file_in_manager(source_path, remote_source_path, use_sudo=True, key_filename=None, user=None, port=''): port = port or utils.get_management_port() if not key_filename: key_filename = os.path.expanduser(utils.get_management_key()) with fab.settings( fab.hide('running', 'stdout'), host_string=utils.build_manager_host_string(user=user), key_filename=key_filename, port=port): fab.put(use_sudo=use_sudo, local_path=source_path, remote_path=remote_source_path)
def run_command_on_manager(command, use_sudo=False, open_shell=False, host_string='', force_output=False): """Runs an SSH command on a Manager. `open_shell` opens an interactive shell to the server. `host_string` can be explicitly provided to save on REST calls. `force_output` forces all output as if running in verbose. """ host_string = host_string or utils.build_manager_host_string() port = utils.get_management_port() def execute(): key_filename = os.path.expanduser(utils.get_management_key()) with fab.settings( host_string=host_string, key_filename=key_filename, port=port, warn_only=True): if use_sudo: output = fab.sudo(command) elif open_shell: fab.open_shell(command) return None else: output = fab.run(command) if output.failed: raise CloudifyCliError( 'Failed to execute: {0} ({1})'.format( output.real_command, output.stderr)) return output if get_global_verbosity() or force_output: return execute() else: with fab.hide('running', 'stdout', 'stderr', 'warnings'): return execute()
def _load_management_port(inputs): try: return inputs.get('ssh_port') or utils.get_management_port() except Exception: raise exceptions.CloudifyCliError('Manager port must be provided for ' 'the upgrade/rollback process')