Skip to content

Commit 27f2115

Browse files
committed
fix: mark schedule attribute of aws_backup_plan rule computed
Resolves #23976
1 parent acf865a commit 27f2115

File tree

2 files changed

+58
-0
lines changed

2 files changed

+58
-0
lines changed

internal/service/backup/plan.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
)
2828

2929
const (
30+
defaultPlanRuleScheduleExpression = "cron(0 5 ? * * *)"
3031
defaultPlanRuleScheduleExpressionTimezone = "Etc/UTC"
3132
)
3233

@@ -167,6 +168,7 @@ func resourcePlan() *schema.Resource {
167168
names.AttrSchedule: {
168169
Type: schema.TypeString,
169170
Optional: true,
171+
Default: defaultPlanRuleScheduleExpression,
170172
},
171173
"schedule_expression_timezone": {
172174
Type: schema.TypeString,

internal/service/backup/plan_test.go

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,45 @@ func TestAccBackupPlan_basic(t *testing.T) {
5959
})
6060
}
6161

62+
func TestAccBackupPlan_no_schedule(t *testing.T) {
63+
ctx := acctest.Context(t)
64+
var plan backup.GetBackupPlanOutput
65+
resourceName := "aws_backup_plan.test"
66+
rName := fmt.Sprintf("tf-testacc-backup-%s", sdkacctest.RandString(14))
67+
68+
resource.ParallelTest(t, resource.TestCase{
69+
PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) },
70+
ErrorCheck: acctest.ErrorCheck(t, names.BackupServiceID),
71+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories,
72+
CheckDestroy: testAccCheckPlanDestroy(ctx),
73+
Steps: []resource.TestStep{
74+
{
75+
Config: testAccPlanConfig_no_schedule(rName),
76+
Check: resource.ComposeTestCheckFunc(
77+
testAccCheckPlanExists(ctx, resourceName, &plan),
78+
acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "backup", regexache.MustCompile(`backup-plan:.+`)),
79+
resource.TestCheckResourceAttr(resourceName, names.AttrName, rName),
80+
resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"),
81+
resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{
82+
"rule_name": rName,
83+
"target_vault_name": rName,
84+
names.AttrSchedule: "cron(0 5 ? * * *)",
85+
"schedule_expression_timezone": "Etc/UTC",
86+
"lifecycle.#": "0",
87+
}),
88+
resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"),
89+
resource.TestCheckResourceAttrSet(resourceName, names.AttrVersion),
90+
),
91+
},
92+
{
93+
ResourceName: resourceName,
94+
ImportState: true,
95+
ImportStateVerify: true,
96+
},
97+
},
98+
})
99+
}
100+
62101
func TestAccBackupPlan_disappears(t *testing.T) {
63102
ctx := acctest.Context(t)
64103
var plan backup.GetBackupPlanOutput
@@ -798,6 +837,23 @@ resource "aws_backup_plan" "test" {
798837
`, rName)
799838
}
800839

840+
func testAccPlanConfig_no_schedule(rName string) string {
841+
return fmt.Sprintf(`
842+
resource "aws_backup_vault" "test" {
843+
name = %[1]q
844+
}
845+
846+
resource "aws_backup_plan" "test" {
847+
name = %[1]q
848+
849+
rule {
850+
rule_name = %[1]q
851+
target_vault_name = aws_backup_vault.test.name
852+
}
853+
}
854+
`, rName)
855+
}
856+
801857
func testAccPlanConfig_optInToArchiveForSupportedResources(rName string) string {
802858
return fmt.Sprintf(`
803859
resource "aws_backup_vault" "test" {

0 commit comments

Comments
 (0)