Skip to content

Commit

Permalink
Updated to geo_backup_enabled. Skip creation of geo backup setting wh…
Browse files Browse the repository at this point in the history
…en using azure default values
  • Loading branch information
MoAhujaMSFT committed Apr 6, 2021
1 parent 9ce7a67 commit d108227
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 36 deletions.
48 changes: 24 additions & 24 deletions azurerm/internal/services/mssql/mssql_database_resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,7 @@ func resourceMsSqlDatabase() *schema.Resource {
},
},

"geo_backup_policy": {
"geo_backup_enabled": {
Type: schema.TypeBool,
Optional: true,
Default: true,
Expand Down Expand Up @@ -452,29 +452,29 @@ func resourceMsSqlDatabaseCreateUpdate(d *schema.ResourceData, meta interface{})

d.SetId(*read.ID)

// For datawarehouse SKUs, set the geo-backup policy
if d.HasChange("geo_backup_policy") && strings.HasPrefix(skuName.(string), "DW") {
v := d.Get("geo_backup_policy").(bool)

// For datawarehouse SKUs only
if strings.HasPrefix(skuName.(string), "DW") && (d.HasChange("geo_backup_enabled") || d.IsNewResource()) {
isEnabled := d.Get("geo_backup_enabled").(bool)
var geoBackupPolicyState sql.GeoBackupPolicyState

if v {
geoBackupPolicyState = sql.GeoBackupPolicyStateEnabled
} else {
geoBackupPolicyState = sql.GeoBackupPolicyStateDisabled
}
// The default geo backup policy configuration for a new resource is 'enabled', so we don't need to set it in that scenario
if !(d.IsNewResource() && isEnabled) {
if isEnabled {
geoBackupPolicyState = sql.GeoBackupPolicyStateEnabled
} else {
geoBackupPolicyState = sql.GeoBackupPolicyStateDisabled
}

geoBackupPolicy := sql.GeoBackupPolicy{
GeoBackupPolicyProperties: &sql.GeoBackupPolicyProperties{
State: geoBackupPolicyState,
},
}
geoBackupPolicy := sql.GeoBackupPolicy{
GeoBackupPolicyProperties: &sql.GeoBackupPolicyProperties{
State: geoBackupPolicyState,
},
}

_, err := geoBackupPoliciesClient.CreateOrUpdate(ctx, serverId.ResourceGroup, serverId.Name, name, geoBackupPolicy)
if err != nil {
return fmt.Errorf("Error issuing create/update request for Sql Server %q (Database %q) Geo backup policies (Resource Group %q): %+v", serverId.Name, name, serverId.ResourceGroup, err)
if _, err := geoBackupPoliciesClient.CreateOrUpdate(ctx, serverId.ResourceGroup, serverId.Name, name, geoBackupPolicy); err != nil {
return fmt.Errorf("Error issuing create/update request for Sql Server %q (Database %q) Geo backup policies (Resource Group %q): %+v", serverId.Name, name, serverId.ResourceGroup, err)
}
}

}

if _, err = threatClient.CreateOrUpdate(ctx, serverId.ResourceGroup, serverId.Name, name, *expandMsSqlServerThreatDetectionPolicy(d, location)); err != nil {
Expand Down Expand Up @@ -612,7 +612,7 @@ func resourceMsSqlDatabaseRead(d *schema.ResourceData, meta interface{}) error {
}

geoBackupPolicy := true

// Hyper Scale SKU's do not currently support LRP and do not honour normal SRP operations
if !strings.HasPrefix(skuName, "HS") && !strings.HasPrefix(skuName, "DW") {
longTermPolicy, err := longTermRetentionClient.Get(ctx, id.ResourceGroup, id.ServerName, id.Name)
Expand Down Expand Up @@ -649,15 +649,15 @@ func resourceMsSqlDatabaseRead(d *schema.ResourceData, meta interface{}) error {
}

//For Datawarehouse SKUs, set the geo-backup policy setting
if (strings.HasPrefix(skuName, "DW") && geoPoliciesResponse.GeoBackupPolicyProperties.State == sql.GeoBackupPolicyStateDisabled) {
if strings.HasPrefix(skuName, "DW") && geoPoliciesResponse.GeoBackupPolicyProperties.State == sql.GeoBackupPolicyStateDisabled {
geoBackupPolicy = false
}
}

if err := d.Set("geo_backup_policy", geoBackupPolicy); err != nil {
return fmt.Errorf("failure in setting `geo_backup_policy`: %+v", err)
if err := d.Set("geo_backup_enabled", geoBackupPolicy); err != nil {
return fmt.Errorf("failure in setting `geo_backup_enabled`: %+v", err)
}

return tags.FlattenAndSet(d, resp.Tags)
}

Expand Down
24 changes: 12 additions & 12 deletions azurerm/internal/services/mssql/mssql_database_resource_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -547,18 +547,18 @@ func TestAccMsSqlDatabase_geoBackupPolicy(t *testing.T) {

data.ResourceTest(t, r, []resource.TestStep{
{
Config: r.withGeoBackupPoliciesEnabled(data),
Config: r.withGeoBackupPoliciesDisabled(data),
Check: resource.ComposeTestCheckFunc(
check.That(data.ResourceName).ExistsInAzure(r),
check.That(data.ResourceName).Key("geo_backup_policy").HasValue("true"),
check.That(data.ResourceName).Key("geo_backup_enabled").HasValue("false"),
),
},
data.ImportStep(),
{
Config: r.withGeoBackupPoliciesDisabled(data),
Config: r.withGeoBackupPoliciesEnabled(data),
Check: resource.ComposeTestCheckFunc(
check.That(data.ResourceName).ExistsInAzure(r),
check.That(data.ResourceName).Key("geo_backup_policy").HasValue("false"),
check.That(data.ResourceName).Key("geo_backup_enabled").HasValue("true"),
),
},
data.ImportStep(),
Expand Down Expand Up @@ -1382,10 +1382,10 @@ func (r MsSqlDatabaseResource) withGeoBackupPoliciesEnabled(data acceptance.Test
%[1]s
resource "azurerm_mssql_database" "test" {
name = "acctest-db-%[3]d"
server_id = azurerm_sql_server.test.id
sku_name = "DW100c"
geo_backup_policy = true
name = "acctest-db-%[3]d"
server_id = azurerm_sql_server.test.id
sku_name = "DW100c"
geo_backup_enabled = true
}
`, r.template(data), data.RandomIntOfLength(15), data.RandomInteger)
}
Expand All @@ -1395,10 +1395,10 @@ func (r MsSqlDatabaseResource) withGeoBackupPoliciesDisabled(data acceptance.Tes
%[1]s
resource "azurerm_mssql_database" "test" {
name = "acctest-db-%[3]d"
server_id = azurerm_sql_server.test.id
sku_name = "DW100c"
geo_backup_policy = false
name = "acctest-db-%[3]d"
server_id = azurerm_sql_server.test.id
sku_name = "DW100c"
geo_backup_enabled = false
}
`, r.template(data), data.RandomIntOfLength(15), data.RandomInteger)
}
4 changes: 4 additions & 0 deletions website/docs/r/mssql_database.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,10 @@ The following arguments are supported:

* `extended_auditing_policy` - (Optional) A `extended_auditing_policy` block as defined below.

* `geo_backup_enabled` - (Optional) A boolean that specifies if the Geo Backup Policy is enabled.

~> **NOTE** `geo_backup_enabled` is only applicable for DataWarehouse SKUs (DW*). This setting is ignored for all other SKUs.

* `license_type` - (Optional) Specifies the license type applied to this database. Possible values are `LicenseIncluded` and `BasePrice`.

* `long_term_retention_policy` - (Optional) A `long_term_retention_policy` block as defined below.
Expand Down

0 comments on commit d108227

Please sign in to comment.