Skip to content

Commit 9d8ec42

Browse files
add Large Volumes support for netapp volumes (#11601)
[upstream:4f3e13ced4778621c4ea851e4d0af91ad8abbceb] Signed-off-by: Modular Magician <[email protected]>
1 parent 828bf9f commit 9d8ec42

File tree

3 files changed

+77
-0
lines changed

3 files changed

+77
-0
lines changed

.changelog/11601.txt

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
netapp: added `large_capacity` and `multiple_endpoints` to `google_netapp_volume` resource
3+
```

google-beta/services/netapp/resource_netapp_volume.go

+65
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,17 @@ Format: 'projects/{{projectId}}/locations/{{location}}/backupVaults/{{backupVaul
220220
Please refer to the field 'effective_labels' for all of the labels present on the resource.`,
221221
Elem: &schema.Schema{Type: schema.TypeString},
222222
},
223+
"large_capacity": {
224+
Type: schema.TypeBool,
225+
Optional: true,
226+
Description: `Optional. Flag indicating if the volume will be a large capacity volume or a regular volume.`,
227+
},
228+
"multiple_endpoints": {
229+
Type: schema.TypeBool,
230+
Optional: true,
231+
Description: `Optional. Flag indicating if the volume will have an IP address per node for volumes supporting multiple IP endpoints.
232+
Only the volume with largeCapacity will be allowed to have multiple endpoints.`,
233+
},
223234
"restore_parameters": {
224235
Type: schema.TypeList,
225236
Optional: true,
@@ -654,6 +665,18 @@ func resourceNetappVolumeCreate(d *schema.ResourceData, meta interface{}) error
654665
} else if v, ok := d.GetOkExists("backup_config"); !tpgresource.IsEmptyValue(reflect.ValueOf(backupConfigProp)) && (ok || !reflect.DeepEqual(v, backupConfigProp)) {
655666
obj["backupConfig"] = backupConfigProp
656667
}
668+
largeCapacityProp, err := expandNetappVolumeLargeCapacity(d.Get("large_capacity"), d, config)
669+
if err != nil {
670+
return err
671+
} else if v, ok := d.GetOkExists("large_capacity"); !tpgresource.IsEmptyValue(reflect.ValueOf(largeCapacityProp)) && (ok || !reflect.DeepEqual(v, largeCapacityProp)) {
672+
obj["largeCapacity"] = largeCapacityProp
673+
}
674+
multipleEndpointsProp, err := expandNetappVolumeMultipleEndpoints(d.Get("multiple_endpoints"), d, config)
675+
if err != nil {
676+
return err
677+
} else if v, ok := d.GetOkExists("multiple_endpoints"); !tpgresource.IsEmptyValue(reflect.ValueOf(multipleEndpointsProp)) && (ok || !reflect.DeepEqual(v, multipleEndpointsProp)) {
678+
obj["multipleEndpoints"] = multipleEndpointsProp
679+
}
657680
labelsProp, err := expandNetappVolumeEffectiveLabels(d.Get("effective_labels"), d, config)
658681
if err != nil {
659682
return err
@@ -855,6 +878,12 @@ func resourceNetappVolumeRead(d *schema.ResourceData, meta interface{}) error {
855878
if err := d.Set("replica_zone", flattenNetappVolumeReplicaZone(res["replicaZone"], d, config)); err != nil {
856879
return fmt.Errorf("Error reading Volume: %s", err)
857880
}
881+
if err := d.Set("large_capacity", flattenNetappVolumeLargeCapacity(res["largeCapacity"], d, config)); err != nil {
882+
return fmt.Errorf("Error reading Volume: %s", err)
883+
}
884+
if err := d.Set("multiple_endpoints", flattenNetappVolumeMultipleEndpoints(res["multipleEndpoints"], d, config)); err != nil {
885+
return fmt.Errorf("Error reading Volume: %s", err)
886+
}
858887
if err := d.Set("terraform_labels", flattenNetappVolumeTerraformLabels(res["labels"], d, config)); err != nil {
859888
return fmt.Errorf("Error reading Volume: %s", err)
860889
}
@@ -941,6 +970,18 @@ func resourceNetappVolumeUpdate(d *schema.ResourceData, meta interface{}) error
941970
} else if v, ok := d.GetOkExists("backup_config"); !tpgresource.IsEmptyValue(reflect.ValueOf(v)) && (ok || !reflect.DeepEqual(v, backupConfigProp)) {
942971
obj["backupConfig"] = backupConfigProp
943972
}
973+
largeCapacityProp, err := expandNetappVolumeLargeCapacity(d.Get("large_capacity"), d, config)
974+
if err != nil {
975+
return err
976+
} else if v, ok := d.GetOkExists("large_capacity"); !tpgresource.IsEmptyValue(reflect.ValueOf(v)) && (ok || !reflect.DeepEqual(v, largeCapacityProp)) {
977+
obj["largeCapacity"] = largeCapacityProp
978+
}
979+
multipleEndpointsProp, err := expandNetappVolumeMultipleEndpoints(d.Get("multiple_endpoints"), d, config)
980+
if err != nil {
981+
return err
982+
} else if v, ok := d.GetOkExists("multiple_endpoints"); !tpgresource.IsEmptyValue(reflect.ValueOf(v)) && (ok || !reflect.DeepEqual(v, multipleEndpointsProp)) {
983+
obj["multipleEndpoints"] = multipleEndpointsProp
984+
}
944985
labelsProp, err := expandNetappVolumeEffectiveLabels(d.Get("effective_labels"), d, config)
945986
if err != nil {
946987
return err
@@ -999,6 +1040,14 @@ func resourceNetappVolumeUpdate(d *schema.ResourceData, meta interface{}) error
9991040
"backup_config.scheduled_backup_enabled")
10001041
}
10011042

1043+
if d.HasChange("large_capacity") {
1044+
updateMask = append(updateMask, "largeCapacity")
1045+
}
1046+
1047+
if d.HasChange("multiple_endpoints") {
1048+
updateMask = append(updateMask, "multipleEndpoints")
1049+
}
1050+
10021051
if d.HasChange("effective_labels") {
10031052
updateMask = append(updateMask, "labels")
10041053
}
@@ -1686,6 +1735,14 @@ func flattenNetappVolumeReplicaZone(v interface{}, d *schema.ResourceData, confi
16861735
return v
16871736
}
16881737

1738+
func flattenNetappVolumeLargeCapacity(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
1739+
return v
1740+
}
1741+
1742+
func flattenNetappVolumeMultipleEndpoints(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
1743+
return v
1744+
}
1745+
16891746
func flattenNetappVolumeTerraformLabels(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
16901747
if v == nil {
16911748
return v
@@ -2225,6 +2282,14 @@ func expandNetappVolumeBackupConfigScheduledBackupEnabled(v interface{}, d tpgre
22252282
return v, nil
22262283
}
22272284

2285+
func expandNetappVolumeLargeCapacity(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
2286+
return v, nil
2287+
}
2288+
2289+
func expandNetappVolumeMultipleEndpoints(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
2290+
return v, nil
2291+
}
2292+
22282293
func expandNetappVolumeEffectiveLabels(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (map[string]string, error) {
22292294
if v == nil {
22302295
return map[string]string{}, nil

website/docs/r/netapp_volume.html.markdown

+9
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,15 @@ The following arguments are supported:
159159
Backup configuration for the volume.
160160
Structure is [documented below](#nested_backup_config).
161161

162+
* `large_capacity` -
163+
(Optional)
164+
Optional. Flag indicating if the volume will be a large capacity volume or a regular volume.
165+
166+
* `multiple_endpoints` -
167+
(Optional)
168+
Optional. Flag indicating if the volume will have an IP address per node for volumes supporting multiple IP endpoints.
169+
Only the volume with largeCapacity will be allowed to have multiple endpoints.
170+
162171
* `project` - (Optional) The ID of the project in which the resource belongs.
163172
If it is not provided, the provider project is used.
164173

0 commit comments

Comments
 (0)