From bd40e8d057debb7e1e3abf6bf60166b2eef7a2ed Mon Sep 17 00:00:00 2001 From: Josh Silvas Date: Thu, 28 Mar 2024 10:11:20 -0500 Subject: [PATCH] Handles 204 responses from AWX. --- .gitignore | 2 ++ VERSION | 2 +- internal/awx/resource_team.go | 4 ++-- tools/goawx/request.go | 9 +++++++-- tools/goawx/teams.go | 6 +++--- 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index d35ac8e1..46a6f104 100644 --- a/.gitignore +++ b/.gitignore @@ -42,3 +42,5 @@ terraform develop/.env develop/terraform-provider-* + +test.go diff --git a/VERSION b/VERSION index e946d6bb..3e7bcf08 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -v1.0.3 +v1.0.4 diff --git a/internal/awx/resource_team.go b/internal/awx/resource_team.go index af308aac..7aa39288 100644 --- a/internal/awx/resource_team.go +++ b/internal/awx/resource_team.go @@ -105,7 +105,7 @@ func resourceTeamCreate(ctx context.Context, d *schema.ResourceData, m interface return resourceTeamRead(ctx, d, m) } -func roleTeamEntitlementUpdate(m interface{}, team_id int, roles []interface{}, remove bool) error { +func roleTeamEntitlementUpdate(m interface{}, teamID int, roles []interface{}, remove bool) error { client := m.(*awx.AWX) awxService := client.TeamService @@ -118,7 +118,7 @@ func roleTeamEntitlementUpdate(m interface{}, team_id int, roles []interface{}, payload["disassociate"] = true // presence of key triggers removal } - _, err := awxService.UpdateTeamRoleEntitlement(team_id, payload, make(map[string]string)) + _, err := awxService.UpdateTeamRoleEntitlement(teamID, payload, make(map[string]string)) if err != nil { return err } diff --git a/tools/goawx/request.go b/tools/goawx/request.go index f06f7077..27155c3b 100644 --- a/tools/goawx/request.go +++ b/tools/goawx/request.go @@ -107,14 +107,14 @@ func (r *Requester) Do(ar *APIRequest, responseStruct interface{}, options ...in response, err := r.Client.Do(req) if err != nil { - return nil, err + return nil, fmt.Errorf("Do.Request: %v", err) } //nolint:gomnd if response.StatusCode == 400 { // Bad Request var errorString string - errorList := map[string][]string{} + errorList := map[string]interface{}{} if err := json.NewDecoder(response.Body).Decode(&errorList); err != nil { return response, err } @@ -127,6 +127,11 @@ func (r *Requester) Do(ar *APIRequest, responseStruct interface{}, options ...in return response, errors.New(errorString) } + // If there is no response body, or if the response is of type `No Content` bypass the decode process. + if responseStruct == nil || response.StatusCode == 204 { //nolint:gomnd + return response, nil + } + switch responseStruct.(type) { case *string: return r.ReadRawResponse(response, responseStruct) diff --git a/tools/goawx/teams.go b/tools/goawx/teams.go index 9166755a..e54ed3a4 100644 --- a/tools/goawx/teams.go +++ b/tools/goawx/teams.go @@ -318,12 +318,12 @@ func (t *TeamService) UpdateTeam(id int, data map[string]interface{}, params map } // UpdateTeamRoleEntitlement updates the role entitlements for a team. -func (t *TeamService) UpdateTeamRoleEntitlement(id int, data map[string]interface{}, params map[string]string) (interface{}, error) { +func (t *TeamService) UpdateTeamRoleEntitlement(id int, data map[string]interface{}, _ map[string]string) (interface{}, error) { result := new(interface{}) endpoint := fmt.Sprintf("%s%d/roles/", teamsAPIEndpoint, id) payload, err := json.Marshal(data) if err != nil { - return nil, err + return nil, fmt.Errorf("UpdateTeamRoleEntitlement:json.Marshal error in payload. %s", err) } resp, err := t.client.Requester.PostJSON(endpoint, bytes.NewReader(payload), result, nil) @@ -335,7 +335,7 @@ func (t *TeamService) UpdateTeamRoleEntitlement(id int, data map[string]interfac }() } if err != nil { - return nil, err + return nil, fmt.Errorf("UpdateTeamRoleEntitlement:Requester.PostJSON error. %s", err) } if err := CheckResponse(resp); err != nil {