Skip to content

Commit 67c2063

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
Add cloud_cost data source and query definition to dashboards (#1882)
Co-authored-by: ci.datadog-api-spec <packages@datadoghq.com>
1 parent 847cfd5 commit 67c2063

9 files changed

+578
-8
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.5",
7-
"regenerated": "2023-07-11 14:36:43.463695",
8-
"spec_repo_commit": "7ca677d6"
7+
"regenerated": "2023-07-11 16:39:23.599213",
8+
"spec_repo_commit": "824086bb"
99
},
1010
"v2": {
1111
"apigentools_version": "1.6.5",
12-
"regenerated": "2023-07-11 14:36:43.479079",
13-
"spec_repo_commit": "7ca677d6"
12+
"regenerated": "2023-07-11 16:39:23.611735",
13+
"spec_repo_commit": "824086bb"
1414
}
1515
}
1616
}

.generator/schemas/v1/openapi.yaml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2466,6 +2466,38 @@ components:
24662466
- service
24672467
- stat
24682468
type: object
2469+
FormulaAndFunctionCloudCostDataSource:
2470+
description: Data source for Cloud Cost queries.
2471+
enum:
2472+
- cloud_cost
2473+
example: cloud_cost
2474+
type: string
2475+
x-enum-varnames:
2476+
- CLOUD_COST
2477+
FormulaAndFunctionCloudCostQueryDefinition:
2478+
description: A formula and functions Cloud Cost query.
2479+
example:
2480+
data_source: cloud_cost
2481+
name: query1
2482+
query: sum:aws.cost.amortized{*}
2483+
properties:
2484+
aggregator:
2485+
$ref: '#/components/schemas/WidgetAggregator'
2486+
data_source:
2487+
$ref: '#/components/schemas/FormulaAndFunctionCloudCostDataSource'
2488+
name:
2489+
description: Name of the query for use in formulas.
2490+
example: my_query
2491+
type: string
2492+
query:
2493+
description: Query for Cloud Cost data.
2494+
example: ''
2495+
type: string
2496+
required:
2497+
- data_source
2498+
- query
2499+
- name
2500+
type: object
24692501
FormulaAndFunctionEventAggregation:
24702502
description: Aggregation methods for event platform queries.
24712503
enum:
@@ -2729,6 +2761,7 @@ components:
27292761
- $ref: '#/components/schemas/FormulaAndFunctionApmDependencyStatsQueryDefinition'
27302762
- $ref: '#/components/schemas/FormulaAndFunctionApmResourceStatsQueryDefinition'
27312763
- $ref: '#/components/schemas/FormulaAndFunctionSLOQueryDefinition'
2764+
- $ref: '#/components/schemas/FormulaAndFunctionCloudCostQueryDefinition'
27322765
type: object
27332766
FormulaAndFunctionResponseFormat:
27342767
description: Timeseries, scalar, or event list response. Event list response
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
// Create a new dashboard with a timeseries widget using formulas and functions cloud cost query
2+
3+
import com.datadog.api.client.ApiClient;
4+
import com.datadog.api.client.ApiException;
5+
import com.datadog.api.client.v1.api.DashboardsApi;
6+
import com.datadog.api.client.v1.model.Dashboard;
7+
import com.datadog.api.client.v1.model.DashboardLayoutType;
8+
import com.datadog.api.client.v1.model.FormulaAndFunctionCloudCostDataSource;
9+
import com.datadog.api.client.v1.model.FormulaAndFunctionCloudCostQueryDefinition;
10+
import com.datadog.api.client.v1.model.FormulaAndFunctionQueryDefinition;
11+
import com.datadog.api.client.v1.model.FormulaAndFunctionResponseFormat;
12+
import com.datadog.api.client.v1.model.TimeseriesWidgetDefinition;
13+
import com.datadog.api.client.v1.model.TimeseriesWidgetDefinitionType;
14+
import com.datadog.api.client.v1.model.TimeseriesWidgetRequest;
15+
import com.datadog.api.client.v1.model.Widget;
16+
import com.datadog.api.client.v1.model.WidgetDefinition;
17+
import com.datadog.api.client.v1.model.WidgetDisplayType;
18+
import com.datadog.api.client.v1.model.WidgetFormula;
19+
import com.datadog.api.client.v1.model.WidgetLineType;
20+
import com.datadog.api.client.v1.model.WidgetLineWidth;
21+
import com.datadog.api.client.v1.model.WidgetRequestStyle;
22+
import com.datadog.api.client.v1.model.WidgetTextAlign;
23+
import java.util.Collections;
24+
25+
public class Example {
26+
public static void main(String[] args) {
27+
ApiClient defaultClient = ApiClient.getDefaultApiClient();
28+
DashboardsApi apiInstance = new DashboardsApi(defaultClient);
29+
30+
Dashboard body =
31+
new Dashboard()
32+
.title("Example-Dashboard")
33+
.widgets(
34+
Collections.singletonList(
35+
new Widget()
36+
.definition(
37+
new WidgetDefinition(
38+
new TimeseriesWidgetDefinition()
39+
.title("Example Cloud Cost Query")
40+
.titleSize("16")
41+
.titleAlign(WidgetTextAlign.LEFT)
42+
.type(TimeseriesWidgetDefinitionType.TIMESERIES)
43+
.requests(
44+
Collections.singletonList(
45+
new TimeseriesWidgetRequest()
46+
.formulas(
47+
Collections.singletonList(
48+
new WidgetFormula().formula("query1")))
49+
.queries(
50+
Collections.singletonList(
51+
new FormulaAndFunctionQueryDefinition(
52+
new FormulaAndFunctionCloudCostQueryDefinition()
53+
.dataSource(
54+
FormulaAndFunctionCloudCostDataSource
55+
.CLOUD_COST)
56+
.name("query1")
57+
.query(
58+
"sum:aws.cost.amortized{*} by"
59+
+ " {aws_product}.rollup(sum,"
60+
+ " monthly)"))))
61+
.responseFormat(
62+
FormulaAndFunctionResponseFormat.TIMESERIES)
63+
.style(
64+
new WidgetRequestStyle()
65+
.palette("dog_classic")
66+
.lineType(WidgetLineType.SOLID)
67+
.lineWidth(WidgetLineWidth.NORMAL))
68+
.displayType(WidgetDisplayType.BARS)))))))
69+
.layoutType(DashboardLayoutType.ORDERED);
70+
71+
try {
72+
Dashboard result = apiInstance.createDashboard(body);
73+
System.out.println(result);
74+
} catch (ApiException e) {
75+
System.err.println("Exception when calling DashboardsApi#createDashboard");
76+
System.err.println("Status code: " + e.getCode());
77+
System.err.println("Reason: " + e.getResponseBody());
78+
System.err.println("Response headers: " + e.getResponseHeaders());
79+
e.printStackTrace();
80+
}
81+
}
82+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
/*
2+
* Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
3+
* This product includes software developed at Datadog (https://www.datadoghq.com/).
4+
* Copyright 2019-Present Datadog, Inc.
5+
*/
6+
7+
package com.datadog.api.client.v1.model;
8+
9+
import com.datadog.api.client.ModelEnum;
10+
import com.fasterxml.jackson.annotation.JsonCreator;
11+
import com.fasterxml.jackson.core.JsonGenerator;
12+
import com.fasterxml.jackson.core.JsonProcessingException;
13+
import com.fasterxml.jackson.databind.SerializerProvider;
14+
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
15+
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
16+
import java.io.IOException;
17+
import java.util.Arrays;
18+
import java.util.HashSet;
19+
import java.util.Set;
20+
21+
/** Data source for Cloud Cost queries. */
22+
@JsonSerialize(
23+
using =
24+
FormulaAndFunctionCloudCostDataSource.FormulaAndFunctionCloudCostDataSourceSerializer.class)
25+
public class FormulaAndFunctionCloudCostDataSource extends ModelEnum<String> {
26+
27+
private static final Set<String> allowedValues = new HashSet<String>(Arrays.asList("cloud_cost"));
28+
29+
public static final FormulaAndFunctionCloudCostDataSource CLOUD_COST =
30+
new FormulaAndFunctionCloudCostDataSource("cloud_cost");
31+
32+
FormulaAndFunctionCloudCostDataSource(String value) {
33+
super(value, allowedValues);
34+
}
35+
36+
public static class FormulaAndFunctionCloudCostDataSourceSerializer
37+
extends StdSerializer<FormulaAndFunctionCloudCostDataSource> {
38+
public FormulaAndFunctionCloudCostDataSourceSerializer(
39+
Class<FormulaAndFunctionCloudCostDataSource> t) {
40+
super(t);
41+
}
42+
43+
public FormulaAndFunctionCloudCostDataSourceSerializer() {
44+
this(null);
45+
}
46+
47+
@Override
48+
public void serialize(
49+
FormulaAndFunctionCloudCostDataSource value,
50+
JsonGenerator jgen,
51+
SerializerProvider provider)
52+
throws IOException, JsonProcessingException {
53+
jgen.writeObject(value.value);
54+
}
55+
}
56+
57+
@JsonCreator
58+
public static FormulaAndFunctionCloudCostDataSource fromValue(String value) {
59+
return new FormulaAndFunctionCloudCostDataSource(value);
60+
}
61+
}

0 commit comments

Comments
 (0)