From 5846f5d63a9910b84c2547f22b937eaf0d730430 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Tue, 6 May 2025 10:24:58 +0200 Subject: [PATCH] Host: actual setup ssh controlmaster before we were not entering the context manager --- pkgs/clan-cli/clan_cli/machines/machines.py | 13 +++++++------ pkgs/clan-cli/clan_cli/ssh/host.py | 3 ++- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/pkgs/clan-cli/clan_cli/machines/machines.py b/pkgs/clan-cli/clan_cli/machines/machines.py index cc370b46b..e681d07d6 100644 --- a/pkgs/clan-cli/clan_cli/machines/machines.py +++ b/pkgs/clan-cli/clan_cli/machines/machines.py @@ -149,13 +149,14 @@ class Machine: @contextmanager def target_host(self) -> Iterator[Host]: - yield parse_deployment_address( + with parse_deployment_address( self.name, self.target_host_address, self.host_key_check, private_key=self.private_key, meta={"machine": self}, - ) + ) as target_host: + yield target_host @contextmanager def build_host(self) -> Iterator[Host | None]: @@ -165,18 +166,18 @@ class Machine: """ build_host = self.override_build_host or self.deployment.get("buildHost") if build_host is None: - with self.target_host() as target_host: - yield target_host + yield None return # enable ssh agent forwarding to allow the build host to access the target host - yield parse_deployment_address( + with parse_deployment_address( self.name, build_host, self.host_key_check, forward_agent=True, private_key=self.private_key, meta={"machine": self}, - ) + ) as build_host: + yield build_host @cached_property def deploy_as_root(self) -> bool: diff --git a/pkgs/clan-cli/clan_cli/ssh/host.py b/pkgs/clan-cli/clan_cli/ssh/host.py index 0b8d617e9..2acafb6b2 100644 --- a/pkgs/clan-cli/clan_cli/ssh/host.py +++ b/pkgs/clan-cli/clan_cli/ssh/host.py @@ -47,9 +47,10 @@ class Host: self.ssh_options["ControlPath"] = str(control_path / "clan-%h-%p-%r") self.ssh_options["ControlPersist"] = "30m" - def __enter__(self) -> None: + def __enter__(self) -> "Host": self._temp_dir = TemporaryDirectory(prefix="clan-ssh-") self.setup_control_master(Path(self._temp_dir.name)) + return self def __exit__( self,