Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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.4",
"regenerated": "2023-05-17 14:44:33.390332",
"spec_repo_commit": "f8bfb8c1"
"regenerated": "2023-05-17 20:57:57.342563",
"spec_repo_commit": "d8186149"
},
"v2": {
"apigentools_version": "1.6.4",
"regenerated": "2023-05-17 14:44:33.403841",
"spec_repo_commit": "f8bfb8c1"
"regenerated": "2023-05-17 20:57:57.359087",
"spec_repo_commit": "d8186149"
}
}
}
76 changes: 76 additions & 0 deletions .generator/schemas/v1/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2728,6 +2728,7 @@ components:
- $ref: '#/components/schemas/FormulaAndFunctionProcessQueryDefinition'
- $ref: '#/components/schemas/FormulaAndFunctionApmDependencyStatsQueryDefinition'
- $ref: '#/components/schemas/FormulaAndFunctionApmResourceStatsQueryDefinition'
- $ref: '#/components/schemas/FormulaAndFunctionSLOQueryDefinition'
type: object
FormulaAndFunctionResponseFormat:
description: Timeseries or Scalar response.
Expand All @@ -2739,6 +2740,81 @@ components:
x-enum-varnames:
- TIMESERIES
- SCALAR
FormulaAndFunctionSLODataSource:
description: Data source for SLO measures queries.
enum:
- slo
example: slo
type: string
x-enum-varnames:
- SLO
FormulaAndFunctionSLOGroupMode:
description: Group mode to query measures.
enum:
- overall
- components
example: overall
type: string
x-enum-varnames:
- OVERALL
- COMPONENTS
FormulaAndFunctionSLOMeasure:
description: SLO measures queries.
enum:
- good_events
- bad_events
- slo_status
- error_budget_remaining
- burn_rate
- error_budget_burndown
example: slo_status
type: string
x-enum-varnames:
- GOOD_EVENTS
- BAD_EVENTS
- SLO_STATUS
- ERROR_BUDGET_REMAINING
- BURN_RATE
- ERROR_BUDGET_BURNDOWN
FormulaAndFunctionSLOQueryDefinition:
description: A formula and functions metrics query.
example:
data_source: slo
group_mode: overall
measure: good_events
name: my_slo
slo_id: '12345678910'
slo_query_type: metric
properties:
data_source:
$ref: '#/components/schemas/FormulaAndFunctionSLODataSource'
group_mode:
$ref: '#/components/schemas/FormulaAndFunctionSLOGroupMode'
measure:
$ref: '#/components/schemas/FormulaAndFunctionSLOMeasure'
name:
description: Name of the query for use in formulas.
example: my_slo
type: string
slo_id:
description: ID of an SLO to query measures.
example: '12345678910'
type: string
slo_query_type:
$ref: '#/components/schemas/FormulaAndFunctionSLOQueryType'
required:
- data_source
- slo_id
- measure
type: object
FormulaAndFunctionSLOQueryType:
description: Name of the query for use in formulas.
enum:
- metric
example: metric
type: string
x-enum-varnames:
- METRIC
FreeTextWidgetDefinition:
description: Free text is a widget that allows you to add headings to your screenboard.
Commonly used to state the overall purpose of the dashboard. Only available
Expand Down
98 changes: 98 additions & 0 deletions examples/v1/dashboards/CreateDashboard_3562282606.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
// Create a new dashboard with a change widget using formulas and functions slo query

import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v1.api.DashboardsApi;
import com.datadog.api.client.v1.model.ChangeWidgetDefinition;
import com.datadog.api.client.v1.model.ChangeWidgetDefinitionType;
import com.datadog.api.client.v1.model.ChangeWidgetRequest;
import com.datadog.api.client.v1.model.Dashboard;
import com.datadog.api.client.v1.model.DashboardLayoutType;
import com.datadog.api.client.v1.model.FormulaAndFunctionQueryDefinition;
import com.datadog.api.client.v1.model.FormulaAndFunctionResponseFormat;
import com.datadog.api.client.v1.model.FormulaAndFunctionSLODataSource;
import com.datadog.api.client.v1.model.FormulaAndFunctionSLOGroupMode;
import com.datadog.api.client.v1.model.FormulaAndFunctionSLOMeasure;
import com.datadog.api.client.v1.model.FormulaAndFunctionSLOQueryDefinition;
import com.datadog.api.client.v1.model.FormulaAndFunctionSLOQueryType;
import com.datadog.api.client.v1.model.Widget;
import com.datadog.api.client.v1.model.WidgetChangeType;
import com.datadog.api.client.v1.model.WidgetDefinition;
import com.datadog.api.client.v1.model.WidgetFormula;
import com.datadog.api.client.v1.model.WidgetLayout;
import com.datadog.api.client.v1.model.WidgetOrderBy;
import com.datadog.api.client.v1.model.WidgetSort;
import com.datadog.api.client.v1.model.WidgetTextAlign;
import com.datadog.api.client.v1.model.WidgetTime;
import java.util.Arrays;
import java.util.Collections;

public class Example {
public static void main(String[] args) {
ApiClient defaultClient = ApiClient.getDefaultApiClient();
DashboardsApi apiInstance = new DashboardsApi(defaultClient);

// there is a valid "slo" in the system
String SLO_DATA_0_ID = System.getenv("SLO_DATA_0_ID");

Dashboard body =
new Dashboard()
.title("Example-Dashboard")
.widgets(
Collections.singletonList(
new Widget()
.definition(
new WidgetDefinition(
new ChangeWidgetDefinition()
.title("")
.titleSize("16")
.titleAlign(WidgetTextAlign.LEFT)
.time(new WidgetTime())
.type(ChangeWidgetDefinitionType.CHANGE)
.requests(
Collections.singletonList(
new ChangeWidgetRequest()
.formulas(
Arrays.asList(
new WidgetFormula()
.formula("hour_before(query1)"),
new WidgetFormula().formula("query1")))
.queries(
Collections.singletonList(
new FormulaAndFunctionQueryDefinition(
new FormulaAndFunctionSLOQueryDefinition()
.name("query1")
.dataSource(
FormulaAndFunctionSLODataSource
.SLO)
.sloId(SLO_DATA_0_ID)
.measure(
FormulaAndFunctionSLOMeasure
.SLO_STATUS)
.groupMode(
FormulaAndFunctionSLOGroupMode
.OVERALL)
.sloQueryType(
FormulaAndFunctionSLOQueryType
.METRIC))))
.responseFormat(
FormulaAndFunctionResponseFormat.SCALAR)
.orderBy(WidgetOrderBy.CHANGE)
.changeType(WidgetChangeType.ABSOLUTE)
.increaseGood(true)
.orderDir(WidgetSort.ASCENDING)))))
.layout(new WidgetLayout().x(0L).y(0L).width(4L).height(2L))))
.layoutType(DashboardLayoutType.ORDERED);

try {
Dashboard result = apiInstance.createDashboard(body);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling DashboardsApi#createDashboard");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,55 @@ public FormulaAndFunctionQueryDefinition deserialize(JsonParser jp, Deserializat
e);
}

// deserialize FormulaAndFunctionSLOQueryDefinition
try {
boolean attemptParsing = true;
// ensure that we respect type coercion as set on the client ObjectMapper
if (FormulaAndFunctionSLOQueryDefinition.class.equals(Integer.class)
|| FormulaAndFunctionSLOQueryDefinition.class.equals(Long.class)
|| FormulaAndFunctionSLOQueryDefinition.class.equals(Float.class)
|| FormulaAndFunctionSLOQueryDefinition.class.equals(Double.class)
|| FormulaAndFunctionSLOQueryDefinition.class.equals(Boolean.class)
|| FormulaAndFunctionSLOQueryDefinition.class.equals(String.class)) {
attemptParsing = typeCoercion;
if (!attemptParsing) {
attemptParsing |=
((FormulaAndFunctionSLOQueryDefinition.class.equals(Integer.class)
|| FormulaAndFunctionSLOQueryDefinition.class.equals(Long.class))
&& token == JsonToken.VALUE_NUMBER_INT);
attemptParsing |=
((FormulaAndFunctionSLOQueryDefinition.class.equals(Float.class)
|| FormulaAndFunctionSLOQueryDefinition.class.equals(Double.class))
&& (token == JsonToken.VALUE_NUMBER_FLOAT
|| token == JsonToken.VALUE_NUMBER_INT));
attemptParsing |=
(FormulaAndFunctionSLOQueryDefinition.class.equals(Boolean.class)
&& (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE));
attemptParsing |=
(FormulaAndFunctionSLOQueryDefinition.class.equals(String.class)
&& token == JsonToken.VALUE_STRING);
}
}
if (attemptParsing) {
tmp =
tree.traverse(jp.getCodec()).readValueAs(FormulaAndFunctionSLOQueryDefinition.class);
// TODO: there is no validation against JSON schema constraints
// (min, max, enum, pattern...), this does not perform a strict JSON
// validation, which means the 'match' count may be higher than it should be.
if (!((FormulaAndFunctionSLOQueryDefinition) tmp).unparsed) {
deserialized = tmp;
match++;
}
log.log(Level.FINER, "Input data matches schema 'FormulaAndFunctionSLOQueryDefinition'");
}
} catch (Exception e) {
// deserialization failed, continue
log.log(
Level.FINER,
"Input data does not match schema 'FormulaAndFunctionSLOQueryDefinition'",
e);
}

FormulaAndFunctionQueryDefinition ret = new FormulaAndFunctionQueryDefinition();
if (match == 1) {
ret.setActualInstance(deserialized);
Expand Down Expand Up @@ -400,6 +449,11 @@ public FormulaAndFunctionQueryDefinition(FormulaAndFunctionApmResourceStatsQuery
setActualInstance(o);
}

public FormulaAndFunctionQueryDefinition(FormulaAndFunctionSLOQueryDefinition o) {
super("oneOf", Boolean.FALSE);
setActualInstance(o);
}

static {
schemas.put(
"FormulaAndFunctionMetricQueryDefinition",
Expand All @@ -416,6 +470,9 @@ public FormulaAndFunctionQueryDefinition(FormulaAndFunctionApmResourceStatsQuery
schemas.put(
"FormulaAndFunctionApmResourceStatsQueryDefinition",
new GenericType<FormulaAndFunctionApmResourceStatsQueryDefinition>() {});
schemas.put(
"FormulaAndFunctionSLOQueryDefinition",
new GenericType<FormulaAndFunctionSLOQueryDefinition>() {});
JSON.registerDescendants(
FormulaAndFunctionQueryDefinition.class, Collections.unmodifiableMap(schemas));
}
Expand All @@ -430,7 +487,7 @@ public Map<String, GenericType> getSchemas() {
* against the oneOf child schemas: FormulaAndFunctionMetricQueryDefinition,
* FormulaAndFunctionEventQueryDefinition, FormulaAndFunctionProcessQueryDefinition,
* FormulaAndFunctionApmDependencyStatsQueryDefinition,
* FormulaAndFunctionApmResourceStatsQueryDefinition
* FormulaAndFunctionApmResourceStatsQueryDefinition, FormulaAndFunctionSLOQueryDefinition
*
* <p>It could be an instance of the 'oneOf' schemas. The oneOf child schemas may themselves be a
* composed schema (allOf, anyOf, oneOf).
Expand Down Expand Up @@ -466,6 +523,11 @@ public void setActualInstance(Object instance) {
super.setActualInstance(instance);
return;
}
if (JSON.isInstanceOf(
FormulaAndFunctionSLOQueryDefinition.class, instance, new HashSet<Class<?>>())) {
super.setActualInstance(instance);
return;
}

if (JSON.isInstanceOf(UnparsedObject.class, instance, new HashSet<Class<?>>())) {
super.setActualInstance(instance);
Expand All @@ -475,19 +537,20 @@ public void setActualInstance(Object instance) {
"Invalid instance type. Must be FormulaAndFunctionMetricQueryDefinition,"
+ " FormulaAndFunctionEventQueryDefinition, FormulaAndFunctionProcessQueryDefinition,"
+ " FormulaAndFunctionApmDependencyStatsQueryDefinition,"
+ " FormulaAndFunctionApmResourceStatsQueryDefinition");
+ " FormulaAndFunctionApmResourceStatsQueryDefinition,"
+ " FormulaAndFunctionSLOQueryDefinition");
}

/**
* Get the actual instance, which can be the following: FormulaAndFunctionMetricQueryDefinition,
* FormulaAndFunctionEventQueryDefinition, FormulaAndFunctionProcessQueryDefinition,
* FormulaAndFunctionApmDependencyStatsQueryDefinition,
* FormulaAndFunctionApmResourceStatsQueryDefinition
* FormulaAndFunctionApmResourceStatsQueryDefinition, FormulaAndFunctionSLOQueryDefinition
*
* @return The actual instance (FormulaAndFunctionMetricQueryDefinition,
* FormulaAndFunctionEventQueryDefinition, FormulaAndFunctionProcessQueryDefinition,
* FormulaAndFunctionApmDependencyStatsQueryDefinition,
* FormulaAndFunctionApmResourceStatsQueryDefinition)
* FormulaAndFunctionApmResourceStatsQueryDefinition, FormulaAndFunctionSLOQueryDefinition)
*/
@Override
public Object getActualInstance() {
Expand Down Expand Up @@ -557,4 +620,16 @@ public FormulaAndFunctionProcessQueryDefinition getFormulaAndFunctionProcessQuer
getFormulaAndFunctionApmResourceStatsQueryDefinition() throws ClassCastException {
return (FormulaAndFunctionApmResourceStatsQueryDefinition) super.getActualInstance();
}

/**
* Get the actual instance of `FormulaAndFunctionSLOQueryDefinition`. If the actual instance is
* not `FormulaAndFunctionSLOQueryDefinition`, the ClassCastException will be thrown.
*
* @return The actual instance of `FormulaAndFunctionSLOQueryDefinition`
* @throws ClassCastException if the instance is not `FormulaAndFunctionSLOQueryDefinition`
*/
public FormulaAndFunctionSLOQueryDefinition getFormulaAndFunctionSLOQueryDefinition()
throws ClassCastException {
return (FormulaAndFunctionSLOQueryDefinition) super.getActualInstance();
}
}
Loading