@@ -199,6 +199,85 @@ the parent Volume's 'capacity_gib'.`,
199199 },
200200 },
201201 },
202+ "cache_parameters" : {
203+ Type : schema .TypeList ,
204+ Optional : true ,
205+ Description : `Cache parameters for the volume.` ,
206+ MaxItems : 1 ,
207+ Elem : & schema.Resource {
208+ Schema : map [string ]* schema.Schema {
209+ "cache_config" : {
210+ Type : schema .TypeList ,
211+ Optional : true ,
212+ Description : `Optional. Configuration of the cache volume.` ,
213+ MaxItems : 1 ,
214+ Elem : & schema.Resource {
215+ Schema : map [string ]* schema.Schema {
216+ "cifs_change_notify_enabled" : {
217+ Type : schema .TypeBool ,
218+ Optional : true ,
219+ Description : `Optional. Flag indicating whether a CIFS change notification is enabled for the FlexCache volume.` ,
220+ },
221+ },
222+ },
223+ },
224+ "enable_global_file_lock" : {
225+ Type : schema .TypeBool ,
226+ Optional : true ,
227+ Description : `Optional. Field indicating whether cache volume as global file lock enabled.` ,
228+ },
229+ "peer_cluster_name" : {
230+ Type : schema .TypeString ,
231+ Optional : true ,
232+ Description : `Required. Name of the origin volume's ONTAP cluster.` ,
233+ },
234+ "peer_ip_addresses" : {
235+ Type : schema .TypeList ,
236+ Optional : true ,
237+ Description : `Required. List of IC LIF addresses of the origin volume's ONTAP cluster.` ,
238+ Elem : & schema.Schema {
239+ Type : schema .TypeString ,
240+ },
241+ },
242+ "peer_svm_name" : {
243+ Type : schema .TypeString ,
244+ Optional : true ,
245+ Description : `Required. Name of the origin volume's SVM.` ,
246+ },
247+ "peer_volume_name" : {
248+ Type : schema .TypeString ,
249+ Optional : true ,
250+ Description : `Required. Name of the origin volume for the cache volume.` ,
251+ },
252+ "peering_command_expiry_time" : {
253+ Type : schema .TypeString ,
254+ Computed : true ,
255+ Optional : true ,
256+ Description : `Optional. Expiration time for the peering command to be executed on user's ONTAP. A timestamp in RFC3339 UTC "Zulu" format. Examples: "2023-06-22T09:13:01.617Z".` ,
257+ },
258+ "cache_state" : {
259+ Type : schema .TypeString ,
260+ Computed : true ,
261+ Description : `State of the cache volume indicating the peering status.` ,
262+ },
263+ "command" : {
264+ Type : schema .TypeString ,
265+ Computed : true ,
266+ Description : `Copy-paste-able commands to be used on user's ONTAP to accept peering requests.` ,
267+ },
268+ "passphrase" : {
269+ Type : schema .TypeString ,
270+ Computed : true ,
271+ Description : `Temporary passphrase generated to accept cluster peering command.` ,
272+ },
273+ "state_details" : {
274+ Type : schema .TypeString ,
275+ Computed : true ,
276+ Description : `Detailed description of the current cache state.` ,
277+ },
278+ },
279+ },
280+ },
202281 "description" : {
203282 Type : schema .TypeString ,
204283 Optional : true ,
@@ -913,6 +992,12 @@ func resourceNetappVolumeCreate(d *schema.ResourceData, meta interface{}) error
913992 } else if v , ok := d .GetOkExists ("throughput_mibps" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (throughputMibpsProp )) && (ok || ! reflect .DeepEqual (v , throughputMibpsProp )) {
914993 obj ["throughputMibps" ] = throughputMibpsProp
915994 }
995+ cacheParametersProp , err := expandNetappVolumeCacheParameters (d .Get ("cache_parameters" ), d , config )
996+ if err != nil {
997+ return err
998+ } else if v , ok := d .GetOkExists ("cache_parameters" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (cacheParametersProp )) && (ok || ! reflect .DeepEqual (v , cacheParametersProp )) {
999+ obj ["cacheParameters" ] = cacheParametersProp
1000+ }
9161001 blockDevicesProp , err := expandNetappVolumeBlockDevices (d .Get ("block_devices" ), d , config )
9171002 if err != nil {
9181003 return err
@@ -1141,6 +1226,9 @@ func resourceNetappVolumeRead(d *schema.ResourceData, meta interface{}) error {
11411226 if err := d .Set ("hot_tier_size_used_gib" , flattenNetappVolumeHotTierSizeUsedGib (res ["hotTierSizeUsedGib" ], d , config )); err != nil {
11421227 return fmt .Errorf ("Error reading Volume: %s" , err )
11431228 }
1229+ if err := d .Set ("cache_parameters" , flattenNetappVolumeCacheParameters (res ["cacheParameters" ], d , config )); err != nil {
1230+ return fmt .Errorf ("Error reading Volume: %s" , err )
1231+ }
11441232 if err := d .Set ("block_devices" , flattenNetappVolumeBlockDevices (res ["blockDevices" ], d , config )); err != nil {
11451233 return fmt .Errorf ("Error reading Volume: %s" , err )
11461234 }
@@ -1254,6 +1342,12 @@ func resourceNetappVolumeUpdate(d *schema.ResourceData, meta interface{}) error
12541342 } else if v , ok := d .GetOkExists ("throughput_mibps" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (v )) && (ok || ! reflect .DeepEqual (v , throughputMibpsProp )) {
12551343 obj ["throughputMibps" ] = throughputMibpsProp
12561344 }
1345+ cacheParametersProp , err := expandNetappVolumeCacheParameters (d .Get ("cache_parameters" ), d , config )
1346+ if err != nil {
1347+ return err
1348+ } else if v , ok := d .GetOkExists ("cache_parameters" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (v )) && (ok || ! reflect .DeepEqual (v , cacheParametersProp )) {
1349+ obj ["cacheParameters" ] = cacheParametersProp
1350+ }
12571351 blockDevicesProp , err := expandNetappVolumeBlockDevices (d .Get ("block_devices" ), d , config )
12581352 if err != nil {
12591353 return err
@@ -1336,6 +1430,10 @@ func resourceNetappVolumeUpdate(d *schema.ResourceData, meta interface{}) error
13361430 updateMask = append (updateMask , "throughputMibps" )
13371431 }
13381432
1433+ if d .HasChange ("cache_parameters" ) {
1434+ updateMask = append (updateMask , "cacheParameters" )
1435+ }
1436+
13391437 if d .HasChange ("block_devices" ) {
13401438 updateMask = append (updateMask , "blockDevices" )
13411439 }
@@ -2239,6 +2337,96 @@ func flattenNetappVolumeHotTierSizeUsedGib(v interface{}, d *schema.ResourceData
22392337 return v
22402338}
22412339
2340+ func flattenNetappVolumeCacheParameters (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
2341+ if v == nil {
2342+ return nil
2343+ }
2344+ original := v .(map [string ]interface {})
2345+ if len (original ) == 0 {
2346+ return nil
2347+ }
2348+ transformed := make (map [string ]interface {})
2349+ transformed ["peer_volume_name" ] =
2350+ flattenNetappVolumeCacheParametersPeerVolumeName (original ["peerVolumeName" ], d , config )
2351+ transformed ["peer_cluster_name" ] =
2352+ flattenNetappVolumeCacheParametersPeerClusterName (original ["peerClusterName" ], d , config )
2353+ transformed ["peer_svm_name" ] =
2354+ flattenNetappVolumeCacheParametersPeerSvmName (original ["peerSvmName" ], d , config )
2355+ transformed ["peer_ip_addresses" ] =
2356+ flattenNetappVolumeCacheParametersPeerIpAddresses (original ["peerIpAddresses" ], d , config )
2357+ transformed ["enable_global_file_lock" ] =
2358+ flattenNetappVolumeCacheParametersEnableGlobalFileLock (original ["enableGlobalFileLock" ], d , config )
2359+ transformed ["peering_command_expiry_time" ] =
2360+ flattenNetappVolumeCacheParametersPeeringCommandExpiryTime (original ["peeringCommandExpiryTime" ], d , config )
2361+ transformed ["cache_state" ] =
2362+ flattenNetappVolumeCacheParametersCacheState (original ["cacheState" ], d , config )
2363+ transformed ["command" ] =
2364+ flattenNetappVolumeCacheParametersCommand (original ["command" ], d , config )
2365+ transformed ["passphrase" ] =
2366+ flattenNetappVolumeCacheParametersPassphrase (original ["passphrase" ], d , config )
2367+ transformed ["state_details" ] =
2368+ flattenNetappVolumeCacheParametersStateDetails (original ["stateDetails" ], d , config )
2369+ transformed ["cache_config" ] =
2370+ flattenNetappVolumeCacheParametersCacheConfig (original ["cacheConfig" ], d , config )
2371+ return []interface {}{transformed }
2372+ }
2373+ func flattenNetappVolumeCacheParametersPeerVolumeName (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
2374+ return v
2375+ }
2376+
2377+ func flattenNetappVolumeCacheParametersPeerClusterName (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
2378+ return v
2379+ }
2380+
2381+ func flattenNetappVolumeCacheParametersPeerSvmName (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
2382+ return v
2383+ }
2384+
2385+ func flattenNetappVolumeCacheParametersPeerIpAddresses (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
2386+ return v
2387+ }
2388+
2389+ func flattenNetappVolumeCacheParametersEnableGlobalFileLock (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
2390+ return v
2391+ }
2392+
2393+ func flattenNetappVolumeCacheParametersPeeringCommandExpiryTime (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
2394+ return v
2395+ }
2396+
2397+ func flattenNetappVolumeCacheParametersCacheState (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
2398+ return v
2399+ }
2400+
2401+ func flattenNetappVolumeCacheParametersCommand (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
2402+ return v
2403+ }
2404+
2405+ func flattenNetappVolumeCacheParametersPassphrase (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
2406+ return v
2407+ }
2408+
2409+ func flattenNetappVolumeCacheParametersStateDetails (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
2410+ return v
2411+ }
2412+
2413+ func flattenNetappVolumeCacheParametersCacheConfig (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
2414+ if v == nil {
2415+ return nil
2416+ }
2417+ original := v .(map [string ]interface {})
2418+ if len (original ) == 0 {
2419+ return nil
2420+ }
2421+ transformed := make (map [string ]interface {})
2422+ transformed ["cifs_change_notify_enabled" ] =
2423+ flattenNetappVolumeCacheParametersCacheConfigCifsChangeNotifyEnabled (original ["cifsChangeNotifyEnabled" ], d , config )
2424+ return []interface {}{transformed }
2425+ }
2426+ func flattenNetappVolumeCacheParametersCacheConfigCifsChangeNotifyEnabled (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
2427+ return v
2428+ }
2429+
22422430func flattenNetappVolumeBlockDevices (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
22432431 if v == nil {
22442432 return v
@@ -3085,6 +3273,164 @@ func expandNetappVolumeThroughputMibps(v interface{}, d tpgresource.TerraformRes
30853273 return v , nil
30863274}
30873275
3276+ func expandNetappVolumeCacheParameters (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
3277+ if v == nil {
3278+ return nil , nil
3279+ }
3280+ l := v .([]interface {})
3281+ if len (l ) == 0 || l [0 ] == nil {
3282+ return nil , nil
3283+ }
3284+ raw := l [0 ]
3285+ original := raw .(map [string ]interface {})
3286+ transformed := make (map [string ]interface {})
3287+
3288+ transformedPeerVolumeName , err := expandNetappVolumeCacheParametersPeerVolumeName (original ["peer_volume_name" ], d , config )
3289+ if err != nil {
3290+ return nil , err
3291+ } else if val := reflect .ValueOf (transformedPeerVolumeName ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
3292+ transformed ["peerVolumeName" ] = transformedPeerVolumeName
3293+ }
3294+
3295+ transformedPeerClusterName , err := expandNetappVolumeCacheParametersPeerClusterName (original ["peer_cluster_name" ], d , config )
3296+ if err != nil {
3297+ return nil , err
3298+ } else if val := reflect .ValueOf (transformedPeerClusterName ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
3299+ transformed ["peerClusterName" ] = transformedPeerClusterName
3300+ }
3301+
3302+ transformedPeerSvmName , err := expandNetappVolumeCacheParametersPeerSvmName (original ["peer_svm_name" ], d , config )
3303+ if err != nil {
3304+ return nil , err
3305+ } else if val := reflect .ValueOf (transformedPeerSvmName ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
3306+ transformed ["peerSvmName" ] = transformedPeerSvmName
3307+ }
3308+
3309+ transformedPeerIpAddresses , err := expandNetappVolumeCacheParametersPeerIpAddresses (original ["peer_ip_addresses" ], d , config )
3310+ if err != nil {
3311+ return nil , err
3312+ } else if val := reflect .ValueOf (transformedPeerIpAddresses ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
3313+ transformed ["peerIpAddresses" ] = transformedPeerIpAddresses
3314+ }
3315+
3316+ transformedEnableGlobalFileLock , err := expandNetappVolumeCacheParametersEnableGlobalFileLock (original ["enable_global_file_lock" ], d , config )
3317+ if err != nil {
3318+ return nil , err
3319+ } else if val := reflect .ValueOf (transformedEnableGlobalFileLock ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
3320+ transformed ["enableGlobalFileLock" ] = transformedEnableGlobalFileLock
3321+ }
3322+
3323+ transformedPeeringCommandExpiryTime , err := expandNetappVolumeCacheParametersPeeringCommandExpiryTime (original ["peering_command_expiry_time" ], d , config )
3324+ if err != nil {
3325+ return nil , err
3326+ } else if val := reflect .ValueOf (transformedPeeringCommandExpiryTime ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
3327+ transformed ["peeringCommandExpiryTime" ] = transformedPeeringCommandExpiryTime
3328+ }
3329+
3330+ transformedCacheState , err := expandNetappVolumeCacheParametersCacheState (original ["cache_state" ], d , config )
3331+ if err != nil {
3332+ return nil , err
3333+ } else if val := reflect .ValueOf (transformedCacheState ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
3334+ transformed ["cacheState" ] = transformedCacheState
3335+ }
3336+
3337+ transformedCommand , err := expandNetappVolumeCacheParametersCommand (original ["command" ], d , config )
3338+ if err != nil {
3339+ return nil , err
3340+ } else if val := reflect .ValueOf (transformedCommand ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
3341+ transformed ["command" ] = transformedCommand
3342+ }
3343+
3344+ transformedPassphrase , err := expandNetappVolumeCacheParametersPassphrase (original ["passphrase" ], d , config )
3345+ if err != nil {
3346+ return nil , err
3347+ } else if val := reflect .ValueOf (transformedPassphrase ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
3348+ transformed ["passphrase" ] = transformedPassphrase
3349+ }
3350+
3351+ transformedStateDetails , err := expandNetappVolumeCacheParametersStateDetails (original ["state_details" ], d , config )
3352+ if err != nil {
3353+ return nil , err
3354+ } else if val := reflect .ValueOf (transformedStateDetails ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
3355+ transformed ["stateDetails" ] = transformedStateDetails
3356+ }
3357+
3358+ transformedCacheConfig , err := expandNetappVolumeCacheParametersCacheConfig (original ["cache_config" ], d , config )
3359+ if err != nil {
3360+ return nil , err
3361+ } else if val := reflect .ValueOf (transformedCacheConfig ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
3362+ transformed ["cacheConfig" ] = transformedCacheConfig
3363+ }
3364+
3365+ return transformed , nil
3366+ }
3367+
3368+ func expandNetappVolumeCacheParametersPeerVolumeName (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
3369+ return v , nil
3370+ }
3371+
3372+ func expandNetappVolumeCacheParametersPeerClusterName (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
3373+ return v , nil
3374+ }
3375+
3376+ func expandNetappVolumeCacheParametersPeerSvmName (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
3377+ return v , nil
3378+ }
3379+
3380+ func expandNetappVolumeCacheParametersPeerIpAddresses (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
3381+ return v , nil
3382+ }
3383+
3384+ func expandNetappVolumeCacheParametersEnableGlobalFileLock (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
3385+ return v , nil
3386+ }
3387+
3388+ func expandNetappVolumeCacheParametersPeeringCommandExpiryTime (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
3389+ return v , nil
3390+ }
3391+
3392+ func expandNetappVolumeCacheParametersCacheState (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
3393+ return v , nil
3394+ }
3395+
3396+ func expandNetappVolumeCacheParametersCommand (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
3397+ return v , nil
3398+ }
3399+
3400+ func expandNetappVolumeCacheParametersPassphrase (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
3401+ return v , nil
3402+ }
3403+
3404+ func expandNetappVolumeCacheParametersStateDetails (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
3405+ return v , nil
3406+ }
3407+
3408+ func expandNetappVolumeCacheParametersCacheConfig (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
3409+ if v == nil {
3410+ return nil , nil
3411+ }
3412+ l := v .([]interface {})
3413+ if len (l ) == 0 || l [0 ] == nil {
3414+ return nil , nil
3415+ }
3416+ raw := l [0 ]
3417+ original := raw .(map [string ]interface {})
3418+ transformed := make (map [string ]interface {})
3419+
3420+ transformedCifsChangeNotifyEnabled , err := expandNetappVolumeCacheParametersCacheConfigCifsChangeNotifyEnabled (original ["cifs_change_notify_enabled" ], d , config )
3421+ if err != nil {
3422+ return nil , err
3423+ } else if val := reflect .ValueOf (transformedCifsChangeNotifyEnabled ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
3424+ transformed ["cifsChangeNotifyEnabled" ] = transformedCifsChangeNotifyEnabled
3425+ }
3426+
3427+ return transformed , nil
3428+ }
3429+
3430+ func expandNetappVolumeCacheParametersCacheConfigCifsChangeNotifyEnabled (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
3431+ return v , nil
3432+ }
3433+
30883434func expandNetappVolumeBlockDevices (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
30893435 if v == nil {
30903436 return nil , nil
0 commit comments