Skip to content

Commit

Permalink
Check for state change on user delete
Browse files Browse the repository at this point in the history
  • Loading branch information
armsnyder committed Jan 29, 2021
1 parent da8bba8 commit ce1612d
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 4 deletions.
28 changes: 25 additions & 3 deletions gitlab/resource_gitlab_user.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ import (
"fmt"
"log"
"strconv"
"time"

"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
gitlab "github.com/xanzy/go-gitlab"
)
Expand Down Expand Up @@ -179,8 +181,28 @@ func resourceGitlabUserDelete(d *schema.ResourceData, meta interface{}) error {

id, _ := strconv.Atoi(d.Id())

_, err := client.Users.DeleteUser(id)
// Ignoring error due to some bug in library
log.Printf("[DEBUG] Delete gitlab user %s", err)
if _, err := client.Users.DeleteUser(id); err != nil {
return err
}

stateConf := &resource.StateChangeConf{
Timeout: 5 * time.Minute,
Target: []string{"Deleted"},
Refresh: func() (interface{}, string, error) {
user, resp, err := client.Users.GetUser(id)
if resp != nil && resp.StatusCode == 404 {
return user, "Deleted", nil
}
if err != nil {
return user, "Error", err
}
return user, "Deleting", nil
},
}

if _, err := stateConf.WaitForState(); err != nil {
return fmt.Errorf("Could not finish deleting user %d: %w", id, err)
}

return nil
}
2 changes: 1 addition & 1 deletion gitlab/resource_gitlab_user_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ func TestAccGitlabUser_basic(t *testing.T) {
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckGitlabGroupDestroy,
CheckDestroy: testAccCheckGitlabUserDestroy,
Steps: []resource.TestStep{
// Create a user
{
Expand Down

0 comments on commit ce1612d

Please sign in to comment.