Skip to content

Commit e84c370

Browse files
authored
Merge pull request #539 from armsnyder/user-delete-wait
Check for state change on user delete
2 parents da8bba8 + ce1612d commit e84c370

File tree

2 files changed

+26
-4
lines changed

2 files changed

+26
-4
lines changed

gitlab/resource_gitlab_user.go

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ import (
44
"fmt"
55
"log"
66
"strconv"
7+
"time"
78

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

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

182-
_, err := client.Users.DeleteUser(id)
183-
// Ignoring error due to some bug in library
184-
log.Printf("[DEBUG] Delete gitlab user %s", err)
184+
if _, err := client.Users.DeleteUser(id); err != nil {
185+
return err
186+
}
187+
188+
stateConf := &resource.StateChangeConf{
189+
Timeout: 5 * time.Minute,
190+
Target: []string{"Deleted"},
191+
Refresh: func() (interface{}, string, error) {
192+
user, resp, err := client.Users.GetUser(id)
193+
if resp != nil && resp.StatusCode == 404 {
194+
return user, "Deleted", nil
195+
}
196+
if err != nil {
197+
return user, "Error", err
198+
}
199+
return user, "Deleting", nil
200+
},
201+
}
202+
203+
if _, err := stateConf.WaitForState(); err != nil {
204+
return fmt.Errorf("Could not finish deleting user %d: %w", id, err)
205+
}
206+
185207
return nil
186208
}

gitlab/resource_gitlab_user_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ func TestAccGitlabUser_basic(t *testing.T) {
1919
resource.Test(t, resource.TestCase{
2020
PreCheck: func() { testAccPreCheck(t) },
2121
Providers: testAccProviders,
22-
CheckDestroy: testAccCheckGitlabGroupDestroy,
22+
CheckDestroy: testAccCheckGitlabUserDestroy,
2323
Steps: []resource.TestStep{
2424
// Create a user
2525
{

0 commit comments

Comments
 (0)