1
1
package gitlab
2
2
3
3
import (
4
+ "context"
4
5
"log"
5
6
"net/url"
6
7
"strconv"
7
8
"strings"
8
9
10
+ "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
9
11
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
10
12
"github.com/xanzy/go-gitlab"
11
13
)
12
14
13
15
func resourceGitlabProjectMirror () * schema.Resource {
14
16
return & schema.Resource {
15
- Create : resourceGitlabProjectMirrorCreate ,
16
- Read : resourceGitlabProjectMirrorRead ,
17
- Update : resourceGitlabProjectMirrorUpdate ,
18
- Delete : resourceGitlabProjectMirrorDelete ,
17
+ CreateContext : resourceGitlabProjectMirrorCreate ,
18
+ ReadContext : resourceGitlabProjectMirrorRead ,
19
+ UpdateContext : resourceGitlabProjectMirrorUpdate ,
20
+ DeleteContext : resourceGitlabProjectMirrorDelete ,
19
21
Importer : & schema.ResourceImporter {
20
22
StateContext : schema .ImportStatePassthroughContext ,
21
23
},
@@ -72,7 +74,7 @@ func resourceGitlabProjectMirror() *schema.Resource {
72
74
}
73
75
}
74
76
75
- func resourceGitlabProjectMirrorCreate (d * schema.ResourceData , meta interface {}) error {
77
+ func resourceGitlabProjectMirrorCreate (ctx context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
76
78
client := meta .(* gitlab.Client )
77
79
78
80
projectID := d .Get ("project" ).(string )
@@ -90,18 +92,18 @@ func resourceGitlabProjectMirrorCreate(d *schema.ResourceData, meta interface{})
90
92
91
93
log .Printf ("[DEBUG] create gitlab project mirror for project %v" , projectID )
92
94
93
- mirror , _ , err := client .ProjectMirrors .AddProjectMirror (projectID , options )
95
+ mirror , _ , err := client .ProjectMirrors .AddProjectMirror (projectID , options , gitlab . WithContext ( ctx ) )
94
96
if err != nil {
95
- return err
97
+ return diag . FromErr ( err )
96
98
}
97
99
d .Set ("mirror_id" , mirror .ID )
98
100
99
101
mirrorID := strconv .Itoa (mirror .ID )
100
102
d .SetId (buildTwoPartID (& projectID , & mirrorID ))
101
- return resourceGitlabProjectMirrorRead (d , meta )
103
+ return resourceGitlabProjectMirrorRead (ctx , d , meta )
102
104
}
103
105
104
- func resourceGitlabProjectMirrorUpdate (d * schema.ResourceData , meta interface {}) error {
106
+ func resourceGitlabProjectMirrorUpdate (ctx context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
105
107
client := meta .(* gitlab.Client )
106
108
107
109
mirrorID := d .Get ("mirror_id" ).(int )
@@ -117,15 +119,15 @@ func resourceGitlabProjectMirrorUpdate(d *schema.ResourceData, meta interface{})
117
119
}
118
120
log .Printf ("[DEBUG] update gitlab project mirror %v for %s" , mirrorID , projectID )
119
121
120
- _ , _ , err := client .ProjectMirrors .EditProjectMirror (projectID , mirrorID , & options )
122
+ _ , _ , err := client .ProjectMirrors .EditProjectMirror (projectID , mirrorID , & options , gitlab . WithContext ( ctx ) )
121
123
if err != nil {
122
- return err
124
+ return diag . FromErr ( err )
123
125
}
124
- return resourceGitlabProjectMirrorRead (d , meta )
126
+ return resourceGitlabProjectMirrorRead (ctx , d , meta )
125
127
}
126
128
127
129
// Documented remote mirrors API does not support a delete method, instead mirror is disabled.
128
- func resourceGitlabProjectMirrorDelete (d * schema.ResourceData , meta interface {}) error {
130
+ func resourceGitlabProjectMirrorDelete (ctx context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
129
131
client := meta .(* gitlab.Client )
130
132
131
133
enabled := false
@@ -142,20 +144,23 @@ func resourceGitlabProjectMirrorDelete(d *schema.ResourceData, meta interface{})
142
144
}
143
145
log .Printf ("[DEBUG] Disable gitlab project mirror %v for %s" , mirrorID , projectID )
144
146
145
- _ , _ , err := client .ProjectMirrors .EditProjectMirror (projectID , mirrorID , & options )
147
+ _ , _ , err := client .ProjectMirrors .EditProjectMirror (projectID , mirrorID , & options , gitlab .WithContext (ctx ))
148
+ if err != nil {
149
+ return diag .FromErr (err )
150
+ }
146
151
147
- return err
152
+ return nil
148
153
}
149
154
150
- func resourceGitlabProjectMirrorRead (d * schema.ResourceData , meta interface {}) error {
155
+ func resourceGitlabProjectMirrorRead (ctx context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
151
156
client := meta .(* gitlab.Client )
152
157
153
158
ids := strings .Split (d .Id (), ":" )
154
159
projectID := ids [0 ]
155
160
mirrorID := ids [1 ]
156
161
integerMirrorID , err := strconv .Atoi (mirrorID )
157
162
if err != nil {
158
- return err
163
+ return diag . FromErr ( err )
159
164
}
160
165
log .Printf ("[DEBUG] read gitlab project mirror %s id %v" , projectID , mirrorID )
161
166
@@ -168,9 +173,9 @@ func resourceGitlabProjectMirrorRead(d *schema.ResourceData, meta interface{}) e
168
173
}
169
174
170
175
for {
171
- mirrors , response , err := client .ProjectMirrors .ListProjectMirror (projectID , opts )
176
+ mirrors , response , err := client .ProjectMirrors .ListProjectMirror (projectID , opts , gitlab . WithContext ( ctx ) )
172
177
if err != nil {
173
- return err
178
+ return diag . FromErr ( err )
174
179
}
175
180
176
181
for _ , m := range mirrors {
0 commit comments