@@ -79,15 +79,6 @@ func ResourceComputeSubnetwork() *schema.Resource {
7979 ),
8080
8181 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- },
9182 "name" : {
9283 Type : schema .TypeString ,
9384 Required : true ,
@@ -133,6 +124,17 @@ creation time.`,
133124 ForceNew : true ,
134125 Description : `The range of external IPv6 addresses that are owned by this subnetwork.` ,
135126 },
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+ },
136138 "ipv6_access_type" : {
137139 Type : schema .TypeString ,
138140 Optional : true ,
@@ -239,6 +241,14 @@ If unspecified, the purpose defaults to 'PRIVATE_RFC_1918'.`,
239241 DiffSuppressFunc : tpgresource .CompareSelfLinkOrResourceName ,
240242 Description : `The GCP region for this subnetwork.` ,
241243 },
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+ },
242252 "role" : {
243253 Type : schema .TypeString ,
244254 Optional : true ,
@@ -266,15 +276,6 @@ of zero objects you must use the following syntax:
266276For more details about this behavior, see [this section](https://www.terraform.io/docs/configuration/attr-as-blocks.html#defining-a-fixed-object-collection-value).` ,
267277 Elem : & schema.Resource {
268278 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- },
278279 "range_name" : {
279280 Type : schema .TypeString ,
280281 Required : true ,
@@ -284,6 +285,24 @@ when adding an alias IP range to a VM instance. The name must
284285be 1-63 characters long, and comply with RFC1035. The name
285286must be unique within the subnetwork.` ,
286287 },
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+ },
287306 },
288307 },
289308 },
@@ -399,6 +418,12 @@ func resourceComputeSubnetworkCreate(d *schema.ResourceData, meta interface{}) e
399418 } else if v , ok := d .GetOkExists ("ip_cidr_range" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (ipCidrRangeProp )) && (ok || ! reflect .DeepEqual (v , ipCidrRangeProp )) {
400419 obj ["ipCidrRange" ] = ipCidrRangeProp
401420 }
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+ }
402427 nameProp , err := expandComputeSubnetworkName (d .Get ("name" ), d , config )
403428 if err != nil {
404429 return err
@@ -588,6 +613,9 @@ func resourceComputeSubnetworkRead(d *schema.ResourceData, meta interface{}) err
588613 if err := d .Set ("ip_cidr_range" , flattenComputeSubnetworkIpCidrRange (res ["ipCidrRange" ], d , config )); err != nil {
589614 return fmt .Errorf ("Error reading Subnetwork: %s" , err )
590615 }
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+ }
591619 if err := d .Set ("name" , flattenComputeSubnetworkName (res ["name" ], d , config )); err != nil {
592620 return fmt .Errorf ("Error reading Subnetwork: %s" , err )
593621 }
@@ -1136,6 +1164,13 @@ func flattenComputeSubnetworkIpCidrRange(v interface{}, d *schema.ResourceData,
11361164 return v
11371165}
11381166
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+
11391174func flattenComputeSubnetworkName (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
11401175 return v
11411176}
@@ -1168,8 +1203,9 @@ func flattenComputeSubnetworkSecondaryIpRange(v interface{}, d *schema.ResourceD
11681203 continue
11691204 }
11701205 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 ),
11731209 })
11741210 }
11751211 return transformed
@@ -1182,6 +1218,13 @@ func flattenComputeSubnetworkSecondaryIpRangeIpCidrRange(v interface{}, d *schem
11821218 return v
11831219}
11841220
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+
11851228func flattenComputeSubnetworkPrivateIpGoogleAccess (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
11861229 return v
11871230}
@@ -1262,6 +1305,10 @@ func expandComputeSubnetworkIpCidrRange(v interface{}, d tpgresource.TerraformRe
12621305 return v , nil
12631306}
12641307
1308+ func expandComputeSubnetworkReservedInternalRange (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
1309+ return v , nil
1310+ }
1311+
12651312func expandComputeSubnetworkName (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
12661313 return v , nil
12671314}
@@ -1306,6 +1353,13 @@ func expandComputeSubnetworkSecondaryIpRange(v interface{}, d tpgresource.Terraf
13061353 transformed ["ipCidrRange" ] = transformedIpCidrRange
13071354 }
13081355
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+
13091363 req = append (req , transformed )
13101364 }
13111365 return req , nil
@@ -1319,6 +1373,10 @@ func expandComputeSubnetworkSecondaryIpRangeIpCidrRange(v interface{}, d tpgreso
13191373 return v , nil
13201374}
13211375
1376+ func expandComputeSubnetworkSecondaryIpRangeReservedInternalRange (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
1377+ return v , nil
1378+ }
1379+
13221380func expandComputeSubnetworkPrivateIpGoogleAccess (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
13231381 return v , nil
13241382}
0 commit comments