v1_monitors_ValidateMonitor/
v1_monitors_ValidateMonitor.rs

1// Validate a monitor returns "OK" response
2use datadog_api_client::datadog;
3use datadog_api_client::datadogV1::api_monitors::MonitorsAPI;
4use datadog_api_client::datadogV1::model::Monitor;
5use datadog_api_client::datadogV1::model::MonitorOptions;
6use datadog_api_client::datadogV1::model::MonitorOptionsNotificationPresets;
7use datadog_api_client::datadogV1::model::MonitorThresholds;
8use datadog_api_client::datadogV1::model::MonitorType;
9use datadog_api_client::datadogV1::model::OnMissingDataOption;
10
11#[tokio::main]
12async fn main() {
13    let body =
14        Monitor::new(
15            r#"logs("service:foo AND type:error").index("main").rollup("count").by("source").last("5m") > 2"#.to_string(),
16            MonitorType::LOG_ALERT,
17        )
18            .message("some message Notify: @hipchat-channel".to_string())
19            .name("Example-Monitor".to_string())
20            .options(
21                MonitorOptions::new()
22                    .enable_logs_sample(true)
23                    .escalation_message("the situation has escalated".to_string())
24                    .evaluation_delay(Some(700))
25                    .include_tags(true)
26                    .locked(false)
27                    .new_host_delay(Some(600))
28                    .no_data_timeframe(None)
29                    .notification_preset_name(MonitorOptionsNotificationPresets::HIDE_HANDLES)
30                    .notify_audit(false)
31                    .notify_no_data(false)
32                    .on_missing_data(OnMissingDataOption::SHOW_AND_NOTIFY_NO_DATA)
33                    .renotify_interval(Some(60))
34                    .require_full_window(true)
35                    .thresholds(MonitorThresholds::new().critical(2.0 as f64).warning(Some(1.0 as f64)))
36                    .timeout_h(Some(24)),
37            )
38            .priority(Some(3))
39            .tags(vec!["test:examplemonitor".to_string(), "env:ci".to_string()]);
40    let configuration = datadog::Configuration::new();
41    let api = MonitorsAPI::with_config(configuration);
42    let resp = api.validate_monitor(body).await;
43    if let Ok(value) = resp {
44        println!("{:#?}", value);
45    } else {
46        println!("{:#?}", resp.unwrap_err());
47    }
48}