diff --git a/internal/services/maintenance/maintenance_configuration_resource.go b/internal/services/maintenance/maintenance_configuration_resource.go index d02b98b345a1..a7d2406c1479 100644 --- a/internal/services/maintenance/maintenance_configuration_resource.go +++ b/internal/services/maintenance/maintenance_configuration_resource.go @@ -7,6 +7,7 @@ import ( "fmt" "log" "regexp" + "strings" "time" "github.com/hashicorp/go-azure-helpers/lang/pointer" @@ -446,7 +447,12 @@ func flattenMaintenanceConfigurationInstallPatches(input *maintenanceconfigurati output := make(map[string]interface{}) if rebootSetting := v.RebootSetting; rebootSetting != nil { - output["reboot"] = *rebootSetting + // https://github.com/Azure/azure-rest-api-specs/issues/27222 + if strings.EqualFold(string(*rebootSetting), "AlwaysReboot") { + output["reboot"] = "Always" + } else { + output["reboot"] = *rebootSetting + } } if windowsParameters := v.WindowsParameters; windowsParameters != nil { diff --git a/internal/services/maintenance/maintenance_configuration_resource_test.go b/internal/services/maintenance/maintenance_configuration_resource_test.go index 2b82defb7e55..48fa5cabf9e1 100644 --- a/internal/services/maintenance/maintenance_configuration_resource_test.go +++ b/internal/services/maintenance/maintenance_configuration_resource_test.go @@ -35,6 +35,21 @@ func TestAccMaintenanceConfiguration_basic(t *testing.T) { }) } +func TestAccMaintenanceConfiguration_basicWithAlwaysReboot(t *testing.T) { + data := acceptance.BuildTestData(t, "azurerm_maintenance_configuration", "test") + r := MaintenanceConfigurationResource{} + + data.ResourceTest(t, r, []acceptance.TestStep{ + { + Config: r.basic_withAlwaysReboot(data), + Check: acceptance.ComposeTestCheckFunc( + check.That(data.ResourceName).ExistsInAzure(r), + ), + }, + data.ImportStep(), + }) +} + func TestAccMaintenanceConfiguration_basicWithInGuestPatch(t *testing.T) { data := acceptance.BuildTestData(t, "azurerm_maintenance_configuration", "test") r := MaintenanceConfigurationResource{} @@ -192,6 +207,57 @@ resource "azurerm_maintenance_configuration" "test" { `, data.RandomInteger, data.Locations.Primary, data.RandomInteger) } +func (MaintenanceConfigurationResource) basic_withAlwaysReboot(data acceptance.TestData) string { + return fmt.Sprintf(` +provider "azurerm" { + features {} +} + +resource "azurerm_resource_group" "test" { + name = "acctestRG-maint-%d" + location = "%s" +} + +resource "azurerm_maintenance_configuration" "test" { + name = "acctest-MC%d" + resource_group_name = azurerm_resource_group.test.name + location = azurerm_resource_group.test.location + scope = "InGuestPatch" + in_guest_user_patch_mode = "User" + install_patches { + reboot = "Always" + linux { + classifications_to_include = [ + "Critical", + "Security", + ] + package_names_mask_to_exclude = [] + package_names_mask_to_include = [] + } + + windows { + classifications_to_include = [ + "Critical", + "Security", + "UpdateRollup", + "Definition", + "Updates", + ] + kb_numbers_to_exclude = [] + kb_numbers_to_include = [] + } + } + + window { + duration = "02:00" + recur_every = "Day" + start_date_time = "2025-02-01 11:00" + time_zone = "Central Standard Time" + } +} +`, data.RandomInteger, data.Locations.Primary, data.RandomInteger) +} + func (MaintenanceConfigurationResource) basic_withInGuestPatch(data acceptance.TestData) string { return fmt.Sprintf(` provider "azurerm" {