diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index ac098a3c305..557b7d531d1 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -51969,6 +51969,118 @@ components: type: string x-enum-varnames: - ADD_HOSTNAME + ObservabilityPipelineAddMetricTagsProcessor: + description: |- + The `add_metric_tags` processor adds static tags to metrics. + + **Supported pipeline types:** metrics + properties: + display_name: + $ref: "#/components/schemas/ObservabilityPipelineComponentDisplayName" + enabled: + description: Indicates whether the processor is enabled. + example: true + type: boolean + id: + description: The unique identifier for this component. Used in other parts of the pipeline to reference this component (for example, as the `input` to downstream components). + example: "add-metric-tags-processor" + type: string + include: + description: A Datadog search query used to determine which metrics this processor targets. + example: "*" + type: string + tags: + description: A list of static tags (key-value pairs) added to each metric processed by this component. + items: + $ref: "#/components/schemas/ObservabilityPipelineFieldValue" + maxItems: 15 + type: array + type: + $ref: "#/components/schemas/ObservabilityPipelineAddMetricTagsProcessorType" + required: + - id + - type + - include + - tags + - enabled + type: object + x-pipeline-types: [metrics] + ObservabilityPipelineAddMetricTagsProcessorType: + default: add_metric_tags + description: The processor type. The value must be `add_metric_tags`. + enum: [add_metric_tags] + example: add_metric_tags + type: string + x-enum-varnames: + - ADD_METRIC_TAGS + ObservabilityPipelineAggregateProcessor: + description: |- + The `aggregate` processor combines metrics that share the same name and tags into a single metric over a configurable interval. + + **Supported pipeline types:** metrics + properties: + display_name: + $ref: "#/components/schemas/ObservabilityPipelineComponentDisplayName" + enabled: + description: Indicates whether the processor is enabled. + example: true + type: boolean + id: + description: The unique identifier for this component. Used in other parts of the pipeline to reference this component (for example, as the `input` to downstream components). + example: "aggregate-processor" + type: string + include: + description: A Datadog search query used to determine which metrics this processor targets. + example: "*" + type: string + interval_secs: + description: The interval, in seconds, over which metrics are aggregated. + example: 10 + format: int64 + maximum: 60 + minimum: 1 + type: integer + mode: + $ref: "#/components/schemas/ObservabilityPipelineAggregateProcessorMode" + type: + $ref: "#/components/schemas/ObservabilityPipelineAggregateProcessorType" + required: + - id + - type + - include + - interval_secs + - mode + - enabled + type: object + x-pipeline-types: [metrics] + ObservabilityPipelineAggregateProcessorMode: + description: The aggregation mode applied to metrics that share the same name and tags within the interval. + enum: + - auto + - sum + - latest + - count + - max + - min + - mean + example: auto + type: string + x-enum-varnames: + - AUTO + - SUM + - LATEST + - COUNT + - MAX + - MIN + - MEAN + ObservabilityPipelineAggregateProcessorType: + default: aggregate + description: The processor type. The value must be `aggregate`. + enum: [aggregate] + example: aggregate + type: string + x-enum-varnames: + - AGGREGATE ObservabilityPipelineAmazonDataFirehoseSource: description: |- The `amazon_data_firehose` source ingests logs from AWS Data Firehose. @@ -52680,7 +52792,11 @@ components: - $ref: "#/components/schemas/ObservabilityPipelineSensitiveDataScannerProcessor" - $ref: "#/components/schemas/ObservabilityPipelineSplitArrayProcessor" - $ref: "#/components/schemas/ObservabilityPipelineThrottleProcessor" + - $ref: "#/components/schemas/ObservabilityPipelineAddMetricTagsProcessor" + - $ref: "#/components/schemas/ObservabilityPipelineAggregateProcessor" - $ref: "#/components/schemas/ObservabilityPipelineMetricTagsProcessor" + - $ref: "#/components/schemas/ObservabilityPipelineRenameMetricTagsProcessor" + - $ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessor" ObservabilityPipelineConfigSourceItem: description: "A data source for the pipeline." oneOf: @@ -55642,6 +55758,65 @@ components: type: string x-enum-varnames: - RENAME_FIELDS + ObservabilityPipelineRenameMetricTagsProcessor: + description: |- + The `rename_metric_tags` processor changes the keys of tags on metrics. + + **Supported pipeline types:** metrics + properties: + display_name: + $ref: "#/components/schemas/ObservabilityPipelineComponentDisplayName" + enabled: + description: Indicates whether the processor is enabled. + example: true + type: boolean + id: + description: The unique identifier for this component. Used in other parts of the pipeline to reference this component (for example, as the `input` to downstream components). + example: "rename-metric-tags-processor" + type: string + include: + description: A Datadog search query used to determine which metrics this processor targets. + example: "*" + type: string + tags: + description: A list of rename rules specifying which tag keys to rename on each metric. + items: + $ref: "#/components/schemas/ObservabilityPipelineRenameMetricTagsProcessorTag" + maxItems: 15 + type: array + type: + $ref: "#/components/schemas/ObservabilityPipelineRenameMetricTagsProcessorType" + required: + - id + - type + - include + - tags + - enabled + type: object + x-pipeline-types: [metrics] + ObservabilityPipelineRenameMetricTagsProcessorTag: + description: Defines how to rename a tag on metric events. + properties: + rename_to: + description: The new tag key to assign in place of the original. + example: "destination_tag" + type: string + tag: + description: The original tag key on the metric event. + example: "source_tag" + type: string + required: + - tag + - rename_to + type: object + ObservabilityPipelineRenameMetricTagsProcessorType: + default: rename_metric_tags + description: The processor type. The value must be `rename_metric_tags`. + enum: [rename_metric_tags] + example: rename_metric_tags + type: string + x-enum-varnames: + - RENAME_METRIC_TAGS ObservabilityPipelineRsyslogDestination: description: |- The `rsyslog` destination forwards logs to an external `rsyslog` server over TCP or UDP using the syslog protocol. @@ -56833,6 +57008,141 @@ components: x-enum-varnames: - TCP - UDP + ObservabilityPipelineTagCardinalityLimitProcessor: + description: |- + The `tag_cardinality_limit` processor caps the number of distinct tag value combinations on metrics, dropping tags or events once the limit is exceeded. + + **Supported pipeline types:** metrics + properties: + display_name: + $ref: "#/components/schemas/ObservabilityPipelineComponentDisplayName" + enabled: + description: Indicates whether the processor is enabled. + example: true + type: boolean + id: + description: The unique identifier for this component. Used in other parts of the pipeline to reference this component (for example, as the `input` to downstream components). + example: "tag-cardinality-limit-processor" + type: string + include: + description: A Datadog search query used to determine which metrics this processor targets. + example: "*" + type: string + limit_exceeded_action: + $ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorAction" + per_metric_limits: + description: A list of per-metric cardinality overrides that take precedence over the default `value_limit`. + items: + $ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit" + maxItems: 100 + type: array + type: + $ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorType" + value_limit: + description: The default maximum number of distinct tag value combinations allowed per metric. + example: 10000 + format: int64 + maximum: 1000000 + minimum: 0 + type: integer + required: + - id + - type + - include + - limit_exceeded_action + - value_limit + - enabled + type: object + x-pipeline-types: [metrics] + ObservabilityPipelineTagCardinalityLimitProcessorAction: + description: The action to take when the cardinality limit is exceeded. + enum: + - drop_tag + - drop_event + example: drop_tag + type: string + x-enum-varnames: + - DROP_TAG + - DROP_EVENT + ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit: + description: A cardinality override applied to a specific metric. + properties: + limit_exceeded_action: + $ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorAction" + metric_name: + description: The name of the metric this override applies to. + example: "system.cpu.user" + type: string + mode: + $ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode" + per_tag_limits: + description: A list of per-tag cardinality overrides that apply within this metric. + items: + $ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit" + maxItems: 50 + type: array + value_limit: + description: The maximum number of distinct tag value combinations allowed for this metric. + example: 10000 + format: int64 + maximum: 1000000 + minimum: 0 + type: integer + required: + - metric_name + - mode + - limit_exceeded_action + - value_limit + type: object + ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode: + description: How the per-metric override is applied. `tracked` enforces a custom limit; `excluded` skips the metric entirely. + enum: + - tracked + - excluded + example: tracked + type: string + x-enum-varnames: + - TRACKED + - EXCLUDED + ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit: + description: A cardinality override for a specific tag key within a per-metric limit. + properties: + mode: + $ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode" + tag_key: + description: The tag key this override applies to. + example: "host" + type: string + value_limit: + description: The maximum number of distinct values allowed for this tag. + example: 5000 + format: int64 + maximum: 1000000 + minimum: 0 + type: integer + required: + - tag_key + - mode + - value_limit + type: object + ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode: + description: How the per-tag override is applied. `limit_override` enforces a custom limit on the tag; `excluded` skips the tag from cardinality tracking. + enum: + - limit_override + - excluded + example: limit_override + type: string + x-enum-varnames: + - LIMIT_OVERRIDE + - EXCLUDED + ObservabilityPipelineTagCardinalityLimitProcessorType: + default: tag_cardinality_limit + description: The processor type. The value must be `tag_cardinality_limit`. + enum: [tag_cardinality_limit] + example: tag_cardinality_limit + type: string + x-enum-varnames: + - TAG_CARDINALITY_LIMIT ObservabilityPipelineThrottleProcessor: description: |- The `throttle` processor limits the number of events that pass through over a given time window. diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineAddMetricTagsProcessor.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineAddMetricTagsProcessor.java new file mode 100644 index 00000000000..7a24e370696 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineAddMetricTagsProcessor.java @@ -0,0 +1,315 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** + * The add_metric_tags processor adds static tags to metrics. + * + *

Supported pipeline types: metrics + */ +@JsonPropertyOrder({ + ObservabilityPipelineAddMetricTagsProcessor.JSON_PROPERTY_DISPLAY_NAME, + ObservabilityPipelineAddMetricTagsProcessor.JSON_PROPERTY_ENABLED, + ObservabilityPipelineAddMetricTagsProcessor.JSON_PROPERTY_ID, + ObservabilityPipelineAddMetricTagsProcessor.JSON_PROPERTY_INCLUDE, + ObservabilityPipelineAddMetricTagsProcessor.JSON_PROPERTY_TAGS, + ObservabilityPipelineAddMetricTagsProcessor.JSON_PROPERTY_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class ObservabilityPipelineAddMetricTagsProcessor { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DISPLAY_NAME = "display_name"; + private String displayName; + + public static final String JSON_PROPERTY_ENABLED = "enabled"; + private Boolean enabled; + + public static final String JSON_PROPERTY_ID = "id"; + private String id; + + public static final String JSON_PROPERTY_INCLUDE = "include"; + private String include; + + public static final String JSON_PROPERTY_TAGS = "tags"; + private List tags = new ArrayList<>(); + + public static final String JSON_PROPERTY_TYPE = "type"; + private ObservabilityPipelineAddMetricTagsProcessorType type = + ObservabilityPipelineAddMetricTagsProcessorType.ADD_METRIC_TAGS; + + public ObservabilityPipelineAddMetricTagsProcessor() {} + + @JsonCreator + public ObservabilityPipelineAddMetricTagsProcessor( + @JsonProperty(required = true, value = JSON_PROPERTY_ENABLED) Boolean enabled, + @JsonProperty(required = true, value = JSON_PROPERTY_ID) String id, + @JsonProperty(required = true, value = JSON_PROPERTY_INCLUDE) String include, + @JsonProperty(required = true, value = JSON_PROPERTY_TAGS) + List tags, + @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) + ObservabilityPipelineAddMetricTagsProcessorType type) { + this.enabled = enabled; + this.id = id; + this.include = include; + this.tags = tags; + this.type = type; + this.unparsed |= !type.isValid(); + } + + public ObservabilityPipelineAddMetricTagsProcessor displayName(String displayName) { + this.displayName = displayName; + return this; + } + + /** + * The display name for a component. + * + * @return displayName + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DISPLAY_NAME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getDisplayName() { + return displayName; + } + + public void setDisplayName(String displayName) { + this.displayName = displayName; + } + + public ObservabilityPipelineAddMetricTagsProcessor enabled(Boolean enabled) { + this.enabled = enabled; + return this; + } + + /** + * Indicates whether the processor is enabled. + * + * @return enabled + */ + @JsonProperty(JSON_PROPERTY_ENABLED) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + public ObservabilityPipelineAddMetricTagsProcessor id(String id) { + this.id = id; + return this; + } + + /** + * The unique identifier for this component. Used in other parts of the pipeline to reference this + * component (for example, as the input to downstream components). + * + * @return id + */ + @JsonProperty(JSON_PROPERTY_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public ObservabilityPipelineAddMetricTagsProcessor include(String include) { + this.include = include; + return this; + } + + /** + * A Datadog search query used to determine which metrics this processor targets. + * + * @return include + */ + @JsonProperty(JSON_PROPERTY_INCLUDE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getInclude() { + return include; + } + + public void setInclude(String include) { + this.include = include; + } + + public ObservabilityPipelineAddMetricTagsProcessor tags( + List tags) { + this.tags = tags; + for (ObservabilityPipelineFieldValue item : tags) { + this.unparsed |= item.unparsed; + } + return this; + } + + public ObservabilityPipelineAddMetricTagsProcessor addTagsItem( + ObservabilityPipelineFieldValue tagsItem) { + this.tags.add(tagsItem); + this.unparsed |= tagsItem.unparsed; + return this; + } + + /** + * A list of static tags (key-value pairs) added to each metric processed by this component. + * + * @return tags + */ + @JsonProperty(JSON_PROPERTY_TAGS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getTags() { + return tags; + } + + public void setTags(List tags) { + this.tags = tags; + } + + public ObservabilityPipelineAddMetricTagsProcessor type( + ObservabilityPipelineAddMetricTagsProcessorType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * The processor type. The value must be add_metric_tags. + * + * @return type + */ + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ObservabilityPipelineAddMetricTagsProcessorType getType() { + return type; + } + + public void setType(ObservabilityPipelineAddMetricTagsProcessorType type) { + if (!type.isValid()) { + this.unparsed = true; + } + this.type = type; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return ObservabilityPipelineAddMetricTagsProcessor + */ + @JsonAnySetter + public ObservabilityPipelineAddMetricTagsProcessor putAdditionalProperty( + String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this ObservabilityPipelineAddMetricTagsProcessor object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ObservabilityPipelineAddMetricTagsProcessor observabilityPipelineAddMetricTagsProcessor = + (ObservabilityPipelineAddMetricTagsProcessor) o; + return Objects.equals(this.displayName, observabilityPipelineAddMetricTagsProcessor.displayName) + && Objects.equals(this.enabled, observabilityPipelineAddMetricTagsProcessor.enabled) + && Objects.equals(this.id, observabilityPipelineAddMetricTagsProcessor.id) + && Objects.equals(this.include, observabilityPipelineAddMetricTagsProcessor.include) + && Objects.equals(this.tags, observabilityPipelineAddMetricTagsProcessor.tags) + && Objects.equals(this.type, observabilityPipelineAddMetricTagsProcessor.type) + && Objects.equals( + this.additionalProperties, + observabilityPipelineAddMetricTagsProcessor.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(displayName, enabled, id, include, tags, type, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ObservabilityPipelineAddMetricTagsProcessor {\n"); + sb.append(" displayName: ").append(toIndentedString(displayName)).append("\n"); + sb.append(" enabled: ").append(toIndentedString(enabled)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" include: ").append(toIndentedString(include)).append("\n"); + sb.append(" tags: ").append(toIndentedString(tags)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineAddMetricTagsProcessorType.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineAddMetricTagsProcessorType.java new file mode 100644 index 00000000000..b3fa713061d --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineAddMetricTagsProcessorType.java @@ -0,0 +1,63 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** The processor type. The value must be add_metric_tags. */ +@JsonSerialize( + using = + ObservabilityPipelineAddMetricTagsProcessorType + .ObservabilityPipelineAddMetricTagsProcessorTypeSerializer.class) +public class ObservabilityPipelineAddMetricTagsProcessorType extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("add_metric_tags")); + + public static final ObservabilityPipelineAddMetricTagsProcessorType ADD_METRIC_TAGS = + new ObservabilityPipelineAddMetricTagsProcessorType("add_metric_tags"); + + ObservabilityPipelineAddMetricTagsProcessorType(String value) { + super(value, allowedValues); + } + + public static class ObservabilityPipelineAddMetricTagsProcessorTypeSerializer + extends StdSerializer { + public ObservabilityPipelineAddMetricTagsProcessorTypeSerializer( + Class t) { + super(t); + } + + public ObservabilityPipelineAddMetricTagsProcessorTypeSerializer() { + this(null); + } + + @Override + public void serialize( + ObservabilityPipelineAddMetricTagsProcessorType value, + JsonGenerator jgen, + SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static ObservabilityPipelineAddMetricTagsProcessorType fromValue(String value) { + return new ObservabilityPipelineAddMetricTagsProcessorType(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineAggregateProcessor.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineAggregateProcessor.java new file mode 100644 index 00000000000..a624feca8df --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineAggregateProcessor.java @@ -0,0 +1,337 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** + * The aggregate processor combines metrics that share the same name and tags into a + * single metric over a configurable interval. + * + *

Supported pipeline types: metrics + */ +@JsonPropertyOrder({ + ObservabilityPipelineAggregateProcessor.JSON_PROPERTY_DISPLAY_NAME, + ObservabilityPipelineAggregateProcessor.JSON_PROPERTY_ENABLED, + ObservabilityPipelineAggregateProcessor.JSON_PROPERTY_ID, + ObservabilityPipelineAggregateProcessor.JSON_PROPERTY_INCLUDE, + ObservabilityPipelineAggregateProcessor.JSON_PROPERTY_INTERVAL_SECS, + ObservabilityPipelineAggregateProcessor.JSON_PROPERTY_MODE, + ObservabilityPipelineAggregateProcessor.JSON_PROPERTY_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class ObservabilityPipelineAggregateProcessor { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DISPLAY_NAME = "display_name"; + private String displayName; + + public static final String JSON_PROPERTY_ENABLED = "enabled"; + private Boolean enabled; + + public static final String JSON_PROPERTY_ID = "id"; + private String id; + + public static final String JSON_PROPERTY_INCLUDE = "include"; + private String include; + + public static final String JSON_PROPERTY_INTERVAL_SECS = "interval_secs"; + private Long intervalSecs; + + public static final String JSON_PROPERTY_MODE = "mode"; + private ObservabilityPipelineAggregateProcessorMode mode; + + public static final String JSON_PROPERTY_TYPE = "type"; + private ObservabilityPipelineAggregateProcessorType type = + ObservabilityPipelineAggregateProcessorType.AGGREGATE; + + public ObservabilityPipelineAggregateProcessor() {} + + @JsonCreator + public ObservabilityPipelineAggregateProcessor( + @JsonProperty(required = true, value = JSON_PROPERTY_ENABLED) Boolean enabled, + @JsonProperty(required = true, value = JSON_PROPERTY_ID) String id, + @JsonProperty(required = true, value = JSON_PROPERTY_INCLUDE) String include, + @JsonProperty(required = true, value = JSON_PROPERTY_INTERVAL_SECS) Long intervalSecs, + @JsonProperty(required = true, value = JSON_PROPERTY_MODE) + ObservabilityPipelineAggregateProcessorMode mode, + @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) + ObservabilityPipelineAggregateProcessorType type) { + this.enabled = enabled; + this.id = id; + this.include = include; + this.intervalSecs = intervalSecs; + this.mode = mode; + this.unparsed |= !mode.isValid(); + this.type = type; + this.unparsed |= !type.isValid(); + } + + public ObservabilityPipelineAggregateProcessor displayName(String displayName) { + this.displayName = displayName; + return this; + } + + /** + * The display name for a component. + * + * @return displayName + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DISPLAY_NAME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getDisplayName() { + return displayName; + } + + public void setDisplayName(String displayName) { + this.displayName = displayName; + } + + public ObservabilityPipelineAggregateProcessor enabled(Boolean enabled) { + this.enabled = enabled; + return this; + } + + /** + * Indicates whether the processor is enabled. + * + * @return enabled + */ + @JsonProperty(JSON_PROPERTY_ENABLED) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + public ObservabilityPipelineAggregateProcessor id(String id) { + this.id = id; + return this; + } + + /** + * The unique identifier for this component. Used in other parts of the pipeline to reference this + * component (for example, as the input to downstream components). + * + * @return id + */ + @JsonProperty(JSON_PROPERTY_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public ObservabilityPipelineAggregateProcessor include(String include) { + this.include = include; + return this; + } + + /** + * A Datadog search query used to determine which metrics this processor targets. + * + * @return include + */ + @JsonProperty(JSON_PROPERTY_INCLUDE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getInclude() { + return include; + } + + public void setInclude(String include) { + this.include = include; + } + + public ObservabilityPipelineAggregateProcessor intervalSecs(Long intervalSecs) { + this.intervalSecs = intervalSecs; + return this; + } + + /** + * The interval, in seconds, over which metrics are aggregated. minimum: 1 maximum: 60 + * + * @return intervalSecs + */ + @JsonProperty(JSON_PROPERTY_INTERVAL_SECS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public Long getIntervalSecs() { + return intervalSecs; + } + + public void setIntervalSecs(Long intervalSecs) { + this.intervalSecs = intervalSecs; + } + + public ObservabilityPipelineAggregateProcessor mode( + ObservabilityPipelineAggregateProcessorMode mode) { + this.mode = mode; + this.unparsed |= !mode.isValid(); + return this; + } + + /** + * The aggregation mode applied to metrics that share the same name and tags within the interval. + * + * @return mode + */ + @JsonProperty(JSON_PROPERTY_MODE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ObservabilityPipelineAggregateProcessorMode getMode() { + return mode; + } + + public void setMode(ObservabilityPipelineAggregateProcessorMode mode) { + if (!mode.isValid()) { + this.unparsed = true; + } + this.mode = mode; + } + + public ObservabilityPipelineAggregateProcessor type( + ObservabilityPipelineAggregateProcessorType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * The processor type. The value must be aggregate. + * + * @return type + */ + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ObservabilityPipelineAggregateProcessorType getType() { + return type; + } + + public void setType(ObservabilityPipelineAggregateProcessorType type) { + if (!type.isValid()) { + this.unparsed = true; + } + this.type = type; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return ObservabilityPipelineAggregateProcessor + */ + @JsonAnySetter + public ObservabilityPipelineAggregateProcessor putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this ObservabilityPipelineAggregateProcessor object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ObservabilityPipelineAggregateProcessor observabilityPipelineAggregateProcessor = + (ObservabilityPipelineAggregateProcessor) o; + return Objects.equals(this.displayName, observabilityPipelineAggregateProcessor.displayName) + && Objects.equals(this.enabled, observabilityPipelineAggregateProcessor.enabled) + && Objects.equals(this.id, observabilityPipelineAggregateProcessor.id) + && Objects.equals(this.include, observabilityPipelineAggregateProcessor.include) + && Objects.equals(this.intervalSecs, observabilityPipelineAggregateProcessor.intervalSecs) + && Objects.equals(this.mode, observabilityPipelineAggregateProcessor.mode) + && Objects.equals(this.type, observabilityPipelineAggregateProcessor.type) + && Objects.equals( + this.additionalProperties, + observabilityPipelineAggregateProcessor.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash( + displayName, enabled, id, include, intervalSecs, mode, type, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ObservabilityPipelineAggregateProcessor {\n"); + sb.append(" displayName: ").append(toIndentedString(displayName)).append("\n"); + sb.append(" enabled: ").append(toIndentedString(enabled)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" include: ").append(toIndentedString(include)).append("\n"); + sb.append(" intervalSecs: ").append(toIndentedString(intervalSecs)).append("\n"); + sb.append(" mode: ").append(toIndentedString(mode)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineAggregateProcessorMode.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineAggregateProcessorMode.java new file mode 100644 index 00000000000..d3099119aaf --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineAggregateProcessorMode.java @@ -0,0 +1,77 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** + * The aggregation mode applied to metrics that share the same name and tags within the interval. + */ +@JsonSerialize( + using = + ObservabilityPipelineAggregateProcessorMode + .ObservabilityPipelineAggregateProcessorModeSerializer.class) +public class ObservabilityPipelineAggregateProcessorMode extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("auto", "sum", "latest", "count", "max", "min", "mean")); + + public static final ObservabilityPipelineAggregateProcessorMode AUTO = + new ObservabilityPipelineAggregateProcessorMode("auto"); + public static final ObservabilityPipelineAggregateProcessorMode SUM = + new ObservabilityPipelineAggregateProcessorMode("sum"); + public static final ObservabilityPipelineAggregateProcessorMode LATEST = + new ObservabilityPipelineAggregateProcessorMode("latest"); + public static final ObservabilityPipelineAggregateProcessorMode COUNT = + new ObservabilityPipelineAggregateProcessorMode("count"); + public static final ObservabilityPipelineAggregateProcessorMode MAX = + new ObservabilityPipelineAggregateProcessorMode("max"); + public static final ObservabilityPipelineAggregateProcessorMode MIN = + new ObservabilityPipelineAggregateProcessorMode("min"); + public static final ObservabilityPipelineAggregateProcessorMode MEAN = + new ObservabilityPipelineAggregateProcessorMode("mean"); + + ObservabilityPipelineAggregateProcessorMode(String value) { + super(value, allowedValues); + } + + public static class ObservabilityPipelineAggregateProcessorModeSerializer + extends StdSerializer { + public ObservabilityPipelineAggregateProcessorModeSerializer( + Class t) { + super(t); + } + + public ObservabilityPipelineAggregateProcessorModeSerializer() { + this(null); + } + + @Override + public void serialize( + ObservabilityPipelineAggregateProcessorMode value, + JsonGenerator jgen, + SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static ObservabilityPipelineAggregateProcessorMode fromValue(String value) { + return new ObservabilityPipelineAggregateProcessorMode(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineAggregateProcessorType.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineAggregateProcessorType.java new file mode 100644 index 00000000000..537de77679e --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineAggregateProcessorType.java @@ -0,0 +1,62 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** The processor type. The value must be aggregate. */ +@JsonSerialize( + using = + ObservabilityPipelineAggregateProcessorType + .ObservabilityPipelineAggregateProcessorTypeSerializer.class) +public class ObservabilityPipelineAggregateProcessorType extends ModelEnum { + + private static final Set allowedValues = new HashSet(Arrays.asList("aggregate")); + + public static final ObservabilityPipelineAggregateProcessorType AGGREGATE = + new ObservabilityPipelineAggregateProcessorType("aggregate"); + + ObservabilityPipelineAggregateProcessorType(String value) { + super(value, allowedValues); + } + + public static class ObservabilityPipelineAggregateProcessorTypeSerializer + extends StdSerializer { + public ObservabilityPipelineAggregateProcessorTypeSerializer( + Class t) { + super(t); + } + + public ObservabilityPipelineAggregateProcessorTypeSerializer() { + this(null); + } + + @Override + public void serialize( + ObservabilityPipelineAggregateProcessorType value, + JsonGenerator jgen, + SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static ObservabilityPipelineAggregateProcessorType fromValue(String value) { + return new ObservabilityPipelineAggregateProcessorType(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineConfigProcessorItem.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineConfigProcessorItem.java index db537b1a3bc..5507e67af27 100644 --- a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineConfigProcessorItem.java +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineConfigProcessorItem.java @@ -1155,6 +1155,109 @@ public ObservabilityPipelineConfigProcessorItem deserialize( e); } + // deserialize ObservabilityPipelineAddMetricTagsProcessor + try { + boolean attemptParsing = true; + // ensure that we respect type coercion as set on the client ObjectMapper + if (ObservabilityPipelineAddMetricTagsProcessor.class.equals(Integer.class) + || ObservabilityPipelineAddMetricTagsProcessor.class.equals(Long.class) + || ObservabilityPipelineAddMetricTagsProcessor.class.equals(Float.class) + || ObservabilityPipelineAddMetricTagsProcessor.class.equals(Double.class) + || ObservabilityPipelineAddMetricTagsProcessor.class.equals(Boolean.class) + || ObservabilityPipelineAddMetricTagsProcessor.class.equals(String.class)) { + attemptParsing = typeCoercion; + if (!attemptParsing) { + attemptParsing |= + ((ObservabilityPipelineAddMetricTagsProcessor.class.equals(Integer.class) + || ObservabilityPipelineAddMetricTagsProcessor.class.equals(Long.class)) + && token == JsonToken.VALUE_NUMBER_INT); + attemptParsing |= + ((ObservabilityPipelineAddMetricTagsProcessor.class.equals(Float.class) + || ObservabilityPipelineAddMetricTagsProcessor.class.equals(Double.class)) + && (token == JsonToken.VALUE_NUMBER_FLOAT + || token == JsonToken.VALUE_NUMBER_INT)); + attemptParsing |= + (ObservabilityPipelineAddMetricTagsProcessor.class.equals(Boolean.class) + && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE)); + attemptParsing |= + (ObservabilityPipelineAddMetricTagsProcessor.class.equals(String.class) + && token == JsonToken.VALUE_STRING); + } + } + if (attemptParsing) { + tmp = + tree.traverse(jp.getCodec()) + .readValueAs(ObservabilityPipelineAddMetricTagsProcessor.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 (!((ObservabilityPipelineAddMetricTagsProcessor) tmp).unparsed) { + deserialized = tmp; + match++; + } + log.log( + Level.FINER, + "Input data matches schema 'ObservabilityPipelineAddMetricTagsProcessor'"); + } + } catch (Exception e) { + // deserialization failed, continue + log.log( + Level.FINER, + "Input data does not match schema 'ObservabilityPipelineAddMetricTagsProcessor'", + e); + } + + // deserialize ObservabilityPipelineAggregateProcessor + try { + boolean attemptParsing = true; + // ensure that we respect type coercion as set on the client ObjectMapper + if (ObservabilityPipelineAggregateProcessor.class.equals(Integer.class) + || ObservabilityPipelineAggregateProcessor.class.equals(Long.class) + || ObservabilityPipelineAggregateProcessor.class.equals(Float.class) + || ObservabilityPipelineAggregateProcessor.class.equals(Double.class) + || ObservabilityPipelineAggregateProcessor.class.equals(Boolean.class) + || ObservabilityPipelineAggregateProcessor.class.equals(String.class)) { + attemptParsing = typeCoercion; + if (!attemptParsing) { + attemptParsing |= + ((ObservabilityPipelineAggregateProcessor.class.equals(Integer.class) + || ObservabilityPipelineAggregateProcessor.class.equals(Long.class)) + && token == JsonToken.VALUE_NUMBER_INT); + attemptParsing |= + ((ObservabilityPipelineAggregateProcessor.class.equals(Float.class) + || ObservabilityPipelineAggregateProcessor.class.equals(Double.class)) + && (token == JsonToken.VALUE_NUMBER_FLOAT + || token == JsonToken.VALUE_NUMBER_INT)); + attemptParsing |= + (ObservabilityPipelineAggregateProcessor.class.equals(Boolean.class) + && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE)); + attemptParsing |= + (ObservabilityPipelineAggregateProcessor.class.equals(String.class) + && token == JsonToken.VALUE_STRING); + } + } + if (attemptParsing) { + tmp = + tree.traverse(jp.getCodec()) + .readValueAs(ObservabilityPipelineAggregateProcessor.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 (!((ObservabilityPipelineAggregateProcessor) tmp).unparsed) { + deserialized = tmp; + match++; + } + log.log( + Level.FINER, "Input data matches schema 'ObservabilityPipelineAggregateProcessor'"); + } + } catch (Exception e) { + // deserialization failed, continue + log.log( + Level.FINER, + "Input data does not match schema 'ObservabilityPipelineAggregateProcessor'", + e); + } + // deserialize ObservabilityPipelineMetricTagsProcessor try { boolean attemptParsing = true; @@ -1206,6 +1309,113 @@ public ObservabilityPipelineConfigProcessorItem deserialize( e); } + // deserialize ObservabilityPipelineRenameMetricTagsProcessor + try { + boolean attemptParsing = true; + // ensure that we respect type coercion as set on the client ObjectMapper + if (ObservabilityPipelineRenameMetricTagsProcessor.class.equals(Integer.class) + || ObservabilityPipelineRenameMetricTagsProcessor.class.equals(Long.class) + || ObservabilityPipelineRenameMetricTagsProcessor.class.equals(Float.class) + || ObservabilityPipelineRenameMetricTagsProcessor.class.equals(Double.class) + || ObservabilityPipelineRenameMetricTagsProcessor.class.equals(Boolean.class) + || ObservabilityPipelineRenameMetricTagsProcessor.class.equals(String.class)) { + attemptParsing = typeCoercion; + if (!attemptParsing) { + attemptParsing |= + ((ObservabilityPipelineRenameMetricTagsProcessor.class.equals(Integer.class) + || ObservabilityPipelineRenameMetricTagsProcessor.class.equals(Long.class)) + && token == JsonToken.VALUE_NUMBER_INT); + attemptParsing |= + ((ObservabilityPipelineRenameMetricTagsProcessor.class.equals(Float.class) + || ObservabilityPipelineRenameMetricTagsProcessor.class.equals( + Double.class)) + && (token == JsonToken.VALUE_NUMBER_FLOAT + || token == JsonToken.VALUE_NUMBER_INT)); + attemptParsing |= + (ObservabilityPipelineRenameMetricTagsProcessor.class.equals(Boolean.class) + && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE)); + attemptParsing |= + (ObservabilityPipelineRenameMetricTagsProcessor.class.equals(String.class) + && token == JsonToken.VALUE_STRING); + } + } + if (attemptParsing) { + tmp = + tree.traverse(jp.getCodec()) + .readValueAs(ObservabilityPipelineRenameMetricTagsProcessor.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 (!((ObservabilityPipelineRenameMetricTagsProcessor) tmp).unparsed) { + deserialized = tmp; + match++; + } + log.log( + Level.FINER, + "Input data matches schema 'ObservabilityPipelineRenameMetricTagsProcessor'"); + } + } catch (Exception e) { + // deserialization failed, continue + log.log( + Level.FINER, + "Input data does not match schema 'ObservabilityPipelineRenameMetricTagsProcessor'", + e); + } + + // deserialize ObservabilityPipelineTagCardinalityLimitProcessor + try { + boolean attemptParsing = true; + // ensure that we respect type coercion as set on the client ObjectMapper + if (ObservabilityPipelineTagCardinalityLimitProcessor.class.equals(Integer.class) + || ObservabilityPipelineTagCardinalityLimitProcessor.class.equals(Long.class) + || ObservabilityPipelineTagCardinalityLimitProcessor.class.equals(Float.class) + || ObservabilityPipelineTagCardinalityLimitProcessor.class.equals(Double.class) + || ObservabilityPipelineTagCardinalityLimitProcessor.class.equals(Boolean.class) + || ObservabilityPipelineTagCardinalityLimitProcessor.class.equals(String.class)) { + attemptParsing = typeCoercion; + if (!attemptParsing) { + attemptParsing |= + ((ObservabilityPipelineTagCardinalityLimitProcessor.class.equals(Integer.class) + || ObservabilityPipelineTagCardinalityLimitProcessor.class.equals( + Long.class)) + && token == JsonToken.VALUE_NUMBER_INT); + attemptParsing |= + ((ObservabilityPipelineTagCardinalityLimitProcessor.class.equals(Float.class) + || ObservabilityPipelineTagCardinalityLimitProcessor.class.equals( + Double.class)) + && (token == JsonToken.VALUE_NUMBER_FLOAT + || token == JsonToken.VALUE_NUMBER_INT)); + attemptParsing |= + (ObservabilityPipelineTagCardinalityLimitProcessor.class.equals(Boolean.class) + && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE)); + attemptParsing |= + (ObservabilityPipelineTagCardinalityLimitProcessor.class.equals(String.class) + && token == JsonToken.VALUE_STRING); + } + } + if (attemptParsing) { + tmp = + tree.traverse(jp.getCodec()) + .readValueAs(ObservabilityPipelineTagCardinalityLimitProcessor.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 (!((ObservabilityPipelineTagCardinalityLimitProcessor) tmp).unparsed) { + deserialized = tmp; + match++; + } + log.log( + Level.FINER, + "Input data matches schema 'ObservabilityPipelineTagCardinalityLimitProcessor'"); + } + } catch (Exception e) { + // deserialization failed, continue + log.log( + Level.FINER, + "Input data does not match schema 'ObservabilityPipelineTagCardinalityLimitProcessor'", + e); + } + ObservabilityPipelineConfigProcessorItem ret = new ObservabilityPipelineConfigProcessorItem(); if (match == 1) { ret.setActualInstance(deserialized); @@ -1342,11 +1552,33 @@ public ObservabilityPipelineConfigProcessorItem(ObservabilityPipelineThrottlePro setActualInstance(o); } + public ObservabilityPipelineConfigProcessorItem(ObservabilityPipelineAddMetricTagsProcessor o) { + super("oneOf", Boolean.FALSE); + setActualInstance(o); + } + + public ObservabilityPipelineConfigProcessorItem(ObservabilityPipelineAggregateProcessor o) { + super("oneOf", Boolean.FALSE); + setActualInstance(o); + } + public ObservabilityPipelineConfigProcessorItem(ObservabilityPipelineMetricTagsProcessor o) { super("oneOf", Boolean.FALSE); setActualInstance(o); } + public ObservabilityPipelineConfigProcessorItem( + ObservabilityPipelineRenameMetricTagsProcessor o) { + super("oneOf", Boolean.FALSE); + setActualInstance(o); + } + + public ObservabilityPipelineConfigProcessorItem( + ObservabilityPipelineTagCardinalityLimitProcessor o) { + super("oneOf", Boolean.FALSE); + setActualInstance(o); + } + static { schemas.put( "ObservabilityPipelineFilterProcessor", @@ -1411,9 +1643,21 @@ public ObservabilityPipelineConfigProcessorItem(ObservabilityPipelineMetricTagsP schemas.put( "ObservabilityPipelineThrottleProcessor", new GenericType() {}); + schemas.put( + "ObservabilityPipelineAddMetricTagsProcessor", + new GenericType() {}); + schemas.put( + "ObservabilityPipelineAggregateProcessor", + new GenericType() {}); schemas.put( "ObservabilityPipelineMetricTagsProcessor", new GenericType() {}); + schemas.put( + "ObservabilityPipelineRenameMetricTagsProcessor", + new GenericType() {}); + schemas.put( + "ObservabilityPipelineTagCardinalityLimitProcessor", + new GenericType() {}); JSON.registerDescendants( ObservabilityPipelineConfigProcessorItem.class, Collections.unmodifiableMap(schemas)); } @@ -1436,7 +1680,9 @@ public Map getSchemas() { * ObservabilityPipelineRemoveFieldsProcessor, ObservabilityPipelineRenameFieldsProcessor, * ObservabilityPipelineSampleProcessor, ObservabilityPipelineSensitiveDataScannerProcessor, * ObservabilityPipelineSplitArrayProcessor, ObservabilityPipelineThrottleProcessor, - * ObservabilityPipelineMetricTagsProcessor + * ObservabilityPipelineAddMetricTagsProcessor, ObservabilityPipelineAggregateProcessor, + * ObservabilityPipelineMetricTagsProcessor, ObservabilityPipelineRenameMetricTagsProcessor, + * ObservabilityPipelineTagCardinalityLimitProcessor * *

It could be an instance of the 'oneOf' schemas. The oneOf child schemas may themselves be a * composed schema (allOf, anyOf, oneOf). @@ -1550,11 +1796,33 @@ public void setActualInstance(Object instance) { super.setActualInstance(instance); return; } + if (JSON.isInstanceOf( + ObservabilityPipelineAddMetricTagsProcessor.class, instance, new HashSet>())) { + super.setActualInstance(instance); + return; + } + if (JSON.isInstanceOf( + ObservabilityPipelineAggregateProcessor.class, instance, new HashSet>())) { + super.setActualInstance(instance); + return; + } if (JSON.isInstanceOf( ObservabilityPipelineMetricTagsProcessor.class, instance, new HashSet>())) { super.setActualInstance(instance); return; } + if (JSON.isInstanceOf( + ObservabilityPipelineRenameMetricTagsProcessor.class, instance, new HashSet>())) { + super.setActualInstance(instance); + return; + } + if (JSON.isInstanceOf( + ObservabilityPipelineTagCardinalityLimitProcessor.class, + instance, + new HashSet>())) { + super.setActualInstance(instance); + return; + } if (JSON.isInstanceOf(UnparsedObject.class, instance, new HashSet>())) { super.setActualInstance(instance); @@ -1574,7 +1842,10 @@ public void setActualInstance(Object instance) { + " ObservabilityPipelineRenameFieldsProcessor, ObservabilityPipelineSampleProcessor," + " ObservabilityPipelineSensitiveDataScannerProcessor," + " ObservabilityPipelineSplitArrayProcessor, ObservabilityPipelineThrottleProcessor," - + " ObservabilityPipelineMetricTagsProcessor"); + + " ObservabilityPipelineAddMetricTagsProcessor," + + " ObservabilityPipelineAggregateProcessor, ObservabilityPipelineMetricTagsProcessor," + + " ObservabilityPipelineRenameMetricTagsProcessor," + + " ObservabilityPipelineTagCardinalityLimitProcessor"); } /** @@ -1589,7 +1860,9 @@ public void setActualInstance(Object instance) { * ObservabilityPipelineRemoveFieldsProcessor, ObservabilityPipelineRenameFieldsProcessor, * ObservabilityPipelineSampleProcessor, ObservabilityPipelineSensitiveDataScannerProcessor, * ObservabilityPipelineSplitArrayProcessor, ObservabilityPipelineThrottleProcessor, - * ObservabilityPipelineMetricTagsProcessor + * ObservabilityPipelineAddMetricTagsProcessor, ObservabilityPipelineAggregateProcessor, + * ObservabilityPipelineMetricTagsProcessor, ObservabilityPipelineRenameMetricTagsProcessor, + * ObservabilityPipelineTagCardinalityLimitProcessor * * @return The actual instance (ObservabilityPipelineFilterProcessor, * ObservabilityPipelineAddEnvVarsProcessor, ObservabilityPipelineAddFieldsProcessor, @@ -1603,7 +1876,9 @@ public void setActualInstance(Object instance) { * ObservabilityPipelineRenameFieldsProcessor, ObservabilityPipelineSampleProcessor, * ObservabilityPipelineSensitiveDataScannerProcessor, * ObservabilityPipelineSplitArrayProcessor, ObservabilityPipelineThrottleProcessor, - * ObservabilityPipelineMetricTagsProcessor) + * ObservabilityPipelineAddMetricTagsProcessor, ObservabilityPipelineAggregateProcessor, + * ObservabilityPipelineMetricTagsProcessor, ObservabilityPipelineRenameMetricTagsProcessor, + * ObservabilityPipelineTagCardinalityLimitProcessor) */ @Override public Object getActualInstance() { @@ -1868,6 +2143,31 @@ public ObservabilityPipelineThrottleProcessor getObservabilityPipelineThrottlePr return (ObservabilityPipelineThrottleProcessor) super.getActualInstance(); } + /** + * Get the actual instance of `ObservabilityPipelineAddMetricTagsProcessor`. If the actual + * instance is not `ObservabilityPipelineAddMetricTagsProcessor`, the ClassCastException will be + * thrown. + * + * @return The actual instance of `ObservabilityPipelineAddMetricTagsProcessor` + * @throws ClassCastException if the instance is not `ObservabilityPipelineAddMetricTagsProcessor` + */ + public ObservabilityPipelineAddMetricTagsProcessor + getObservabilityPipelineAddMetricTagsProcessor() throws ClassCastException { + return (ObservabilityPipelineAddMetricTagsProcessor) super.getActualInstance(); + } + + /** + * Get the actual instance of `ObservabilityPipelineAggregateProcessor`. If the actual instance is + * not `ObservabilityPipelineAggregateProcessor`, the ClassCastException will be thrown. + * + * @return The actual instance of `ObservabilityPipelineAggregateProcessor` + * @throws ClassCastException if the instance is not `ObservabilityPipelineAggregateProcessor` + */ + public ObservabilityPipelineAggregateProcessor getObservabilityPipelineAggregateProcessor() + throws ClassCastException { + return (ObservabilityPipelineAggregateProcessor) super.getActualInstance(); + } + /** * Get the actual instance of `ObservabilityPipelineMetricTagsProcessor`. If the actual instance * is not `ObservabilityPipelineMetricTagsProcessor`, the ClassCastException will be thrown. @@ -1879,4 +2179,32 @@ public ObservabilityPipelineMetricTagsProcessor getObservabilityPipelineMetricTa throws ClassCastException { return (ObservabilityPipelineMetricTagsProcessor) super.getActualInstance(); } + + /** + * Get the actual instance of `ObservabilityPipelineRenameMetricTagsProcessor`. If the actual + * instance is not `ObservabilityPipelineRenameMetricTagsProcessor`, the ClassCastException will + * be thrown. + * + * @return The actual instance of `ObservabilityPipelineRenameMetricTagsProcessor` + * @throws ClassCastException if the instance is not + * `ObservabilityPipelineRenameMetricTagsProcessor` + */ + public ObservabilityPipelineRenameMetricTagsProcessor + getObservabilityPipelineRenameMetricTagsProcessor() throws ClassCastException { + return (ObservabilityPipelineRenameMetricTagsProcessor) super.getActualInstance(); + } + + /** + * Get the actual instance of `ObservabilityPipelineTagCardinalityLimitProcessor`. If the actual + * instance is not `ObservabilityPipelineTagCardinalityLimitProcessor`, the ClassCastException + * will be thrown. + * + * @return The actual instance of `ObservabilityPipelineTagCardinalityLimitProcessor` + * @throws ClassCastException if the instance is not + * `ObservabilityPipelineTagCardinalityLimitProcessor` + */ + public ObservabilityPipelineTagCardinalityLimitProcessor + getObservabilityPipelineTagCardinalityLimitProcessor() throws ClassCastException { + return (ObservabilityPipelineTagCardinalityLimitProcessor) super.getActualInstance(); + } } diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineRenameMetricTagsProcessor.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineRenameMetricTagsProcessor.java new file mode 100644 index 00000000000..087766d97d3 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineRenameMetricTagsProcessor.java @@ -0,0 +1,316 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** + * The rename_metric_tags processor changes the keys of tags on metrics. + * + *

Supported pipeline types: metrics + */ +@JsonPropertyOrder({ + ObservabilityPipelineRenameMetricTagsProcessor.JSON_PROPERTY_DISPLAY_NAME, + ObservabilityPipelineRenameMetricTagsProcessor.JSON_PROPERTY_ENABLED, + ObservabilityPipelineRenameMetricTagsProcessor.JSON_PROPERTY_ID, + ObservabilityPipelineRenameMetricTagsProcessor.JSON_PROPERTY_INCLUDE, + ObservabilityPipelineRenameMetricTagsProcessor.JSON_PROPERTY_TAGS, + ObservabilityPipelineRenameMetricTagsProcessor.JSON_PROPERTY_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class ObservabilityPipelineRenameMetricTagsProcessor { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DISPLAY_NAME = "display_name"; + private String displayName; + + public static final String JSON_PROPERTY_ENABLED = "enabled"; + private Boolean enabled; + + public static final String JSON_PROPERTY_ID = "id"; + private String id; + + public static final String JSON_PROPERTY_INCLUDE = "include"; + private String include; + + public static final String JSON_PROPERTY_TAGS = "tags"; + private List tags = new ArrayList<>(); + + public static final String JSON_PROPERTY_TYPE = "type"; + private ObservabilityPipelineRenameMetricTagsProcessorType type = + ObservabilityPipelineRenameMetricTagsProcessorType.RENAME_METRIC_TAGS; + + public ObservabilityPipelineRenameMetricTagsProcessor() {} + + @JsonCreator + public ObservabilityPipelineRenameMetricTagsProcessor( + @JsonProperty(required = true, value = JSON_PROPERTY_ENABLED) Boolean enabled, + @JsonProperty(required = true, value = JSON_PROPERTY_ID) String id, + @JsonProperty(required = true, value = JSON_PROPERTY_INCLUDE) String include, + @JsonProperty(required = true, value = JSON_PROPERTY_TAGS) + List tags, + @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) + ObservabilityPipelineRenameMetricTagsProcessorType type) { + this.enabled = enabled; + this.id = id; + this.include = include; + this.tags = tags; + this.type = type; + this.unparsed |= !type.isValid(); + } + + public ObservabilityPipelineRenameMetricTagsProcessor displayName(String displayName) { + this.displayName = displayName; + return this; + } + + /** + * The display name for a component. + * + * @return displayName + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DISPLAY_NAME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getDisplayName() { + return displayName; + } + + public void setDisplayName(String displayName) { + this.displayName = displayName; + } + + public ObservabilityPipelineRenameMetricTagsProcessor enabled(Boolean enabled) { + this.enabled = enabled; + return this; + } + + /** + * Indicates whether the processor is enabled. + * + * @return enabled + */ + @JsonProperty(JSON_PROPERTY_ENABLED) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + public ObservabilityPipelineRenameMetricTagsProcessor id(String id) { + this.id = id; + return this; + } + + /** + * The unique identifier for this component. Used in other parts of the pipeline to reference this + * component (for example, as the input to downstream components). + * + * @return id + */ + @JsonProperty(JSON_PROPERTY_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public ObservabilityPipelineRenameMetricTagsProcessor include(String include) { + this.include = include; + return this; + } + + /** + * A Datadog search query used to determine which metrics this processor targets. + * + * @return include + */ + @JsonProperty(JSON_PROPERTY_INCLUDE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getInclude() { + return include; + } + + public void setInclude(String include) { + this.include = include; + } + + public ObservabilityPipelineRenameMetricTagsProcessor tags( + List tags) { + this.tags = tags; + for (ObservabilityPipelineRenameMetricTagsProcessorTag item : tags) { + this.unparsed |= item.unparsed; + } + return this; + } + + public ObservabilityPipelineRenameMetricTagsProcessor addTagsItem( + ObservabilityPipelineRenameMetricTagsProcessorTag tagsItem) { + this.tags.add(tagsItem); + this.unparsed |= tagsItem.unparsed; + return this; + } + + /** + * A list of rename rules specifying which tag keys to rename on each metric. + * + * @return tags + */ + @JsonProperty(JSON_PROPERTY_TAGS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getTags() { + return tags; + } + + public void setTags(List tags) { + this.tags = tags; + } + + public ObservabilityPipelineRenameMetricTagsProcessor type( + ObservabilityPipelineRenameMetricTagsProcessorType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * The processor type. The value must be rename_metric_tags. + * + * @return type + */ + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ObservabilityPipelineRenameMetricTagsProcessorType getType() { + return type; + } + + public void setType(ObservabilityPipelineRenameMetricTagsProcessorType type) { + if (!type.isValid()) { + this.unparsed = true; + } + this.type = type; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return ObservabilityPipelineRenameMetricTagsProcessor + */ + @JsonAnySetter + public ObservabilityPipelineRenameMetricTagsProcessor putAdditionalProperty( + String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this ObservabilityPipelineRenameMetricTagsProcessor object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ObservabilityPipelineRenameMetricTagsProcessor observabilityPipelineRenameMetricTagsProcessor = + (ObservabilityPipelineRenameMetricTagsProcessor) o; + return Objects.equals( + this.displayName, observabilityPipelineRenameMetricTagsProcessor.displayName) + && Objects.equals(this.enabled, observabilityPipelineRenameMetricTagsProcessor.enabled) + && Objects.equals(this.id, observabilityPipelineRenameMetricTagsProcessor.id) + && Objects.equals(this.include, observabilityPipelineRenameMetricTagsProcessor.include) + && Objects.equals(this.tags, observabilityPipelineRenameMetricTagsProcessor.tags) + && Objects.equals(this.type, observabilityPipelineRenameMetricTagsProcessor.type) + && Objects.equals( + this.additionalProperties, + observabilityPipelineRenameMetricTagsProcessor.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(displayName, enabled, id, include, tags, type, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ObservabilityPipelineRenameMetricTagsProcessor {\n"); + sb.append(" displayName: ").append(toIndentedString(displayName)).append("\n"); + sb.append(" enabled: ").append(toIndentedString(enabled)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" include: ").append(toIndentedString(include)).append("\n"); + sb.append(" tags: ").append(toIndentedString(tags)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineRenameMetricTagsProcessorTag.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineRenameMetricTagsProcessorTag.java new file mode 100644 index 00000000000..2f17058fcad --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineRenameMetricTagsProcessorTag.java @@ -0,0 +1,178 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** Defines how to rename a tag on metric events. */ +@JsonPropertyOrder({ + ObservabilityPipelineRenameMetricTagsProcessorTag.JSON_PROPERTY_RENAME_TO, + ObservabilityPipelineRenameMetricTagsProcessorTag.JSON_PROPERTY_TAG +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class ObservabilityPipelineRenameMetricTagsProcessorTag { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_RENAME_TO = "rename_to"; + private String renameTo; + + public static final String JSON_PROPERTY_TAG = "tag"; + private String tag; + + public ObservabilityPipelineRenameMetricTagsProcessorTag() {} + + @JsonCreator + public ObservabilityPipelineRenameMetricTagsProcessorTag( + @JsonProperty(required = true, value = JSON_PROPERTY_RENAME_TO) String renameTo, + @JsonProperty(required = true, value = JSON_PROPERTY_TAG) String tag) { + this.renameTo = renameTo; + this.tag = tag; + } + + public ObservabilityPipelineRenameMetricTagsProcessorTag renameTo(String renameTo) { + this.renameTo = renameTo; + return this; + } + + /** + * The new tag key to assign in place of the original. + * + * @return renameTo + */ + @JsonProperty(JSON_PROPERTY_RENAME_TO) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getRenameTo() { + return renameTo; + } + + public void setRenameTo(String renameTo) { + this.renameTo = renameTo; + } + + public ObservabilityPipelineRenameMetricTagsProcessorTag tag(String tag) { + this.tag = tag; + return this; + } + + /** + * The original tag key on the metric event. + * + * @return tag + */ + @JsonProperty(JSON_PROPERTY_TAG) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return ObservabilityPipelineRenameMetricTagsProcessorTag + */ + @JsonAnySetter + public ObservabilityPipelineRenameMetricTagsProcessorTag putAdditionalProperty( + String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this ObservabilityPipelineRenameMetricTagsProcessorTag object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ObservabilityPipelineRenameMetricTagsProcessorTag + observabilityPipelineRenameMetricTagsProcessorTag = + (ObservabilityPipelineRenameMetricTagsProcessorTag) o; + return Objects.equals(this.renameTo, observabilityPipelineRenameMetricTagsProcessorTag.renameTo) + && Objects.equals(this.tag, observabilityPipelineRenameMetricTagsProcessorTag.tag) + && Objects.equals( + this.additionalProperties, + observabilityPipelineRenameMetricTagsProcessorTag.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(renameTo, tag, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ObservabilityPipelineRenameMetricTagsProcessorTag {\n"); + sb.append(" renameTo: ").append(toIndentedString(renameTo)).append("\n"); + sb.append(" tag: ").append(toIndentedString(tag)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineRenameMetricTagsProcessorType.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineRenameMetricTagsProcessorType.java new file mode 100644 index 00000000000..8833a1cc1aa --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineRenameMetricTagsProcessorType.java @@ -0,0 +1,63 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** The processor type. The value must be rename_metric_tags. */ +@JsonSerialize( + using = + ObservabilityPipelineRenameMetricTagsProcessorType + .ObservabilityPipelineRenameMetricTagsProcessorTypeSerializer.class) +public class ObservabilityPipelineRenameMetricTagsProcessorType extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("rename_metric_tags")); + + public static final ObservabilityPipelineRenameMetricTagsProcessorType RENAME_METRIC_TAGS = + new ObservabilityPipelineRenameMetricTagsProcessorType("rename_metric_tags"); + + ObservabilityPipelineRenameMetricTagsProcessorType(String value) { + super(value, allowedValues); + } + + public static class ObservabilityPipelineRenameMetricTagsProcessorTypeSerializer + extends StdSerializer { + public ObservabilityPipelineRenameMetricTagsProcessorTypeSerializer( + Class t) { + super(t); + } + + public ObservabilityPipelineRenameMetricTagsProcessorTypeSerializer() { + this(null); + } + + @Override + public void serialize( + ObservabilityPipelineRenameMetricTagsProcessorType value, + JsonGenerator jgen, + SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static ObservabilityPipelineRenameMetricTagsProcessorType fromValue(String value) { + return new ObservabilityPipelineRenameMetricTagsProcessorType(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessor.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessor.java new file mode 100644 index 00000000000..18f6e5f55c5 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessor.java @@ -0,0 +1,403 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** + * The tag_cardinality_limit processor caps the number of distinct tag value + * combinations on metrics, dropping tags or events once the limit is exceeded. + * + *

Supported pipeline types: metrics + */ +@JsonPropertyOrder({ + ObservabilityPipelineTagCardinalityLimitProcessor.JSON_PROPERTY_DISPLAY_NAME, + ObservabilityPipelineTagCardinalityLimitProcessor.JSON_PROPERTY_ENABLED, + ObservabilityPipelineTagCardinalityLimitProcessor.JSON_PROPERTY_ID, + ObservabilityPipelineTagCardinalityLimitProcessor.JSON_PROPERTY_INCLUDE, + ObservabilityPipelineTagCardinalityLimitProcessor.JSON_PROPERTY_LIMIT_EXCEEDED_ACTION, + ObservabilityPipelineTagCardinalityLimitProcessor.JSON_PROPERTY_PER_METRIC_LIMITS, + ObservabilityPipelineTagCardinalityLimitProcessor.JSON_PROPERTY_TYPE, + ObservabilityPipelineTagCardinalityLimitProcessor.JSON_PROPERTY_VALUE_LIMIT +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class ObservabilityPipelineTagCardinalityLimitProcessor { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DISPLAY_NAME = "display_name"; + private String displayName; + + public static final String JSON_PROPERTY_ENABLED = "enabled"; + private Boolean enabled; + + public static final String JSON_PROPERTY_ID = "id"; + private String id; + + public static final String JSON_PROPERTY_INCLUDE = "include"; + private String include; + + public static final String JSON_PROPERTY_LIMIT_EXCEEDED_ACTION = "limit_exceeded_action"; + private ObservabilityPipelineTagCardinalityLimitProcessorAction limitExceededAction; + + public static final String JSON_PROPERTY_PER_METRIC_LIMITS = "per_metric_limits"; + private List perMetricLimits = + null; + + public static final String JSON_PROPERTY_TYPE = "type"; + private ObservabilityPipelineTagCardinalityLimitProcessorType type = + ObservabilityPipelineTagCardinalityLimitProcessorType.TAG_CARDINALITY_LIMIT; + + public static final String JSON_PROPERTY_VALUE_LIMIT = "value_limit"; + private Long valueLimit; + + public ObservabilityPipelineTagCardinalityLimitProcessor() {} + + @JsonCreator + public ObservabilityPipelineTagCardinalityLimitProcessor( + @JsonProperty(required = true, value = JSON_PROPERTY_ENABLED) Boolean enabled, + @JsonProperty(required = true, value = JSON_PROPERTY_ID) String id, + @JsonProperty(required = true, value = JSON_PROPERTY_INCLUDE) String include, + @JsonProperty(required = true, value = JSON_PROPERTY_LIMIT_EXCEEDED_ACTION) + ObservabilityPipelineTagCardinalityLimitProcessorAction limitExceededAction, + @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) + ObservabilityPipelineTagCardinalityLimitProcessorType type, + @JsonProperty(required = true, value = JSON_PROPERTY_VALUE_LIMIT) Long valueLimit) { + this.enabled = enabled; + this.id = id; + this.include = include; + this.limitExceededAction = limitExceededAction; + this.unparsed |= !limitExceededAction.isValid(); + this.type = type; + this.unparsed |= !type.isValid(); + this.valueLimit = valueLimit; + } + + public ObservabilityPipelineTagCardinalityLimitProcessor displayName(String displayName) { + this.displayName = displayName; + return this; + } + + /** + * The display name for a component. + * + * @return displayName + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DISPLAY_NAME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getDisplayName() { + return displayName; + } + + public void setDisplayName(String displayName) { + this.displayName = displayName; + } + + public ObservabilityPipelineTagCardinalityLimitProcessor enabled(Boolean enabled) { + this.enabled = enabled; + return this; + } + + /** + * Indicates whether the processor is enabled. + * + * @return enabled + */ + @JsonProperty(JSON_PROPERTY_ENABLED) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + public ObservabilityPipelineTagCardinalityLimitProcessor id(String id) { + this.id = id; + return this; + } + + /** + * The unique identifier for this component. Used in other parts of the pipeline to reference this + * component (for example, as the input to downstream components). + * + * @return id + */ + @JsonProperty(JSON_PROPERTY_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public ObservabilityPipelineTagCardinalityLimitProcessor include(String include) { + this.include = include; + return this; + } + + /** + * A Datadog search query used to determine which metrics this processor targets. + * + * @return include + */ + @JsonProperty(JSON_PROPERTY_INCLUDE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getInclude() { + return include; + } + + public void setInclude(String include) { + this.include = include; + } + + public ObservabilityPipelineTagCardinalityLimitProcessor limitExceededAction( + ObservabilityPipelineTagCardinalityLimitProcessorAction limitExceededAction) { + this.limitExceededAction = limitExceededAction; + this.unparsed |= !limitExceededAction.isValid(); + return this; + } + + /** + * The action to take when the cardinality limit is exceeded. + * + * @return limitExceededAction + */ + @JsonProperty(JSON_PROPERTY_LIMIT_EXCEEDED_ACTION) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ObservabilityPipelineTagCardinalityLimitProcessorAction getLimitExceededAction() { + return limitExceededAction; + } + + public void setLimitExceededAction( + ObservabilityPipelineTagCardinalityLimitProcessorAction limitExceededAction) { + if (!limitExceededAction.isValid()) { + this.unparsed = true; + } + this.limitExceededAction = limitExceededAction; + } + + public ObservabilityPipelineTagCardinalityLimitProcessor perMetricLimits( + List perMetricLimits) { + this.perMetricLimits = perMetricLimits; + for (ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit item : perMetricLimits) { + this.unparsed |= item.unparsed; + } + return this; + } + + public ObservabilityPipelineTagCardinalityLimitProcessor addPerMetricLimitsItem( + ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit perMetricLimitsItem) { + if (this.perMetricLimits == null) { + this.perMetricLimits = new ArrayList<>(); + } + this.perMetricLimits.add(perMetricLimitsItem); + this.unparsed |= perMetricLimitsItem.unparsed; + return this; + } + + /** + * A list of per-metric cardinality overrides that take precedence over the default + * value_limit. + * + * @return perMetricLimits + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_PER_METRIC_LIMITS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List + getPerMetricLimits() { + return perMetricLimits; + } + + public void setPerMetricLimits( + List perMetricLimits) { + this.perMetricLimits = perMetricLimits; + } + + public ObservabilityPipelineTagCardinalityLimitProcessor type( + ObservabilityPipelineTagCardinalityLimitProcessorType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * The processor type. The value must be tag_cardinality_limit. + * + * @return type + */ + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ObservabilityPipelineTagCardinalityLimitProcessorType getType() { + return type; + } + + public void setType(ObservabilityPipelineTagCardinalityLimitProcessorType type) { + if (!type.isValid()) { + this.unparsed = true; + } + this.type = type; + } + + public ObservabilityPipelineTagCardinalityLimitProcessor valueLimit(Long valueLimit) { + this.valueLimit = valueLimit; + return this; + } + + /** + * The default maximum number of distinct tag value combinations allowed per metric. minimum: 0 + * maximum: 1000000 + * + * @return valueLimit + */ + @JsonProperty(JSON_PROPERTY_VALUE_LIMIT) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public Long getValueLimit() { + return valueLimit; + } + + public void setValueLimit(Long valueLimit) { + this.valueLimit = valueLimit; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return ObservabilityPipelineTagCardinalityLimitProcessor + */ + @JsonAnySetter + public ObservabilityPipelineTagCardinalityLimitProcessor putAdditionalProperty( + String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this ObservabilityPipelineTagCardinalityLimitProcessor object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ObservabilityPipelineTagCardinalityLimitProcessor + observabilityPipelineTagCardinalityLimitProcessor = + (ObservabilityPipelineTagCardinalityLimitProcessor) o; + return Objects.equals( + this.displayName, observabilityPipelineTagCardinalityLimitProcessor.displayName) + && Objects.equals(this.enabled, observabilityPipelineTagCardinalityLimitProcessor.enabled) + && Objects.equals(this.id, observabilityPipelineTagCardinalityLimitProcessor.id) + && Objects.equals(this.include, observabilityPipelineTagCardinalityLimitProcessor.include) + && Objects.equals( + this.limitExceededAction, + observabilityPipelineTagCardinalityLimitProcessor.limitExceededAction) + && Objects.equals( + this.perMetricLimits, observabilityPipelineTagCardinalityLimitProcessor.perMetricLimits) + && Objects.equals(this.type, observabilityPipelineTagCardinalityLimitProcessor.type) + && Objects.equals( + this.valueLimit, observabilityPipelineTagCardinalityLimitProcessor.valueLimit) + && Objects.equals( + this.additionalProperties, + observabilityPipelineTagCardinalityLimitProcessor.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash( + displayName, + enabled, + id, + include, + limitExceededAction, + perMetricLimits, + type, + valueLimit, + additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ObservabilityPipelineTagCardinalityLimitProcessor {\n"); + sb.append(" displayName: ").append(toIndentedString(displayName)).append("\n"); + sb.append(" enabled: ").append(toIndentedString(enabled)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" include: ").append(toIndentedString(include)).append("\n"); + sb.append(" limitExceededAction: ") + .append(toIndentedString(limitExceededAction)) + .append("\n"); + sb.append(" perMetricLimits: ").append(toIndentedString(perMetricLimits)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append(" valueLimit: ").append(toIndentedString(valueLimit)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorAction.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorAction.java new file mode 100644 index 00000000000..2407a428672 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorAction.java @@ -0,0 +1,65 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** The action to take when the cardinality limit is exceeded. */ +@JsonSerialize( + using = + ObservabilityPipelineTagCardinalityLimitProcessorAction + .ObservabilityPipelineTagCardinalityLimitProcessorActionSerializer.class) +public class ObservabilityPipelineTagCardinalityLimitProcessorAction extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("drop_tag", "drop_event")); + + public static final ObservabilityPipelineTagCardinalityLimitProcessorAction DROP_TAG = + new ObservabilityPipelineTagCardinalityLimitProcessorAction("drop_tag"); + public static final ObservabilityPipelineTagCardinalityLimitProcessorAction DROP_EVENT = + new ObservabilityPipelineTagCardinalityLimitProcessorAction("drop_event"); + + ObservabilityPipelineTagCardinalityLimitProcessorAction(String value) { + super(value, allowedValues); + } + + public static class ObservabilityPipelineTagCardinalityLimitProcessorActionSerializer + extends StdSerializer { + public ObservabilityPipelineTagCardinalityLimitProcessorActionSerializer( + Class t) { + super(t); + } + + public ObservabilityPipelineTagCardinalityLimitProcessorActionSerializer() { + this(null); + } + + @Override + public void serialize( + ObservabilityPipelineTagCardinalityLimitProcessorAction value, + JsonGenerator jgen, + SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static ObservabilityPipelineTagCardinalityLimitProcessorAction fromValue(String value) { + return new ObservabilityPipelineTagCardinalityLimitProcessorAction(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit.java new file mode 100644 index 00000000000..583762bf642 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit.java @@ -0,0 +1,313 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** A cardinality override applied to a specific metric. */ +@JsonPropertyOrder({ + ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit + .JSON_PROPERTY_LIMIT_EXCEEDED_ACTION, + ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit.JSON_PROPERTY_METRIC_NAME, + ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit.JSON_PROPERTY_MODE, + ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit.JSON_PROPERTY_PER_TAG_LIMITS, + ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit.JSON_PROPERTY_VALUE_LIMIT +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_LIMIT_EXCEEDED_ACTION = "limit_exceeded_action"; + private ObservabilityPipelineTagCardinalityLimitProcessorAction limitExceededAction; + + public static final String JSON_PROPERTY_METRIC_NAME = "metric_name"; + private String metricName; + + public static final String JSON_PROPERTY_MODE = "mode"; + private ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode mode; + + public static final String JSON_PROPERTY_PER_TAG_LIMITS = "per_tag_limits"; + private List perTagLimits = null; + + public static final String JSON_PROPERTY_VALUE_LIMIT = "value_limit"; + private Long valueLimit; + + public ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit() {} + + @JsonCreator + public ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit( + @JsonProperty(required = true, value = JSON_PROPERTY_LIMIT_EXCEEDED_ACTION) + ObservabilityPipelineTagCardinalityLimitProcessorAction limitExceededAction, + @JsonProperty(required = true, value = JSON_PROPERTY_METRIC_NAME) String metricName, + @JsonProperty(required = true, value = JSON_PROPERTY_MODE) + ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode mode, + @JsonProperty(required = true, value = JSON_PROPERTY_VALUE_LIMIT) Long valueLimit) { + this.limitExceededAction = limitExceededAction; + this.unparsed |= !limitExceededAction.isValid(); + this.metricName = metricName; + this.mode = mode; + this.unparsed |= !mode.isValid(); + this.valueLimit = valueLimit; + } + + public ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit limitExceededAction( + ObservabilityPipelineTagCardinalityLimitProcessorAction limitExceededAction) { + this.limitExceededAction = limitExceededAction; + this.unparsed |= !limitExceededAction.isValid(); + return this; + } + + /** + * The action to take when the cardinality limit is exceeded. + * + * @return limitExceededAction + */ + @JsonProperty(JSON_PROPERTY_LIMIT_EXCEEDED_ACTION) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ObservabilityPipelineTagCardinalityLimitProcessorAction getLimitExceededAction() { + return limitExceededAction; + } + + public void setLimitExceededAction( + ObservabilityPipelineTagCardinalityLimitProcessorAction limitExceededAction) { + if (!limitExceededAction.isValid()) { + this.unparsed = true; + } + this.limitExceededAction = limitExceededAction; + } + + public ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit metricName( + String metricName) { + this.metricName = metricName; + return this; + } + + /** + * The name of the metric this override applies to. + * + * @return metricName + */ + @JsonProperty(JSON_PROPERTY_METRIC_NAME) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getMetricName() { + return metricName; + } + + public void setMetricName(String metricName) { + this.metricName = metricName; + } + + public ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit mode( + ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode mode) { + this.mode = mode; + this.unparsed |= !mode.isValid(); + return this; + } + + /** + * How the per-metric override is applied. tracked enforces a custom limit; + * excluded skips the metric entirely. + * + * @return mode + */ + @JsonProperty(JSON_PROPERTY_MODE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode getMode() { + return mode; + } + + public void setMode(ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode mode) { + if (!mode.isValid()) { + this.unparsed = true; + } + this.mode = mode; + } + + public ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit perTagLimits( + List perTagLimits) { + this.perTagLimits = perTagLimits; + for (ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit item : perTagLimits) { + this.unparsed |= item.unparsed; + } + return this; + } + + public ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit addPerTagLimitsItem( + ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit perTagLimitsItem) { + if (this.perTagLimits == null) { + this.perTagLimits = new ArrayList<>(); + } + this.perTagLimits.add(perTagLimitsItem); + this.unparsed |= perTagLimitsItem.unparsed; + return this; + } + + /** + * A list of per-tag cardinality overrides that apply within this metric. + * + * @return perTagLimits + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_PER_TAG_LIMITS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getPerTagLimits() { + return perTagLimits; + } + + public void setPerTagLimits( + List perTagLimits) { + this.perTagLimits = perTagLimits; + } + + public ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit valueLimit( + Long valueLimit) { + this.valueLimit = valueLimit; + return this; + } + + /** + * The maximum number of distinct tag value combinations allowed for this metric. minimum: 0 + * maximum: 1000000 + * + * @return valueLimit + */ + @JsonProperty(JSON_PROPERTY_VALUE_LIMIT) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public Long getValueLimit() { + return valueLimit; + } + + public void setValueLimit(Long valueLimit) { + this.valueLimit = valueLimit; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit + */ + @JsonAnySetter + public ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit putAdditionalProperty( + String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** + * Return true if this ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit object is + * equal to o. + */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit + observabilityPipelineTagCardinalityLimitProcessorPerMetricLimit = + (ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit) o; + return Objects.equals( + this.limitExceededAction, + observabilityPipelineTagCardinalityLimitProcessorPerMetricLimit.limitExceededAction) + && Objects.equals( + this.metricName, + observabilityPipelineTagCardinalityLimitProcessorPerMetricLimit.metricName) + && Objects.equals( + this.mode, observabilityPipelineTagCardinalityLimitProcessorPerMetricLimit.mode) + && Objects.equals( + this.perTagLimits, + observabilityPipelineTagCardinalityLimitProcessorPerMetricLimit.perTagLimits) + && Objects.equals( + this.valueLimit, + observabilityPipelineTagCardinalityLimitProcessorPerMetricLimit.valueLimit) + && Objects.equals( + this.additionalProperties, + observabilityPipelineTagCardinalityLimitProcessorPerMetricLimit.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash( + limitExceededAction, metricName, mode, perTagLimits, valueLimit, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit {\n"); + sb.append(" limitExceededAction: ") + .append(toIndentedString(limitExceededAction)) + .append("\n"); + sb.append(" metricName: ").append(toIndentedString(metricName)).append("\n"); + sb.append(" mode: ").append(toIndentedString(mode)).append("\n"); + sb.append(" perTagLimits: ").append(toIndentedString(perTagLimits)).append("\n"); + sb.append(" valueLimit: ").append(toIndentedString(valueLimit)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode.java new file mode 100644 index 00000000000..494fce07c65 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode.java @@ -0,0 +1,70 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** + * How the per-metric override is applied. tracked enforces a custom limit; + * excluded skips the metric entirely. + */ +@JsonSerialize( + using = + ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode + .ObservabilityPipelineTagCardinalityLimitProcessorPerMetricModeSerializer.class) +public class ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode + extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("tracked", "excluded")); + + public static final ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode TRACKED = + new ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode("tracked"); + public static final ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode EXCLUDED = + new ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode("excluded"); + + ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode(String value) { + super(value, allowedValues); + } + + public static class ObservabilityPipelineTagCardinalityLimitProcessorPerMetricModeSerializer + extends StdSerializer { + public ObservabilityPipelineTagCardinalityLimitProcessorPerMetricModeSerializer( + Class t) { + super(t); + } + + public ObservabilityPipelineTagCardinalityLimitProcessorPerMetricModeSerializer() { + this(null); + } + + @Override + public void serialize( + ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode value, + JsonGenerator jgen, + SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode fromValue( + String value) { + return new ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit.java new file mode 100644 index 00000000000..aee605f12fb --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit.java @@ -0,0 +1,221 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** A cardinality override for a specific tag key within a per-metric limit. */ +@JsonPropertyOrder({ + ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit.JSON_PROPERTY_MODE, + ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit.JSON_PROPERTY_TAG_KEY, + ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit.JSON_PROPERTY_VALUE_LIMIT +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_MODE = "mode"; + private ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode mode; + + public static final String JSON_PROPERTY_TAG_KEY = "tag_key"; + private String tagKey; + + public static final String JSON_PROPERTY_VALUE_LIMIT = "value_limit"; + private Long valueLimit; + + public ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit() {} + + @JsonCreator + public ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit( + @JsonProperty(required = true, value = JSON_PROPERTY_MODE) + ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode mode, + @JsonProperty(required = true, value = JSON_PROPERTY_TAG_KEY) String tagKey, + @JsonProperty(required = true, value = JSON_PROPERTY_VALUE_LIMIT) Long valueLimit) { + this.mode = mode; + this.unparsed |= !mode.isValid(); + this.tagKey = tagKey; + this.valueLimit = valueLimit; + } + + public ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit mode( + ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode mode) { + this.mode = mode; + this.unparsed |= !mode.isValid(); + return this; + } + + /** + * How the per-tag override is applied. limit_override enforces a custom limit on the + * tag; excluded skips the tag from cardinality tracking. + * + * @return mode + */ + @JsonProperty(JSON_PROPERTY_MODE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode getMode() { + return mode; + } + + public void setMode(ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode mode) { + if (!mode.isValid()) { + this.unparsed = true; + } + this.mode = mode; + } + + public ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit tagKey(String tagKey) { + this.tagKey = tagKey; + return this; + } + + /** + * The tag key this override applies to. + * + * @return tagKey + */ + @JsonProperty(JSON_PROPERTY_TAG_KEY) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getTagKey() { + return tagKey; + } + + public void setTagKey(String tagKey) { + this.tagKey = tagKey; + } + + public ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit valueLimit(Long valueLimit) { + this.valueLimit = valueLimit; + return this; + } + + /** + * The maximum number of distinct values allowed for this tag. minimum: 0 maximum: 1000000 + * + * @return valueLimit + */ + @JsonProperty(JSON_PROPERTY_VALUE_LIMIT) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public Long getValueLimit() { + return valueLimit; + } + + public void setValueLimit(Long valueLimit) { + this.valueLimit = valueLimit; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit + */ + @JsonAnySetter + public ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit putAdditionalProperty( + String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** + * Return true if this ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit object is + * equal to o. + */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit + observabilityPipelineTagCardinalityLimitProcessorPerTagLimit = + (ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit) o; + return Objects.equals( + this.mode, observabilityPipelineTagCardinalityLimitProcessorPerTagLimit.mode) + && Objects.equals( + this.tagKey, observabilityPipelineTagCardinalityLimitProcessorPerTagLimit.tagKey) + && Objects.equals( + this.valueLimit, + observabilityPipelineTagCardinalityLimitProcessorPerTagLimit.valueLimit) + && Objects.equals( + this.additionalProperties, + observabilityPipelineTagCardinalityLimitProcessorPerTagLimit.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(mode, tagKey, valueLimit, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit {\n"); + sb.append(" mode: ").append(toIndentedString(mode)).append("\n"); + sb.append(" tagKey: ").append(toIndentedString(tagKey)).append("\n"); + sb.append(" valueLimit: ").append(toIndentedString(valueLimit)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode.java new file mode 100644 index 00000000000..6ea8b34f1f9 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode.java @@ -0,0 +1,69 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** + * How the per-tag override is applied. limit_override enforces a custom limit on the + * tag; excluded skips the tag from cardinality tracking. + */ +@JsonSerialize( + using = + ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode + .ObservabilityPipelineTagCardinalityLimitProcessorPerTagModeSerializer.class) +public class ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("limit_override", "excluded")); + + public static final ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode LIMIT_OVERRIDE = + new ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode("limit_override"); + public static final ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode EXCLUDED = + new ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode("excluded"); + + ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode(String value) { + super(value, allowedValues); + } + + public static class ObservabilityPipelineTagCardinalityLimitProcessorPerTagModeSerializer + extends StdSerializer { + public ObservabilityPipelineTagCardinalityLimitProcessorPerTagModeSerializer( + Class t) { + super(t); + } + + public ObservabilityPipelineTagCardinalityLimitProcessorPerTagModeSerializer() { + this(null); + } + + @Override + public void serialize( + ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode value, + JsonGenerator jgen, + SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode fromValue( + String value) { + return new ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorType.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorType.java new file mode 100644 index 00000000000..9c43ef65df4 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorType.java @@ -0,0 +1,63 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** The processor type. The value must be tag_cardinality_limit. */ +@JsonSerialize( + using = + ObservabilityPipelineTagCardinalityLimitProcessorType + .ObservabilityPipelineTagCardinalityLimitProcessorTypeSerializer.class) +public class ObservabilityPipelineTagCardinalityLimitProcessorType extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("tag_cardinality_limit")); + + public static final ObservabilityPipelineTagCardinalityLimitProcessorType TAG_CARDINALITY_LIMIT = + new ObservabilityPipelineTagCardinalityLimitProcessorType("tag_cardinality_limit"); + + ObservabilityPipelineTagCardinalityLimitProcessorType(String value) { + super(value, allowedValues); + } + + public static class ObservabilityPipelineTagCardinalityLimitProcessorTypeSerializer + extends StdSerializer { + public ObservabilityPipelineTagCardinalityLimitProcessorTypeSerializer( + Class t) { + super(t); + } + + public ObservabilityPipelineTagCardinalityLimitProcessorTypeSerializer() { + this(null); + } + + @Override + public void serialize( + ObservabilityPipelineTagCardinalityLimitProcessorType value, + JsonGenerator jgen, + SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static ObservabilityPipelineTagCardinalityLimitProcessorType fromValue(String value) { + return new ObservabilityPipelineTagCardinalityLimitProcessorType(value); + } +}