v1_dashboards_CreateDashboard_2336428357/
v1_dashboards_CreateDashboard_2336428357.rs

1// Create a new dashboard with query_table 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::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::FormulaType;
12use datadog_api_client::datadogV1::model::TableWidgetCellDisplayMode;
13use datadog_api_client::datadogV1::model::TableWidgetDefinition;
14use datadog_api_client::datadogV1::model::TableWidgetDefinitionType;
15use datadog_api_client::datadogV1::model::TableWidgetHasSearchBar;
16use datadog_api_client::datadogV1::model::TableWidgetRequest;
17use datadog_api_client::datadogV1::model::Widget;
18use datadog_api_client::datadogV1::model::WidgetDefinition;
19use datadog_api_client::datadogV1::model::WidgetFormula;
20use datadog_api_client::datadogV1::model::WidgetFormulaSort;
21use datadog_api_client::datadogV1::model::WidgetLayout;
22use datadog_api_client::datadogV1::model::WidgetLegacyLiveSpan;
23use datadog_api_client::datadogV1::model::WidgetSort;
24use datadog_api_client::datadogV1::model::WidgetSortBy;
25use datadog_api_client::datadogV1::model::WidgetSortOrderBy;
26use datadog_api_client::datadogV1::model::WidgetTextAlign;
27use datadog_api_client::datadogV1::model::WidgetTime;
28
29#[tokio::main]
30async fn main() {
31    let body =
32        Dashboard::new(
33            DashboardLayoutType::FREE,
34            "Example-Dashboard".to_string(),
35            vec![
36                Widget::new(
37                    WidgetDefinition::TableWidgetDefinition(
38                        Box::new(
39                            TableWidgetDefinition::new(
40                                vec![
41                                    TableWidgetRequest::new()
42                                        .formulas(
43                                            vec![
44                                                WidgetFormula::new("query1".to_string())
45                                                    .cell_display_mode(TableWidgetCellDisplayMode::BAR)
46                                                    .conditional_formats(vec![])
47                                            ],
48                                        )
49                                        .queries(
50                                            vec![
51                                                FormulaAndFunctionQueryDefinition
52                                                ::FormulaAndFunctionMetricQueryDefinition(
53                                                    Box::new(
54                                                        FormulaAndFunctionMetricQueryDefinition::new(
55                                                            FormulaAndFunctionMetricDataSource::METRICS,
56                                                            "query1".to_string(),
57                                                            "avg:system.cpu.user{*} by {host}".to_string(),
58                                                        ).aggregator(FormulaAndFunctionMetricAggregation::AVG),
59                                                    ),
60                                                )
61                                            ],
62                                        )
63                                        .response_format(FormulaAndFunctionResponseFormat::SCALAR)
64                                        .sort(
65                                            WidgetSortBy::new()
66                                                .count(500)
67                                                .order_by(
68                                                    vec![
69                                                        WidgetSortOrderBy::WidgetFormulaSort(
70                                                            Box::new(
71                                                                WidgetFormulaSort::new(
72                                                                    0,
73                                                                    WidgetSort::DESCENDING,
74                                                                    FormulaType::FORMULA,
75                                                                ),
76                                                            ),
77                                                        )
78                                                    ],
79                                                ),
80                                        )
81                                ],
82                                TableWidgetDefinitionType::QUERY_TABLE,
83                            )
84                                .has_search_bar(TableWidgetHasSearchBar::AUTO)
85                                .time(WidgetTime::WidgetLegacyLiveSpan(Box::new(WidgetLegacyLiveSpan::new())))
86                                .title("".to_string())
87                                .title_align(WidgetTextAlign::LEFT)
88                                .title_size("16".to_string()),
89                        ),
90                    ),
91                ).layout(WidgetLayout::new(32, 54, 0, 0))
92            ],
93        )
94            .description(Some("".to_string()))
95            .notify_list(Some(vec![]))
96            .template_variables(Some(vec![]));
97    let configuration = datadog::Configuration::new();
98    let api = DashboardsAPI::with_config(configuration);
99    let resp = api.create_dashboard(body).await;
100    if let Ok(value) = resp {
101        println!("{:#?}", value);
102    } else {
103        println!("{:#?}", resp.unwrap_err());
104    }
105}