v1_monitors_ValidateExistingMonitor/
v1_monitors_ValidateExistingMonitor.rs

1// Validate an existing 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    // there is a valid "monitor" in the system
14    let monitor_id: i64 = std::env::var("MONITOR_ID").unwrap().parse().unwrap();
15    let body =
16        Monitor::new(
17            r#"logs("service:foo AND type:error").index("main").rollup("count").by("source").last("5m") > 2"#.to_string(),
18            MonitorType::LOG_ALERT,
19        )
20            .message("some message Notify: @hipchat-channel".to_string())
21            .name("Example-Monitor".to_string())
22            .options(
23                MonitorOptions::new()
24                    .enable_logs_sample(true)
25                    .escalation_message("the situation has escalated".to_string())
26                    .evaluation_delay(Some(700))
27                    .include_tags(true)
28                    .locked(false)
29                    .new_host_delay(Some(600))
30                    .no_data_timeframe(None)
31                    .notification_preset_name(MonitorOptionsNotificationPresets::HIDE_HANDLES)
32                    .notify_audit(false)
33                    .notify_no_data(false)
34                    .on_missing_data(OnMissingDataOption::SHOW_AND_NOTIFY_NO_DATA)
35                    .renotify_interval(Some(60))
36                    .require_full_window(true)
37                    .thresholds(MonitorThresholds::new().critical(2.0 as f64).warning(Some(1.0 as f64)))
38                    .timeout_h(Some(24)),
39            )
40            .priority(Some(3))
41            .tags(vec!["test:examplemonitor".to_string(), "env:ci".to_string()]);
42    let configuration = datadog::Configuration::new();
43    let api = MonitorsAPI::with_config(configuration);
44    let resp = api
45        .validate_existing_monitor(monitor_id.clone(), body)
46        .await;
47    if let Ok(value) = resp {
48        println!("{:#?}", value);
49    } else {
50        println!("{:#?}", resp.unwrap_err());
51    }
52}