Skip to content

Commit bbdf61f

Browse files
authored
azurerm_netapp_pool - add support for cool_access_enabled (#29468)
1 parent 3041280 commit bbdf61f

5 files changed

Lines changed: 96 additions & 4 deletions

File tree

internal/services/netapp/netapp_pool_data_source.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,11 @@ func dataSourceNetAppPool() *pluginsdk.Resource {
5757
Type: pluginsdk.TypeString,
5858
Computed: true,
5959
},
60+
61+
"cool_access_enabled": {
62+
Type: pluginsdk.TypeBool,
63+
Computed: true,
64+
},
6065
},
6166
}
6267
}
@@ -83,10 +88,13 @@ func dataSourceNetAppPoolRead(d *pluginsdk.ResourceData, meta interface{}) error
8388
d.Set("resource_group_name", id.ResourceGroupName)
8489

8590
if model := resp.Model; model != nil {
86-
d.Set("location", location.NormalizeNilable(&model.Location))
87-
d.Set("service_level", string(model.Properties.ServiceLevel))
88-
d.Set("size_in_tb", model.Properties.Size/1099511627776)
89-
d.Set("encryption_type", string(pointer.From(model.Properties.EncryptionType)))
91+
d.Set("location", location.Normalize(model.Location))
92+
93+
props := model.Properties
94+
d.Set("service_level", string(props.ServiceLevel))
95+
d.Set("size_in_tb", props.Size/1099511627776)
96+
d.Set("encryption_type", string(pointer.From(props.EncryptionType)))
97+
d.Set("cool_access_enabled", pointer.From(props.CoolAccess))
9098
}
9199

92100
return nil

internal/services/netapp/netapp_pool_resource.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,21 @@ func resourceNetAppPool() *pluginsdk.Resource {
100100
}, false),
101101
},
102102

103+
"cool_access_enabled": {
104+
Type: pluginsdk.TypeBool,
105+
Optional: true,
106+
Default: false,
107+
},
108+
103109
"tags": commonschema.Tags(),
104110
},
111+
112+
CustomizeDiff: pluginsdk.CustomDiffWithAll(
113+
// `cool_access_enabled` cannot be disabled
114+
pluginsdk.ForceNewIfChange("cool_access_enabled", func(ctx context.Context, old, new, meta interface{}) bool {
115+
return old.(bool) && !new.(bool)
116+
}),
117+
),
105118
}
106119

107120
return resource
@@ -138,6 +151,7 @@ func resourceNetAppPoolCreate(d *pluginsdk.ResourceData, meta interface{}) error
138151
ServiceLevel: capacitypools.ServiceLevel(d.Get("service_level").(string)),
139152
Size: sizeInBytes,
140153
EncryptionType: &encryptionType,
154+
CoolAccess: pointer.To(d.Get("cool_access_enabled").(bool)),
141155
},
142156
Tags: tags.Expand(d.Get("tags").(map[string]interface{})),
143157
}
@@ -187,6 +201,10 @@ func resourceNetAppPoolUpdate(d *pluginsdk.ResourceData, meta interface{}) error
187201
update.Properties.QosType = &qosType
188202
}
189203

204+
if d.HasChange("cool_access_enabled") {
205+
update.Properties.CoolAccess = pointer.To(d.Get("cool_access_enabled").(bool))
206+
}
207+
190208
if d.HasChange("tags") {
191209
tagsRaw := d.Get("tags").(map[string]interface{})
192210
update.Tags = tags.Expand(tagsRaw)
@@ -244,6 +262,7 @@ func resourceNetAppPoolRead(d *pluginsdk.ResourceData, meta interface{}) error {
244262
}
245263
d.Set("qos_type", qosType)
246264
d.Set("encryption_type", string(pointer.From(poolProperties.EncryptionType)))
265+
d.Set("cool_access_enabled", pointer.From(poolProperties.CoolAccess))
247266

248267
return tags.FlattenAndSet(d, model.Tags)
249268
}

internal/services/netapp/netapp_pool_resource_test.go

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,28 @@ func TestAccNetAppPool_doubleEncryption(t *testing.T) {
127127
})
128128
}
129129

130+
func TestAccNetAppPool_coolAccess(t *testing.T) {
131+
data := acceptance.BuildTestData(t, "azurerm_netapp_pool", "test")
132+
r := NetAppPoolResource{}
133+
134+
data.ResourceTest(t, r, []acceptance.TestStep{
135+
{
136+
Config: r.basic(data),
137+
Check: acceptance.ComposeTestCheckFunc(
138+
check.That(data.ResourceName).ExistsInAzure(r),
139+
),
140+
},
141+
data.ImportStep(),
142+
{
143+
Config: r.coolAccess(data),
144+
Check: acceptance.ComposeTestCheckFunc(
145+
check.That(data.ResourceName).ExistsInAzure(r),
146+
),
147+
},
148+
data.ImportStep(),
149+
})
150+
}
151+
130152
func (t NetAppPoolResource) Exists(ctx context.Context, clients *clients.Client, state *pluginsdk.InstanceState) (*bool, error) {
131153
id, err := capacitypools.ParseCapacityPoolID(state.ID)
132154
if err != nil {
@@ -314,3 +336,40 @@ resource "azurerm_netapp_pool" "test" {
314336
}
315337
`, data.RandomInteger, data.Locations.Primary, data.RandomInteger, data.RandomInteger)
316338
}
339+
340+
func (NetAppPoolResource) coolAccess(data acceptance.TestData) string {
341+
return fmt.Sprintf(`
342+
provider "azurerm" {
343+
features {}
344+
}
345+
346+
resource "azurerm_resource_group" "test" {
347+
name = "acctestRG-netapp-%d"
348+
location = "%s"
349+
350+
tags = {
351+
"SkipNRMSNSG" = "true"
352+
}
353+
}
354+
355+
resource "azurerm_netapp_account" "test" {
356+
name = "acctest-NetAppAccount-%d"
357+
location = azurerm_resource_group.test.location
358+
resource_group_name = azurerm_resource_group.test.name
359+
}
360+
361+
resource "azurerm_netapp_pool" "test" {
362+
name = "acctest-NetAppPool-%d"
363+
account_name = azurerm_netapp_account.test.name
364+
location = azurerm_resource_group.test.location
365+
resource_group_name = azurerm_resource_group.test.name
366+
service_level = "Standard"
367+
size_in_tb = 2
368+
cool_access_enabled = true
369+
370+
tags = {
371+
"CreatedOnDate" = "2022-07-08T23:50:21Z",
372+
}
373+
}
374+
`, data.RandomInteger, data.Locations.Primary, data.RandomInteger, data.RandomInteger)
375+
}

website/docs/d/netapp_pool.html.markdown

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ The following attributes are exported:
4646

4747
* `encryption_type` - The encryption type of the pool.
4848

49+
* `cool_access_enabled` - Whether the NetApp Pool can hold cool access enabled volumes.
50+
4951
---
5052

5153
## Timeouts

website/docs/r/netapp_pool.html.markdown

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ The following arguments are supported:
5858

5959
* `encryption_type` - (Optional) The encryption type of the pool. Valid values include `Single`, and `Double`. Defaults to `Single`. Changing this forces a new resource to be created.
6060

61+
* `cool_access_enabled` - (Optional) Whether the NetApp Pool can hold cool access enabled volumes. Defaults to `false`.
62+
63+
~> **Note:** Disabling `cool_access_enabled` is not allowed and forces a new resource to be created.
64+
6165
* `tags` - (Optional) A mapping of tags to assign to the resource.
6266

6367
---

0 commit comments

Comments
 (0)