v1_service_level_objectives_CreateSLO/
v1_service-level-objectives_CreateSLO.rs1use datadog_api_client::datadog;
3use datadog_api_client::datadogV1::api_service_level_objectives::ServiceLevelObjectivesAPI;
4use datadog_api_client::datadogV1::model::SLOThreshold;
5use datadog_api_client::datadogV1::model::SLOTimeframe;
6use datadog_api_client::datadogV1::model::SLOType;
7use datadog_api_client::datadogV1::model::ServiceLevelObjectiveQuery;
8use datadog_api_client::datadogV1::model::ServiceLevelObjectiveRequest;
9
10#[tokio::main]
11async fn main() {
12 let body = ServiceLevelObjectiveRequest::new(
13 "Example-Service-Level-Objective".to_string(),
14 vec![SLOThreshold::new(97.0, SLOTimeframe::SEVEN_DAYS)
15 .target_display("97.0".to_string())
16 .warning(98.0 as f64)
17 .warning_display("98.0".to_string())],
18 SLOType::METRIC,
19 )
20 .description(Some("string".to_string()))
21 .groups(vec!["env:test".to_string(), "role:mysql".to_string()])
22 .monitor_ids(vec![])
23 .query(ServiceLevelObjectiveQuery::new(
24 "sum:httpservice.hits{!code:3xx}.as_count()".to_string(),
25 "sum:httpservice.hits{code:2xx}.as_count()".to_string(),
26 ))
27 .tags(vec!["env:prod".to_string(), "app:core".to_string()])
28 .target_threshold(97.0 as f64)
29 .timeframe(SLOTimeframe::SEVEN_DAYS)
30 .warning_threshold(98.0 as f64);
31 let configuration = datadog::Configuration::new();
32 let api = ServiceLevelObjectivesAPI::with_config(configuration);
33 let resp = api.create_slo(body).await;
34 if let Ok(value) = resp {
35 println!("{:#?}", value);
36 } else {
37 println!("{:#?}", resp.unwrap_err());
38 }
39}