diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index a02006e0ef2..db9d07fc09f 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -30324,6 +30324,7 @@ components: - $ref: '#/components/schemas/ObservabilityPipelineSocketDestination' - $ref: '#/components/schemas/ObservabilityPipelineAmazonSecurityLakeDestination' - $ref: '#/components/schemas/ObservabilityPipelineCrowdStrikeNextGenSiemDestination' + - $ref: '#/components/schemas/ObservabilityPipelineGooglePubSubDestination' ObservabilityPipelineConfigProcessorItem: description: A processor for the pipeline. oneOf: @@ -31385,6 +31386,65 @@ components: type: string x-enum-varnames: - GOOGLE_CLOUD_STORAGE + ObservabilityPipelineGooglePubSubDestination: + description: The `google_pubsub` destination publishes logs to a Google Cloud + Pub/Sub topic. + properties: + auth: + $ref: '#/components/schemas/ObservabilityPipelineGcpAuth' + encoding: + $ref: '#/components/schemas/ObservabilityPipelineGooglePubSubDestinationEncoding' + id: + description: The unique identifier for this component. + example: google-pubsub-destination + type: string + inputs: + description: A list of component IDs whose output is used as the `input` + for this component. + example: + - filter-processor + items: + type: string + type: array + project: + description: The GCP project ID that owns the Pub/Sub topic. + example: my-gcp-project + type: string + tls: + $ref: '#/components/schemas/ObservabilityPipelineTls' + topic: + description: The Pub/Sub topic name to publish logs to. + example: logs-subscription + type: string + type: + $ref: '#/components/schemas/ObservabilityPipelineGooglePubSubDestinationType' + required: + - id + - type + - inputs + - encoding + - project + - topic + type: object + ObservabilityPipelineGooglePubSubDestinationEncoding: + description: Encoding format for log events. + enum: + - json + - raw_message + example: json + type: string + x-enum-varnames: + - JSON + - RAW_MESSAGE + ObservabilityPipelineGooglePubSubDestinationType: + default: google_pubsub + description: The destination type. The value should always be `google_pubsub`. + enum: + - google_pubsub + example: google_pubsub + type: string + x-enum-varnames: + - GOOGLE_PUBSUB ObservabilityPipelineGooglePubSubSource: description: The `google_pubsub` source ingests logs from a Google Cloud Pub/Sub subscription. diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineConfigDestinationItem.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineConfigDestinationItem.java index 258e4ae4e5b..2f4e68bdef4 100644 --- a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineConfigDestinationItem.java +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineConfigDestinationItem.java @@ -1015,6 +1015,58 @@ public ObservabilityPipelineConfigDestinationItem deserialize( e); } + // deserialize ObservabilityPipelineGooglePubSubDestination + try { + boolean attemptParsing = true; + // ensure that we respect type coercion as set on the client ObjectMapper + if (ObservabilityPipelineGooglePubSubDestination.class.equals(Integer.class) + || ObservabilityPipelineGooglePubSubDestination.class.equals(Long.class) + || ObservabilityPipelineGooglePubSubDestination.class.equals(Float.class) + || ObservabilityPipelineGooglePubSubDestination.class.equals(Double.class) + || ObservabilityPipelineGooglePubSubDestination.class.equals(Boolean.class) + || ObservabilityPipelineGooglePubSubDestination.class.equals(String.class)) { + attemptParsing = typeCoercion; + if (!attemptParsing) { + attemptParsing |= + ((ObservabilityPipelineGooglePubSubDestination.class.equals(Integer.class) + || ObservabilityPipelineGooglePubSubDestination.class.equals(Long.class)) + && token == JsonToken.VALUE_NUMBER_INT); + attemptParsing |= + ((ObservabilityPipelineGooglePubSubDestination.class.equals(Float.class) + || ObservabilityPipelineGooglePubSubDestination.class.equals(Double.class)) + && (token == JsonToken.VALUE_NUMBER_FLOAT + || token == JsonToken.VALUE_NUMBER_INT)); + attemptParsing |= + (ObservabilityPipelineGooglePubSubDestination.class.equals(Boolean.class) + && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE)); + attemptParsing |= + (ObservabilityPipelineGooglePubSubDestination.class.equals(String.class) + && token == JsonToken.VALUE_STRING); + } + } + if (attemptParsing) { + tmp = + tree.traverse(jp.getCodec()) + .readValueAs(ObservabilityPipelineGooglePubSubDestination.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 (!((ObservabilityPipelineGooglePubSubDestination) tmp).unparsed) { + deserialized = tmp; + match++; + } + log.log( + Level.FINER, + "Input data matches schema 'ObservabilityPipelineGooglePubSubDestination'"); + } + } catch (Exception e) { + // deserialization failed, continue + log.log( + Level.FINER, + "Input data does not match schema 'ObservabilityPipelineGooglePubSubDestination'", + e); + } + ObservabilityPipelineConfigDestinationItem ret = new ObservabilityPipelineConfigDestinationItem(); if (match == 1) { @@ -1142,6 +1194,12 @@ public ObservabilityPipelineConfigDestinationItem( setActualInstance(o); } + public ObservabilityPipelineConfigDestinationItem( + ObservabilityPipelineGooglePubSubDestination o) { + super("oneOf", Boolean.FALSE); + setActualInstance(o); + } + static { schemas.put( "ObservabilityPipelineDatadogLogsDestination", @@ -1193,6 +1251,9 @@ public ObservabilityPipelineConfigDestinationItem( schemas.put( "ObservabilityPipelineCrowdStrikeNextGenSiemDestination", new GenericType() {}); + schemas.put( + "ObservabilityPipelineGooglePubSubDestination", + new GenericType() {}); JSON.registerDescendants( ObservabilityPipelineConfigDestinationItem.class, Collections.unmodifiableMap(schemas)); } @@ -1213,7 +1274,8 @@ public Map getSchemas() { * ObservabilityPipelineNewRelicDestination, ObservabilityPipelineSentinelOneDestination, * ObservabilityPipelineOpenSearchDestination, ObservabilityPipelineAmazonOpenSearchDestination, * ObservabilityPipelineSocketDestination, ObservabilityPipelineAmazonSecurityLakeDestination, - * ObservabilityPipelineCrowdStrikeNextGenSiemDestination + * ObservabilityPipelineCrowdStrikeNextGenSiemDestination, + * ObservabilityPipelineGooglePubSubDestination * *

It could be an instance of the 'oneOf' schemas. The oneOf child schemas may themselves be a * composed schema (allOf, anyOf, oneOf). @@ -1316,6 +1378,11 @@ public void setActualInstance(Object instance) { super.setActualInstance(instance); return; } + if (JSON.isInstanceOf( + ObservabilityPipelineGooglePubSubDestination.class, instance, new HashSet>())) { + super.setActualInstance(instance); + return; + } if (JSON.isInstanceOf(UnparsedObject.class, instance, new HashSet>())) { super.setActualInstance(instance); @@ -1337,7 +1404,8 @@ public void setActualInstance(Object instance) { + " ObservabilityPipelineAmazonOpenSearchDestination," + " ObservabilityPipelineSocketDestination," + " ObservabilityPipelineAmazonSecurityLakeDestination," - + " ObservabilityPipelineCrowdStrikeNextGenSiemDestination"); + + " ObservabilityPipelineCrowdStrikeNextGenSiemDestination," + + " ObservabilityPipelineGooglePubSubDestination"); } /** @@ -1351,7 +1419,8 @@ public void setActualInstance(Object instance) { * ObservabilityPipelineSentinelOneDestination, ObservabilityPipelineOpenSearchDestination, * ObservabilityPipelineAmazonOpenSearchDestination, ObservabilityPipelineSocketDestination, * ObservabilityPipelineAmazonSecurityLakeDestination, - * ObservabilityPipelineCrowdStrikeNextGenSiemDestination + * ObservabilityPipelineCrowdStrikeNextGenSiemDestination, + * ObservabilityPipelineGooglePubSubDestination * * @return The actual instance (ObservabilityPipelineDatadogLogsDestination, * ObservabilityPipelineAmazonS3Destination, @@ -1364,7 +1433,8 @@ public void setActualInstance(Object instance) { * ObservabilityPipelineOpenSearchDestination, * ObservabilityPipelineAmazonOpenSearchDestination, ObservabilityPipelineSocketDestination, * ObservabilityPipelineAmazonSecurityLakeDestination, - * ObservabilityPipelineCrowdStrikeNextGenSiemDestination) + * ObservabilityPipelineCrowdStrikeNextGenSiemDestination, + * ObservabilityPipelineGooglePubSubDestination) */ @Override public Object getActualInstance() { @@ -1598,4 +1668,18 @@ public ObservabilityPipelineSocketDestination getObservabilityPipelineSocketDest getObservabilityPipelineCrowdStrikeNextGenSiemDestination() throws ClassCastException { return (ObservabilityPipelineCrowdStrikeNextGenSiemDestination) super.getActualInstance(); } + + /** + * Get the actual instance of `ObservabilityPipelineGooglePubSubDestination`. If the actual + * instance is not `ObservabilityPipelineGooglePubSubDestination`, the ClassCastException will be + * thrown. + * + * @return The actual instance of `ObservabilityPipelineGooglePubSubDestination` + * @throws ClassCastException if the instance is not + * `ObservabilityPipelineGooglePubSubDestination` + */ + public ObservabilityPipelineGooglePubSubDestination + getObservabilityPipelineGooglePubSubDestination() throws ClassCastException { + return (ObservabilityPipelineGooglePubSubDestination) super.getActualInstance(); + } } diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineGooglePubSubDestination.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineGooglePubSubDestination.java new file mode 100644 index 00000000000..e72df907d63 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineGooglePubSubDestination.java @@ -0,0 +1,368 @@ +/* + * 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 google_pubsub destination publishes logs to a Google Cloud Pub/Sub topic. */ +@JsonPropertyOrder({ + ObservabilityPipelineGooglePubSubDestination.JSON_PROPERTY_AUTH, + ObservabilityPipelineGooglePubSubDestination.JSON_PROPERTY_ENCODING, + ObservabilityPipelineGooglePubSubDestination.JSON_PROPERTY_ID, + ObservabilityPipelineGooglePubSubDestination.JSON_PROPERTY_INPUTS, + ObservabilityPipelineGooglePubSubDestination.JSON_PROPERTY_PROJECT, + ObservabilityPipelineGooglePubSubDestination.JSON_PROPERTY_TLS, + ObservabilityPipelineGooglePubSubDestination.JSON_PROPERTY_TOPIC, + ObservabilityPipelineGooglePubSubDestination.JSON_PROPERTY_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class ObservabilityPipelineGooglePubSubDestination { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_AUTH = "auth"; + private ObservabilityPipelineGcpAuth auth; + + public static final String JSON_PROPERTY_ENCODING = "encoding"; + private ObservabilityPipelineGooglePubSubDestinationEncoding encoding; + + public static final String JSON_PROPERTY_ID = "id"; + private String id; + + public static final String JSON_PROPERTY_INPUTS = "inputs"; + private List inputs = new ArrayList<>(); + + public static final String JSON_PROPERTY_PROJECT = "project"; + private String project; + + public static final String JSON_PROPERTY_TLS = "tls"; + private ObservabilityPipelineTls tls; + + public static final String JSON_PROPERTY_TOPIC = "topic"; + private String topic; + + public static final String JSON_PROPERTY_TYPE = "type"; + private ObservabilityPipelineGooglePubSubDestinationType type = + ObservabilityPipelineGooglePubSubDestinationType.GOOGLE_PUBSUB; + + public ObservabilityPipelineGooglePubSubDestination() {} + + @JsonCreator + public ObservabilityPipelineGooglePubSubDestination( + @JsonProperty(required = true, value = JSON_PROPERTY_ENCODING) + ObservabilityPipelineGooglePubSubDestinationEncoding encoding, + @JsonProperty(required = true, value = JSON_PROPERTY_ID) String id, + @JsonProperty(required = true, value = JSON_PROPERTY_INPUTS) List inputs, + @JsonProperty(required = true, value = JSON_PROPERTY_PROJECT) String project, + @JsonProperty(required = true, value = JSON_PROPERTY_TOPIC) String topic, + @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) + ObservabilityPipelineGooglePubSubDestinationType type) { + this.encoding = encoding; + this.unparsed |= !encoding.isValid(); + this.id = id; + this.inputs = inputs; + this.project = project; + this.topic = topic; + this.type = type; + this.unparsed |= !type.isValid(); + } + + public ObservabilityPipelineGooglePubSubDestination auth(ObservabilityPipelineGcpAuth auth) { + this.auth = auth; + this.unparsed |= auth.unparsed; + return this; + } + + /** + * GCP credentials used to authenticate with Google Cloud Storage. + * + * @return auth + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_AUTH) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public ObservabilityPipelineGcpAuth getAuth() { + return auth; + } + + public void setAuth(ObservabilityPipelineGcpAuth auth) { + this.auth = auth; + } + + public ObservabilityPipelineGooglePubSubDestination encoding( + ObservabilityPipelineGooglePubSubDestinationEncoding encoding) { + this.encoding = encoding; + this.unparsed |= !encoding.isValid(); + return this; + } + + /** + * Encoding format for log events. + * + * @return encoding + */ + @JsonProperty(JSON_PROPERTY_ENCODING) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ObservabilityPipelineGooglePubSubDestinationEncoding getEncoding() { + return encoding; + } + + public void setEncoding(ObservabilityPipelineGooglePubSubDestinationEncoding encoding) { + if (!encoding.isValid()) { + this.unparsed = true; + } + this.encoding = encoding; + } + + public ObservabilityPipelineGooglePubSubDestination id(String id) { + this.id = id; + return this; + } + + /** + * The unique identifier for this component. + * + * @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 ObservabilityPipelineGooglePubSubDestination inputs(List inputs) { + this.inputs = inputs; + return this; + } + + public ObservabilityPipelineGooglePubSubDestination addInputsItem(String inputsItem) { + this.inputs.add(inputsItem); + return this; + } + + /** + * A list of component IDs whose output is used as the input for this component. + * + * @return inputs + */ + @JsonProperty(JSON_PROPERTY_INPUTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getInputs() { + return inputs; + } + + public void setInputs(List inputs) { + this.inputs = inputs; + } + + public ObservabilityPipelineGooglePubSubDestination project(String project) { + this.project = project; + return this; + } + + /** + * The GCP project ID that owns the Pub/Sub topic. + * + * @return project + */ + @JsonProperty(JSON_PROPERTY_PROJECT) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getProject() { + return project; + } + + public void setProject(String project) { + this.project = project; + } + + public ObservabilityPipelineGooglePubSubDestination tls(ObservabilityPipelineTls tls) { + this.tls = tls; + this.unparsed |= tls.unparsed; + return this; + } + + /** + * Configuration for enabling TLS encryption between the pipeline component and external services. + * + * @return tls + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TLS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public ObservabilityPipelineTls getTls() { + return tls; + } + + public void setTls(ObservabilityPipelineTls tls) { + this.tls = tls; + } + + public ObservabilityPipelineGooglePubSubDestination topic(String topic) { + this.topic = topic; + return this; + } + + /** + * The Pub/Sub topic name to publish logs to. + * + * @return topic + */ + @JsonProperty(JSON_PROPERTY_TOPIC) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getTopic() { + return topic; + } + + public void setTopic(String topic) { + this.topic = topic; + } + + public ObservabilityPipelineGooglePubSubDestination type( + ObservabilityPipelineGooglePubSubDestinationType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * The destination type. The value should always be google_pubsub. + * + * @return type + */ + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ObservabilityPipelineGooglePubSubDestinationType getType() { + return type; + } + + public void setType(ObservabilityPipelineGooglePubSubDestinationType 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 ObservabilityPipelineGooglePubSubDestination + */ + @JsonAnySetter + public ObservabilityPipelineGooglePubSubDestination 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 ObservabilityPipelineGooglePubSubDestination object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ObservabilityPipelineGooglePubSubDestination observabilityPipelineGooglePubSubDestination = + (ObservabilityPipelineGooglePubSubDestination) o; + return Objects.equals(this.auth, observabilityPipelineGooglePubSubDestination.auth) + && Objects.equals(this.encoding, observabilityPipelineGooglePubSubDestination.encoding) + && Objects.equals(this.id, observabilityPipelineGooglePubSubDestination.id) + && Objects.equals(this.inputs, observabilityPipelineGooglePubSubDestination.inputs) + && Objects.equals(this.project, observabilityPipelineGooglePubSubDestination.project) + && Objects.equals(this.tls, observabilityPipelineGooglePubSubDestination.tls) + && Objects.equals(this.topic, observabilityPipelineGooglePubSubDestination.topic) + && Objects.equals(this.type, observabilityPipelineGooglePubSubDestination.type) + && Objects.equals( + this.additionalProperties, + observabilityPipelineGooglePubSubDestination.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash( + auth, encoding, id, inputs, project, tls, topic, type, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ObservabilityPipelineGooglePubSubDestination {\n"); + sb.append(" auth: ").append(toIndentedString(auth)).append("\n"); + sb.append(" encoding: ").append(toIndentedString(encoding)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" inputs: ").append(toIndentedString(inputs)).append("\n"); + sb.append(" project: ").append(toIndentedString(project)).append("\n"); + sb.append(" tls: ").append(toIndentedString(tls)).append("\n"); + sb.append(" topic: ").append(toIndentedString(topic)).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/ObservabilityPipelineGooglePubSubDestinationEncoding.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineGooglePubSubDestinationEncoding.java new file mode 100644 index 00000000000..769db3e35e7 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineGooglePubSubDestinationEncoding.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; + +/** Encoding format for log events. */ +@JsonSerialize( + using = + ObservabilityPipelineGooglePubSubDestinationEncoding + .ObservabilityPipelineGooglePubSubDestinationEncodingSerializer.class) +public class ObservabilityPipelineGooglePubSubDestinationEncoding extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("json", "raw_message")); + + public static final ObservabilityPipelineGooglePubSubDestinationEncoding JSON = + new ObservabilityPipelineGooglePubSubDestinationEncoding("json"); + public static final ObservabilityPipelineGooglePubSubDestinationEncoding RAW_MESSAGE = + new ObservabilityPipelineGooglePubSubDestinationEncoding("raw_message"); + + ObservabilityPipelineGooglePubSubDestinationEncoding(String value) { + super(value, allowedValues); + } + + public static class ObservabilityPipelineGooglePubSubDestinationEncodingSerializer + extends StdSerializer { + public ObservabilityPipelineGooglePubSubDestinationEncodingSerializer( + Class t) { + super(t); + } + + public ObservabilityPipelineGooglePubSubDestinationEncodingSerializer() { + this(null); + } + + @Override + public void serialize( + ObservabilityPipelineGooglePubSubDestinationEncoding value, + JsonGenerator jgen, + SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static ObservabilityPipelineGooglePubSubDestinationEncoding fromValue(String value) { + return new ObservabilityPipelineGooglePubSubDestinationEncoding(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineGooglePubSubDestinationType.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineGooglePubSubDestinationType.java new file mode 100644 index 00000000000..8bff6df596e --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineGooglePubSubDestinationType.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 destination type. The value should always be google_pubsub. */ +@JsonSerialize( + using = + ObservabilityPipelineGooglePubSubDestinationType + .ObservabilityPipelineGooglePubSubDestinationTypeSerializer.class) +public class ObservabilityPipelineGooglePubSubDestinationType extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("google_pubsub")); + + public static final ObservabilityPipelineGooglePubSubDestinationType GOOGLE_PUBSUB = + new ObservabilityPipelineGooglePubSubDestinationType("google_pubsub"); + + ObservabilityPipelineGooglePubSubDestinationType(String value) { + super(value, allowedValues); + } + + public static class ObservabilityPipelineGooglePubSubDestinationTypeSerializer + extends StdSerializer { + public ObservabilityPipelineGooglePubSubDestinationTypeSerializer( + Class t) { + super(t); + } + + public ObservabilityPipelineGooglePubSubDestinationTypeSerializer() { + this(null); + } + + @Override + public void serialize( + ObservabilityPipelineGooglePubSubDestinationType value, + JsonGenerator jgen, + SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static ObservabilityPipelineGooglePubSubDestinationType fromValue(String value) { + return new ObservabilityPipelineGooglePubSubDestinationType(value); + } +}