@@ -128,6 +128,12 @@ The limit is 64 IP ranges/addresses for each FileShareConfig among all NfsExport
128128 Type : schema .TypeString ,
129129 },
130130 },
131+ "network" : {
132+ Type : schema .TypeString ,
133+ Optional : true ,
134+ Description : `The source VPC network for 'ip_ranges'.
135+ Required for instances using Private Service Connect, optional otherwise.` ,
136+ },
131137 "squash_mode" : {
132138 Type : schema .TypeString ,
133139 Optional : true ,
@@ -187,12 +193,32 @@ instance is connected.`,
187193 Type : schema .TypeString ,
188194 Optional : true ,
189195 ForceNew : true ,
190- ValidateFunc : verify .ValidateEnum ([]string {"DIRECT_PEERING" , "PRIVATE_SERVICE_ACCESS" , "" }),
196+ ValidateFunc : verify .ValidateEnum ([]string {"DIRECT_PEERING" , "PRIVATE_SERVICE_ACCESS" , "PRIVATE_SERVICE_CONNECT" , " " }),
191197 Description : `The network connect mode of the Filestore instance.
192198If not provided, the connect mode defaults to
193- DIRECT_PEERING. Default value: "DIRECT_PEERING" Possible values: ["DIRECT_PEERING", "PRIVATE_SERVICE_ACCESS"]` ,
199+ DIRECT_PEERING. Default value: "DIRECT_PEERING" Possible values: ["DIRECT_PEERING", "PRIVATE_SERVICE_ACCESS", "PRIVATE_SERVICE_CONNECT" ]` ,
194200 Default : "DIRECT_PEERING" ,
195201 },
202+ "psc_config" : {
203+ Type : schema .TypeList ,
204+ Optional : true ,
205+ Description : `Private Service Connect configuration.
206+ Should only be set when connect_mode is PRIVATE_SERVICE_CONNECT.` ,
207+ MaxItems : 1 ,
208+ Elem : & schema.Resource {
209+ Schema : map [string ]* schema.Schema {
210+ "endpoint_project" : {
211+ Type : schema .TypeString ,
212+ Optional : true ,
213+ ForceNew : true ,
214+ Description : `Consumer service project in which the Private Service Connect endpoint
215+ would be set up. This is optional, and only relevant in case the network
216+ is a shared VPC. If this is not specified, the endpoint would be set up
217+ in the VPC host project.` ,
218+ },
219+ },
220+ },
221+ },
196222 "reserved_ip_range" : {
197223 Type : schema .TypeString ,
198224 Computed : true ,
@@ -1074,6 +1100,7 @@ func flattenFilestoreInstanceFileSharesNfsExportOptions(v interface{}, d *schema
10741100 "squash_mode" : flattenFilestoreInstanceFileSharesNfsExportOptionsSquashMode (original ["squashMode" ], d , config ),
10751101 "anon_uid" : flattenFilestoreInstanceFileSharesNfsExportOptionsAnonUid (original ["anonUid" ], d , config ),
10761102 "anon_gid" : flattenFilestoreInstanceFileSharesNfsExportOptionsAnonGid (original ["anonGid" ], d , config ),
1103+ "network" : flattenFilestoreInstanceFileSharesNfsExportOptionsNetwork (original ["network" ], d , config ),
10771104 })
10781105 }
10791106 return transformed
@@ -1124,6 +1151,10 @@ func flattenFilestoreInstanceFileSharesNfsExportOptionsAnonGid(v interface{}, d
11241151 return v // let terraform core handle it otherwise
11251152}
11261153
1154+ func flattenFilestoreInstanceFileSharesNfsExportOptionsNetwork (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
1155+ return v
1156+ }
1157+
11271158func flattenFilestoreInstanceNetworks (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
11281159 if v == nil {
11291160 return v
@@ -1142,6 +1173,7 @@ func flattenFilestoreInstanceNetworks(v interface{}, d *schema.ResourceData, con
11421173 "reserved_ip_range" : flattenFilestoreInstanceNetworksReservedIpRange (original ["reservedIpRange" ], d , config ),
11431174 "ip_addresses" : flattenFilestoreInstanceNetworksIpAddresses (original ["ipAddresses" ], d , config ),
11441175 "connect_mode" : flattenFilestoreInstanceNetworksConnectMode (original ["connectMode" ], d , config ),
1176+ "psc_config" : flattenFilestoreInstanceNetworksPscConfig (original ["pscConfig" ], d , config ),
11451177 })
11461178 }
11471179 return transformed
@@ -1170,6 +1202,23 @@ func flattenFilestoreInstanceNetworksConnectMode(v interface{}, d *schema.Resour
11701202 return v
11711203}
11721204
1205+ func flattenFilestoreInstanceNetworksPscConfig (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
1206+ if v == nil {
1207+ return nil
1208+ }
1209+ original := v .(map [string ]interface {})
1210+ if len (original ) == 0 {
1211+ return nil
1212+ }
1213+ transformed := make (map [string ]interface {})
1214+ transformed ["endpoint_project" ] =
1215+ flattenFilestoreInstanceNetworksPscConfigEndpointProject (original ["endpointProject" ], d , config )
1216+ return []interface {}{transformed }
1217+ }
1218+ func flattenFilestoreInstanceNetworksPscConfigEndpointProject (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
1219+ return v
1220+ }
1221+
11731222func flattenFilestoreInstanceEtag (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
11741223 return v
11751224}
@@ -1485,6 +1534,13 @@ func expandFilestoreInstanceFileSharesNfsExportOptions(v interface{}, d tpgresou
14851534 transformed ["anonGid" ] = transformedAnonGid
14861535 }
14871536
1537+ transformedNetwork , err := expandFilestoreInstanceFileSharesNfsExportOptionsNetwork (original ["network" ], d , config )
1538+ if err != nil {
1539+ return nil , err
1540+ } else if val := reflect .ValueOf (transformedNetwork ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
1541+ transformed ["network" ] = transformedNetwork
1542+ }
1543+
14881544 req = append (req , transformed )
14891545 }
14901546 return req , nil
@@ -1510,6 +1566,10 @@ func expandFilestoreInstanceFileSharesNfsExportOptionsAnonGid(v interface{}, d t
15101566 return v , nil
15111567}
15121568
1569+ func expandFilestoreInstanceFileSharesNfsExportOptionsNetwork (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
1570+ return v , nil
1571+ }
1572+
15131573func expandFilestoreInstanceNetworks (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
15141574 l := v .([]interface {})
15151575 req := make ([]interface {}, 0 , len (l ))
@@ -1555,6 +1615,13 @@ func expandFilestoreInstanceNetworks(v interface{}, d tpgresource.TerraformResou
15551615 transformed ["connectMode" ] = transformedConnectMode
15561616 }
15571617
1618+ transformedPscConfig , err := expandFilestoreInstanceNetworksPscConfig (original ["psc_config" ], d , config )
1619+ if err != nil {
1620+ return nil , err
1621+ } else if val := reflect .ValueOf (transformedPscConfig ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
1622+ transformed ["pscConfig" ] = transformedPscConfig
1623+ }
1624+
15581625 req = append (req , transformed )
15591626 }
15601627 return req , nil
@@ -1580,6 +1647,29 @@ func expandFilestoreInstanceNetworksConnectMode(v interface{}, d tpgresource.Ter
15801647 return v , nil
15811648}
15821649
1650+ func expandFilestoreInstanceNetworksPscConfig (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
1651+ l := v .([]interface {})
1652+ if len (l ) == 0 || l [0 ] == nil {
1653+ return nil , nil
1654+ }
1655+ raw := l [0 ]
1656+ original := raw .(map [string ]interface {})
1657+ transformed := make (map [string ]interface {})
1658+
1659+ transformedEndpointProject , err := expandFilestoreInstanceNetworksPscConfigEndpointProject (original ["endpoint_project" ], d , config )
1660+ if err != nil {
1661+ return nil , err
1662+ } else if val := reflect .ValueOf (transformedEndpointProject ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
1663+ transformed ["endpointProject" ] = transformedEndpointProject
1664+ }
1665+
1666+ return transformed , nil
1667+ }
1668+
1669+ func expandFilestoreInstanceNetworksPscConfigEndpointProject (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
1670+ return v , nil
1671+ }
1672+
15831673func expandFilestoreInstanceKmsKeyName (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
15841674 return v , nil
15851675}
0 commit comments