v1_dashboards_CreateDashboard_2644712913/
v1_dashboards_CreateDashboard_2644712913.rs

1// Create a new dashboard with a query value widget using the percentile aggregator
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::FormulaAndFunctionMetricAggregation;
7use datadog_api_client::datadogV1::model::FormulaAndFunctionMetricDataSource;
8use datadog_api_client::datadogV1::model::FormulaAndFunctionMetricQueryDefinition;
9use datadog_api_client::datadogV1::model::FormulaAndFunctionQueryDefinition;
10use datadog_api_client::datadogV1::model::FormulaAndFunctionResponseFormat;
11use datadog_api_client::datadogV1::model::QueryValueWidgetDefinition;
12use datadog_api_client::datadogV1::model::QueryValueWidgetDefinitionType;
13use datadog_api_client::datadogV1::model::QueryValueWidgetRequest;
14use datadog_api_client::datadogV1::model::Widget;
15use datadog_api_client::datadogV1::model::WidgetDefinition;
16use datadog_api_client::datadogV1::model::WidgetFormula;
17use datadog_api_client::datadogV1::model::WidgetLayout;
18use datadog_api_client::datadogV1::model::WidgetLegacyLiveSpan;
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::ORDERED,
27            "Example-Dashboard with QVW Percentile Aggregator".to_string(),
28            vec![
29                Widget::new(
30                    WidgetDefinition::QueryValueWidgetDefinition(
31                        Box::new(
32                            QueryValueWidgetDefinition::new(
33                                vec![
34                                    QueryValueWidgetRequest::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                                                            "p90:dist.dd.dogweb.latency{*}".to_string(),
45                                                        ).aggregator(FormulaAndFunctionMetricAggregation::PERCENTILE),
46                                                    ),
47                                                )
48                                            ],
49                                        )
50                                        .response_format(FormulaAndFunctionResponseFormat::SCALAR)
51                                ],
52                                QueryValueWidgetDefinitionType::QUERY_VALUE,
53                            )
54                                .autoscale(true)
55                                .precision(2)
56                                .time(WidgetTime::WidgetLegacyLiveSpan(Box::new(WidgetLegacyLiveSpan::new())))
57                                .title("".to_string())
58                                .title_align(WidgetTextAlign::LEFT)
59                                .title_size("16".to_string()),
60                        ),
61                    ),
62                ).layout(WidgetLayout::new(2, 2, 0, 0))
63            ],
64        );
65    let configuration = datadog::Configuration::new();
66    let api = DashboardsAPI::with_config(configuration);
67    let resp = api.create_dashboard(body).await;
68    if let Ok(value) = resp {
69        println!("{:#?}", value);
70    } else {
71        println!("{:#?}", resp.unwrap_err());
72    }
73}