diff --git a/examples/ibm-is-ng/main.tf b/examples/ibm-is-ng/main.tf index c8bfa2a0e4..e1a1f31c91 100644 --- a/examples/ibm-is-ng/main.tf +++ b/examples/ibm-is-ng/main.tf @@ -1051,7 +1051,7 @@ resource "ibm_is_backup_policy_plan" "is_backup_policy_plan" { copy_user_tags = true deletion_trigger { delete_after = 20 - delete_over_count = 20 + delete_over_count = "20" } name = "my-backup-policy-plan-1" } diff --git a/ibm/service/vpc/resource_ibm_is_backup_policy_plan.go b/ibm/service/vpc/resource_ibm_is_backup_policy_plan.go index 28e5a436a6..b9b5ae9eff 100644 --- a/ibm/service/vpc/resource_ibm_is_backup_policy_plan.go +++ b/ibm/service/vpc/resource_ibm_is_backup_policy_plan.go @@ -173,11 +173,9 @@ func resourceIBMIsBackupPolicyPlanCreate(context context.Context, d *schema.Reso if backupPolicyPlanDeletionTriggerPrototypeMap["delete_after"] != nil { backupPolicyPlanDeletionTriggerPrototype.DeleteAfter = core.Int64Ptr(int64(backupPolicyPlanDeletionTriggerPrototypeMap["delete_after"].(int))) } - log.Println("backupPolicyPlanDeletionTriggerPrototypeMap[delete_over_count] Inside") - log.Println(backupPolicyPlanDeletionTriggerPrototypeMap["delete_over_count"]) if backupPolicyPlanDeletionTriggerPrototypeMap["delete_over_count"] != nil { deleteOverCountString := backupPolicyPlanDeletionTriggerPrototypeMap["delete_over_count"].(string) - if deleteOverCountString != "" { + if deleteOverCountString != "" && deleteOverCountString != "null" { deleteOverCount, err := strconv.ParseInt(backupPolicyPlanDeletionTriggerPrototypeMap["delete_over_count"].(string), 10, 64) if err != nil { return diag.FromErr(fmt.Errorf("[ERROR] Error setting delete_over_count: %s", err)) @@ -185,6 +183,8 @@ func resourceIBMIsBackupPolicyPlanCreate(context context.Context, d *schema.Reso deleteOverCountint := int64(deleteOverCount) if deleteOverCountint >= int64(0) { backupPolicyPlanDeletionTriggerPrototype.DeleteOverCount = core.Int64Ptr(deleteOverCountint) + } else { + return diag.FromErr(fmt.Errorf("[ERROR] Error setting delete_over_count: Retention count and days cannot be both zero")) } } } @@ -310,6 +310,8 @@ func resourceIBMIsBackupPolicyPlanBackupPolicyPlanDeletionTriggerPrototypeToMap( } if backupPolicyPlanDeletionTriggerPrototype.DeleteOverCount != nil { backupPolicyPlanDeletionTriggerPrototypeMap["delete_over_count"] = strconv.FormatInt(*backupPolicyPlanDeletionTriggerPrototype.DeleteOverCount, 10) + } else { + backupPolicyPlanDeletionTriggerPrototypeMap["delete_over_count"] = "null" } return backupPolicyPlanDeletionTriggerPrototypeMap @@ -360,7 +362,7 @@ func resourceIBMIsBackupPolicyPlanUpdate(context context.Context, d *schema.Reso } if backupPolicyPlanDeletionTriggerPrototypeMap["delete_over_count"] != nil { deleteOverCountString := backupPolicyPlanDeletionTriggerPrototypeMap["delete_over_count"].(string) - if deleteOverCountString != "" { + if deleteOverCountString != "" && deleteOverCountString != "null" { deleteOverCount, err := strconv.ParseInt(backupPolicyPlanDeletionTriggerPrototypeMap["delete_over_count"].(string), 10, 64) if err != nil { return diag.FromErr(fmt.Errorf("[ERROR] Error setting delete_over_count: %s", err)) diff --git a/website/docs/r/is_backup_policy_plan.html.markdown b/website/docs/r/is_backup_policy_plan.html.markdown index 059b5d11fb..bc572f8934 100644 --- a/website/docs/r/is_backup_policy_plan.html.markdown +++ b/website/docs/r/is_backup_policy_plan.html.markdown @@ -51,7 +51,10 @@ backup_policy_plan_id Nested scheme for `deletion_trigger`: - `delete_after` - (Optional, Integer) The maximum number of days to keep each backup after creation. Default value is 30. - - `delete_over_count` - (Optional, Integer) The maximum number of recent backups to keep. If unspecified, there will be no maximum. + - `delete_over_count` - (Optional, String) The maximum number of recent backups to keep. If unspecified, there will be no maximum. + + ->**Note** Assign back to "null" to reset to no maximum. + - `name` - (Optional, String) The user-defined name for this backup policy plan. Names must be unique within the backup policy this plan resides in. If unspecified, the name will be a hyphenated list of randomly-selected words. ## Attribute Reference