@@ -17,6 +17,7 @@ func resourceCloudBuildTrigger() *schema.Resource {
17
17
return & schema.Resource {
18
18
Create : resourceCloudbuildBuildTriggerCreate ,
19
19
Read : resourceCloudbuildBuildTriggerRead ,
20
+ Update : resourceCloudbuildBuildTriggerUpdate ,
20
21
Delete : resourceCloudbuildBuildTriggerDelete ,
21
22
Importer : & schema.ResourceImporter {
22
23
State : resourceCloudBuildTriggerImportState ,
@@ -39,46 +40,39 @@ func resourceCloudBuildTrigger() *schema.Resource {
39
40
"filename" : & schema.Schema {
40
41
Type : schema .TypeString ,
41
42
Optional : true ,
42
- ForceNew : true ,
43
43
ConflictsWith : []string {"build" },
44
44
},
45
45
"build" : {
46
46
Type : schema .TypeList ,
47
47
Description : "Contents of the build template." ,
48
48
Optional : true ,
49
- ForceNew : true ,
50
49
MaxItems : 1 ,
51
50
Elem : & schema.Resource {
52
51
Schema : map [string ]* schema.Schema {
53
52
"images" : & schema.Schema {
54
53
Type : schema .TypeList ,
55
54
Optional : true ,
56
- ForceNew : true ,
57
55
Elem : & schema.Schema {Type : schema .TypeString },
58
56
},
59
57
"step" : & schema.Schema {
60
58
Type : schema .TypeList ,
61
59
Optional : true ,
62
- ForceNew : true ,
63
60
Elem : & schema.Resource {
64
61
Schema : map [string ]* schema.Schema {
65
62
"name" : & schema.Schema {
66
63
Type : schema .TypeString ,
67
64
Optional : true ,
68
- ForceNew : true ,
69
65
},
70
66
"args" : & schema.Schema {
71
67
Type : schema .TypeString ,
72
68
Optional : true ,
73
- ForceNew : true ,
74
69
},
75
70
},
76
71
},
77
72
},
78
73
"tags" : & schema.Schema {
79
74
Type : schema .TypeList ,
80
75
Optional : true ,
81
- ForceNew : true ,
82
76
Elem : & schema.Schema {Type : schema .TypeString },
83
77
},
84
78
},
@@ -87,50 +81,41 @@ func resourceCloudBuildTrigger() *schema.Resource {
87
81
"description" : & schema.Schema {
88
82
Type : schema .TypeString ,
89
83
Optional : true ,
90
- ForceNew : true ,
91
84
},
92
85
"substitutions" : & schema.Schema {
93
86
Optional : true ,
94
87
Type : schema .TypeMap ,
95
- ForceNew : true ,
96
88
Elem : & schema.Schema {Type : schema .TypeString },
97
89
},
98
90
"trigger_template" : & schema.Schema {
99
91
Optional : true ,
100
92
Type : schema .TypeList ,
101
93
MaxItems : 1 ,
102
- ForceNew : true ,
103
94
Elem : & schema.Resource {
104
95
Schema : map [string ]* schema.Schema {
105
96
"branch_name" : & schema.Schema {
106
97
Type : schema .TypeString ,
107
98
Optional : true ,
108
- ForceNew : true ,
109
99
},
110
100
"commit_sha" : & schema.Schema {
111
101
Type : schema .TypeString ,
112
102
Optional : true ,
113
- ForceNew : true ,
114
103
},
115
104
"dir" : & schema.Schema {
116
105
Type : schema .TypeString ,
117
106
Optional : true ,
118
- ForceNew : true ,
119
107
},
120
108
"project" : & schema.Schema {
121
109
Type : schema .TypeString ,
122
110
Optional : true ,
123
- ForceNew : true ,
124
111
},
125
112
"repo_name" : & schema.Schema {
126
113
Type : schema .TypeString ,
127
114
Optional : true ,
128
- ForceNew : true ,
129
115
},
130
116
"tag_name" : & schema.Schema {
131
117
Type : schema .TypeString ,
132
118
Optional : true ,
133
- ForceNew : true ,
134
119
},
135
120
},
136
121
},
@@ -147,22 +132,11 @@ func resourceCloudbuildBuildTriggerCreate(d *schema.ResourceData, meta interface
147
132
return err
148
133
}
149
134
150
- // Build the address parameter
151
- buildTrigger := & cloudbuild.BuildTrigger {}
152
-
153
- if v , ok := d .GetOk ("description" ); ok {
154
- buildTrigger .Description = v .(string )
155
- }
156
-
157
- if v , ok := d .GetOk ("filename" ); ok {
158
- buildTrigger .Filename = v .(string )
159
- } else {
160
- buildTrigger .Build = expandCloudbuildBuildTriggerBuild (d )
135
+ buildTrigger , err := expandCloudbuildBuildTrigger (d , meta )
136
+ if err != nil {
137
+ return err
161
138
}
162
139
163
- buildTrigger .TriggerTemplate = expandCloudbuildBuildTriggerTemplate (d , project )
164
- buildTrigger .Substitutions = expandStringMap (d , "substitutions" )
165
-
166
140
tstr , err := json .Marshal (buildTrigger )
167
141
if err != nil {
168
142
return err
@@ -208,6 +182,56 @@ func resourceCloudbuildBuildTriggerRead(d *schema.ResourceData, meta interface{}
208
182
return nil
209
183
}
210
184
185
+ func resourceCloudbuildBuildTriggerUpdate (d * schema.ResourceData , meta interface {}) error {
186
+ config := meta .(* Config )
187
+
188
+ project , err := getProject (d , config )
189
+ if err != nil {
190
+ return err
191
+ }
192
+
193
+ buildTrigger , err := expandCloudbuildBuildTrigger (d , meta )
194
+ if err != nil {
195
+ return err
196
+ }
197
+
198
+ id := d .Id ()
199
+
200
+ log .Printf ("[INFO] Updating Cloud Build Trigger: %s" , id )
201
+
202
+ if _ , err = config .clientBuild .Projects .Triggers .Patch (project , id , buildTrigger ).Do (); err != nil {
203
+ return err
204
+ }
205
+
206
+ return resourceCloudbuildBuildTriggerRead (d , meta )
207
+ }
208
+
209
+ func expandCloudbuildBuildTrigger (d * schema.ResourceData , meta interface {}) (* cloudbuild.BuildTrigger , error ) {
210
+ config := meta .(* Config )
211
+
212
+ project , err := getProject (d , config )
213
+ if err != nil {
214
+ return nil , err
215
+ }
216
+
217
+ t := & cloudbuild.BuildTrigger {}
218
+
219
+ if v , ok := d .GetOk ("description" ); ok {
220
+ t .Description = v .(string )
221
+ }
222
+
223
+ if v , ok := d .GetOk ("filename" ); ok {
224
+ t .Filename = v .(string )
225
+ } else {
226
+ t .Build = expandCloudbuildBuildTriggerBuild (d )
227
+ }
228
+
229
+ t .Substitutions = expandStringMap (d , "substitutions" )
230
+ t .TriggerTemplate = expandCloudbuildBuildTriggerTemplate (d , project )
231
+
232
+ return t , nil
233
+ }
234
+
211
235
func expandCloudbuildBuildTriggerTemplate (d * schema.ResourceData , project string ) * cloudbuild.RepoSource {
212
236
if d .Get ("trigger_template.#" ).(int ) == 0 {
213
237
return nil
0 commit comments