v1_dashboards_CreateDashboard_2563642929/
v1_dashboards_CreateDashboard_2563642929.rs

1// Create a new dashboard with a toplist widget sorted by group
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::GroupType;
12use datadog_api_client::datadogV1::model::ToplistWidgetDefinition;
13use datadog_api_client::datadogV1::model::ToplistWidgetDefinitionType;
14use datadog_api_client::datadogV1::model::ToplistWidgetDisplay;
15use datadog_api_client::datadogV1::model::ToplistWidgetLegend;
16use datadog_api_client::datadogV1::model::ToplistWidgetRequest;
17use datadog_api_client::datadogV1::model::ToplistWidgetScaling;
18use datadog_api_client::datadogV1::model::ToplistWidgetStacked;
19use datadog_api_client::datadogV1::model::ToplistWidgetStackedType;
20use datadog_api_client::datadogV1::model::ToplistWidgetStyle;
21use datadog_api_client::datadogV1::model::Widget;
22use datadog_api_client::datadogV1::model::WidgetDefinition;
23use datadog_api_client::datadogV1::model::WidgetFormula;
24use datadog_api_client::datadogV1::model::WidgetGroupSort;
25use datadog_api_client::datadogV1::model::WidgetLayout;
26use datadog_api_client::datadogV1::model::WidgetLegacyLiveSpan;
27use datadog_api_client::datadogV1::model::WidgetSort;
28use datadog_api_client::datadogV1::model::WidgetSortBy;
29use datadog_api_client::datadogV1::model::WidgetSortOrderBy;
30use datadog_api_client::datadogV1::model::WidgetTextAlign;
31use datadog_api_client::datadogV1::model::WidgetTime;
32
33#[tokio::main]
34async fn main() {
35    let body =
36        Dashboard::new(
37            DashboardLayoutType::FREE,
38            "Example-Dashboard".to_string(),
39            vec![
40                Widget::new(
41                    WidgetDefinition::ToplistWidgetDefinition(
42                        Box::new(
43                            ToplistWidgetDefinition::new(
44                                vec![
45                                    ToplistWidgetRequest::new()
46                                        .formulas(vec![WidgetFormula::new("query1".to_string())])
47                                        .queries(
48                                            vec![
49                                                FormulaAndFunctionQueryDefinition
50                                                ::FormulaAndFunctionMetricQueryDefinition(
51                                                    Box::new(
52                                                        FormulaAndFunctionMetricQueryDefinition::new(
53                                                            FormulaAndFunctionMetricDataSource::METRICS,
54                                                            "query1".to_string(),
55                                                            "avg:system.cpu.user{*} by {service}".to_string(),
56                                                        ).aggregator(FormulaAndFunctionMetricAggregation::AVG),
57                                                    ),
58                                                )
59                                            ],
60                                        )
61                                        .response_format(FormulaAndFunctionResponseFormat::SCALAR)
62                                        .sort(
63                                            WidgetSortBy::new()
64                                                .count(10)
65                                                .order_by(
66                                                    vec![
67                                                        WidgetSortOrderBy::WidgetGroupSort(
68                                                            Box::new(
69                                                                WidgetGroupSort::new(
70                                                                    "service".to_string(),
71                                                                    WidgetSort::ASCENDING,
72                                                                    GroupType::GROUP,
73                                                                ),
74                                                            ),
75                                                        )
76                                                    ],
77                                                ),
78                                        )
79                                ],
80                                ToplistWidgetDefinitionType::TOPLIST,
81                            )
82                                .style(
83                                    ToplistWidgetStyle::new()
84                                        .display(
85                                            ToplistWidgetDisplay::ToplistWidgetStacked(
86                                                Box::new(
87                                                    ToplistWidgetStacked::new(
88                                                        ToplistWidgetStackedType::STACKED,
89                                                    ).legend(ToplistWidgetLegend::INLINE),
90                                                ),
91                                            ),
92                                        )
93                                        .palette("dog_classic".to_string())
94                                        .scaling(ToplistWidgetScaling::RELATIVE),
95                                )
96                                .time(WidgetTime::WidgetLegacyLiveSpan(Box::new(WidgetLegacyLiveSpan::new())))
97                                .title("".to_string())
98                                .title_align(WidgetTextAlign::LEFT)
99                                .title_size("16".to_string()),
100                        ),
101                    ),
102                ).layout(WidgetLayout::new(15, 47, 0, 0))
103            ],
104        )
105            .description(Some("".to_string()))
106            .notify_list(Some(vec![]))
107            .template_variables(Some(vec![]));
108    let configuration = datadog::Configuration::new();
109    let api = DashboardsAPI::with_config(configuration);
110    let resp = api.create_dashboard(body).await;
111    if let Ok(value) = resp {
112        println!("{:#?}", value);
113    } else {
114        println!("{:#?}", resp.unwrap_err());
115    }
116}