v1_service_level_objectives_CreateSLO_3765703239/
v1_service-level-objectives_CreateSLO_3765703239.rs1use datadog_api_client::datadog;
3use datadog_api_client::datadogV1::api_service_level_objectives::ServiceLevelObjectivesAPI;
4use datadog_api_client::datadogV1::model::FormulaAndFunctionMetricDataSource;
5use datadog_api_client::datadogV1::model::FormulaAndFunctionMetricQueryDefinition;
6use datadog_api_client::datadogV1::model::SLODataSourceQueryDefinition;
7use datadog_api_client::datadogV1::model::SLOFormula;
8use datadog_api_client::datadogV1::model::SLOSliSpec;
9use datadog_api_client::datadogV1::model::SLOThreshold;
10use datadog_api_client::datadogV1::model::SLOTimeSliceComparator;
11use datadog_api_client::datadogV1::model::SLOTimeSliceCondition;
12use datadog_api_client::datadogV1::model::SLOTimeSliceQuery;
13use datadog_api_client::datadogV1::model::SLOTimeSliceSpec;
14use datadog_api_client::datadogV1::model::SLOTimeframe;
15use datadog_api_client::datadogV1::model::SLOType;
16use datadog_api_client::datadogV1::model::ServiceLevelObjectiveRequest;
17
18#[tokio::main]
19async fn main() {
20 let body = ServiceLevelObjectiveRequest::new(
21 "Example-Service-Level-Objective".to_string(),
22 vec![SLOThreshold::new(97.0, SLOTimeframe::SEVEN_DAYS)
23 .target_display("97.0".to_string())
24 .warning(98.0 as f64)
25 .warning_display("98.0".to_string())],
26 SLOType::TIME_SLICE,
27 )
28 .description(Some("string".to_string()))
29 .sli_specification(SLOSliSpec::SLOTimeSliceSpec(Box::new(
30 SLOTimeSliceSpec::new(SLOTimeSliceCondition::new(
31 SLOTimeSliceComparator::GREATER,
32 SLOTimeSliceQuery::new(
33 vec![SLOFormula::new("query1".to_string())],
34 vec![
35 SLODataSourceQueryDefinition::FormulaAndFunctionMetricQueryDefinition(
36 Box::new(FormulaAndFunctionMetricQueryDefinition::new(
37 FormulaAndFunctionMetricDataSource::METRICS,
38 "query1".to_string(),
39 "trace.servlet.request{env:prod}".to_string(),
40 )),
41 ),
42 ],
43 ),
44 5.0,
45 )),
46 )))
47 .tags(vec!["env:prod".to_string()])
48 .target_threshold(97.0 as f64)
49 .timeframe(SLOTimeframe::SEVEN_DAYS)
50 .warning_threshold(98.0 as f64);
51 let configuration = datadog::Configuration::new();
52 let api = ServiceLevelObjectivesAPI::with_config(configuration);
53 let resp = api.create_slo(body).await;
54 if let Ok(value) = resp {
55 println!("{:#?}", value);
56 } else {
57 println!("{:#?}", resp.unwrap_err());
58 }
59}