v1_service_level_objectives_CreateSLO/
v1_service-level-objectives_CreateSLO.rs

1// Create an SLO object returns "OK" response
2use 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}