mirror of
https://github.com/Control-D-Inc/ctrld.git
synced 2026-09-04 13:36:35 +02:00
34 lines
938 B
Go
34 lines
938 B
Go
package controld
|
|
|
|
import (
|
|
"context"
|
|
"io"
|
|
"net/http"
|
|
)
|
|
|
|
// ProbeReachability makes one lightweight request to the ControlD API host,
|
|
// reusing the same transport and IP-fallback logic real provisioning traffic
|
|
// takes. Any HTTP response, even an error status, counts as reachable: this
|
|
// checks the network path, not whether the endpoint accepts the request.
|
|
//
|
|
// The caller controls how long to wait via ctx; there is no timeout here
|
|
// beyond what ctx enforces.
|
|
func ProbeReachability(ctx context.Context, cdDev bool) error {
|
|
apiURL := apiURLCom
|
|
if cdDev {
|
|
apiURL = apiURLDev
|
|
}
|
|
req, err := http.NewRequestWithContext(ctx, http.MethodGet, apiURL, nil)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
client := &http.Client{Transport: apiTransport(ctx, cdDev)}
|
|
resp, err := doWithFallback(ctx, client, req, apiServerIP(cdDev))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer resp.Body.Close()
|
|
_, _ = io.Copy(io.Discard, resp.Body)
|
|
return nil
|
|
}
|