diff --git a/python/ray/autoscaler/commands.py b/python/ray/autoscaler/commands.py index 9be3d849b..28d6a7869 100644 --- a/python/ray/autoscaler/commands.py +++ b/python/ray/autoscaler/commands.py @@ -728,9 +728,13 @@ def get_or_create_head_node(config, cf.bold(" ray exec {}{} {}"), config_file, modifiers, quote(monitor_str)) - cli_logger.print("Connect to a terminal on the cluster head") + cli_logger.print("Connect to a terminal on the cluster head:") cli_logger.print( cf.bold(" ray attach {}{}"), config_file, modifiers) + + remote_shell_str = updater.cmd_runner.remote_shell_command_str() + cli_logger.print("Get a remote shell to the cluster manually:") + cli_logger.print(" {}", remote_shell_str.strip()) finally: provider.cleanup() diff --git a/python/ray/tests/test_cli.py b/python/ray/tests/test_cli.py index dc20fc714..ed922a0f4 100644 --- a/python/ray/tests/test_cli.py +++ b/python/ray/tests/test_cli.py @@ -91,21 +91,23 @@ def _debug_check_line_by_line(result, expected_lines): i = 0 for out in output_lines: - print(out) - if i >= len(expected_lines): i += 1 print("!!!!!! Expected fewer lines") - print("\n".join(output_lines[i:])) + context = [f"CONTEXT: {line}" for line in output_lines[i - 3:i]] + print("\n".join(context)) + extra = [f"-- {line}" for line in output_lines[i:]] + print("\n".join(extra)) break exp = expected_lines[i] matched = re.fullmatch(exp + r" *", out) is not None if not matched: - print(f"!!!!!!! Expected (regex): {repr(exp)}") + print(f"!!! ERROR: Expected (regex): {repr(exp)}") + print(f"Got: {out}") i += 1 if i < len(expected_lines): - print("!!!!!!! Expected (regex):") + print("!!! ERROR: Expected extra lines (regex):") for line in expected_lines[i:]: print(repr(line)) diff --git a/python/ray/tests/test_cli_patterns/test_ray_up.txt b/python/ray/tests/test_cli_patterns/test_ray_up.txt index 56dbc4fe4..48bc59c71 100644 --- a/python/ray/tests/test_cli_patterns/test_ray_up.txt +++ b/python/ray/tests/test_cli_patterns/test_ray_up.txt @@ -41,5 +41,7 @@ Acquiring an up-to-date head node Useful commands Monitor autoscaling with ray exec .+ 'tail -n 100 -f /tmp/ray/session_latest/logs/monitor\*' - Connect to a terminal on the cluster head + Connect to a terminal on the cluster head: ray attach .+ + Get a remote shell to the cluster manually: + ssh .+ diff --git a/python/ray/tests/test_cli_patterns/test_ray_up_record.txt b/python/ray/tests/test_cli_patterns/test_ray_up_record.txt index bf47fccc6..3c940fefd 100644 --- a/python/ray/tests/test_cli_patterns/test_ray_up_record.txt +++ b/python/ray/tests/test_cli_patterns/test_ray_up_record.txt @@ -70,5 +70,7 @@ .+\.py.*Useful commands .+\.py.*Monitor autoscaling with .+\.py.* ray exec .+ 'tail -n 100 -f .+ -.+\.py.*Connect to a terminal on the cluster head +.+\.py.*Connect to a terminal on the cluster head: .+\.py.* ray attach .+ +.+\.py.*Get a remote shell to the cluster manually: +.+\.py.* ssh.+\.pem.+