@@ -79,15 +79,6 @@ func ResourceComputeSubnetwork() *schema.Resource {
79
79
),
80
80
81
81
Schema : map [string ]* schema.Schema {
82
- "ip_cidr_range" : {
83
- Type : schema .TypeString ,
84
- Required : true ,
85
- ValidateFunc : verify .ValidateIpCidrRange ,
86
- Description : `The range of internal addresses that are owned by this subnetwork.
87
- Provide this property when you create the subnetwork. For example,
88
- 10.0.0.0/8 or 192.168.0.0/16. Ranges must be unique and
89
- non-overlapping within a network. Only IPv4 is supported.` ,
90
- },
91
82
"name" : {
92
83
Type : schema .TypeString ,
93
84
Required : true ,
@@ -133,6 +124,17 @@ creation time.`,
133
124
ForceNew : true ,
134
125
Description : `The range of external IPv6 addresses that are owned by this subnetwork.` ,
135
126
},
127
+ "ip_cidr_range" : {
128
+ Type : schema .TypeString ,
129
+ Computed : true ,
130
+ Optional : true ,
131
+ ValidateFunc : verify .ValidateIpCidrRange ,
132
+ Description : `The range of internal addresses that are owned by this subnetwork.
133
+ Provide this property when you create the subnetwork. For example,
134
+ 10.0.0.0/8 or 192.168.0.0/16. Ranges must be unique and
135
+ non-overlapping within a network. Only IPv4 is supported.
136
+ Field is optional when 'reserved_internal_range' is defined, otherwise required.` ,
137
+ },
136
138
"ipv6_access_type" : {
137
139
Type : schema .TypeString ,
138
140
Optional : true ,
@@ -239,6 +241,14 @@ If unspecified, the purpose defaults to 'PRIVATE_RFC_1918'.`,
239
241
DiffSuppressFunc : tpgresource .CompareSelfLinkOrResourceName ,
240
242
Description : `The GCP region for this subnetwork.` ,
241
243
},
244
+ "reserved_internal_range" : {
245
+ Type : schema .TypeString ,
246
+ Optional : true ,
247
+ ForceNew : true ,
248
+ DiffSuppressFunc : tpgresource .CompareSelfLinkOrResourceName ,
249
+ Description : `The ID of the reserved internal range. Must be prefixed with 'networkconnectivity.googleapis.com'
250
+ E.g. 'networkconnectivity.googleapis.com/projects/{project}/locations/global/internalRanges/{rangeId}'` ,
251
+ },
242
252
"role" : {
243
253
Type : schema .TypeString ,
244
254
Optional : true ,
@@ -266,15 +276,6 @@ of zero objects you must use the following syntax:
266
276
For more details about this behavior, see [this section](https://www.terraform.io/docs/configuration/attr-as-blocks.html#defining-a-fixed-object-collection-value).` ,
267
277
Elem : & schema.Resource {
268
278
Schema : map [string ]* schema.Schema {
269
- "ip_cidr_range" : {
270
- Type : schema .TypeString ,
271
- Required : true ,
272
- ValidateFunc : verify .ValidateIpCidrRange ,
273
- Description : `The range of IP addresses belonging to this subnetwork secondary
274
- range. Provide this property when you create the subnetwork.
275
- Ranges must be unique and non-overlapping with all primary and
276
- secondary IP ranges within a network. Only IPv4 is supported.` ,
277
- },
278
279
"range_name" : {
279
280
Type : schema .TypeString ,
280
281
Required : true ,
@@ -284,6 +285,24 @@ when adding an alias IP range to a VM instance. The name must
284
285
be 1-63 characters long, and comply with RFC1035. The name
285
286
must be unique within the subnetwork.` ,
286
287
},
288
+ "ip_cidr_range" : {
289
+ Type : schema .TypeString ,
290
+ Computed : true ,
291
+ Optional : true ,
292
+ ValidateFunc : verify .ValidateIpCidrRange ,
293
+ Description : `The range of IP addresses belonging to this subnetwork secondary
294
+ range. Provide this property when you create the subnetwork.
295
+ Ranges must be unique and non-overlapping with all primary and
296
+ secondary IP ranges within a network. Only IPv4 is supported.
297
+ Field is optional when 'reserved_internal_range' is defined, otherwise required.` ,
298
+ },
299
+ "reserved_internal_range" : {
300
+ Type : schema .TypeString ,
301
+ Optional : true ,
302
+ DiffSuppressFunc : tpgresource .CompareSelfLinkOrResourceName ,
303
+ Description : `The ID of the reserved internal range. Must be prefixed with 'networkconnectivity.googleapis.com'
304
+ E.g. 'networkconnectivity.googleapis.com/projects/{project}/locations/global/internalRanges/{rangeId}'` ,
305
+ },
287
306
},
288
307
},
289
308
},
@@ -399,6 +418,12 @@ func resourceComputeSubnetworkCreate(d *schema.ResourceData, meta interface{}) e
399
418
} else if v , ok := d .GetOkExists ("ip_cidr_range" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (ipCidrRangeProp )) && (ok || ! reflect .DeepEqual (v , ipCidrRangeProp )) {
400
419
obj ["ipCidrRange" ] = ipCidrRangeProp
401
420
}
421
+ reservedInternalRangeProp , err := expandComputeSubnetworkReservedInternalRange (d .Get ("reserved_internal_range" ), d , config )
422
+ if err != nil {
423
+ return err
424
+ } else if v , ok := d .GetOkExists ("reserved_internal_range" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (reservedInternalRangeProp )) && (ok || ! reflect .DeepEqual (v , reservedInternalRangeProp )) {
425
+ obj ["reservedInternalRange" ] = reservedInternalRangeProp
426
+ }
402
427
nameProp , err := expandComputeSubnetworkName (d .Get ("name" ), d , config )
403
428
if err != nil {
404
429
return err
@@ -588,6 +613,9 @@ func resourceComputeSubnetworkRead(d *schema.ResourceData, meta interface{}) err
588
613
if err := d .Set ("ip_cidr_range" , flattenComputeSubnetworkIpCidrRange (res ["ipCidrRange" ], d , config )); err != nil {
589
614
return fmt .Errorf ("Error reading Subnetwork: %s" , err )
590
615
}
616
+ if err := d .Set ("reserved_internal_range" , flattenComputeSubnetworkReservedInternalRange (res ["reservedInternalRange" ], d , config )); err != nil {
617
+ return fmt .Errorf ("Error reading Subnetwork: %s" , err )
618
+ }
591
619
if err := d .Set ("name" , flattenComputeSubnetworkName (res ["name" ], d , config )); err != nil {
592
620
return fmt .Errorf ("Error reading Subnetwork: %s" , err )
593
621
}
@@ -1136,6 +1164,13 @@ func flattenComputeSubnetworkIpCidrRange(v interface{}, d *schema.ResourceData,
1136
1164
return v
1137
1165
}
1138
1166
1167
+ func flattenComputeSubnetworkReservedInternalRange (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
1168
+ if v == nil {
1169
+ return v
1170
+ }
1171
+ return tpgresource .ConvertSelfLinkToV1 (v .(string ))
1172
+ }
1173
+
1139
1174
func flattenComputeSubnetworkName (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
1140
1175
return v
1141
1176
}
@@ -1168,8 +1203,9 @@ func flattenComputeSubnetworkSecondaryIpRange(v interface{}, d *schema.ResourceD
1168
1203
continue
1169
1204
}
1170
1205
transformed = append (transformed , map [string ]interface {}{
1171
- "range_name" : flattenComputeSubnetworkSecondaryIpRangeRangeName (original ["rangeName" ], d , config ),
1172
- "ip_cidr_range" : flattenComputeSubnetworkSecondaryIpRangeIpCidrRange (original ["ipCidrRange" ], d , config ),
1206
+ "range_name" : flattenComputeSubnetworkSecondaryIpRangeRangeName (original ["rangeName" ], d , config ),
1207
+ "ip_cidr_range" : flattenComputeSubnetworkSecondaryIpRangeIpCidrRange (original ["ipCidrRange" ], d , config ),
1208
+ "reserved_internal_range" : flattenComputeSubnetworkSecondaryIpRangeReservedInternalRange (original ["reservedInternalRange" ], d , config ),
1173
1209
})
1174
1210
}
1175
1211
return transformed
@@ -1182,6 +1218,13 @@ func flattenComputeSubnetworkSecondaryIpRangeIpCidrRange(v interface{}, d *schem
1182
1218
return v
1183
1219
}
1184
1220
1221
+ func flattenComputeSubnetworkSecondaryIpRangeReservedInternalRange (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
1222
+ if v == nil {
1223
+ return v
1224
+ }
1225
+ return tpgresource .ConvertSelfLinkToV1 (v .(string ))
1226
+ }
1227
+
1185
1228
func flattenComputeSubnetworkPrivateIpGoogleAccess (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
1186
1229
return v
1187
1230
}
@@ -1262,6 +1305,10 @@ func expandComputeSubnetworkIpCidrRange(v interface{}, d tpgresource.TerraformRe
1262
1305
return v , nil
1263
1306
}
1264
1307
1308
+ func expandComputeSubnetworkReservedInternalRange (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
1309
+ return v , nil
1310
+ }
1311
+
1265
1312
func expandComputeSubnetworkName (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
1266
1313
return v , nil
1267
1314
}
@@ -1306,6 +1353,13 @@ func expandComputeSubnetworkSecondaryIpRange(v interface{}, d tpgresource.Terraf
1306
1353
transformed ["ipCidrRange" ] = transformedIpCidrRange
1307
1354
}
1308
1355
1356
+ transformedReservedInternalRange , err := expandComputeSubnetworkSecondaryIpRangeReservedInternalRange (original ["reserved_internal_range" ], d , config )
1357
+ if err != nil {
1358
+ return nil , err
1359
+ } else if val := reflect .ValueOf (transformedReservedInternalRange ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
1360
+ transformed ["reservedInternalRange" ] = transformedReservedInternalRange
1361
+ }
1362
+
1309
1363
req = append (req , transformed )
1310
1364
}
1311
1365
return req , nil
@@ -1319,6 +1373,10 @@ func expandComputeSubnetworkSecondaryIpRangeIpCidrRange(v interface{}, d tpgreso
1319
1373
return v , nil
1320
1374
}
1321
1375
1376
+ func expandComputeSubnetworkSecondaryIpRangeReservedInternalRange (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
1377
+ return v , nil
1378
+ }
1379
+
1322
1380
func expandComputeSubnetworkPrivateIpGoogleAccess (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
1323
1381
return v , nil
1324
1382
}
0 commit comments