You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devlake.apache.org by kl...@apache.org on 2022/11/22 10:20:55 UTC
[incubator-devlake] branch release-v0.14 updated: fix: proxy connectivity checking (#3782)
This is an automated email from the ASF dual-hosted git repository.
klesh pushed a commit to branch release-v0.14
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git
The following commit(s) were added to refs/heads/release-v0.14 by this push:
new 62f0d36d6 fix: proxy connectivity checking (#3782)
62f0d36d6 is described below
commit 62f0d36d6e38c8fadf2dfb7736a075bcf0ff01fe
Author: Klesh Wong <zh...@merico.dev>
AuthorDate: Tue Nov 22 18:20:51 2022 +0800
fix: proxy connectivity checking (#3782)
---
plugins/helper/api_client.go | 51 +++++++++++++++++++++++++++-----------------
1 file changed, 31 insertions(+), 20 deletions(-)
diff --git a/plugins/helper/api_client.go b/plugins/helper/api_client.go
index 4708b8fc4..fbc015bad 100644
--- a/plugins/helper/api_client.go
+++ b/plugins/helper/api_client.go
@@ -60,25 +60,6 @@ func NewApiClient(
proxy string,
br core.BasicRes,
) (*ApiClient, errors.Error) {
- parsedUrl, err := url.Parse(endpoint)
- if err != nil {
- return nil, errors.BadInput.Wrap(err, fmt.Sprintf("Invalid URL: %s", endpoint))
- }
- if parsedUrl.Scheme == "" {
- return nil, errors.BadInput.New("Invalid URL scheme")
- }
- err = utils.CheckDNS(parsedUrl.Hostname())
- if err != nil {
- return nil, errors.Default.Wrap(err, "Failed to resolve DNS")
- }
- port, err := utils.ResolvePort(parsedUrl.Port(), parsedUrl.Scheme)
- if err != nil {
- return nil, errors.Default.New("Failed to resolve Port")
- }
- err = utils.CheckNetwork(parsedUrl.Hostname(), port, 10*time.Second)
- if err != nil {
- return nil, errors.Default.Wrap(err, "Failed to connect")
- }
apiClient := &ApiClient{}
apiClient.Setup(
endpoint,
@@ -102,8 +83,38 @@ func NewApiClient(
if err != nil {
return nil, errors.Convert(err)
}
+ // check connectivity
+ res, err := apiClient.Get("/", nil, nil)
+ if err != nil {
+ return nil, err
+ }
+ if res.StatusCode == http.StatusBadGateway {
+ return nil, errors.BadInput.New(fmt.Sprintf("fail to connect to %v via %v", endpoint, proxy))
+ }
+ } else {
+ // check connectivity
+ parsedUrl, err := url.Parse(endpoint)
+ if err != nil {
+ return nil, errors.BadInput.Wrap(err, fmt.Sprintf("Invalid URL: %s", endpoint))
+ }
+ if parsedUrl.Scheme == "" {
+ return nil, errors.BadInput.New("Invalid URL scheme")
+ }
+ err = utils.CheckDNS(parsedUrl.Hostname())
+ if err != nil {
+ return nil, errors.Default.Wrap(err, "Failed to resolve DNS")
+ }
+ port, err := utils.ResolvePort(parsedUrl.Port(), parsedUrl.Scheme)
+ if err != nil {
+ return nil, errors.Default.New("Failed to resolve Port")
+ }
+ err = utils.CheckNetwork(parsedUrl.Hostname(), port, 10*time.Second)
+ if err != nil {
+ return nil, errors.Default.Wrap(err, "Failed to connect")
+ }
}
apiClient.SetContext(ctx)
+
return apiClient, nil
}
@@ -259,7 +270,7 @@ func (apiClient *ApiClient) Do(
res, err = errors.Convert01(apiClient.client.Do(req))
if err != nil {
apiClient.logError(err, "[api-client] failed to request %s with error", req.URL.String())
- return nil, errors.Default.Wrap(err, fmt.Sprintf("error running beforeRequest for %s", req.URL.String()))
+ return nil, errors.Default.Wrap(err, fmt.Sprintf("error requesting %s", req.URL.String()))
}
// after receive
if apiClient.afterResponse != nil {