|
|
@ -84,15 +84,15 @@ func GetHostIP(ctx context.Context, runtime runtimes.Runtime, cluster *k3d.Clust |
|
|
|
return ip, nil |
|
|
|
return ip, nil |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
l.Log().Warnf("failed to resolve 'host.docker.internal' from inside the k3d-tools node: %v", err) |
|
|
|
l.Log().Debugf("[GetHostIP on Docker Desktop] failed to resolve 'host.docker.internal' from inside the k3d-tools node: %v", err) |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
l.Log().Infof("HostIP: using network gateway...") |
|
|
|
|
|
|
|
ip, err := runtime.GetHostIP(ctx, cluster.Network.Name) |
|
|
|
ip, err := runtime.GetHostIP(ctx, cluster.Network.Name) |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
|
return nil, fmt.Errorf("runtime failed to get host IP: %w", err) |
|
|
|
return nil, fmt.Errorf("runtime failed to get host IP: %w", err) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
l.Log().Infof("HostIP: using network gateway %s address", ip) |
|
|
|
|
|
|
|
|
|
|
|
return ip, nil |
|
|
|
return ip, nil |
|
|
|
|
|
|
|
|
|
|
@ -105,20 +105,22 @@ func GetHostIP(ctx context.Context, runtime runtimes.Runtime, cluster *k3d.Clust |
|
|
|
|
|
|
|
|
|
|
|
func resolveHostnameFromInside(ctx context.Context, rtime runtimes.Runtime, node *k3d.Node, hostname string, cmd ResolveHostCmd) (net.IP, error) { |
|
|
|
func resolveHostnameFromInside(ctx context.Context, rtime runtimes.Runtime, node *k3d.Node, hostname string, cmd ResolveHostCmd) (net.IP, error) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
errPrefix := fmt.Errorf("error resolving hostname %s from inside node %s", hostname, node.Name) |
|
|
|
|
|
|
|
|
|
|
|
logreader, execErr := rtime.ExecInNodeGetLogs(ctx, node, []string{"sh", "-c", fmt.Sprintf(cmd.Cmd, hostname)}) |
|
|
|
logreader, execErr := rtime.ExecInNodeGetLogs(ctx, node, []string{"sh", "-c", fmt.Sprintf(cmd.Cmd, hostname)}) |
|
|
|
|
|
|
|
|
|
|
|
if logreader == nil { |
|
|
|
if logreader == nil { |
|
|
|
if execErr != nil { |
|
|
|
if execErr != nil { |
|
|
|
return nil, execErr |
|
|
|
return nil, fmt.Errorf("%v: %w", errPrefix, execErr) |
|
|
|
} |
|
|
|
} |
|
|
|
return nil, fmt.Errorf("Failed to get logs from exec process") |
|
|
|
return nil, fmt.Errorf("%w: failed to get logs from exec process", errPrefix) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
submatches := map[string]string{} |
|
|
|
submatches := map[string]string{} |
|
|
|
scanner := bufio.NewScanner(logreader) |
|
|
|
scanner := bufio.NewScanner(logreader) |
|
|
|
if scanner == nil { |
|
|
|
if scanner == nil { |
|
|
|
if execErr != nil { |
|
|
|
if execErr != nil { |
|
|
|
return nil, execErr |
|
|
|
return nil, fmt.Errorf("%v: %w", errPrefix, execErr) |
|
|
|
} |
|
|
|
} |
|
|
|
return nil, fmt.Errorf("Failed to scan logs for host IP: Could not create scanner from logreader") |
|
|
|
return nil, fmt.Errorf("Failed to scan logs for host IP: Could not create scanner from logreader") |
|
|
|
} |
|
|
|
} |
|
|
@ -132,19 +134,18 @@ func resolveHostnameFromInside(ctx context.Context, rtime runtimes.Runtime, node |
|
|
|
if len(match) == 0 { |
|
|
|
if len(match) == 0 { |
|
|
|
continue |
|
|
|
continue |
|
|
|
} |
|
|
|
} |
|
|
|
l.Log().Tracef("-> Match(es): '%+v'", match) |
|
|
|
|
|
|
|
submatches = util.MapSubexpNames(cmd.LogMatcher.SubexpNames(), match) |
|
|
|
submatches = util.MapSubexpNames(cmd.LogMatcher.SubexpNames(), match) |
|
|
|
l.Log().Tracef(" -> Submatch(es): %+v", submatches) |
|
|
|
l.Log().Tracef("-> Match(es): '%+v' -> Submatch(es): %+v", match, submatches) |
|
|
|
break |
|
|
|
break |
|
|
|
} |
|
|
|
} |
|
|
|
if _, ok := submatches["ip"]; !ok { |
|
|
|
if _, ok := submatches["ip"]; !ok { |
|
|
|
if execErr != nil { |
|
|
|
if execErr != nil { |
|
|
|
l.Log().Errorln(execErr) |
|
|
|
l.Log().Errorln(execErr) |
|
|
|
} |
|
|
|
} |
|
|
|
return nil, fmt.Errorf("Failed to read address for '%s' from command output", hostname) |
|
|
|
return nil, fmt.Errorf("%w: failed to read address for '%s' from command output", errPrefix, hostname) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
l.Log().Debugf("Hostname '%s' -> Address '%s'", hostname, submatches["ip"]) |
|
|
|
l.Log().Debugf("Hostname '%s' resolved to address '%s' inside node %s", hostname, submatches["ip"], node.Name) |
|
|
|
|
|
|
|
|
|
|
|
return net.ParseIP(submatches["ip"]), nil |
|
|
|
return net.ParseIP(submatches["ip"]), nil |
|
|
|
|
|
|
|
|
|
|
|