@@ -120,9 +120,12 @@ func resourceSumologicMonitorsLibraryMonitor() *schema.Resource {
120120 ValidateFunc : validation .StringInSlice ([]string {"AtLeastOnce" , "Always" , "ResultCount" , "MissingData" }, false ),
121121 },
122122 "detection_method" : {
123- Type : schema .TypeString ,
124- Optional : true ,
125- ValidateFunc : validation .StringInSlice ([]string {"StaticCondition" , "LogsStaticCondition" , "MetricsStaticCondition" , "LogsOutlierCondition" , "MetricsOutlierCondition" , "LogsMissingDataCondition" , "MetricsMissingDataCondition" }, false ),
123+ Type : schema .TypeString ,
124+ Optional : true ,
125+ ValidateFunc : validation .StringInSlice ([]string {"StaticCondition" , "LogsStaticCondition" ,
126+ "MetricsStaticCondition" , "LogsOutlierCondition" , "MetricsOutlierCondition" ,
127+ "LogsMissingDataCondition" , "MetricsMissingDataCondition" , "SloSliCondition" ,
128+ "SloBurnRateCondition" }, false ),
126129 },
127130 },
128131 },
@@ -182,6 +185,22 @@ func resourceSumologicMonitorsLibraryMonitor() *schema.Resource {
182185 Schema : metricsMissingDataTriggerConditionSchema ,
183186 },
184187 },
188+ sloSLIConditionFieldName : {
189+ Type : schema .TypeList ,
190+ MaxItems : 1 ,
191+ Optional : true ,
192+ Elem : & schema.Resource {
193+ Schema : sloSLITriggerConditionSchema ,
194+ },
195+ },
196+ sloBurnRateConditionFieldName : {
197+ Type : schema .TypeList ,
198+ MaxItems : 1 ,
199+ Optional : true ,
200+ Elem : & schema.Resource {
201+ Schema : sloBurnRateTriggerConditionSchema ,
202+ },
203+ },
185204 },
186205 },
187206 },
@@ -266,7 +285,7 @@ func resourceSumologicMonitorsLibraryMonitor() *schema.Resource {
266285 "monitor_type" : {
267286 Type : schema .TypeString ,
268287 Required : true ,
269- ValidateFunc : validation .StringInSlice ([]string {"Logs" , "Metrics" }, false ),
288+ ValidateFunc : validation .StringInSlice ([]string {"Logs" , "Metrics" , "Slo" }, false ),
270289 },
271290
272291 "evaluation_delay" : {
@@ -325,7 +344,10 @@ func resourceSumologicMonitorsLibraryMonitor() *schema.Resource {
325344 Type : schema .TypeString ,
326345 Optional : true ,
327346 },
328-
347+ "slo_id" : {
348+ Type : schema .TypeString ,
349+ Optional : true ,
350+ },
329351 "alert_name" : {
330352 Type : schema .TypeString ,
331353 Optional : true ,
@@ -445,6 +467,23 @@ var metricsMissingDataTriggerConditionSchema = map[string]*schema.Schema{
445467 },
446468}
447469
470+ var sloSLITriggerConditionSchema = map [string ]* schema.Schema {
471+ "sli_threshold" : {
472+ Type : schema .TypeFloat ,
473+ Required : true ,
474+ ValidateFunc : validation .FloatBetween (0 , 100 ),
475+ },
476+ }
477+
478+ var sloBurnRateTriggerConditionSchema = map [string ]* schema.Schema {
479+ "time_range" : & timeRangeSchema ,
480+ "burn_rate_threshold" : {
481+ Type : schema .TypeFloat ,
482+ Required : true ,
483+ ValidateFunc : validation .FloatAtLeast (0 ),
484+ },
485+ }
486+
448487var occurrenceTypeSchema = schema.Schema {
449488 Type : schema .TypeString ,
450489 Required : true ,
@@ -765,6 +804,7 @@ func triggerConditionsBlockToJson(block map[string]interface{}) []TriggerConditi
765804 if sc , ok := fromSingletonArray (block , metricsMissingDataConditionFieldName ); ok {
766805 conditions = append (conditions , metricsMissingDataConditionBlockToJson (sc )... )
767806 }
807+
768808 return conditions
769809}
770810
@@ -1087,19 +1127,23 @@ func jsonToMetricsMissingDataConditionBlock(conditions []TriggerCondition) map[s
10871127 return block
10881128}
10891129
1090- var logsStaticConditionFieldName = "logs_static_condition"
1091- var metricsStaticConditionFieldName = "metrics_static_condition"
1092- var logsOutlierConditionFieldName = "logs_outlier_condition"
1093- var metricsOutlierConditionFieldName = "metrics_outlier_condition"
1094- var logsMissingDataConditionFieldName = "logs_missing_data_condition"
1095- var metricsMissingDataConditionFieldName = "metrics_missing_data_condition"
1096-
1097- var logsStaticConditionDetectionMethod = "LogsStaticCondition"
1098- var metricsStaticConditionDetectionMethod = "MetricsStaticCondition"
1099- var logsOutlierConditionDetectionMethod = "LogsOutlierCondition"
1100- var metricsOutlierConditionDetectionMethod = "MetricsOutlierCondition"
1101- var logsMissingDataConditionDetectionMethod = "LogsMissingDataCondition"
1102- var metricsMissingDataConditionDetectionMethod = "MetricsMissingDataCondition"
1130+ const logsStaticConditionFieldName = "logs_static_condition"
1131+ const metricsStaticConditionFieldName = "metrics_static_condition"
1132+ const logsOutlierConditionFieldName = "logs_outlier_condition"
1133+ const metricsOutlierConditionFieldName = "metrics_outlier_condition"
1134+ const logsMissingDataConditionFieldName = "logs_missing_data_condition"
1135+ const metricsMissingDataConditionFieldName = "metrics_missing_data_condition"
1136+ const sloSLIConditionFieldName = "slo_sli_condition"
1137+ const sloBurnRateConditionFieldName = "slo_burn_rate_condition"
1138+
1139+ const logsStaticConditionDetectionMethod = "LogsStaticCondition"
1140+ const metricsStaticConditionDetectionMethod = "MetricsStaticCondition"
1141+ const logsOutlierConditionDetectionMethod = "LogsOutlierCondition"
1142+ const metricsOutlierConditionDetectionMethod = "MetricsOutlierCondition"
1143+ const logsMissingDataConditionDetectionMethod = "LogsMissingDataCondition"
1144+ const metricsMissingDataConditionDetectionMethod = "MetricsMissingDataCondition"
1145+ const sloSLIConditionDetectionMethod = "SloSliCondition"
1146+ const sloBurnRateConditionDetectionMethod = "SloBurnRateCondition"
11031147
11041148func getQueries (d * schema.ResourceData ) []MonitorQuery {
11051149 rawQueries := d .Get ("queries" ).([]interface {})
0 commit comments