diff --git a/pkg/remote/redfish/errors.go b/pkg/remote/redfish/errors.go index 5daeb46c..fddd76d7 100644 --- a/pkg/remote/redfish/errors.go +++ b/pkg/remote/redfish/errors.go @@ -39,29 +39,32 @@ func (e ErrOperationRetriesExceeded) Error() string { // ScreenRedfishError provides detailed error checking on a Redfish client response. func ScreenRedfishError(httpResp *http.Response, clientErr error) error { + if httpResp == nil { + return ErrRedfishClient{Message: "HTTP request failed. Please try again."} + } + // NOTE(drewwalters96): clientErr may not be nil even though the request was successful. The HTTP status code // has to be verified for success on each request. The Redfish client uses HTTP codes 200 and 204 to indicate // success. - if httpResp != nil && (httpResp.StatusCode < http.StatusOK || httpResp.StatusCode > http.StatusNoContent) { - if clientErr == nil { - return ErrRedfishClient{Message: http.StatusText(httpResp.StatusCode)} - } + if httpResp.StatusCode >= http.StatusOK && httpResp.StatusCode <= http.StatusNoContent { + // This range of status codes indicate success + return nil + } - oAPIErr, ok := clientErr.(redfishClient.GenericOpenAPIError) - if !ok { - return ErrRedfishClient{Message: "Unable to decode client error."} - } + if clientErr == nil { + return ErrRedfishClient{Message: http.StatusText(httpResp.StatusCode)} + } - var resp redfishClient.RedfishError - if err := json.Unmarshal(oAPIErr.Body(), &resp); err != nil { - // No JSON response included; use generic error text. - return ErrRedfishClient{Message: err.Error()} - } + oAPIErr, ok := clientErr.(redfishClient.GenericOpenAPIError) + if !ok { + return ErrRedfishClient{Message: "Unable to decode client error."} + } - return ErrRedfishClient{Message: resp.Error.Message} - } else if httpResp == nil { - return ErrRedfishClient{Message: "HTTP request failed. Please try again."} + var resp redfishClient.RedfishError + if err := json.Unmarshal(oAPIErr.Body(), &resp); err != nil { + // No JSON response included; use generic error text. + return ErrRedfishClient{Message: err.Error()} } - return nil + return ErrRedfishClient{Message: resp.Error.Message} }