Skip to content

Commit cc2b046

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
Fix Toplist widget's stacked display style - remove legend as required field (#2184)
Co-authored-by: ci.datadog-api-spec <[email protected]>
1 parent 465f013 commit cc2b046

File tree

8 files changed

+168
-10
lines changed

8 files changed

+168
-10
lines changed

.apigentools-info

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
"spec_versions": {
55
"v1": {
66
"apigentools_version": "1.6.6",
7-
"regenerated": "2024-10-02 14:33:47.623313",
8-
"spec_repo_commit": "3b4747f4"
7+
"regenerated": "2024-10-02 16:22:33.012208",
8+
"spec_repo_commit": "3f12bebc"
99
},
1010
"v2": {
1111
"apigentools_version": "1.6.6",
12-
"regenerated": "2024-10-02 14:33:47.636722",
13-
"spec_repo_commit": "3b4747f4"
12+
"regenerated": "2024-10-02 16:22:33.026114",
13+
"spec_repo_commit": "3f12bebc"
1414
}
1515
}
1616
}

.generator/schemas/v1/openapi.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18188,7 +18188,6 @@ components:
1818818188
$ref: '#/components/schemas/ToplistWidgetStackedType'
1818918189
required:
1819018190
- type
18191-
- legend
1819218191
type: object
1819318192
ToplistWidgetStackedType:
1819418193
default: stacked
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
"""
2+
Create a new dashboard with a toplist widget with stacked type and no legend specified
3+
"""
4+
5+
from datadog_api_client import ApiClient, Configuration
6+
from datadog_api_client.v1.api.dashboards_api import DashboardsApi
7+
from datadog_api_client.v1.model.dashboard import Dashboard
8+
from datadog_api_client.v1.model.dashboard_layout_type import DashboardLayoutType
9+
from datadog_api_client.v1.model.formula_and_function_metric_aggregation import FormulaAndFunctionMetricAggregation
10+
from datadog_api_client.v1.model.formula_and_function_metric_data_source import FormulaAndFunctionMetricDataSource
11+
from datadog_api_client.v1.model.formula_and_function_metric_query_definition import (
12+
FormulaAndFunctionMetricQueryDefinition,
13+
)
14+
from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat
15+
from datadog_api_client.v1.model.group_type import GroupType
16+
from datadog_api_client.v1.model.toplist_widget_definition import ToplistWidgetDefinition
17+
from datadog_api_client.v1.model.toplist_widget_definition_type import ToplistWidgetDefinitionType
18+
from datadog_api_client.v1.model.toplist_widget_request import ToplistWidgetRequest
19+
from datadog_api_client.v1.model.toplist_widget_scaling import ToplistWidgetScaling
20+
from datadog_api_client.v1.model.toplist_widget_stacked import ToplistWidgetStacked
21+
from datadog_api_client.v1.model.toplist_widget_stacked_type import ToplistWidgetStackedType
22+
from datadog_api_client.v1.model.toplist_widget_style import ToplistWidgetStyle
23+
from datadog_api_client.v1.model.widget import Widget
24+
from datadog_api_client.v1.model.widget_formula import WidgetFormula
25+
from datadog_api_client.v1.model.widget_group_sort import WidgetGroupSort
26+
from datadog_api_client.v1.model.widget_layout import WidgetLayout
27+
from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
28+
from datadog_api_client.v1.model.widget_sort import WidgetSort
29+
from datadog_api_client.v1.model.widget_sort_by import WidgetSortBy
30+
from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
31+
32+
body = Dashboard(
33+
title="Example-Dashboard",
34+
description="",
35+
widgets=[
36+
Widget(
37+
layout=WidgetLayout(
38+
x=0,
39+
y=0,
40+
width=47,
41+
height=15,
42+
),
43+
definition=ToplistWidgetDefinition(
44+
title="",
45+
title_size="16",
46+
title_align=WidgetTextAlign.LEFT,
47+
time=WidgetLegacyLiveSpan(),
48+
style=ToplistWidgetStyle(
49+
display=ToplistWidgetStacked(
50+
type=ToplistWidgetStackedType.STACKED,
51+
),
52+
scaling=ToplistWidgetScaling.RELATIVE,
53+
palette="dog_classic",
54+
),
55+
type=ToplistWidgetDefinitionType.TOPLIST,
56+
requests=[
57+
ToplistWidgetRequest(
58+
queries=[
59+
FormulaAndFunctionMetricQueryDefinition(
60+
data_source=FormulaAndFunctionMetricDataSource.METRICS,
61+
name="query1",
62+
query="avg:system.cpu.user{*} by {service}",
63+
aggregator=FormulaAndFunctionMetricAggregation.AVG,
64+
),
65+
],
66+
formulas=[
67+
WidgetFormula(
68+
formula="query1",
69+
),
70+
],
71+
sort=WidgetSortBy(
72+
count=10,
73+
order_by=[
74+
WidgetGroupSort(
75+
type=GroupType.GROUP,
76+
name="service",
77+
order=WidgetSort.ASCENDING,
78+
),
79+
],
80+
),
81+
response_format=FormulaAndFunctionResponseFormat.SCALAR,
82+
),
83+
],
84+
),
85+
),
86+
],
87+
template_variables=[],
88+
layout_type=DashboardLayoutType.FREE,
89+
is_read_only=False,
90+
notify_list=[],
91+
)
92+
93+
configuration = Configuration()
94+
with ApiClient(configuration) as api_client:
95+
api_instance = DashboardsApi(api_client)
96+
response = api_instance.create_dashboard(body=body)
97+
98+
print(response)

src/datadog_api_client/v1/model/toplist_widget_display.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ def __init__(self, **kwargs):
1616
Top list widget display options.
1717
1818
:param legend: Top list widget stacked legend behavior.
19-
:type legend: ToplistWidgetLegend
19+
:type legend: ToplistWidgetLegend, optional
2020
2121
:param type: Top list widget stacked display type.
2222
:type type: ToplistWidgetStackedType

src/datadog_api_client/v1/model/toplist_widget_stacked.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33
# Copyright 2019-Present Datadog, Inc.
44
from __future__ import annotations
55

6-
from typing import TYPE_CHECKING
6+
from typing import Union, TYPE_CHECKING
77

88
from datadog_api_client.model_utils import (
99
ModelNormal,
1010
cached_property,
11+
unset,
12+
UnsetType,
1113
)
1214

1315

@@ -32,17 +34,20 @@ def openapi_types(_):
3234
"type": "type",
3335
}
3436

35-
def __init__(self_, legend: ToplistWidgetLegend, type: ToplistWidgetStackedType, **kwargs):
37+
def __init__(
38+
self_, type: ToplistWidgetStackedType, legend: Union[ToplistWidgetLegend, UnsetType] = unset, **kwargs
39+
):
3640
"""
3741
Top list widget stacked display options.
3842
3943
:param legend: Top list widget stacked legend behavior.
40-
:type legend: ToplistWidgetLegend
44+
:type legend: ToplistWidgetLegend, optional
4145
4246
:param type: Top list widget stacked display type.
4347
:type type: ToplistWidgetStackedType
4448
"""
49+
if legend is not unset:
50+
kwargs["legend"] = legend
4551
super().__init__(kwargs)
4652

47-
self_.legend = legend
4853
self_.type = type
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2024-09-30T17:24:52.299Z
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
interactions:
2+
- request:
3+
body: '{"description":"","is_read_only":false,"layout_type":"free","notify_list":[],"template_variables":[],"title":"Test-Create_a_new_dashboard_with_a_toplist_widget_with_stacked_type_and_no_legend_specified-1727717092","widgets":[{"definition":{"requests":[{"formulas":[{"formula":"query1"}],"queries":[{"aggregator":"avg","data_source":"metrics","name":"query1","query":"avg:system.cpu.user{*}
4+
by {service}"}],"response_format":"scalar","sort":{"count":10,"order_by":[{"name":"service","order":"asc","type":"group"}]}}],"style":{"display":{"type":"stacked"},"palette":"dog_classic","scaling":"relative"},"time":{},"title":"","title_align":"left","title_size":"16","type":"toplist"},"layout":{"height":15,"width":47,"x":0,"y":0}}]}'
5+
headers:
6+
accept:
7+
- application/json
8+
content-type:
9+
- application/json
10+
method: POST
11+
uri: https://api.datadoghq.com/api/v1/dashboard
12+
response:
13+
body:
14+
string: '{"id":"2az-xeg-xar","title":"Test-Create_a_new_dashboard_with_a_toplist_widget_with_stacked_type_and_no_legend_specified-1727717092","description":"","author_handle":"[email protected]","author_name":null,"layout_type":"free","url":"/dashboard/2az-xeg-xar/test-createanewdashboardwithatoplistwidgetwithstackedtypeandnolegendspecified-17","is_read_only":false,"template_variables":[],"widgets":[{"definition":{"requests":[{"formulas":[{"formula":"query1"}],"queries":[{"aggregator":"avg","data_source":"metrics","name":"query1","query":"avg:system.cpu.user{*}
15+
by {service}"}],"response_format":"scalar","sort":{"count":10,"order_by":[{"name":"service","order":"asc","type":"group"}]}}],"style":{"display":{"type":"stacked"},"palette":"dog_classic","scaling":"relative"},"time":{},"title":"","title_align":"left","title_size":"16","type":"toplist"},"layout":{"height":15,"width":47,"x":0,"y":0},"id":688132644515996}],"notify_list":[],"created_at":"2024-09-30T17:24:52.542207+00:00","modified_at":"2024-09-30T17:24:52.542207+00:00","experience_type":"default","restricted_roles":[]}
16+
17+
'
18+
headers:
19+
content-type:
20+
- application/json
21+
status:
22+
code: 200
23+
message: OK
24+
- request:
25+
body: null
26+
headers:
27+
accept:
28+
- application/json
29+
method: DELETE
30+
uri: https://api.datadoghq.com/api/v1/dashboard/2az-xeg-xar
31+
response:
32+
body:
33+
string: '{"deleted_dashboard_id":"2az-xeg-xar"}
34+
35+
'
36+
headers:
37+
content-type:
38+
- application/json
39+
status:
40+
code: 200
41+
message: OK
42+
version: 1

tests/v1/features/dashboards.feature

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,19 @@ Feature: Dashboards
206206
And the response "widgets[0].definition.requests[0].sort.order_by[0].type" is equal to "group"
207207
And the response "widgets[0].definition.requests[0].sort.order_by[0].name" is equal to "service"
208208

209+
@skip-typescript @team:DataDog/dashboards-backend
210+
Scenario: Create a new dashboard with a toplist widget with stacked type and no legend specified
211+
Given new "CreateDashboard" request
212+
And body with value {"title":"{{ unique }}","description":"","widgets":[{"layout":{"x":0,"y":0,"width":47,"height":15},"definition":{"title":"","title_size":"16","title_align":"left","time":{},"style":{"display": {"type": "stacked"},"scaling": "relative","palette": "dog_classic"},"type":"toplist","requests":[{"queries":[{"data_source":"metrics","name":"query1","query":"avg:system.cpu.user{*} by {service}","aggregator":"avg"}],"formulas":[{"formula":"query1"}],"sort":{"count":10,"order_by":[{"type":"group","name":"service","order":"asc"}]},"response_format":"scalar"}]}}],"template_variables":[],"layout_type":"free","is_read_only":false,"notify_list":[]}
213+
When the request is sent
214+
Then the response status is 200 OK
215+
And the response "widgets[0].definition.type" is equal to "toplist"
216+
And the response "widgets[0].definition.requests[0].sort.order_by[0].order" is equal to "asc"
217+
And the response "widgets[0].definition.requests[0].sort.order_by[0].type" is equal to "group"
218+
And the response "widgets[0].definition.requests[0].sort.order_by[0].name" is equal to "service"
219+
And the response "widgets[0].definition.style.display.type" is equal to "stacked"
220+
And the response "widgets[0].definition.style.display" does not have field "legend"
221+
209222
@team:DataDog/dashboards-backend
210223
Scenario: Create a new dashboard with alert_graph widget
211224
Given there is a valid "monitor" in the system

0 commit comments

Comments
 (0)