in pkg/infrastructure/authorizationCheckers/ARMTemplateWhatIf/armTemplateWhatIfAuthorizationChecker.go [264:322]
func (a *armWhatIfConfig) GetWhatIfResp(whatIfRespLoc string, bearerToken string) (string, error) {
client := &http.Client{}
req, err := http.NewRequest("GET", whatIfRespLoc, nil)
if err != nil {
return "", err
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Accept", "application/json")
req.Header.Set("User-Agent", "Go HTTP Client")
// add bearer token to header
req.Header.Add("Authorization", "Bearer "+bearerToken)
var respBody string
maxRetries := 50
retryCount := 0
for {
// make request
resp, err := client.Do(req)
if err != nil {
return "", err
}
defer resp.Body.Close()
// read response body
body, err := io.ReadAll(resp.Body)
if err != nil {
return "", err
}
respBody = string(body)
// If response body is not empty, break out of loop
if respBody != "" {
log.Infoln("Whatif Results Response Received..")
break
}
retryCount++
if retryCount == maxRetries {
log.Warnf("Whatif Results Response Body is empty after %d retries, returning empty response body", maxRetries)
return "", fmt.Errorf("Whatif Results Response Body is empty after %d retries", maxRetries)
}
log.Infoln("Whatif Results Response Body is empty, retrying in a bit...")
// Sleep for 500 milli seconds and try again
time.Sleep(500 * time.Millisecond)
}
log.Debugln("Whatif Results Response Body:")
log.Debugln(respBody)
return respBody, nil
}