diff --git a/internal/kibana/slo.go b/internal/kibana/slo.go index ce8c6bd8c..2b817a370 100644 --- a/internal/kibana/slo.go +++ b/internal/kibana/slo.go @@ -457,6 +457,11 @@ func getSchema() map[string]*schema.Schema { Optional: true, Computed: true, }, + "prevent_initial_backfill": { + Description: "Prevents the underlying ES transform from attempting to backfill data on start, which can sometimes be resource-intensive or time-consuming and unnecessary", + Type: schema.TypeBool, + Optional: true, + }, }, }, }, @@ -508,6 +513,14 @@ func getOrNilFloat(path string, d *schema.ResourceData) *float64 { return nil } +func getOrNilBool(path string, d *schema.ResourceData) *bool { + if v, ok := d.GetOk(path); ok { + b := v.(bool) + return &b + } + return nil +} + func getSloFromResourceData(d *schema.ResourceData) (models.Slo, diag.Diagnostics) { var diags diag.Diagnostics @@ -650,8 +663,9 @@ func getSloFromResourceData(d *schema.ResourceData) (models.Slo, diag.Diagnostic } settings := slo.Settings{ - SyncDelay: getOrNilString("settings.0.sync_delay", d), - Frequency: getOrNilString("settings.0.frequency", d), + SyncDelay: getOrNilString("settings.0.sync_delay", d), + Frequency: getOrNilString("settings.0.frequency", d), + PreventInitialBackfill: getOrNilBool("settings.0.prevent_initial_backfill", d), } budgetingMethod := slo.BudgetingMethod(d.Get("budgeting_method").(string)) @@ -904,8 +918,9 @@ func resourceSloRead(ctx context.Context, d *schema.ResourceData, meta interface if err := d.Set("settings", []interface{}{ map[string]interface{}{ - "sync_delay": s.Settings.SyncDelay, - "frequency": s.Settings.Frequency, + "sync_delay": s.Settings.SyncDelay, + "frequency": s.Settings.Frequency, + "prevent_initial_backfill": s.Settings.PreventInitialBackfill, }, }); err != nil { return diag.FromErr(err)