From 1ecade10bfa7b3b0ebe246ebc56c127030c11e26 Mon Sep 17 00:00:00 2001 From: Chaitanya Kulkarni Date: Wed, 20 Mar 2024 10:10:37 -0700 Subject: [PATCH] All non-200 status code from MDS should raise error (#383) --- metadata/metadata.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/metadata/metadata.go b/metadata/metadata.go index 17d02c22..3ece6951 100644 --- a/metadata/metadata.go +++ b/metadata/metadata.go @@ -506,10 +506,15 @@ func (c *Client) do(ctx context.Context, cfg requestConfig) (*http.Response, err return resp, fmt.Errorf("error connecting to metadata server: %+v", err) } - statusCodeMsg := "error connecting to metadata server, status code: %d" - switch resp.StatusCode { - case 404, 412: - return resp, fmt.Errorf(statusCodeMsg, resp.StatusCode) + if resp == nil { + return nil, fmt.Errorf("got nil response from metadata server") + } + + if resp.StatusCode != http.StatusOK { + defer resp.Body.Close() + // Ignore read error as we are returning original error and wrapping MDS error code. + r, _ := io.ReadAll(resp.Body) + return resp, fmt.Errorf("invalid response from metadata server, status code: %d, reason: %s", resp.StatusCode, string(r)) } if cfg.hang {