Skip to content

Commit 535bbc2

Browse files
Improve error handling
1 parent e69645f commit 535bbc2

File tree

4 files changed

+44
-24
lines changed

4 files changed

+44
-24
lines changed

gitlab/resource_gitlab_group_membership.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ func resourceGitlabGroupMembershipRead(d *schema.ResourceData, meta interface{})
8585
groupMember, resp, err := client.GroupMembers.GetGroupMember(groupId, userId)
8686
if err != nil {
8787
if resp.StatusCode == 404 {
88-
log.Printf("[WARN] removing group groupMember %v for %s from state because it no longer exists in gitlab", userId, groupId)
88+
log.Printf("[WARN] Group member %v not found in group %s", userId, groupId)
8989
d.SetId("")
9090
return nil
9191
}
@@ -122,8 +122,13 @@ func resourceGitlabGroupMembershipUpdate(d *schema.ResourceData, meta interface{
122122
}
123123
log.Printf("[DEBUG] update gitlab group membership %v for %s", userId, groupId)
124124

125-
_, _, err := client.GroupMembers.EditGroupMember(groupId, userId, &options)
125+
_, resp, err := client.GroupMembers.EditGroupMember(groupId, userId, &options)
126126
if err != nil {
127+
if resp.StatusCode == 404 {
128+
log.Printf("[WARN] Group member %v not found in group %s, removing from state", userId, groupId)
129+
d.SetId("")
130+
return nil
131+
}
127132
return err
128133
}
129134

gitlab/resource_gitlab_group_variable.go

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ func resourceGitlabGroupVariable() *schema.Resource {
4444
func resourceGitlabGroupVariableCreate(d *schema.ResourceData, meta interface{}) error {
4545
client := meta.(*gitlab.Client)
4646

47-
group := d.Get("group").(string)
48-
key := d.Get("key").(string)
49-
value := d.Get("value").(string)
47+
group := d.Get("group").(string)
48+
key := d.Get("key").(string)
49+
value := d.Get("value").(string)
5050
protected := d.Get("protected").(bool)
5151

5252
options := gitlab.CreateVariableOptions{
@@ -77,26 +77,29 @@ func resourceGitlabGroupVariableRead(d *schema.ResourceData, meta interface{}) e
7777

7878
log.Printf("[DEBUG] read gitlab group variable %s/%s", group, key)
7979

80-
v, _, err := client.GroupVariables.GetVariable(group, key)
80+
v, resp, err := client.GroupVariables.GetVariable(group, key)
8181
if err != nil {
82+
if resp.StatusCode == 404 {
83+
log.Printf("[WARN] Group variable %v for group %s not found in gitlab", key, group)
84+
d.SetId("")
85+
return nil
86+
}
8287
return err
8388
}
8489

8590
d.Set("key", v.Key)
8691
d.Set("value", v.Value)
8792
d.Set("group", group)
8893
d.Set("protected", v.Protected)
89-
d.SetId(buildTwoPartID(&group, &v.Key))
90-
9194
return nil
9295
}
9396

9497
func resourceGitlabGroupVariableUpdate(d *schema.ResourceData, meta interface{}) error {
9598
client := meta.(*gitlab.Client)
9699

97-
group := d.Get("group").(string)
98-
key := d.Get("key").(string)
99-
value := d.Get("value").(string)
100+
group := d.Get("group").(string)
101+
key := d.Get("key").(string)
102+
value := d.Get("value").(string)
100103
protected := d.Get("protected").(bool)
101104

102105
options := &gitlab.UpdateVariableOptions{
@@ -107,13 +110,15 @@ func resourceGitlabGroupVariableUpdate(d *schema.ResourceData, meta interface{})
107110
}
108111
log.Printf("[DEBUG] update gitlab group variable %s/%s", group, key)
109112

110-
v, _, err := client.GroupVariables.UpdateVariable(group, key, options)
113+
_, resp, err := client.GroupVariables.UpdateVariable(group, key, options)
111114
if err != nil {
115+
if resp.StatusCode == 404 {
116+
log.Printf("[WARN] Group variable %v for group %s not found in gitlab, removing from state", key, group)
117+
d.SetId("")
118+
return nil
119+
}
112120
return err
113121
}
114-
115-
d.SetId(buildTwoPartID(&group, &v.Key))
116-
117122
return resourceGitlabGroupVariableRead(d, meta)
118123
}
119124

gitlab/resource_gitlab_project_membership.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ func resourceGitlabProjectMembershipRead(d *schema.ResourceData, meta interface{
8080
projectMember, resp, err := client.ProjectMembers.GetProjectMember(projectId, userId)
8181
if err != nil {
8282
if resp.StatusCode == 404 {
83-
log.Printf("[WARN] removing project projectMember %v for %s from state because it no longer exists in gitlab", userId, projectId)
83+
log.Printf("[WARN] Project member %v not found in project %s", userId, projectId)
8484
d.SetId("")
8585
return nil
8686
}
@@ -115,11 +115,15 @@ func resourceGitlabProjectMembershipUpdate(d *schema.ResourceData, meta interfac
115115
}
116116
log.Printf("[DEBUG] update gitlab project membership %v for %s", userId, projectId)
117117

118-
_, _, err := client.ProjectMembers.EditProjectMember(projectId, userId, &options)
118+
_, resp, err := client.ProjectMembers.EditProjectMember(projectId, userId, &options)
119119
if err != nil {
120+
if resp.StatusCode == 404 {
121+
log.Printf("[WARN] Project member %v not found in project %s, removing from state", userId, projectId)
122+
d.SetId("")
123+
return nil
124+
}
120125
return err
121126
}
122-
123127
return resourceGitlabProjectMembershipRead(d, meta)
124128
}
125129

gitlab/resource_gitlab_project_variable.go

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -77,17 +77,20 @@ func resourceGitlabProjectVariableRead(d *schema.ResourceData, meta interface{})
7777

7878
log.Printf("[DEBUG] read gitlab project variable %s/%s", project, key)
7979

80-
v, _, err := client.ProjectVariables.GetVariable(project, key)
80+
v, resp, err := client.ProjectVariables.GetVariable(project, key)
8181
if err != nil {
82+
if resp.StatusCode == 404 {
83+
log.Printf("[WARN] Project variable %v for project %s not found in gitlab", key, project)
84+
d.SetId("")
85+
return nil
86+
}
8287
return err
8388
}
8489

8590
d.Set("key", v.Key)
8691
d.Set("value", v.Value)
8792
d.Set("project", project)
8893
d.Set("protected", v.Protected)
89-
d.SetId(buildTwoPartID(&project, &v.Key))
90-
9194
return nil
9295
}
9396

@@ -107,13 +110,16 @@ func resourceGitlabProjectVariableUpdate(d *schema.ResourceData, meta interface{
107110
}
108111
log.Printf("[DEBUG] update gitlab project variable %s/%s", project, key)
109112

110-
v, _, err := client.ProjectVariables.UpdateVariable(project, key, options)
113+
_, resp, err := client.ProjectVariables.UpdateVariable(project, key, options)
111114
if err != nil {
115+
if resp.StatusCode == 404 {
116+
log.Printf("[WARN] Project variable %v for project %s not found in gitlab, removing from state", key, project)
117+
d.SetId("")
118+
return nil
119+
}
112120
return err
113121
}
114122

115-
d.SetId(buildTwoPartID(&project, &v.Key))
116-
117123
return resourceGitlabProjectVariableRead(d, meta)
118124
}
119125

0 commit comments

Comments
 (0)