func()

in pkg/client/sonar/sonar.go [152:185]


func (sc *Client) WaitForStatusIsUp(retryCount int, timeout time.Duration) error {
	var systemStatusResponse SystemStatusResponse

	sc.resty.SetRetryCount(retryCount).
		SetRetryWaitTime(timeout).
		AddRetryCondition(
			func(response *resty.Response, err error) bool {
				if response.IsError() || !response.IsSuccess() {
					return response.IsError()
				}

				if err := json.Unmarshal([]byte(response.String()), &systemStatusResponse); err != nil {
					return true
				}

				log.Info(fmt.Sprintf("Current Sonar status - %s", systemStatusResponse.Status))

				return systemStatusResponse.Status != "UP"
			},
		)
	defer sc.resty.SetRetryCount(0)

	resp, err := sc.resty.R().
		Get("/system/status")
	if err != nil {
		return fmt.Errorf("failed to send request for current Sonar status!: %w", err)
	}

	if resp.IsError() {
		return fmt.Errorf("checking Sonar status failed. Response - %s", resp.Status())
	}

	return nil
}