v1_dashboards_CreateDashboard_173805046/
v1_dashboards_CreateDashboard_173805046.rs

1// Create a new dashboard with slo widget
2use datadog_api_client::datadog;
3use datadog_api_client::datadogV1::api_dashboards::DashboardsAPI;
4use datadog_api_client::datadogV1::model::Dashboard;
5use datadog_api_client::datadogV1::model::DashboardLayoutType;
6use datadog_api_client::datadogV1::model::SLOWidgetDefinition;
7use datadog_api_client::datadogV1::model::SLOWidgetDefinitionType;
8use datadog_api_client::datadogV1::model::Widget;
9use datadog_api_client::datadogV1::model::WidgetDefinition;
10use datadog_api_client::datadogV1::model::WidgetLayout;
11use datadog_api_client::datadogV1::model::WidgetTextAlign;
12use datadog_api_client::datadogV1::model::WidgetTimeWindows;
13use datadog_api_client::datadogV1::model::WidgetViewMode;
14
15#[tokio::main]
16async fn main() {
17    // there is a valid "slo" in the system
18    let slo_data_0_id = std::env::var("SLO_DATA_0_ID").unwrap();
19    let body = Dashboard::new(
20        DashboardLayoutType::FREE,
21        "Example-Dashboard".to_string(),
22        vec![Widget::new(WidgetDefinition::SLOWidgetDefinition(Box::new(
23            SLOWidgetDefinition::new(SLOWidgetDefinitionType::SLO, "detail".to_string())
24                .additional_query_filters("!host:excluded_host".to_string())
25                .global_time_target("0".to_string())
26                .show_error_budget(true)
27                .slo_id(slo_data_0_id.clone())
28                .time_windows(vec![WidgetTimeWindows::SEVEN_DAYS])
29                .title_align(WidgetTextAlign::LEFT)
30                .title_size("16".to_string())
31                .view_mode(WidgetViewMode::OVERALL),
32        )))
33        .layout(WidgetLayout::new(21, 60, 0, 0))],
34    )
35    .description(Some("".to_string()))
36    .notify_list(Some(vec![]))
37    .template_variables(Some(vec![]));
38    let configuration = datadog::Configuration::new();
39    let api = DashboardsAPI::with_config(configuration);
40    let resp = api.create_dashboard(body).await;
41    if let Ok(value) = resp {
42        println!("{:#?}", value);
43    } else {
44        println!("{:#?}", resp.unwrap_err());
45    }
46}