Skip to content

Commit

Permalink
Support incident_analytics enum in dashboard widget `FormulaAndFunc…
Browse files Browse the repository at this point in the history
…tionEventsDataSource` data sources (#2068)

* Regenerate client from commit 015355f6 of spec repo

* pre-commit fixes

---------

Co-authored-by: ci.datadog-api-spec <packages@datadoghq.com>
Co-authored-by: api-clients-generation-pipeline[bot] <54105614+api-clients-generation-pipeline[bot]@users.noreply.github.com>
  • Loading branch information
api-clients-generation-pipeline[bot] and ci.datadog-api-spec committed Jul 23, 2024
1 parent 4762f53 commit 4337a59
Show file tree
Hide file tree
Showing 7 changed files with 158 additions and 5 deletions.
8 changes: 4 additions & 4 deletions .apigentools-info
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@
"spec_versions": {
"v1": {
"apigentools_version": "1.6.6",
"regenerated": "2024-07-22 20:03:16.966843",
"spec_repo_commit": "cd020fa6"
"regenerated": "2024-07-23 15:33:51.142309",
"spec_repo_commit": "015355f6"
},
"v2": {
"apigentools_version": "1.6.6",
"regenerated": "2024-07-22 20:03:16.983748",
"spec_repo_commit": "cd020fa6"
"regenerated": "2024-07-23 15:33:51.159414",
"spec_repo_commit": "015355f6"
}
}
}
2 changes: 2 additions & 0 deletions .generator/schemas/v1/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2867,6 +2867,7 @@ components:
- events
- ci_tests
- ci_pipelines
- incident_analytics
example: logs
type: string
x-enum-varnames:
Expand All @@ -2880,6 +2881,7 @@ components:
- EVENTS
- CI_TESTS
- CI_PIPELINES
- INCIDENT_ANALYTICS
FormulaAndFunctionMetricAggregation:
description: The aggregation methods available for metrics queries.
enum:
Expand Down
96 changes: 96 additions & 0 deletions examples/v1/dashboards/CreateDashboard_985012506.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
"""
Create a new timeseries widget with incident_analytics data source
"""

from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v1.api.dashboards_api import DashboardsApi
from datadog_api_client.v1.model.dashboard import Dashboard
from datadog_api_client.v1.model.dashboard_layout_type import DashboardLayoutType
from datadog_api_client.v1.model.dashboard_reflow_type import DashboardReflowType
from datadog_api_client.v1.model.formula_and_function_event_aggregation import FormulaAndFunctionEventAggregation
from datadog_api_client.v1.model.formula_and_function_event_query_definition import (
FormulaAndFunctionEventQueryDefinition,
)
from datadog_api_client.v1.model.formula_and_function_event_query_definition_compute import (
FormulaAndFunctionEventQueryDefinitionCompute,
)
from datadog_api_client.v1.model.formula_and_function_event_query_definition_search import (
FormulaAndFunctionEventQueryDefinitionSearch,
)
from datadog_api_client.v1.model.formula_and_function_events_data_source import FormulaAndFunctionEventsDataSource
from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat
from datadog_api_client.v1.model.timeseries_widget_definition import TimeseriesWidgetDefinition
from datadog_api_client.v1.model.timeseries_widget_definition_type import TimeseriesWidgetDefinitionType
from datadog_api_client.v1.model.timeseries_widget_legend_column import TimeseriesWidgetLegendColumn
from datadog_api_client.v1.model.timeseries_widget_legend_layout import TimeseriesWidgetLegendLayout
from datadog_api_client.v1.model.timeseries_widget_request import TimeseriesWidgetRequest
from datadog_api_client.v1.model.widget import Widget
from datadog_api_client.v1.model.widget_display_type import WidgetDisplayType
from datadog_api_client.v1.model.widget_formula import WidgetFormula
from datadog_api_client.v1.model.widget_line_type import WidgetLineType
from datadog_api_client.v1.model.widget_line_width import WidgetLineWidth
from datadog_api_client.v1.model.widget_request_style import WidgetRequestStyle
from datadog_api_client.v1.model.widget_time import WidgetTime

body = Dashboard(
title="Example-Dashboard with incident_analytics datasource",
widgets=[
Widget(
definition=TimeseriesWidgetDefinition(
title="",
show_legend=True,
legend_layout=TimeseriesWidgetLegendLayout.AUTO,
legend_columns=[
TimeseriesWidgetLegendColumn.AVG,
TimeseriesWidgetLegendColumn.MIN,
TimeseriesWidgetLegendColumn.MAX,
TimeseriesWidgetLegendColumn.VALUE,
TimeseriesWidgetLegendColumn.SUM,
],
time=WidgetTime(),
type=TimeseriesWidgetDefinitionType.TIMESERIES,
requests=[
TimeseriesWidgetRequest(
formulas=[
WidgetFormula(
formula="query1",
),
],
queries=[
FormulaAndFunctionEventQueryDefinition(
data_source=FormulaAndFunctionEventsDataSource.INCIDENT_ANALYTICS,
name="query1",
search=FormulaAndFunctionEventQueryDefinitionSearch(
query="test_level:test",
),
indexes=[
"*",
],
compute=FormulaAndFunctionEventQueryDefinitionCompute(
aggregation=FormulaAndFunctionEventAggregation.COUNT,
),
group_by=[],
),
],
response_format=FormulaAndFunctionResponseFormat.TIMESERIES,
style=WidgetRequestStyle(
palette="dog_classic",
line_type=WidgetLineType.SOLID,
line_width=WidgetLineWidth.NORMAL,
),
display_type=WidgetDisplayType.LINE,
),
],
),
),
],
layout_type=DashboardLayoutType.ORDERED,
reflow_type=DashboardReflowType.AUTO,
)

configuration = Configuration()
with ApiClient(configuration) as api_client:
api_instance = DashboardsApi(api_client)
response = api_instance.create_dashboard(body=body)

print(response)
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class FormulaAndFunctionEventsDataSource(ModelSimple):
"""
Data source for event platform-based queries.
:param value: Must be one of ["logs", "spans", "network", "rum", "security_signals", "profiles", "audit", "events", "ci_tests", "ci_pipelines"].
:param value: Must be one of ["logs", "spans", "network", "rum", "security_signals", "profiles", "audit", "events", "ci_tests", "ci_pipelines", "incident_analytics"].
:type value: str
"""

Expand All @@ -31,6 +31,7 @@ class FormulaAndFunctionEventsDataSource(ModelSimple):
"events",
"ci_tests",
"ci_pipelines",
"incident_analytics",
}
LOGS: ClassVar["FormulaAndFunctionEventsDataSource"]
SPANS: ClassVar["FormulaAndFunctionEventsDataSource"]
Expand All @@ -42,6 +43,7 @@ class FormulaAndFunctionEventsDataSource(ModelSimple):
EVENTS: ClassVar["FormulaAndFunctionEventsDataSource"]
CI_TESTS: ClassVar["FormulaAndFunctionEventsDataSource"]
CI_PIPELINES: ClassVar["FormulaAndFunctionEventsDataSource"]
INCIDENT_ANALYTICS: ClassVar["FormulaAndFunctionEventsDataSource"]

@cached_property
def openapi_types(_):
Expand All @@ -60,3 +62,4 @@ def openapi_types(_):
FormulaAndFunctionEventsDataSource.EVENTS = FormulaAndFunctionEventsDataSource("events")
FormulaAndFunctionEventsDataSource.CI_TESTS = FormulaAndFunctionEventsDataSource("ci_tests")
FormulaAndFunctionEventsDataSource.CI_PIPELINES = FormulaAndFunctionEventsDataSource("ci_pipelines")
FormulaAndFunctionEventsDataSource.INCIDENT_ANALYTICS = FormulaAndFunctionEventsDataSource("incident_analytics")
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2024-07-23T14:59:59.215Z
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
interactions:
- request:
body: '{"layout_type":"ordered","reflow_type":"auto","title":"Test-Create_a_new_timeseries_widget_with_incident_analytics_data_source-1721746799
with incident_analytics datasource","widgets":[{"definition":{"legend_columns":["avg","min","max","value","sum"],"legend_layout":"auto","requests":[{"display_type":"line","formulas":[{"formula":"query1"}],"queries":[{"compute":{"aggregation":"count"},"data_source":"incident_analytics","group_by":[],"indexes":["*"],"name":"query1","search":{"query":"test_level:test"}}],"response_format":"timeseries","style":{"line_type":"solid","line_width":"normal","palette":"dog_classic"}}],"show_legend":true,"time":{},"title":"","type":"timeseries"}}]}'
headers:
accept:
- application/json
content-type:
- application/json
method: POST
uri: https://api.datadoghq.com/api/v1/dashboard
response:
body:
string: '{"id":"r29-a2b-nhh","title":"Test-Create_a_new_timeseries_widget_with_incident_analytics_data_source-1721746799
with incident_analytics datasource","description":null,"author_handle":"frog@datadoghq.com","author_name":null,"layout_type":"ordered","url":"/dashboard/r29-a2b-nhh/test-createanewtimeserieswidgetwithincidentanalyticsdatasource-1721746799-with-i","is_read_only":false,"template_variables":null,"widgets":[{"definition":{"legend_columns":["avg","min","max","value","sum"],"legend_layout":"auto","requests":[{"display_type":"line","formulas":[{"formula":"query1"}],"queries":[{"compute":{"aggregation":"count"},"data_source":"incident_analytics","group_by":[],"indexes":["*"],"name":"query1","search":{"query":"test_level:test"}}],"response_format":"timeseries","style":{"line_type":"solid","line_width":"normal","palette":"dog_classic"}}],"show_legend":true,"time":{},"title":"","type":"timeseries"},"id":4216078110414841}],"notify_list":null,"created_at":"2024-07-23T14:59:59.491800+00:00","modified_at":"2024-07-23T14:59:59.491800+00:00","reflow_type":"auto","restricted_roles":[]}
'
headers:
content-type:
- application/json
status:
code: 200
message: OK
- request:
body: null
headers:
accept:
- application/json
method: DELETE
uri: https://api.datadoghq.com/api/v1/dashboard/r29-a2b-nhh
response:
body:
string: '{"deleted_dashboard_id":"r29-a2b-nhh"}
'
headers:
content-type:
- application/json
status:
code: 200
message: OK
version: 1
9 changes: 9 additions & 0 deletions tests/v1/features/dashboards.feature
Original file line number Diff line number Diff line change
Expand Up @@ -830,6 +830,15 @@ Feature: Dashboards
And the response "widgets[0].definition.requests[0].queries[0].data_source" is equal to "ci_tests"
And the response "widgets[0].definition.requests[0].queries[0].search.query" is equal to "test_level:test"

@team:DataDog/dashboards-backend
Scenario: Create a new timeseries widget with incident_analytics data source
Given new "CreateDashboard" request
And body with value {"title":"{{ unique }} with incident_analytics datasource","widgets":[{"definition":{"title":"","show_legend":true,"legend_layout":"auto","legend_columns":["avg","min","max","value","sum"],"time":{},"type":"timeseries","requests":[{"formulas":[{"formula":"query1"}],"queries":[{"data_source":"incident_analytics","name":"query1","search":{"query":"test_level:test"},"indexes":["*"],"compute":{"aggregation":"count"},"group_by":[]}],"response_format":"timeseries","style":{"palette":"dog_classic","line_type":"solid","line_width":"normal"},"display_type":"line"}]}}],"layout_type":"ordered","reflow_type":"auto"}
When the request is sent
Then the response status is 200 OK
And the response "widgets[0].definition.requests[0].queries[0].data_source" is equal to "incident_analytics"
And the response "widgets[0].definition.requests[0].queries[0].search.query" is equal to "test_level:test"

@generated @skip @team:DataDog/dashboards-backend
Scenario: Create a shared dashboard returns "Bad Request" response
Given new "CreatePublicDashboard" request
Expand Down

0 comments on commit 4337a59

Please sign in to comment.