Skip to content

Commit bd11163

Browse files
committed
Restore DynamicSSHAddress functionality for WSL2
Signed-off-by: Anders F Björklund <anders.f.bjorklund@gmail.com>
1 parent b9b9aa6 commit bd11163

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

pkg/driver/wsl2/vm_windows.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,3 +229,27 @@ func getWslStatus(instName string) (string, error) {
229229

230230
return instState, nil
231231
}
232+
233+
func getSSHAddress(ctx context.Context, instName string) (string, error) {
234+
distroName := "lima-" + instName
235+
// Ubuntu
236+
cmd := exec.CommandContext(ctx, "wsl.exe", "-d", distroName, "bash", "-c", `hostname -I | cut -d ' ' -f1`)
237+
out, err := cmd.CombinedOutput()
238+
if err == nil {
239+
return strings.TrimSpace(string(out)), nil
240+
}
241+
// Alpine
242+
cmd = exec.CommandContext(ctx, "wsl.exe", "-d", distroName, "sh", "-c", `ip route get 1 | awk '{gsub("^.*src ",""); print $1; exit}'`)
243+
out, err = cmd.CombinedOutput()
244+
if err == nil {
245+
return strings.TrimSpace(string(out)), nil
246+
}
247+
// fallback
248+
cmd = exec.CommandContext(ctx, "wsl.exe", "-d", distroName, "hostname", "-i")
249+
out, err = cmd.CombinedOutput()
250+
if err != nil || strings.HasPrefix(string(out), "127.") {
251+
return "", fmt.Errorf("failed to get hostname for instance %q, err: %w (out=%q)", instName, err, string(out))
252+
}
253+
254+
return strings.TrimSpace(string(out)), nil
255+
}

pkg/driver/wsl2/wsl_driver_windows.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ func (l *LimaWslDriver) InspectStatus(ctx context.Context, inst *limatype.Instan
193193
inst.SSHLocalPort = 22
194194

195195
if inst.Status == limatype.StatusRunning {
196-
sshAddr, err := l.SSHAddress(ctx)
196+
sshAddr, err := getSSHAddress(ctx, inst.Name)
197197
if err == nil {
198198
inst.SSHAddress = sshAddr
199199
} else {

0 commit comments

Comments
 (0)