From 1a975d7af5589d7fbb86485ae2e9a24bc31f50db Mon Sep 17 00:00:00 2001 From: mblos Date: Tue, 31 Mar 2026 10:45:31 +0200 Subject: [PATCH 1/2] Committed resources client uses gophercloud for re-authentication automatically --- .../reservations/commitments/client.go | 22 +++++-------------- .../reservations/commitments/client_test.go | 6 ++--- 2 files changed, 9 insertions(+), 19 deletions(-) diff --git a/internal/scheduling/reservations/commitments/client.go b/internal/scheduling/reservations/commitments/client.go index b31feb7c0..2980b6260 100644 --- a/internal/scheduling/reservations/commitments/client.go +++ b/internal/scheduling/reservations/commitments/client.go @@ -5,8 +5,6 @@ package commitments import ( "context" - "encoding/json" - "fmt" "net/http" gosync "sync" "time" @@ -173,26 +171,18 @@ func (c *commitmentsClient) listCommitments(ctx context.Context, project Project "/domains/" + project.DomainID + "/projects/" + project.ID + "/commitments" - req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, http.NoBody) - if err != nil { - return nil, err - } - req.Header.Set("X-Auth-Token", c.limes.Token()) - resp, err := c.limes.HTTPClient.Do(req) - if err != nil { - return nil, err - } - defer resp.Body.Close() - if resp.StatusCode != http.StatusOK { - return nil, fmt.Errorf("unexpected status code: %d", resp.StatusCode) - } + + // Use gophercloud's Get method which handles re-authentication automatically var list struct { Commitments []Commitment `json:"commitments"` } - err = json.NewDecoder(resp.Body).Decode(&list) + _, err := c.limes.Get(ctx, url, &list, &gophercloud.RequestOpts{ + OkCodes: []int{http.StatusOK}, + }) if err != nil { return nil, err } + // Add the project information to each commitment. var commitments []Commitment for _, c := range list.Commitments { diff --git a/internal/scheduling/reservations/commitments/client_test.go b/internal/scheduling/reservations/commitments/client_test.go index be2d66ff9..d8b64c327 100644 --- a/internal/scheduling/reservations/commitments/client_test.go +++ b/internal/scheduling/reservations/commitments/client_test.go @@ -317,9 +317,9 @@ func TestCommitmentsClient_listCommitments_HTTPError(t *testing.T) { t.Errorf("expected nil commitments, got %+v", commitments) } - expectedError := "unexpected status code: 404" - if err.Error() != expectedError { - t.Errorf("expected error %q, got %q", expectedError, err.Error()) + // Gophercloud returns a more detailed error message + if !strings.Contains(err.Error(), "404") { + t.Errorf("expected error to contain '404', got %q", err.Error()) } } From e3262628a5be3f624b6842e4828d9d8d2a15a5b2 Mon Sep 17 00:00:00 2001 From: mblos Date: Tue, 31 Mar 2026 10:59:59 +0200 Subject: [PATCH 2/2] lint --- internal/scheduling/reservations/commitments/client.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/internal/scheduling/reservations/commitments/client.go b/internal/scheduling/reservations/commitments/client.go index 2980b6260..860f0ced6 100644 --- a/internal/scheduling/reservations/commitments/client.go +++ b/internal/scheduling/reservations/commitments/client.go @@ -176,9 +176,12 @@ func (c *commitmentsClient) listCommitments(ctx context.Context, project Project var list struct { Commitments []Commitment `json:"commitments"` } - _, err := c.limes.Get(ctx, url, &list, &gophercloud.RequestOpts{ + resp, err := c.limes.Get(ctx, url, &list, &gophercloud.RequestOpts{ OkCodes: []int{http.StatusOK}, }) + if resp != nil { + defer resp.Body.Close() + } if err != nil { return nil, err }