mirror of
https://github.com/kubeshark/kubeshark.git
synced 2025-09-17 15:21:54 +00:00
API server provider readiness check with echo (#570)
This commit is contained in:
@@ -4,11 +4,9 @@ import (
|
|||||||
"bytes"
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"strings"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/up9inc/mizu/shared/kubernetes"
|
"github.com/up9inc/mizu/shared/kubernetes"
|
||||||
@@ -41,7 +39,7 @@ func NewProvider(url string, retries int, timeout time.Duration) *Provider {
|
|||||||
func (provider *Provider) TestConnection() error {
|
func (provider *Provider) TestConnection() error {
|
||||||
retriesLeft := provider.retries
|
retriesLeft := provider.retries
|
||||||
for retriesLeft > 0 {
|
for retriesLeft > 0 {
|
||||||
if _, err := provider.GetHealthStatus(); err != nil {
|
if isReachable, err := provider.isReachable(); err != nil || !isReachable {
|
||||||
logger.Log.Debugf("api server not ready yet %v", err)
|
logger.Log.Debugf("api server not ready yet %v", err)
|
||||||
} else {
|
} else {
|
||||||
logger.Log.Debugf("connection test to api server passed successfully")
|
logger.Log.Debugf("connection test to api server passed successfully")
|
||||||
@@ -57,27 +55,14 @@ func (provider *Provider) TestConnection() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (provider *Provider) GetHealthStatus() (*shared.HealthResponse, error) {
|
func (provider *Provider) isReachable() (bool, error) {
|
||||||
healthUrl := fmt.Sprintf("%s/echo", provider.url)
|
echoUrl := fmt.Sprintf("%s/echo", provider.url)
|
||||||
if response, err := provider.client.Get(healthUrl); err != nil {
|
if response, err := provider.client.Get(echoUrl); err != nil {
|
||||||
return nil, err
|
return false, err
|
||||||
} else if response.StatusCode > 299 {
|
} else if response.StatusCode != 200 {
|
||||||
responseBody := new(strings.Builder)
|
return false, fmt.Errorf("invalid status code %v", response.StatusCode)
|
||||||
|
|
||||||
if _, err := io.Copy(responseBody, response.Body); err != nil {
|
|
||||||
return nil, fmt.Errorf("status code: %d - (bad response - %v)", response.StatusCode, err)
|
|
||||||
} else {
|
|
||||||
singleLineResponse := strings.ReplaceAll(responseBody.String(), "\n", "")
|
|
||||||
return nil, fmt.Errorf("status code: %d - (response - %v)", response.StatusCode, singleLineResponse)
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
defer response.Body.Close()
|
return true, nil
|
||||||
|
|
||||||
healthResponse := &shared.HealthResponse{}
|
|
||||||
if err := json.NewDecoder(response.Body).Decode(&healthResponse); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return healthResponse, nil
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user