def logs(project, server, step_number): """Stream the logs for a server environment application.""" project_id, server_id = _resolve_server(project, server) server_client = faculty.client("server") server = server_client.get(project_id, server_id) hound_url = _get_hound_url(server) client = faculty_cli.hound.Hound(hound_url) execution = client.latest_environment_execution() if execution is None: msg = "No environment has yet been applied to this server." _print_and_exit(msg, 64) steps = [ step for environment_execution in execution.environments for step in environment_execution.steps ] if step_number is not None: try: steps = [steps[step_number]] except IndexError: _print_and_exit("step {} out of range".format(step_number), 64) for step in steps: for line in client.stream_environment_execution_step_logs(step): click.echo(line)
def status(project, server): """Get the execution status for an environment.""" project_id, server_id = _resolve_server(project, server) server_client = faculty.client("server") server = server_client.get(project_id, server_id) hound_url = _get_hound_url(server) client = faculty_cli.hound.Hound(hound_url) execution = client.latest_environment_execution() if execution is None: msg = "No environment has yet been applied to this server." _print_and_exit(msg, 64) click.echo("Latest environment execution:") click.echo(" Status: {}".format(execution.status)) for i, environment in enumerate(execution.environments): click.echo("") click.echo("Environment {}".format(i)) for j, step in enumerate(environment.steps): click.echo("") click.echo("Step {}:".format(j)) click.echo(" Status: {}".format(step.status)) click.echo(" Command: {}".format(_format_command(step.command)))