mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-09 19:13:26 +03:00
nixos/test-driver: printout instructions on how to connect via AF_VSOCK
This commit is contained in:
parent
b1394ba443
commit
8869265f93
4 changed files with 27 additions and 0 deletions
|
@ -109,6 +109,11 @@ def main() -> None:
|
|||
help="the test script to run",
|
||||
type=Path,
|
||||
)
|
||||
arg_parser.add_argument(
|
||||
"--dump-vsocks",
|
||||
help="indicates that the interactive SSH backdoor is active and dumps information about it on start",
|
||||
action="store_true",
|
||||
)
|
||||
|
||||
args = arg_parser.parse_args()
|
||||
|
||||
|
@ -136,6 +141,8 @@ def main() -> None:
|
|||
if args.interactive:
|
||||
history_dir = os.getcwd()
|
||||
history_path = os.path.join(history_dir, ".nixos-test-history")
|
||||
if args.dump_vsocks:
|
||||
driver.dump_machine_ssh()
|
||||
ptpython.ipython.embed(
|
||||
user_ns=driver.test_symbols(),
|
||||
history_filename=history_path,
|
||||
|
|
|
@ -11,6 +11,8 @@ from pathlib import Path
|
|||
from typing import Any
|
||||
from unittest import TestCase
|
||||
|
||||
from colorama import Style
|
||||
|
||||
from test_driver.errors import MachineError, RequestedAssertionFailed
|
||||
from test_driver.logger import AbstractLogger
|
||||
from test_driver.machine import Machine, NixStartScript, retry
|
||||
|
@ -176,6 +178,19 @@ class Driver:
|
|||
)
|
||||
return {**general_symbols, **machine_symbols, **vlan_symbols}
|
||||
|
||||
def dump_machine_ssh(self) -> None:
|
||||
print("SSH backdoor enabled, the machines can be accessed like this:")
|
||||
print(
|
||||
f"{Style.BRIGHT}Note:{Style.RESET_ALL} this requires {Style.BRIGHT}systemd-ssh-proxy(1){Style.RESET_ALL} to be enabled (default on NixOS 25.05 and newer)."
|
||||
)
|
||||
names = [machine.name for machine in self.machines]
|
||||
longest_name = len(max(names, key=len))
|
||||
for num, name in enumerate(names, start=3):
|
||||
spaces = " " * (longest_name - len(name) + 2)
|
||||
print(
|
||||
f" {name}:{spaces}{Style.BRIGHT}ssh -o User=root vsock/{num}{Style.RESET_ALL}"
|
||||
)
|
||||
|
||||
def test_script(self) -> None:
|
||||
"""Run the test script"""
|
||||
with self.logger.nested("run the VM test script"):
|
||||
|
|
|
@ -75,6 +75,7 @@ pkgs.lib.throwIf (args ? specialArgs)
|
|||
),
|
||||
extraPythonPackages ? (_: [ ]),
|
||||
interactive ? { },
|
||||
sshBackdoor ? { },
|
||||
}@t:
|
||||
let
|
||||
testConfig =
|
||||
|
|
|
@ -181,6 +181,10 @@ in
|
|||
|
||||
passthru.nodes = config.nodesCompat;
|
||||
|
||||
extraDriverArgs = mkIf config.sshBackdoor.enable [
|
||||
"--dump-vsocks"
|
||||
];
|
||||
|
||||
defaults = mkMerge [
|
||||
(mkIf config.node.pkgsReadOnly {
|
||||
nixpkgs.pkgs = config.node.pkgs;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue