v1_dashboards_CreateDashboard_915214113/
v1_dashboards_CreateDashboard_915214113.rs

1// Create a new dashboard with geomap 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::FormulaAndFunctionEventAggregation;
7use datadog_api_client::datadogV1::model::FormulaAndFunctionEventQueryDefinition;
8use datadog_api_client::datadogV1::model::FormulaAndFunctionEventQueryDefinitionCompute;
9use datadog_api_client::datadogV1::model::FormulaAndFunctionEventQueryDefinitionSearch;
10use datadog_api_client::datadogV1::model::FormulaAndFunctionEventQueryGroupBy;
11use datadog_api_client::datadogV1::model::FormulaAndFunctionEventQueryGroupBySort;
12use datadog_api_client::datadogV1::model::FormulaAndFunctionEventsDataSource;
13use datadog_api_client::datadogV1::model::FormulaAndFunctionQueryDefinition;
14use datadog_api_client::datadogV1::model::FormulaAndFunctionResponseFormat;
15use datadog_api_client::datadogV1::model::FormulaType;
16use datadog_api_client::datadogV1::model::GeomapWidgetDefinition;
17use datadog_api_client::datadogV1::model::GeomapWidgetDefinitionStyle;
18use datadog_api_client::datadogV1::model::GeomapWidgetDefinitionType;
19use datadog_api_client::datadogV1::model::GeomapWidgetDefinitionView;
20use datadog_api_client::datadogV1::model::GeomapWidgetRequest;
21use datadog_api_client::datadogV1::model::QuerySortOrder;
22use datadog_api_client::datadogV1::model::Widget;
23use datadog_api_client::datadogV1::model::WidgetDefinition;
24use datadog_api_client::datadogV1::model::WidgetFormula;
25use datadog_api_client::datadogV1::model::WidgetFormulaSort;
26use datadog_api_client::datadogV1::model::WidgetLayout;
27use datadog_api_client::datadogV1::model::WidgetLegacyLiveSpan;
28use datadog_api_client::datadogV1::model::WidgetSort;
29use datadog_api_client::datadogV1::model::WidgetSortBy;
30use datadog_api_client::datadogV1::model::WidgetSortOrderBy;
31use datadog_api_client::datadogV1::model::WidgetTextAlign;
32use datadog_api_client::datadogV1::model::WidgetTime;
33
34#[tokio::main]
35async fn main() {
36    let body =
37        Dashboard::new(
38            DashboardLayoutType::FREE,
39            "Example-Dashboard".to_string(),
40            vec![
41                Widget::new(
42                    WidgetDefinition::GeomapWidgetDefinition(
43                        Box::new(
44                            GeomapWidgetDefinition::new(
45                                vec![
46                                    GeomapWidgetRequest::new()
47                                        .formulas(vec![WidgetFormula::new("query1".to_string())])
48                                        .queries(
49                                            vec![
50                                                FormulaAndFunctionQueryDefinition
51                                                ::FormulaAndFunctionEventQueryDefinition(
52                                                    Box::new(
53                                                        FormulaAndFunctionEventQueryDefinition::new(
54                                                            FormulaAndFunctionEventQueryDefinitionCompute::new(
55                                                                FormulaAndFunctionEventAggregation::COUNT,
56                                                            ),
57                                                            FormulaAndFunctionEventsDataSource::RUM,
58                                                            "query1".to_string(),
59                                                        )
60                                                            .group_by(
61                                                                vec![
62                                                                    FormulaAndFunctionEventQueryGroupBy::new(
63                                                                        "@geo.country_iso_code".to_string(),
64                                                                    )
65                                                                        .limit(250)
66                                                                        .sort(
67                                                                            FormulaAndFunctionEventQueryGroupBySort
68                                                                            ::new(
69                                                                                FormulaAndFunctionEventAggregation
70                                                                                ::COUNT,
71                                                                            ).order(QuerySortOrder::DESC),
72                                                                        )
73                                                                ],
74                                                            )
75                                                            .indexes(vec!["*".to_string()])
76                                                            .search(
77                                                                FormulaAndFunctionEventQueryDefinitionSearch::new(
78                                                                    "".to_string(),
79                                                                ),
80                                                            ),
81                                                    ),
82                                                )
83                                            ],
84                                        )
85                                        .response_format(FormulaAndFunctionResponseFormat::SCALAR)
86                                        .sort(
87                                            WidgetSortBy::new()
88                                                .count(250)
89                                                .order_by(
90                                                    vec![
91                                                        WidgetSortOrderBy::WidgetFormulaSort(
92                                                            Box::new(
93                                                                WidgetFormulaSort::new(
94                                                                    0,
95                                                                    WidgetSort::DESCENDING,
96                                                                    FormulaType::FORMULA,
97                                                                ),
98                                                            ),
99                                                        )
100                                                    ],
101                                                ),
102                                        )
103                                ],
104                                GeomapWidgetDefinitionStyle::new("hostmap_blues".to_string(), false),
105                                GeomapWidgetDefinitionType::GEOMAP,
106                                GeomapWidgetDefinitionView::new("WORLD".to_string()),
107                            )
108                                .time(WidgetTime::WidgetLegacyLiveSpan(Box::new(WidgetLegacyLiveSpan::new())))
109                                .title("".to_string())
110                                .title_align(WidgetTextAlign::LEFT)
111                                .title_size("16".to_string()),
112                        ),
113                    ),
114                ).layout(WidgetLayout::new(30, 47, 0, 0))
115            ],
116        )
117            .description(None)
118            .notify_list(Some(vec![]))
119            .template_variables(Some(vec![]));
120    let configuration = datadog::Configuration::new();
121    let api = DashboardsAPI::with_config(configuration);
122    let resp = api.create_dashboard(body).await;
123    if let Ok(value) = resp {
124        println!("{:#?}", value);
125    } else {
126        println!("{:#?}", resp.unwrap_err());
127    }
128}