v1_dashboards_CreateDashboard_3777304439/
v1_dashboards_CreateDashboard_3777304439.rs

1// Create a new dashboard with formula and function heatmap 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::FormulaAndFunctionMetricDataSource;
7use datadog_api_client::datadogV1::model::FormulaAndFunctionMetricQueryDefinition;
8use datadog_api_client::datadogV1::model::FormulaAndFunctionQueryDefinition;
9use datadog_api_client::datadogV1::model::FormulaAndFunctionResponseFormat;
10use datadog_api_client::datadogV1::model::HeatMapWidgetDefinition;
11use datadog_api_client::datadogV1::model::HeatMapWidgetDefinitionType;
12use datadog_api_client::datadogV1::model::HeatMapWidgetRequest;
13use datadog_api_client::datadogV1::model::Widget;
14use datadog_api_client::datadogV1::model::WidgetDefinition;
15use datadog_api_client::datadogV1::model::WidgetFormula;
16use datadog_api_client::datadogV1::model::WidgetLayout;
17use datadog_api_client::datadogV1::model::WidgetLegacyLiveSpan;
18use datadog_api_client::datadogV1::model::WidgetStyle;
19use datadog_api_client::datadogV1::model::WidgetTextAlign;
20use datadog_api_client::datadogV1::model::WidgetTime;
21
22#[tokio::main]
23async fn main() {
24    let body =
25        Dashboard::new(
26            DashboardLayoutType::FREE,
27            "Example-Dashboard".to_string(),
28            vec![
29                Widget::new(
30                    WidgetDefinition::HeatMapWidgetDefinition(
31                        Box::new(
32                            HeatMapWidgetDefinition::new(
33                                vec![
34                                    HeatMapWidgetRequest::new()
35                                        .formulas(vec![WidgetFormula::new("query1".to_string())])
36                                        .queries(
37                                            vec![
38                                                FormulaAndFunctionQueryDefinition
39                                                ::FormulaAndFunctionMetricQueryDefinition(
40                                                    Box::new(
41                                                        FormulaAndFunctionMetricQueryDefinition::new(
42                                                            FormulaAndFunctionMetricDataSource::METRICS,
43                                                            "query1".to_string(),
44                                                            "avg:system.cpu.user{*}".to_string(),
45                                                        ),
46                                                    ),
47                                                )
48                                            ],
49                                        )
50                                        .response_format(FormulaAndFunctionResponseFormat::TIMESERIES)
51                                        .style(WidgetStyle::new().palette("dog_classic".to_string()))
52                                ],
53                                HeatMapWidgetDefinitionType::HEATMAP,
54                            )
55                                .time(WidgetTime::WidgetLegacyLiveSpan(Box::new(WidgetLegacyLiveSpan::new())))
56                                .title("".to_string())
57                                .title_align(WidgetTextAlign::LEFT)
58                                .title_size("16".to_string()),
59                        ),
60                    ),
61                ).layout(WidgetLayout::new(15, 47, 0, 0))
62            ],
63        )
64            .notify_list(Some(vec![]))
65            .template_variables(Some(vec![]));
66    let configuration = datadog::Configuration::new();
67    let api = DashboardsAPI::with_config(configuration);
68    let resp = api.create_dashboard(body).await;
69    if let Ok(value) = resp {
70        println!("{:#?}", value);
71    } else {
72        println!("{:#?}", resp.unwrap_err());
73    }
74}