From 5e4057f90250a48c321d8c87a2a3bce3a8391b0f Mon Sep 17 00:00:00 2001 From: "ci.datadog-api-spec" Date: Fri, 12 Dec 2025 12:17:58 +0000 Subject: [PATCH] Regenerate client from commit 13630ea of spec repo --- .generator/schemas/v2/openapi.yaml | 340 +++++++++--------- ..._observability-pipelines_CreatePipeline.rs | 29 +- ..._observability-pipelines_UpdatePipeline.rs | 29 +- ...bservability-pipelines_ValidatePipeline.rs | 29 +- src/datadogV2/model/mod.rs | 2 + ...ability_pipeline_add_env_vars_processor.rs | 22 +- ...rvability_pipeline_add_fields_processor.rs | 22 +- .../model_observability_pipeline_config.rs | 8 +- ...ability_pipeline_config_processor_group.rs | 140 ++++++++ ...observability_pipeline_custom_processor.rs | 22 +- ...ability_pipeline_custom_processor_remap.rs | 14 +- ...ability_pipeline_datadog_tags_processor.rs | 22 +- ...observability_pipeline_dedupe_processor.rs | 22 +- ...ity_pipeline_enrichment_table_processor.rs | 22 +- ...observability_pipeline_filter_processor.rs | 22 +- ...ity_pipeline_generate_metrics_processor.rs | 53 ++- ...vability_pipeline_ocsf_mapper_processor.rs | 22 +- ...rvability_pipeline_parse_grok_processor.rs | 22 +- ...rvability_pipeline_parse_json_processor.rs | 22 +- ..._observability_pipeline_quota_processor.rs | 37 +- ...observability_pipeline_reduce_processor.rs | 22 +- ...bility_pipeline_remove_fields_processor.rs | 22 +- ...bility_pipeline_rename_fields_processor.rs | 22 +- ...observability_pipeline_sample_processor.rs | 22 +- ...peline_sensitive_data_scanner_processor.rs | 22 +- ...servability_pipeline_throttle_processor.rs | 22 +- ...peline-returns-Bad-Request-response.frozen | 2 +- ...pipeline-returns-Bad-Request-response.json | 6 +- ...-a-new-pipeline-returns-OK-response.frozen | 2 +- ...te-a-new-pipeline-returns-OK-response.json | 10 +- ...pipeline-returns-Not-Found-response.frozen | 2 +- ...a-pipeline-returns-Not-Found-response.json | 2 +- ...lete-a-pipeline-returns-OK-response.frozen | 2 +- ...Delete-a-pipeline-returns-OK-response.json | 14 +- ...ecific-pipeline-returns-OK-response.frozen | 2 +- ...specific-pipeline-returns-OK-response.json | 16 +- ...elines-returns-Bad-Request-response.frozen | 2 +- ...ipelines-returns-Bad-Request-response.json | 2 +- .../List-pipelines-returns-OK-response.frozen | 2 +- .../List-pipelines-returns-OK-response.json | 14 +- ...peline-returns-Bad-Request-response.frozen | 2 +- ...pipeline-returns-Bad-Request-response.json | 18 +- ...pipeline-returns-Not-Found-response.frozen | 2 +- ...a-pipeline-returns-Not-Found-response.json | 4 +- ...date-a-pipeline-returns-OK-response.frozen | 2 +- ...Update-a-pipeline-returns-OK-response.json | 18 +- ...peline-returns-Bad-Request-response.frozen | 2 +- ...pipeline-returns-Bad-Request-response.json | 4 +- ...bility-pipeline-returns-OK-response.frozen | 2 +- ...vability-pipeline-returns-OK-response.json | 6 +- tests/scenarios/features/v2/given.json | 2 +- .../v2/observability_pipelines.feature | 18 +- 52 files changed, 694 insertions(+), 497 deletions(-) create mode 100644 src/datadogV2/model/model_observability_pipeline_config_processor_group.rs diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index 82b87c5b7..411f9de14 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -34832,6 +34832,10 @@ components: description: The `add_env_vars` processor adds environment variable values to log events. properties: + enabled: + description: Whether this processor is enabled. + example: true + type: boolean id: description: The unique identifier for this component. Used to reference this processor in the pipeline. @@ -34842,14 +34846,6 @@ components: targets. example: service:my-service type: string - inputs: - description: A list of component IDs whose output is used as the input for - this processor. - example: - - datadog-agent-source - items: - type: string - type: array type: $ref: '#/components/schemas/ObservabilityPipelineAddEnvVarsProcessorType' variables: @@ -34861,8 +34857,8 @@ components: - id - type - include - - inputs - variables + - enabled type: object ObservabilityPipelineAddEnvVarsProcessorType: default: add_env_vars @@ -34891,6 +34887,10 @@ components: ObservabilityPipelineAddFieldsProcessor: description: The `add_fields` processor adds static key-value fields to logs. properties: + enabled: + description: Whether this processor is enabled. + example: true + type: boolean fields: description: A list of static fields (key-value pairs) that is added to each log event processed by this component. @@ -34908,14 +34908,6 @@ components: targets. example: service:my-service type: string - inputs: - description: A list of component IDs whose output is used as the `input` - for this component. - example: - - datadog-agent-source - items: - type: string - type: array type: $ref: '#/components/schemas/ObservabilityPipelineAddFieldsProcessorType' required: @@ -34923,7 +34915,7 @@ components: - type - include - fields - - inputs + - enabled type: object ObservabilityPipelineAddFieldsProcessorType: default: add_fields @@ -35226,15 +35218,25 @@ components: $ref: '#/components/schemas/ObservabilityPipelineConfigDestinationItem' type: array processors: - description: A list of processors that transform or enrich log data. + description: A list of processor groups that transform or enrich log data. example: - - id: filter-processor + - enabled: true + id: my-processor-group include: service:my-service inputs: - datadog-agent-source - type: filter + processors: + - enabled: true + id: filter-processor + include: status:error + type: filter + - enabled: true + field: message + id: json-processor + include: '*' + type: parse_json items: - $ref: '#/components/schemas/ObservabilityPipelineConfigProcessorItem' + $ref: '#/components/schemas/ObservabilityPipelineConfigProcessorGroup' type: array sources: description: A list of configured data sources for the pipeline. @@ -35270,6 +35272,73 @@ components: - $ref: '#/components/schemas/ObservabilityPipelineAmazonSecurityLakeDestination' - $ref: '#/components/schemas/ObservabilityPipelineCrowdStrikeNextGenSiemDestination' - $ref: '#/components/schemas/ObservabilityPipelineGooglePubSubDestination' + ObservabilityPipelineConfigProcessorGroup: + description: A group of processors. + example: + enabled: true + id: my-processor-group + include: service:my-service + inputs: + - datadog-agent-source + processors: + - enabled: true + fields: + - name: env + value: prod + id: add-fields-processor + include: '*' + type: add_fields + - enabled: true + id: filter-processor + include: status:error + type: filter + properties: + enabled: + description: Whether this processor group is enabled. + example: true + type: boolean + id: + description: The unique identifier for the processor group. + example: grouped-processors + type: string + include: + description: Conditional expression for when this processor group should + execute. + example: service:my-service + type: string + inputs: + description: A list of IDs for components whose output is used as the input + for this processor group. + example: + - datadog-agent-source + items: + type: string + type: array + processors: + description: Processors applied sequentially within this group. Events flow + through each processor in order. + example: + - enabled: true + fields: + - name: env + value: prod + id: add-fields-processor + include: '*' + type: add_fields + - enabled: true + id: filter-processor + include: status:error + type: filter + items: + $ref: '#/components/schemas/ObservabilityPipelineConfigProcessorItem' + type: array + required: + - id + - include + - inputs + - processors + - enabled + type: object ObservabilityPipelineConfigProcessorItem: description: A processor for the pipeline. oneOf: @@ -35387,6 +35456,10 @@ components: Remap Language (VRL)](https://vector.dev/docs/reference/vrl/) scripts with advanced filtering capabilities. properties: + enabled: + description: Whether this processor is enabled. + example: true + type: boolean id: description: The unique identifier for this processor. example: remap-vrl-processor @@ -35398,14 +35471,6 @@ components: processor. example: '*' type: string - inputs: - description: A list of component IDs whose output is used as the input for - this processor. - example: - - datadog-agent-source - items: - type: string - type: array remaps: description: Array of VRL remap rules. items: @@ -35419,7 +35484,7 @@ components: - type - include - remaps - - inputs + - enabled type: object ObservabilityPipelineCustomProcessorRemap: description: Defines a single VRL remap rule with its own filtering and transformation @@ -35450,7 +35515,6 @@ components: - include - name - source - - enabled - drop_on_error type: object ObservabilityPipelineCustomProcessorType: @@ -35559,6 +35623,10 @@ components: properties: action: $ref: '#/components/schemas/ObservabilityPipelineDatadogTagsProcessorAction' + enabled: + description: Whether this processor is enabled. + example: true + type: boolean id: description: The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` @@ -35570,14 +35638,6 @@ components: targets. example: service:my-service type: string - inputs: - description: A list of component IDs whose output is used as the `input` - for this component. - example: - - datadog-agent-source - items: - type: string - type: array keys: description: A list of tag keys. example: @@ -35598,7 +35658,7 @@ components: - mode - action - keys - - inputs + - enabled type: object ObservabilityPipelineDatadogTagsProcessorAction: description: The action to take on tags with matching keys. @@ -35644,6 +35704,10 @@ components: ObservabilityPipelineDedupeProcessor: description: The `dedupe` processor removes duplicate fields in log events. properties: + enabled: + description: Whether this processor is enabled. + example: true + type: boolean fields: description: A list of log field paths to check for duplicates. example: @@ -35661,14 +35725,6 @@ components: targets. example: service:my-service type: string - inputs: - description: A list of component IDs whose output is used as the input for - this processor. - example: - - parse-json-processor - items: - type: string - type: array mode: $ref: '#/components/schemas/ObservabilityPipelineDedupeProcessorMode' type: @@ -35677,9 +35733,9 @@ components: - id - type - include - - inputs - fields - mode + - enabled type: object ObservabilityPipelineDedupeProcessorMode: description: The deduplication mode to apply to the fields. @@ -35885,6 +35941,10 @@ components: description: The `enrichment_table` processor enriches logs using a static CSV file or GeoIP database. properties: + enabled: + description: Whether this processor is enabled. + example: true + type: boolean file: $ref: '#/components/schemas/ObservabilityPipelineEnrichmentTableFile' geoip: @@ -35898,14 +35958,6 @@ components: targets. example: source:my-source type: string - inputs: - description: A list of component IDs whose output is used as the input for - this processor. - example: - - add-fields-processor - items: - type: string - type: array target: description: Path where enrichment results should be stored in the log. example: enriched.geoip @@ -35916,8 +35968,8 @@ components: - id - type - include - - inputs - target + - enabled type: object ObservabilityPipelineEnrichmentTableProcessorType: default: enrichment_table @@ -35948,6 +36000,10 @@ components: on a Datadog search query. Logs that match the `include` query are passed through; others are discarded. properties: + enabled: + description: Whether this processor is enabled. + example: true + type: boolean id: description: The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` @@ -35960,21 +36016,13 @@ components: components; others are dropped. example: service:my-service type: string - inputs: - description: A list of component IDs whose output is used as the `input` - for this component. - example: - - datadog-agent-source - items: - type: string - type: array type: $ref: '#/components/schemas/ObservabilityPipelineFilterProcessorType' required: - id - type - include - - inputs + - enabled type: object ObservabilityPipelineFilterProcessorType: default: filter @@ -36054,6 +36102,10 @@ components: Metrics can be counters, gauges, or distributions and optionally grouped by log fields.' properties: + enabled: + description: Whether this processor is enabled. + example: true + type: boolean id: description: The unique identifier for this component. Used to reference this component in other parts of the pipeline. @@ -36064,14 +36116,6 @@ components: targets. example: service:my-service type: string - inputs: - description: A list of component IDs whose output is used as the `input` - for this processor. - example: - - source-id - items: - type: string - type: array metrics: description: Configuration for generating individual metrics. items: @@ -36082,9 +36126,7 @@ components: required: - id - type - - inputs - - include - - metrics + - enabled type: object ObservabilityPipelineGenerateMetricsProcessorType: default: generate_datadog_metrics @@ -36681,6 +36723,10 @@ components: description: The `ocsf_mapper` processor transforms logs into the OCSF schema using a predefined mapping configuration. properties: + enabled: + description: Whether this processor is enabled. + example: true + type: boolean id: description: The unique identifier for this component. Used to reference this component in other parts of the pipeline. @@ -36691,14 +36737,6 @@ components: targets. example: service:my-service type: string - inputs: - description: A list of component IDs whose output is used as the `input` - for this processor. - example: - - filter-processor - items: - type: string - type: array mappings: description: A list of mapping rules to convert events to the OCSF format. items: @@ -36710,8 +36748,8 @@ components: - id - type - include - - inputs - mappings + - enabled type: object ObservabilityPipelineOcsfMapperProcessorMapping: description: Defines how specific events are transformed to OCSF using a mapping @@ -36816,6 +36854,10 @@ components: by Datadog. example: true type: boolean + enabled: + description: Whether this processor is enabled. + example: true + type: boolean id: description: A unique identifier for this processor. example: parse-grok-processor @@ -36825,14 +36867,6 @@ components: targets. example: service:my-service type: string - inputs: - description: A list of component IDs whose output is used as the `input` - for this component. - example: - - datadog-agent-source - items: - type: string - type: array rules: description: The list of Grok parsing rules. If multiple matching rules are provided, they are evaluated in order. The first successful match @@ -36846,8 +36880,8 @@ components: - id - type - include - - inputs - rules + - enabled type: object ObservabilityPipelineParseGrokProcessorRule: description: 'A Grok parsing rule used in the `parse_grok` processor. Each rule @@ -36932,6 +36966,10 @@ components: and flattens it into the event. This is useful when logs contain embedded JSON as a string. properties: + enabled: + description: Whether this processor is enabled. + example: true + type: boolean field: description: The name of the log field that contains a JSON string. example: message @@ -36947,14 +36985,6 @@ components: targets. example: service:my-service type: string - inputs: - description: A list of component IDs whose output is used as the `input` - for this component. - example: - - datadog-agent-source - items: - type: string - type: array type: $ref: '#/components/schemas/ObservabilityPipelineParseJSONProcessorType' required: @@ -36962,7 +36992,7 @@ components: - type - include - field - - inputs + - enabled type: object ObservabilityPipelineParseJSONProcessorType: default: parse_json @@ -36995,6 +37025,10 @@ components: the filter query continue through the pipeline. example: false type: boolean + enabled: + description: Whether this processor is enabled. + example: true + type: boolean id: description: The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` @@ -37010,14 +37044,6 @@ components: targets. example: service:my-service type: string - inputs: - description: A list of component IDs whose output is used as the `input` - for this component. - example: - - datadog-agent-source - items: - type: string - type: array limit: $ref: '#/components/schemas/ObservabilityPipelineQuotaProcessorLimit' name: @@ -37047,9 +37073,8 @@ components: - type - include - name - - drop_events - limit - - inputs + - enabled type: object ObservabilityPipelineQuotaProcessorLimit: description: The maximum amount of data or number of events allowed before the @@ -37125,6 +37150,10 @@ components: description: The `reduce` processor aggregates and merges logs based on matching keys and merge strategies. properties: + enabled: + description: Whether this processor is enabled. + example: true + type: boolean group_by: description: A list of fields used to group log events for merging. example: @@ -37142,14 +37171,6 @@ components: targets. example: env:prod type: string - inputs: - description: A list of component IDs whose output is used as the input for - this processor. - example: - - parse-json-processor - items: - type: string - type: array merge_strategies: description: List of merge strategies defining how values from grouped events should be combined. @@ -37162,9 +37183,9 @@ components: - id - type - include - - inputs - group_by - merge_strategies + - enabled type: object ObservabilityPipelineReduceProcessorMergeStrategy: description: Defines how a specific field should be merged across grouped events. @@ -37221,6 +37242,10 @@ components: ObservabilityPipelineRemoveFieldsProcessor: description: The `remove_fields` processor deletes specified fields from logs. properties: + enabled: + description: Whether this processor is enabled. + example: true + type: boolean fields: description: A list of field names to be removed from each log event. example: @@ -37240,13 +37265,6 @@ components: targets. example: service:my-service type: string - inputs: - description: The `PipelineRemoveFieldsProcessor` `inputs`. - example: - - datadog-agent-source - items: - type: string - type: array type: $ref: '#/components/schemas/ObservabilityPipelineRemoveFieldsProcessorType' required: @@ -37254,7 +37272,7 @@ components: - type - include - fields - - inputs + - enabled type: object ObservabilityPipelineRemoveFieldsProcessorType: default: remove_fields @@ -37268,6 +37286,10 @@ components: ObservabilityPipelineRenameFieldsProcessor: description: The `rename_fields` processor changes field names. properties: + enabled: + description: Whether this processor is enabled. + example: true + type: boolean fields: description: A list of rename rules specifying which fields to rename in the event, what to rename them to, and whether to preserve the original @@ -37286,14 +37308,6 @@ components: targets. example: service:my-service type: string - inputs: - description: A list of component IDs whose output is used as the `input` - for this component. - example: - - datadog-agent-source - items: - type: string - type: array type: $ref: '#/components/schemas/ObservabilityPipelineRenameFieldsProcessorType' required: @@ -37301,7 +37315,7 @@ components: - type - include - fields - - inputs + - enabled type: object ObservabilityPipelineRenameFieldsProcessorField: description: Defines how to rename a field in log events. @@ -37407,6 +37421,10 @@ components: description: The `sample` processor allows probabilistic sampling of logs at a fixed rate. properties: + enabled: + description: Whether this processor is enabled. + example: true + type: boolean id: description: The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` @@ -37418,14 +37436,6 @@ components: targets. example: service:my-service type: string - inputs: - description: A list of component IDs whose output is used as the `input` - for this component. - example: - - datadog-agent-source - items: - type: string - type: array percentage: description: The percentage of logs to sample. example: 10.0 @@ -37443,7 +37453,7 @@ components: - id - type - include - - inputs + - enabled type: object ObservabilityPipelineSampleProcessorType: default: sample @@ -37458,6 +37468,10 @@ components: description: The `sensitive_data_scanner` processor detects and optionally redacts sensitive data in log events. properties: + enabled: + description: Whether this processor is enabled. + example: true + type: boolean id: description: The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream @@ -37469,14 +37483,6 @@ components: targets. example: source:prod type: string - inputs: - description: A list of component IDs whose output is used as the `input` - for this component. - example: - - parse-json-processor - items: - type: string - type: array rules: description: A list of rules for identifying and acting on sensitive data patterns. @@ -37489,8 +37495,8 @@ components: - id - type - include - - inputs - rules + - enabled type: object ObservabilityPipelineSensitiveDataScannerProcessorAction: description: Defines what action to take when sensitive data is matched. @@ -38451,6 +38457,10 @@ components: description: The `throttle` processor limits the number of events that pass through over a given time window. properties: + enabled: + description: Whether this processor is enabled. + example: true + type: boolean group_by: description: Optional list of fields used to group events before the threshold has been reached. @@ -38468,14 +38478,6 @@ components: targets. example: env:prod type: string - inputs: - description: A list of component IDs whose output is used as the input for - this processor. - example: - - datadog-agent-source - items: - type: string - type: array threshold: description: the number of events allowed in a given time window. Events sent after the threshold has been reached, are dropped. @@ -38493,9 +38495,9 @@ components: - id - type - include - - inputs - threshold - window + - enabled type: object ObservabilityPipelineThrottleProcessorType: default: throttle diff --git a/examples/v2_observability-pipelines_CreatePipeline.rs b/examples/v2_observability-pipelines_CreatePipeline.rs index fa74ab932..20e2a2c49 100644 --- a/examples/v2_observability-pipelines_CreatePipeline.rs +++ b/examples/v2_observability-pipelines_CreatePipeline.rs @@ -3,6 +3,7 @@ use datadog_api_client::datadog; use datadog_api_client::datadogV2::api_observability_pipelines::ObservabilityPipelinesAPI; use datadog_api_client::datadogV2::model::ObservabilityPipelineConfig; use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigDestinationItem; +use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigProcessorGroup; use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigProcessorItem; use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigSourceItem; use datadog_api_client::datadogV2::model::ObservabilityPipelineDataAttributes; @@ -27,7 +28,7 @@ async fn main() { Box::new( ObservabilityPipelineDatadogLogsDestination::new( "datadog-logs-destination".to_string(), - vec!["filter-processor".to_string()], + vec!["my-processor-group".to_string()], ObservabilityPipelineDatadogLogsDestinationType::DATADOG_LOGS, ), ), @@ -45,15 +46,23 @@ async fn main() { ], ).processors( vec![ - ObservabilityPipelineConfigProcessorItem::ObservabilityPipelineFilterProcessor( - Box::new( - ObservabilityPipelineFilterProcessor::new( - "filter-processor".to_string(), - "service:my-service".to_string(), - vec!["datadog-agent-source".to_string()], - ObservabilityPipelineFilterProcessorType::FILTER, - ), - ), + ObservabilityPipelineConfigProcessorGroup::new( + true, + "my-processor-group".to_string(), + "service:my-service".to_string(), + vec!["datadog-agent-source".to_string()], + vec![ + ObservabilityPipelineConfigProcessorItem::ObservabilityPipelineFilterProcessor( + Box::new( + ObservabilityPipelineFilterProcessor::new( + true, + "filter-processor".to_string(), + "status:error".to_string(), + ObservabilityPipelineFilterProcessorType::FILTER, + ), + ), + ) + ], ) ], ), diff --git a/examples/v2_observability-pipelines_UpdatePipeline.rs b/examples/v2_observability-pipelines_UpdatePipeline.rs index ba3f2091d..316fafce8 100644 --- a/examples/v2_observability-pipelines_UpdatePipeline.rs +++ b/examples/v2_observability-pipelines_UpdatePipeline.rs @@ -4,6 +4,7 @@ use datadog_api_client::datadogV2::api_observability_pipelines::ObservabilityPip use datadog_api_client::datadogV2::model::ObservabilityPipeline; use datadog_api_client::datadogV2::model::ObservabilityPipelineConfig; use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigDestinationItem; +use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigProcessorGroup; use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigProcessorItem; use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigSourceItem; use datadog_api_client::datadogV2::model::ObservabilityPipelineData; @@ -29,7 +30,7 @@ async fn main() { Box::new( ObservabilityPipelineDatadogLogsDestination::new( "updated-datadog-logs-destination-id".to_string(), - vec!["filter-processor".to_string()], + vec!["my-processor-group".to_string()], ObservabilityPipelineDatadogLogsDestinationType::DATADOG_LOGS, ), ), @@ -47,15 +48,23 @@ async fn main() { ], ).processors( vec![ - ObservabilityPipelineConfigProcessorItem::ObservabilityPipelineFilterProcessor( - Box::new( - ObservabilityPipelineFilterProcessor::new( - "filter-processor".to_string(), - "service:my-service".to_string(), - vec!["datadog-agent-source".to_string()], - ObservabilityPipelineFilterProcessorType::FILTER, - ), - ), + ObservabilityPipelineConfigProcessorGroup::new( + true, + "my-processor-group".to_string(), + "service:my-service".to_string(), + vec!["datadog-agent-source".to_string()], + vec![ + ObservabilityPipelineConfigProcessorItem::ObservabilityPipelineFilterProcessor( + Box::new( + ObservabilityPipelineFilterProcessor::new( + true, + "filter-processor".to_string(), + "status:error".to_string(), + ObservabilityPipelineFilterProcessorType::FILTER, + ), + ), + ) + ], ) ], ), diff --git a/examples/v2_observability-pipelines_ValidatePipeline.rs b/examples/v2_observability-pipelines_ValidatePipeline.rs index 79ad0c621..b0ebe11c5 100644 --- a/examples/v2_observability-pipelines_ValidatePipeline.rs +++ b/examples/v2_observability-pipelines_ValidatePipeline.rs @@ -3,6 +3,7 @@ use datadog_api_client::datadog; use datadog_api_client::datadogV2::api_observability_pipelines::ObservabilityPipelinesAPI; use datadog_api_client::datadogV2::model::ObservabilityPipelineConfig; use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigDestinationItem; +use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigProcessorGroup; use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigProcessorItem; use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigSourceItem; use datadog_api_client::datadogV2::model::ObservabilityPipelineDataAttributes; @@ -27,7 +28,7 @@ async fn main() { Box::new( ObservabilityPipelineDatadogLogsDestination::new( "datadog-logs-destination".to_string(), - vec!["filter-processor".to_string()], + vec!["my-processor-group".to_string()], ObservabilityPipelineDatadogLogsDestinationType::DATADOG_LOGS, ), ), @@ -45,15 +46,23 @@ async fn main() { ], ).processors( vec![ - ObservabilityPipelineConfigProcessorItem::ObservabilityPipelineFilterProcessor( - Box::new( - ObservabilityPipelineFilterProcessor::new( - "filter-processor".to_string(), - "service:my-service".to_string(), - vec!["datadog-agent-source".to_string()], - ObservabilityPipelineFilterProcessorType::FILTER, - ), - ), + ObservabilityPipelineConfigProcessorGroup::new( + true, + "my-processor-group".to_string(), + "service:my-service".to_string(), + vec!["datadog-agent-source".to_string()], + vec![ + ObservabilityPipelineConfigProcessorItem::ObservabilityPipelineFilterProcessor( + Box::new( + ObservabilityPipelineFilterProcessor::new( + true, + "filter-processor".to_string(), + "status:error".to_string(), + ObservabilityPipelineFilterProcessorType::FILTER, + ), + ), + ) + ], ) ], ), diff --git a/src/datadogV2/model/mod.rs b/src/datadogV2/model/mod.rs index 74756e911..e813e0ed0 100644 --- a/src/datadogV2/model/mod.rs +++ b/src/datadogV2/model/mod.rs @@ -5048,6 +5048,8 @@ pub mod model_observability_pipeline_google_pub_sub_destination_type; pub use self::model_observability_pipeline_google_pub_sub_destination_type::ObservabilityPipelineGooglePubSubDestinationType; pub mod model_observability_pipeline_config_destination_item; pub use self::model_observability_pipeline_config_destination_item::ObservabilityPipelineConfigDestinationItem; +pub mod model_observability_pipeline_config_processor_group; +pub use self::model_observability_pipeline_config_processor_group::ObservabilityPipelineConfigProcessorGroup; pub mod model_observability_pipeline_filter_processor; pub use self::model_observability_pipeline_filter_processor::ObservabilityPipelineFilterProcessor; pub mod model_observability_pipeline_filter_processor_type; diff --git a/src/datadogV2/model/model_observability_pipeline_add_env_vars_processor.rs b/src/datadogV2/model/model_observability_pipeline_add_env_vars_processor.rs index 5d9479f42..3e39bb0cf 100644 --- a/src/datadogV2/model/model_observability_pipeline_add_env_vars_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_add_env_vars_processor.rs @@ -11,15 +11,15 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineAddEnvVarsProcessor { + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// The unique identifier for this component. Used to reference this processor in the pipeline. #[serde(rename = "id")] pub id: String, /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the input for this processor. - #[serde(rename = "inputs")] - pub inputs: Vec, /// The processor type. The value should always be `add_env_vars`. #[serde(rename = "type")] pub type_: crate::datadogV2::model::ObservabilityPipelineAddEnvVarsProcessorType, @@ -35,16 +35,16 @@ pub struct ObservabilityPipelineAddEnvVarsProcessor { impl ObservabilityPipelineAddEnvVarsProcessor { pub fn new( + enabled: bool, id: String, include: String, - inputs: Vec, type_: crate::datadogV2::model::ObservabilityPipelineAddEnvVarsProcessorType, variables: Vec, ) -> ObservabilityPipelineAddEnvVarsProcessor { ObservabilityPipelineAddEnvVarsProcessor { + enabled, id, include, - inputs, type_, variables, additional_properties: std::collections::BTreeMap::new(), @@ -78,9 +78,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineAddEnvVarsProcessor { where M: MapAccess<'a>, { + let mut enabled: Option = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut type_: Option< crate::datadogV2::model::ObservabilityPipelineAddEnvVarsProcessorType, > = None; @@ -95,15 +95,15 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineAddEnvVarsProcessor { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "id" => { id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "type" => { type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); if let Some(ref _type_) = type_ { @@ -125,16 +125,16 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineAddEnvVarsProcessor { } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let variables = variables.ok_or_else(|| M::Error::missing_field("variables"))?; let content = ObservabilityPipelineAddEnvVarsProcessor { + enabled, id, include, - inputs, type_, variables, additional_properties, diff --git a/src/datadogV2/model/model_observability_pipeline_add_fields_processor.rs b/src/datadogV2/model/model_observability_pipeline_add_fields_processor.rs index baca87ceb..46bf9f1b2 100644 --- a/src/datadogV2/model/model_observability_pipeline_add_fields_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_add_fields_processor.rs @@ -11,6 +11,9 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineAddFieldsProcessor { + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// A list of static fields (key-value pairs) that is added to each log event processed by this component. #[serde(rename = "fields")] pub fields: Vec, @@ -20,9 +23,6 @@ pub struct ObservabilityPipelineAddFieldsProcessor { /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the `input` for this component. - #[serde(rename = "inputs")] - pub inputs: Vec, /// The processor type. The value should always be `add_fields`. #[serde(rename = "type")] pub type_: crate::datadogV2::model::ObservabilityPipelineAddFieldsProcessorType, @@ -35,17 +35,17 @@ pub struct ObservabilityPipelineAddFieldsProcessor { impl ObservabilityPipelineAddFieldsProcessor { pub fn new( + enabled: bool, fields: Vec, id: String, include: String, - inputs: Vec, type_: crate::datadogV2::model::ObservabilityPipelineAddFieldsProcessorType, ) -> ObservabilityPipelineAddFieldsProcessor { ObservabilityPipelineAddFieldsProcessor { + enabled, fields, id, include, - inputs, type_, additional_properties: std::collections::BTreeMap::new(), _unparsed: false, @@ -78,12 +78,12 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineAddFieldsProcessor { where M: MapAccess<'a>, { + let mut enabled: Option = None; let mut fields: Option< Vec, > = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut type_: Option< crate::datadogV2::model::ObservabilityPipelineAddFieldsProcessorType, > = None; @@ -95,6 +95,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineAddFieldsProcessor { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "fields" => { fields = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -104,9 +107,6 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineAddFieldsProcessor { "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "type" => { type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); if let Some(ref _type_) = type_ { @@ -125,17 +125,17 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineAddFieldsProcessor { } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let fields = fields.ok_or_else(|| M::Error::missing_field("fields"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineAddFieldsProcessor { + enabled, fields, id, include, - inputs, type_, additional_properties, _unparsed, diff --git a/src/datadogV2/model/model_observability_pipeline_config.rs b/src/datadogV2/model/model_observability_pipeline_config.rs index efc97d17a..d6fe63c42 100644 --- a/src/datadogV2/model/model_observability_pipeline_config.rs +++ b/src/datadogV2/model/model_observability_pipeline_config.rs @@ -14,9 +14,9 @@ pub struct ObservabilityPipelineConfig { /// A list of destination components where processed logs are sent. #[serde(rename = "destinations")] pub destinations: Vec, - /// A list of processors that transform or enrich log data. + /// A list of processor groups that transform or enrich log data. #[serde(rename = "processors")] - pub processors: Option>, + pub processors: Option>, /// A list of configured data sources for the pipeline. #[serde(rename = "sources")] pub sources: Vec, @@ -43,7 +43,7 @@ impl ObservabilityPipelineConfig { pub fn processors( mut self, - value: Vec, + value: Vec, ) -> Self { self.processors = Some(value); self @@ -79,7 +79,7 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineConfig { Vec, > = None; let mut processors: Option< - Vec, + Vec, > = None; let mut sources: Option< Vec, diff --git a/src/datadogV2/model/model_observability_pipeline_config_processor_group.rs b/src/datadogV2/model/model_observability_pipeline_config_processor_group.rs new file mode 100644 index 000000000..0714b5949 --- /dev/null +++ b/src/datadogV2/model/model_observability_pipeline_config_processor_group.rs @@ -0,0 +1,140 @@ +// 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. +use serde::de::{Error, MapAccess, Visitor}; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::skip_serializing_none; +use std::fmt::{self, Formatter}; + +/// A group of processors. +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct ObservabilityPipelineConfigProcessorGroup { + /// Whether this processor group is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, + /// The unique identifier for the processor group. + #[serde(rename = "id")] + pub id: String, + /// Conditional expression for when this processor group should execute. + #[serde(rename = "include")] + pub include: String, + /// A list of IDs for components whose output is used as the input for this processor group. + #[serde(rename = "inputs")] + pub inputs: Vec, + /// Processors applied sequentially within this group. Events flow through each processor in order. + #[serde(rename = "processors")] + pub processors: Vec, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl ObservabilityPipelineConfigProcessorGroup { + pub fn new( + enabled: bool, + id: String, + include: String, + inputs: Vec, + processors: Vec, + ) -> ObservabilityPipelineConfigProcessorGroup { + ObservabilityPipelineConfigProcessorGroup { + enabled, + id, + include, + inputs, + processors, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl<'de> Deserialize<'de> for ObservabilityPipelineConfigProcessorGroup { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct ObservabilityPipelineConfigProcessorGroupVisitor; + impl<'a> Visitor<'a> for ObservabilityPipelineConfigProcessorGroupVisitor { + type Value = ObservabilityPipelineConfigProcessorGroup; + + fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.write_str("a mapping") + } + + fn visit_map(self, mut map: M) -> Result + where + M: MapAccess<'a>, + { + let mut enabled: Option = None; + let mut id: Option = None; + let mut include: Option = None; + let mut inputs: Option> = None; + let mut processors: Option< + Vec, + > = None; + let mut additional_properties: std::collections::BTreeMap< + String, + serde_json::Value, + > = std::collections::BTreeMap::new(); + let mut _unparsed = false; + + while let Some((k, v)) = map.next_entry::()? { + match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "id" => { + id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "include" => { + include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "inputs" => { + inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "processors" => { + processors = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; + let id = id.ok_or_else(|| M::Error::missing_field("id"))?; + let include = include.ok_or_else(|| M::Error::missing_field("include"))?; + let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; + let processors = processors.ok_or_else(|| M::Error::missing_field("processors"))?; + + let content = ObservabilityPipelineConfigProcessorGroup { + enabled, + id, + include, + inputs, + processors, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(ObservabilityPipelineConfigProcessorGroupVisitor) + } +} diff --git a/src/datadogV2/model/model_observability_pipeline_custom_processor.rs b/src/datadogV2/model/model_observability_pipeline_custom_processor.rs index 835808cc5..f121d2184 100644 --- a/src/datadogV2/model/model_observability_pipeline_custom_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_custom_processor.rs @@ -11,15 +11,15 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineCustomProcessor { + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// The unique identifier for this processor. #[serde(rename = "id")] pub id: String, /// A Datadog search query used to determine which logs this processor targets. This field should always be set to `*` for the custom_processor processor. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the input for this processor. - #[serde(rename = "inputs")] - pub inputs: Vec, /// Array of VRL remap rules. #[serde(rename = "remaps")] pub remaps: Vec, @@ -35,16 +35,16 @@ pub struct ObservabilityPipelineCustomProcessor { impl ObservabilityPipelineCustomProcessor { pub fn new( + enabled: bool, id: String, include: String, - inputs: Vec, remaps: Vec, type_: crate::datadogV2::model::ObservabilityPipelineCustomProcessorType, ) -> ObservabilityPipelineCustomProcessor { ObservabilityPipelineCustomProcessor { + enabled, id, include, - inputs, remaps, type_, additional_properties: std::collections::BTreeMap::new(), @@ -78,9 +78,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineCustomProcessor { where M: MapAccess<'a>, { + let mut enabled: Option = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut remaps: Option< Vec, > = None; @@ -95,15 +95,15 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineCustomProcessor { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "id" => { id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "remaps" => { remaps = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -125,16 +125,16 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineCustomProcessor { } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let remaps = remaps.ok_or_else(|| M::Error::missing_field("remaps"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineCustomProcessor { + enabled, id, include, - inputs, remaps, type_, additional_properties, diff --git a/src/datadogV2/model/model_observability_pipeline_custom_processor_remap.rs b/src/datadogV2/model/model_observability_pipeline_custom_processor_remap.rs index 93d0d893b..231556a58 100644 --- a/src/datadogV2/model/model_observability_pipeline_custom_processor_remap.rs +++ b/src/datadogV2/model/model_observability_pipeline_custom_processor_remap.rs @@ -16,7 +16,7 @@ pub struct ObservabilityPipelineCustomProcessorRemap { pub drop_on_error: bool, /// Whether this remap rule is enabled. #[serde(rename = "enabled")] - pub enabled: bool, + pub enabled: Option, /// A Datadog search query used to filter events for this specific remap rule. #[serde(rename = "include")] pub include: String, @@ -36,14 +36,13 @@ pub struct ObservabilityPipelineCustomProcessorRemap { impl ObservabilityPipelineCustomProcessorRemap { pub fn new( drop_on_error: bool, - enabled: bool, include: String, name: String, source: String, ) -> ObservabilityPipelineCustomProcessorRemap { ObservabilityPipelineCustomProcessorRemap { drop_on_error, - enabled, + enabled: None, include, name, source, @@ -52,6 +51,11 @@ impl ObservabilityPipelineCustomProcessorRemap { } } + pub fn enabled(mut self, value: bool) -> Self { + self.enabled = Some(value); + self + } + pub fn additional_properties( mut self, value: std::collections::BTreeMap, @@ -96,6 +100,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineCustomProcessorRemap { Some(serde_json::from_value(v).map_err(M::Error::custom)?); } "enabled" => { + if v.is_null() { + continue; + } enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } "include" => { @@ -116,7 +123,6 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineCustomProcessorRemap { } let drop_on_error = drop_on_error.ok_or_else(|| M::Error::missing_field("drop_on_error"))?; - let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; let name = name.ok_or_else(|| M::Error::missing_field("name"))?; let source = source.ok_or_else(|| M::Error::missing_field("source"))?; diff --git a/src/datadogV2/model/model_observability_pipeline_datadog_tags_processor.rs b/src/datadogV2/model/model_observability_pipeline_datadog_tags_processor.rs index fd8da1208..a324e7f2f 100644 --- a/src/datadogV2/model/model_observability_pipeline_datadog_tags_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_datadog_tags_processor.rs @@ -14,15 +14,15 @@ pub struct ObservabilityPipelineDatadogTagsProcessor { /// The action to take on tags with matching keys. #[serde(rename = "action")] pub action: crate::datadogV2::model::ObservabilityPipelineDatadogTagsProcessorAction, + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components). #[serde(rename = "id")] pub id: String, /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the `input` for this component. - #[serde(rename = "inputs")] - pub inputs: Vec, /// A list of tag keys. #[serde(rename = "keys")] pub keys: Vec, @@ -42,18 +42,18 @@ pub struct ObservabilityPipelineDatadogTagsProcessor { impl ObservabilityPipelineDatadogTagsProcessor { pub fn new( action: crate::datadogV2::model::ObservabilityPipelineDatadogTagsProcessorAction, + enabled: bool, id: String, include: String, - inputs: Vec, keys: Vec, mode: crate::datadogV2::model::ObservabilityPipelineDatadogTagsProcessorMode, type_: crate::datadogV2::model::ObservabilityPipelineDatadogTagsProcessorType, ) -> ObservabilityPipelineDatadogTagsProcessor { ObservabilityPipelineDatadogTagsProcessor { action, + enabled, id, include, - inputs, keys, mode, type_, @@ -91,9 +91,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineDatadogTagsProcessor { let mut action: Option< crate::datadogV2::model::ObservabilityPipelineDatadogTagsProcessorAction, > = None; + let mut enabled: Option = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut keys: Option> = None; let mut mode: Option< crate::datadogV2::model::ObservabilityPipelineDatadogTagsProcessorMode, @@ -120,15 +120,15 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineDatadogTagsProcessor { } } } + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "id" => { id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "keys" => { keys = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -162,18 +162,18 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineDatadogTagsProcessor { } } let action = action.ok_or_else(|| M::Error::missing_field("action"))?; + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let keys = keys.ok_or_else(|| M::Error::missing_field("keys"))?; let mode = mode.ok_or_else(|| M::Error::missing_field("mode"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineDatadogTagsProcessor { action, + enabled, id, include, - inputs, keys, mode, type_, diff --git a/src/datadogV2/model/model_observability_pipeline_dedupe_processor.rs b/src/datadogV2/model/model_observability_pipeline_dedupe_processor.rs index 0b13cb2c5..2200a14cb 100644 --- a/src/datadogV2/model/model_observability_pipeline_dedupe_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_dedupe_processor.rs @@ -11,6 +11,9 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineDedupeProcessor { + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// A list of log field paths to check for duplicates. #[serde(rename = "fields")] pub fields: Vec, @@ -20,9 +23,6 @@ pub struct ObservabilityPipelineDedupeProcessor { /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the input for this processor. - #[serde(rename = "inputs")] - pub inputs: Vec, /// The deduplication mode to apply to the fields. #[serde(rename = "mode")] pub mode: crate::datadogV2::model::ObservabilityPipelineDedupeProcessorMode, @@ -38,18 +38,18 @@ pub struct ObservabilityPipelineDedupeProcessor { impl ObservabilityPipelineDedupeProcessor { pub fn new( + enabled: bool, fields: Vec, id: String, include: String, - inputs: Vec, mode: crate::datadogV2::model::ObservabilityPipelineDedupeProcessorMode, type_: crate::datadogV2::model::ObservabilityPipelineDedupeProcessorType, ) -> ObservabilityPipelineDedupeProcessor { ObservabilityPipelineDedupeProcessor { + enabled, fields, id, include, - inputs, mode, type_, additional_properties: std::collections::BTreeMap::new(), @@ -83,10 +83,10 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineDedupeProcessor { where M: MapAccess<'a>, { + let mut enabled: Option = None; let mut fields: Option> = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut mode: Option< crate::datadogV2::model::ObservabilityPipelineDedupeProcessorMode, > = None; @@ -101,6 +101,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineDedupeProcessor { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "fields" => { fields = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -110,9 +113,6 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineDedupeProcessor { "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "mode" => { mode = Some(serde_json::from_value(v).map_err(M::Error::custom)?); if let Some(ref _mode) = mode { @@ -142,18 +142,18 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineDedupeProcessor { } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let fields = fields.ok_or_else(|| M::Error::missing_field("fields"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let mode = mode.ok_or_else(|| M::Error::missing_field("mode"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineDedupeProcessor { + enabled, fields, id, include, - inputs, mode, type_, additional_properties, diff --git a/src/datadogV2/model/model_observability_pipeline_enrichment_table_processor.rs b/src/datadogV2/model/model_observability_pipeline_enrichment_table_processor.rs index 55d4f1567..0d31ef277 100644 --- a/src/datadogV2/model/model_observability_pipeline_enrichment_table_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_enrichment_table_processor.rs @@ -11,6 +11,9 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineEnrichmentTableProcessor { + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// Defines a static enrichment table loaded from a CSV file. #[serde(rename = "file")] pub file: Option, @@ -23,9 +26,6 @@ pub struct ObservabilityPipelineEnrichmentTableProcessor { /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the input for this processor. - #[serde(rename = "inputs")] - pub inputs: Vec, /// Path where enrichment results should be stored in the log. #[serde(rename = "target")] pub target: String, @@ -41,18 +41,18 @@ pub struct ObservabilityPipelineEnrichmentTableProcessor { impl ObservabilityPipelineEnrichmentTableProcessor { pub fn new( + enabled: bool, id: String, include: String, - inputs: Vec, target: String, type_: crate::datadogV2::model::ObservabilityPipelineEnrichmentTableProcessorType, ) -> ObservabilityPipelineEnrichmentTableProcessor { ObservabilityPipelineEnrichmentTableProcessor { + enabled, file: None, geoip: None, id, include, - inputs, target, type_, additional_properties: std::collections::BTreeMap::new(), @@ -102,6 +102,7 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineEnrichmentTableProcessor { where M: MapAccess<'a>, { + let mut enabled: Option = None; let mut file: Option< crate::datadogV2::model::ObservabilityPipelineEnrichmentTableFile, > = None; @@ -110,7 +111,6 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineEnrichmentTableProcessor { > = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut target: Option = None; let mut type_: Option< crate::datadogV2::model::ObservabilityPipelineEnrichmentTableProcessorType, @@ -123,6 +123,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineEnrichmentTableProcessor { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "file" => { if v.is_null() { continue; @@ -141,9 +144,6 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineEnrichmentTableProcessor { "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "target" => { target = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -165,18 +165,18 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineEnrichmentTableProcessor { } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let target = target.ok_or_else(|| M::Error::missing_field("target"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineEnrichmentTableProcessor { + enabled, file, geoip, id, include, - inputs, target, type_, additional_properties, diff --git a/src/datadogV2/model/model_observability_pipeline_filter_processor.rs b/src/datadogV2/model/model_observability_pipeline_filter_processor.rs index 9087eeb3a..149f13092 100644 --- a/src/datadogV2/model/model_observability_pipeline_filter_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_filter_processor.rs @@ -11,15 +11,15 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineFilterProcessor { + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components). #[serde(rename = "id")] pub id: String, /// A Datadog search query used to determine which logs should pass through the filter. Logs that match this query continue to downstream components; others are dropped. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the `input` for this component. - #[serde(rename = "inputs")] - pub inputs: Vec, /// The processor type. The value should always be `filter`. #[serde(rename = "type")] pub type_: crate::datadogV2::model::ObservabilityPipelineFilterProcessorType, @@ -32,15 +32,15 @@ pub struct ObservabilityPipelineFilterProcessor { impl ObservabilityPipelineFilterProcessor { pub fn new( + enabled: bool, id: String, include: String, - inputs: Vec, type_: crate::datadogV2::model::ObservabilityPipelineFilterProcessorType, ) -> ObservabilityPipelineFilterProcessor { ObservabilityPipelineFilterProcessor { + enabled, id, include, - inputs, type_, additional_properties: std::collections::BTreeMap::new(), _unparsed: false, @@ -73,9 +73,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineFilterProcessor { where M: MapAccess<'a>, { + let mut enabled: Option = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut type_: Option< crate::datadogV2::model::ObservabilityPipelineFilterProcessorType, > = None; @@ -87,15 +87,15 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineFilterProcessor { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "id" => { id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "type" => { type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); if let Some(ref _type_) = type_ { @@ -114,15 +114,15 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineFilterProcessor { } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineFilterProcessor { + enabled, id, include, - inputs, type_, additional_properties, _unparsed, diff --git a/src/datadogV2/model/model_observability_pipeline_generate_metrics_processor.rs b/src/datadogV2/model/model_observability_pipeline_generate_metrics_processor.rs index 95b2190cd..2816676bd 100644 --- a/src/datadogV2/model/model_observability_pipeline_generate_metrics_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_generate_metrics_processor.rs @@ -12,18 +12,18 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineGenerateMetricsProcessor { + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// The unique identifier for this component. Used to reference this component in other parts of the pipeline. #[serde(rename = "id")] pub id: String, /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] - pub include: String, - /// A list of component IDs whose output is used as the `input` for this processor. - #[serde(rename = "inputs")] - pub inputs: Vec, + pub include: Option, /// Configuration for generating individual metrics. #[serde(rename = "metrics")] - pub metrics: Vec, + pub metrics: Option>, /// The processor type. Always `generate_datadog_metrics`. #[serde(rename = "type")] pub type_: crate::datadogV2::model::ObservabilityPipelineGenerateMetricsProcessorType, @@ -36,23 +36,34 @@ pub struct ObservabilityPipelineGenerateMetricsProcessor { impl ObservabilityPipelineGenerateMetricsProcessor { pub fn new( + enabled: bool, id: String, - include: String, - inputs: Vec, - metrics: Vec, type_: crate::datadogV2::model::ObservabilityPipelineGenerateMetricsProcessorType, ) -> ObservabilityPipelineGenerateMetricsProcessor { ObservabilityPipelineGenerateMetricsProcessor { + enabled, id, - include, - inputs, - metrics, + include: None, + metrics: None, type_, additional_properties: std::collections::BTreeMap::new(), _unparsed: false, } } + pub fn include(mut self, value: String) -> Self { + self.include = Some(value); + self + } + + pub fn metrics( + mut self, + value: Vec, + ) -> Self { + self.metrics = Some(value); + self + } + pub fn additional_properties( mut self, value: std::collections::BTreeMap, @@ -79,9 +90,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineGenerateMetricsProcessor { where M: MapAccess<'a>, { + let mut enabled: Option = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut metrics: Option< Vec, > = None; @@ -96,16 +107,22 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineGenerateMetricsProcessor { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "id" => { id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } "include" => { + if v.is_null() { + continue; + } include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "metrics" => { + if v.is_null() { + continue; + } metrics = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } "type" => { @@ -126,16 +143,14 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineGenerateMetricsProcessor { } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; - let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; - let metrics = metrics.ok_or_else(|| M::Error::missing_field("metrics"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineGenerateMetricsProcessor { + enabled, id, include, - inputs, metrics, type_, additional_properties, diff --git a/src/datadogV2/model/model_observability_pipeline_ocsf_mapper_processor.rs b/src/datadogV2/model/model_observability_pipeline_ocsf_mapper_processor.rs index 58aeb7fb7..e6e3c7197 100644 --- a/src/datadogV2/model/model_observability_pipeline_ocsf_mapper_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_ocsf_mapper_processor.rs @@ -11,15 +11,15 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineOcsfMapperProcessor { + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// The unique identifier for this component. Used to reference this component in other parts of the pipeline. #[serde(rename = "id")] pub id: String, /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the `input` for this processor. - #[serde(rename = "inputs")] - pub inputs: Vec, /// A list of mapping rules to convert events to the OCSF format. #[serde(rename = "mappings")] pub mappings: Vec, @@ -35,16 +35,16 @@ pub struct ObservabilityPipelineOcsfMapperProcessor { impl ObservabilityPipelineOcsfMapperProcessor { pub fn new( + enabled: bool, id: String, include: String, - inputs: Vec, mappings: Vec, type_: crate::datadogV2::model::ObservabilityPipelineOcsfMapperProcessorType, ) -> ObservabilityPipelineOcsfMapperProcessor { ObservabilityPipelineOcsfMapperProcessor { + enabled, id, include, - inputs, mappings, type_, additional_properties: std::collections::BTreeMap::new(), @@ -78,9 +78,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineOcsfMapperProcessor { where M: MapAccess<'a>, { + let mut enabled: Option = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut mappings: Option< Vec, > = None; @@ -95,15 +95,15 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineOcsfMapperProcessor { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "id" => { id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "mappings" => { mappings = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -125,16 +125,16 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineOcsfMapperProcessor { } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let mappings = mappings.ok_or_else(|| M::Error::missing_field("mappings"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineOcsfMapperProcessor { + enabled, id, include, - inputs, mappings, type_, additional_properties, diff --git a/src/datadogV2/model/model_observability_pipeline_parse_grok_processor.rs b/src/datadogV2/model/model_observability_pipeline_parse_grok_processor.rs index 1106e8dfd..3cf031ddb 100644 --- a/src/datadogV2/model/model_observability_pipeline_parse_grok_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_parse_grok_processor.rs @@ -14,15 +14,15 @@ pub struct ObservabilityPipelineParseGrokProcessor { /// If set to `true`, disables the default Grok rules provided by Datadog. #[serde(rename = "disable_library_rules")] pub disable_library_rules: Option, + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// A unique identifier for this processor. #[serde(rename = "id")] pub id: String, /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the `input` for this component. - #[serde(rename = "inputs")] - pub inputs: Vec, /// The list of Grok parsing rules. If multiple matching rules are provided, they are evaluated in order. The first successful match is applied. #[serde(rename = "rules")] pub rules: Vec, @@ -38,17 +38,17 @@ pub struct ObservabilityPipelineParseGrokProcessor { impl ObservabilityPipelineParseGrokProcessor { pub fn new( + enabled: bool, id: String, include: String, - inputs: Vec, rules: Vec, type_: crate::datadogV2::model::ObservabilityPipelineParseGrokProcessorType, ) -> ObservabilityPipelineParseGrokProcessor { ObservabilityPipelineParseGrokProcessor { disable_library_rules: None, + enabled, id, include, - inputs, rules, type_, additional_properties: std::collections::BTreeMap::new(), @@ -88,9 +88,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineParseGrokProcessor { M: MapAccess<'a>, { let mut disable_library_rules: Option = None; + let mut enabled: Option = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut rules: Option< Vec, > = None; @@ -112,15 +112,15 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineParseGrokProcessor { disable_library_rules = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "id" => { id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "rules" => { rules = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -142,17 +142,17 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineParseGrokProcessor { } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let rules = rules.ok_or_else(|| M::Error::missing_field("rules"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineParseGrokProcessor { disable_library_rules, + enabled, id, include, - inputs, rules, type_, additional_properties, diff --git a/src/datadogV2/model/model_observability_pipeline_parse_json_processor.rs b/src/datadogV2/model/model_observability_pipeline_parse_json_processor.rs index f9059752a..ceb7c9679 100644 --- a/src/datadogV2/model/model_observability_pipeline_parse_json_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_parse_json_processor.rs @@ -11,6 +11,9 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineParseJSONProcessor { + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// The name of the log field that contains a JSON string. #[serde(rename = "field")] pub field: String, @@ -20,9 +23,6 @@ pub struct ObservabilityPipelineParseJSONProcessor { /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the `input` for this component. - #[serde(rename = "inputs")] - pub inputs: Vec, /// The processor type. The value should always be `parse_json`. #[serde(rename = "type")] pub type_: crate::datadogV2::model::ObservabilityPipelineParseJSONProcessorType, @@ -35,17 +35,17 @@ pub struct ObservabilityPipelineParseJSONProcessor { impl ObservabilityPipelineParseJSONProcessor { pub fn new( + enabled: bool, field: String, id: String, include: String, - inputs: Vec, type_: crate::datadogV2::model::ObservabilityPipelineParseJSONProcessorType, ) -> ObservabilityPipelineParseJSONProcessor { ObservabilityPipelineParseJSONProcessor { + enabled, field, id, include, - inputs, type_, additional_properties: std::collections::BTreeMap::new(), _unparsed: false, @@ -78,10 +78,10 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineParseJSONProcessor { where M: MapAccess<'a>, { + let mut enabled: Option = None; let mut field: Option = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut type_: Option< crate::datadogV2::model::ObservabilityPipelineParseJSONProcessorType, > = None; @@ -93,6 +93,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineParseJSONProcessor { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "field" => { field = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -102,9 +105,6 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineParseJSONProcessor { "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "type" => { type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); if let Some(ref _type_) = type_ { @@ -123,17 +123,17 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineParseJSONProcessor { } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let field = field.ok_or_else(|| M::Error::missing_field("field"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineParseJSONProcessor { + enabled, field, id, include, - inputs, type_, additional_properties, _unparsed, diff --git a/src/datadogV2/model/model_observability_pipeline_quota_processor.rs b/src/datadogV2/model/model_observability_pipeline_quota_processor.rs index 680ef9390..9633e287d 100644 --- a/src/datadogV2/model/model_observability_pipeline_quota_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_quota_processor.rs @@ -13,7 +13,10 @@ use std::fmt::{self, Formatter}; pub struct ObservabilityPipelineQuotaProcessor { /// If set to `true`, logs that matched the quota filter and sent after the quota has been met are dropped; only logs that did not match the filter query continue through the pipeline. #[serde(rename = "drop_events")] - pub drop_events: bool, + pub drop_events: Option, + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components). #[serde(rename = "id")] pub id: String, @@ -23,9 +26,6 @@ pub struct ObservabilityPipelineQuotaProcessor { /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the `input` for this component. - #[serde(rename = "inputs")] - pub inputs: Vec, /// The maximum amount of data or number of events allowed before the quota is enforced. Can be specified in bytes or events. #[serde(rename = "limit")] pub limit: crate::datadogV2::model::ObservabilityPipelineQuotaProcessorLimit, @@ -58,20 +58,19 @@ pub struct ObservabilityPipelineQuotaProcessor { impl ObservabilityPipelineQuotaProcessor { pub fn new( - drop_events: bool, + enabled: bool, id: String, include: String, - inputs: Vec, limit: crate::datadogV2::model::ObservabilityPipelineQuotaProcessorLimit, name: String, type_: crate::datadogV2::model::ObservabilityPipelineQuotaProcessorType, ) -> ObservabilityPipelineQuotaProcessor { ObservabilityPipelineQuotaProcessor { - drop_events, + drop_events: None, + enabled, id, ignore_when_missing_partitions: None, include, - inputs, limit, name, overflow_action: None, @@ -83,6 +82,11 @@ impl ObservabilityPipelineQuotaProcessor { } } + pub fn drop_events(mut self, value: bool) -> Self { + self.drop_events = Some(value); + self + } + pub fn ignore_when_missing_partitions(mut self, value: bool) -> Self { self.ignore_when_missing_partitions = Some(value); self @@ -136,10 +140,10 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineQuotaProcessor { M: MapAccess<'a>, { let mut drop_events: Option = None; + let mut enabled: Option = None; let mut id: Option = None; let mut ignore_when_missing_partitions: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut limit: Option< crate::datadogV2::model::ObservabilityPipelineQuotaProcessorLimit, > = None; @@ -163,9 +167,15 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineQuotaProcessor { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { "drop_events" => { + if v.is_null() { + continue; + } drop_events = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "id" => { id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -179,9 +189,6 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineQuotaProcessor { "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "limit" => { limit = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -234,21 +241,19 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineQuotaProcessor { } } } - let drop_events = - drop_events.ok_or_else(|| M::Error::missing_field("drop_events"))?; + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let limit = limit.ok_or_else(|| M::Error::missing_field("limit"))?; let name = name.ok_or_else(|| M::Error::missing_field("name"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineQuotaProcessor { drop_events, + enabled, id, ignore_when_missing_partitions, include, - inputs, limit, name, overflow_action, diff --git a/src/datadogV2/model/model_observability_pipeline_reduce_processor.rs b/src/datadogV2/model/model_observability_pipeline_reduce_processor.rs index f9de5f3e9..9a45888c2 100644 --- a/src/datadogV2/model/model_observability_pipeline_reduce_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_reduce_processor.rs @@ -11,6 +11,9 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineReduceProcessor { + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// A list of fields used to group log events for merging. #[serde(rename = "group_by")] pub group_by: Vec, @@ -20,9 +23,6 @@ pub struct ObservabilityPipelineReduceProcessor { /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the input for this processor. - #[serde(rename = "inputs")] - pub inputs: Vec, /// List of merge strategies defining how values from grouped events should be combined. #[serde(rename = "merge_strategies")] pub merge_strategies: @@ -39,20 +39,20 @@ pub struct ObservabilityPipelineReduceProcessor { impl ObservabilityPipelineReduceProcessor { pub fn new( + enabled: bool, group_by: Vec, id: String, include: String, - inputs: Vec, merge_strategies: Vec< crate::datadogV2::model::ObservabilityPipelineReduceProcessorMergeStrategy, >, type_: crate::datadogV2::model::ObservabilityPipelineReduceProcessorType, ) -> ObservabilityPipelineReduceProcessor { ObservabilityPipelineReduceProcessor { + enabled, group_by, id, include, - inputs, merge_strategies, type_, additional_properties: std::collections::BTreeMap::new(), @@ -86,10 +86,10 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineReduceProcessor { where M: MapAccess<'a>, { + let mut enabled: Option = None; let mut group_by: Option> = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut merge_strategies: Option< Vec, > = None; @@ -104,6 +104,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineReduceProcessor { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "group_by" => { group_by = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -113,9 +116,6 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineReduceProcessor { "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "merge_strategies" => { merge_strategies = Some(serde_json::from_value(v).map_err(M::Error::custom)?); @@ -138,19 +138,19 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineReduceProcessor { } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let group_by = group_by.ok_or_else(|| M::Error::missing_field("group_by"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let merge_strategies = merge_strategies.ok_or_else(|| M::Error::missing_field("merge_strategies"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineReduceProcessor { + enabled, group_by, id, include, - inputs, merge_strategies, type_, additional_properties, diff --git a/src/datadogV2/model/model_observability_pipeline_remove_fields_processor.rs b/src/datadogV2/model/model_observability_pipeline_remove_fields_processor.rs index 5f9c251fe..b77d58f51 100644 --- a/src/datadogV2/model/model_observability_pipeline_remove_fields_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_remove_fields_processor.rs @@ -11,6 +11,9 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineRemoveFieldsProcessor { + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// A list of field names to be removed from each log event. #[serde(rename = "fields")] pub fields: Vec, @@ -20,9 +23,6 @@ pub struct ObservabilityPipelineRemoveFieldsProcessor { /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] pub include: String, - /// The `PipelineRemoveFieldsProcessor` `inputs`. - #[serde(rename = "inputs")] - pub inputs: Vec, /// The processor type. The value should always be `remove_fields`. #[serde(rename = "type")] pub type_: crate::datadogV2::model::ObservabilityPipelineRemoveFieldsProcessorType, @@ -35,17 +35,17 @@ pub struct ObservabilityPipelineRemoveFieldsProcessor { impl ObservabilityPipelineRemoveFieldsProcessor { pub fn new( + enabled: bool, fields: Vec, id: String, include: String, - inputs: Vec, type_: crate::datadogV2::model::ObservabilityPipelineRemoveFieldsProcessorType, ) -> ObservabilityPipelineRemoveFieldsProcessor { ObservabilityPipelineRemoveFieldsProcessor { + enabled, fields, id, include, - inputs, type_, additional_properties: std::collections::BTreeMap::new(), _unparsed: false, @@ -78,10 +78,10 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineRemoveFieldsProcessor { where M: MapAccess<'a>, { + let mut enabled: Option = None; let mut fields: Option> = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut type_: Option< crate::datadogV2::model::ObservabilityPipelineRemoveFieldsProcessorType, > = None; @@ -93,6 +93,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineRemoveFieldsProcessor { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "fields" => { fields = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -102,9 +105,6 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineRemoveFieldsProcessor { "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "type" => { type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); if let Some(ref _type_) = type_ { @@ -123,17 +123,17 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineRemoveFieldsProcessor { } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let fields = fields.ok_or_else(|| M::Error::missing_field("fields"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineRemoveFieldsProcessor { + enabled, fields, id, include, - inputs, type_, additional_properties, _unparsed, diff --git a/src/datadogV2/model/model_observability_pipeline_rename_fields_processor.rs b/src/datadogV2/model/model_observability_pipeline_rename_fields_processor.rs index abd06dc42..c1fc0c11f 100644 --- a/src/datadogV2/model/model_observability_pipeline_rename_fields_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_rename_fields_processor.rs @@ -11,6 +11,9 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineRenameFieldsProcessor { + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// A list of rename rules specifying which fields to rename in the event, what to rename them to, and whether to preserve the original fields. #[serde(rename = "fields")] pub fields: Vec, @@ -20,9 +23,6 @@ pub struct ObservabilityPipelineRenameFieldsProcessor { /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the `input` for this component. - #[serde(rename = "inputs")] - pub inputs: Vec, /// The processor type. The value should always be `rename_fields`. #[serde(rename = "type")] pub type_: crate::datadogV2::model::ObservabilityPipelineRenameFieldsProcessorType, @@ -35,17 +35,17 @@ pub struct ObservabilityPipelineRenameFieldsProcessor { impl ObservabilityPipelineRenameFieldsProcessor { pub fn new( + enabled: bool, fields: Vec, id: String, include: String, - inputs: Vec, type_: crate::datadogV2::model::ObservabilityPipelineRenameFieldsProcessorType, ) -> ObservabilityPipelineRenameFieldsProcessor { ObservabilityPipelineRenameFieldsProcessor { + enabled, fields, id, include, - inputs, type_, additional_properties: std::collections::BTreeMap::new(), _unparsed: false, @@ -78,12 +78,12 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineRenameFieldsProcessor { where M: MapAccess<'a>, { + let mut enabled: Option = None; let mut fields: Option< Vec, > = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut type_: Option< crate::datadogV2::model::ObservabilityPipelineRenameFieldsProcessorType, > = None; @@ -95,6 +95,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineRenameFieldsProcessor { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "fields" => { fields = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -104,9 +107,6 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineRenameFieldsProcessor { "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "type" => { type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); if let Some(ref _type_) = type_ { @@ -125,17 +125,17 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineRenameFieldsProcessor { } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let fields = fields.ok_or_else(|| M::Error::missing_field("fields"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineRenameFieldsProcessor { + enabled, fields, id, include, - inputs, type_, additional_properties, _unparsed, diff --git a/src/datadogV2/model/model_observability_pipeline_sample_processor.rs b/src/datadogV2/model/model_observability_pipeline_sample_processor.rs index d3365d06f..b2a95ce81 100644 --- a/src/datadogV2/model/model_observability_pipeline_sample_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_sample_processor.rs @@ -11,15 +11,15 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineSampleProcessor { + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components). #[serde(rename = "id")] pub id: String, /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the `input` for this component. - #[serde(rename = "inputs")] - pub inputs: Vec, /// The percentage of logs to sample. #[serde(rename = "percentage")] pub percentage: Option, @@ -38,15 +38,15 @@ pub struct ObservabilityPipelineSampleProcessor { impl ObservabilityPipelineSampleProcessor { pub fn new( + enabled: bool, id: String, include: String, - inputs: Vec, type_: crate::datadogV2::model::ObservabilityPipelineSampleProcessorType, ) -> ObservabilityPipelineSampleProcessor { ObservabilityPipelineSampleProcessor { + enabled, id, include, - inputs, percentage: None, rate: None, type_, @@ -91,9 +91,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineSampleProcessor { where M: MapAccess<'a>, { + let mut enabled: Option = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut percentage: Option = None; let mut rate: Option = None; let mut type_: Option< @@ -107,15 +107,15 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineSampleProcessor { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "id" => { id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "percentage" => { if v.is_null() { continue; @@ -146,15 +146,15 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineSampleProcessor { } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineSampleProcessor { + enabled, id, include, - inputs, percentage, rate, type_, diff --git a/src/datadogV2/model/model_observability_pipeline_sensitive_data_scanner_processor.rs b/src/datadogV2/model/model_observability_pipeline_sensitive_data_scanner_processor.rs index 0768cc2f3..e911f6fd1 100644 --- a/src/datadogV2/model/model_observability_pipeline_sensitive_data_scanner_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_sensitive_data_scanner_processor.rs @@ -11,15 +11,15 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineSensitiveDataScannerProcessor { + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components). #[serde(rename = "id")] pub id: String, /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the `input` for this component. - #[serde(rename = "inputs")] - pub inputs: Vec, /// A list of rules for identifying and acting on sensitive data patterns. #[serde(rename = "rules")] pub rules: Vec, @@ -35,16 +35,16 @@ pub struct ObservabilityPipelineSensitiveDataScannerProcessor { impl ObservabilityPipelineSensitiveDataScannerProcessor { pub fn new( + enabled: bool, id: String, include: String, - inputs: Vec, rules: Vec, type_: crate::datadogV2::model::ObservabilityPipelineSensitiveDataScannerProcessorType, ) -> ObservabilityPipelineSensitiveDataScannerProcessor { ObservabilityPipelineSensitiveDataScannerProcessor { + enabled, id, include, - inputs, rules, type_, additional_properties: std::collections::BTreeMap::new(), @@ -78,9 +78,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineSensitiveDataScannerProcesso where M: MapAccess<'a>, { + let mut enabled: Option = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut rules: Option> = None; let mut type_: Option< crate::datadogV2::model::ObservabilityPipelineSensitiveDataScannerProcessorType, @@ -93,15 +93,15 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineSensitiveDataScannerProcesso while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "id" => { id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "rules" => { rules = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -123,16 +123,16 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineSensitiveDataScannerProcesso } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let rules = rules.ok_or_else(|| M::Error::missing_field("rules"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineSensitiveDataScannerProcessor { + enabled, id, include, - inputs, rules, type_, additional_properties, diff --git a/src/datadogV2/model/model_observability_pipeline_throttle_processor.rs b/src/datadogV2/model/model_observability_pipeline_throttle_processor.rs index f64aeba9b..d6dd66930 100644 --- a/src/datadogV2/model/model_observability_pipeline_throttle_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_throttle_processor.rs @@ -11,6 +11,9 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineThrottleProcessor { + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// Optional list of fields used to group events before the threshold has been reached. #[serde(rename = "group_by")] pub group_by: Option>, @@ -20,9 +23,6 @@ pub struct ObservabilityPipelineThrottleProcessor { /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the input for this processor. - #[serde(rename = "inputs")] - pub inputs: Vec, /// the number of events allowed in a given time window. Events sent after the threshold has been reached, are dropped. #[serde(rename = "threshold")] pub threshold: i64, @@ -41,18 +41,18 @@ pub struct ObservabilityPipelineThrottleProcessor { impl ObservabilityPipelineThrottleProcessor { pub fn new( + enabled: bool, id: String, include: String, - inputs: Vec, threshold: i64, type_: crate::datadogV2::model::ObservabilityPipelineThrottleProcessorType, window: f64, ) -> ObservabilityPipelineThrottleProcessor { ObservabilityPipelineThrottleProcessor { + enabled, group_by: None, id, include, - inputs, threshold, type_, window, @@ -92,10 +92,10 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineThrottleProcessor { where M: MapAccess<'a>, { + let mut enabled: Option = None; let mut group_by: Option> = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut threshold: Option = None; let mut type_: Option< crate::datadogV2::model::ObservabilityPipelineThrottleProcessorType, @@ -109,6 +109,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineThrottleProcessor { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "group_by" => { if v.is_null() { continue; @@ -121,9 +124,6 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineThrottleProcessor { "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "threshold" => { threshold = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -148,18 +148,18 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineThrottleProcessor { } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let threshold = threshold.ok_or_else(|| M::Error::missing_field("threshold"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let window = window.ok_or_else(|| M::Error::missing_field("window"))?; let content = ObservabilityPipelineThrottleProcessor { + enabled, group_by, id, include, - inputs, threshold, type_, window, diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-Bad-Request-response.frozen b/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-Bad-Request-response.frozen index 71a6a0948..ab5be24b5 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-Bad-Request-response.frozen +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-Bad-Request-response.frozen @@ -1 +1 @@ -2025-04-25T17:29:21.625Z \ No newline at end of file +2025-12-12T12:01:38.830Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-Bad-Request-response.json b/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-Bad-Request-response.json index dff56ba61..26501dee9 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-Bad-Request-response.json +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-Bad-Request-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"unknown-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", + "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"my-processor-group\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"unknown-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"errors\":[{\"title\":\"Component with ID filter-processor is an unknown component\",\"meta\":{\"message\":\"Component with ID filter-processor is an unknown component\"}},{\"title\":\"The following components are unused: [datadog-agent-source unknown-processor]\",\"meta\":{\"message\":\"The following components are unused: [datadog-agent-source unknown-processor]\"}}]}\n", + "string": "{\"errors\":[{\"title\":\"Component with ID my-processor-group is an unknown component\",\"meta\":{\"message\":\"Component with ID my-processor-group is an unknown component\"}},{\"title\":\"The following components are unused: [datadog-agent-source unknown-processor]\",\"meta\":{\"message\":\"The following components are unused: [datadog-agent-source unknown-processor]\"}}]}\n", "encoding": null }, "headers": { @@ -32,7 +32,7 @@ "message": "Bad Request" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:21 GMT" + "recorded_at": "Fri, 12 Dec 2025 12:01:38 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-OK-response.frozen index a6261e736..54d3e11ac 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-OK-response.frozen +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-OK-response.frozen @@ -1 +1 @@ -2025-04-25T17:29:23.837Z \ No newline at end of file +2025-12-12T12:01:39.315Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-OK-response.json b/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-OK-response.json index c6b564df5..bb50f23a5 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-OK-response.json +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-OK-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", + "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"my-processor-group\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"my-processor-group\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"d891e45c-21fa-11f0-96dc-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", + "string": "{\"data\":{\"id\":\"512fbd46-d752-11f0-b25a-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"my-processor-group\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"my-processor-group\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", "encoding": null }, "headers": { @@ -32,7 +32,7 @@ "message": "Created" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:23 GMT" + "recorded_at": "Fri, 12 Dec 2025 12:01:39 GMT" }, { "request": { @@ -43,7 +43,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/d891e45c-21fa-11f0-96dc-da7ad0900002" + "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/512fbd46-d752-11f0-b25a-da7ad0900002" }, "response": { "body": { @@ -60,7 +60,7 @@ "message": "No Content" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:23 GMT" + "recorded_at": "Fri, 12 Dec 2025 12:01:39 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-Not-Found-response.frozen b/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-Not-Found-response.frozen index 033a0755d..11b70ae94 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-Not-Found-response.frozen +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-Not-Found-response.frozen @@ -1 +1 @@ -2025-04-25T17:29:25.292Z \ No newline at end of file +2025-12-12T12:01:40.725Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-Not-Found-response.json b/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-Not-Found-response.json index cff4dbab4..3c1df7109 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-Not-Found-response.json +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-Not-Found-response.json @@ -26,7 +26,7 @@ "message": "Not Found" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:25 GMT" + "recorded_at": "Fri, 12 Dec 2025 12:01:40 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-OK-response.frozen index 9cbc728e0..56c1eeacb 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-OK-response.frozen +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-OK-response.frozen @@ -1 +1 @@ -2025-04-25T17:29:26.847Z \ No newline at end of file +2025-12-12T12:01:41.308Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-OK-response.json b/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-OK-response.json index e719f65dc..3ccfbebf3 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-OK-response.json +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-OK-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", + "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"da5f2218-21fa-11f0-96de-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", + "string": "{\"data\":{\"id\":\"5260fb94-d752-11f0-b25c-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", "encoding": null }, "headers": { @@ -32,7 +32,7 @@ "message": "Created" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:26 GMT" + "recorded_at": "Fri, 12 Dec 2025 12:01:41 GMT" }, { "request": { @@ -43,7 +43,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/da5f2218-21fa-11f0-96de-da7ad0900002" + "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/5260fb94-d752-11f0-b25c-da7ad0900002" }, "response": { "body": { @@ -60,7 +60,7 @@ "message": "No Content" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:26 GMT" + "recorded_at": "Fri, 12 Dec 2025 12:01:41 GMT" }, { "request": { @@ -71,7 +71,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/da5f2218-21fa-11f0-96de-da7ad0900002" + "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/5260fb94-d752-11f0-b25c-da7ad0900002" }, "response": { "body": { @@ -88,7 +88,7 @@ "message": "Not Found" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:26 GMT" + "recorded_at": "Fri, 12 Dec 2025 12:01:41 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Get-a-specific-pipeline-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/observability_pipelines/Get-a-specific-pipeline-returns-OK-response.frozen index f863fd1ac..a850c336c 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Get-a-specific-pipeline-returns-OK-response.frozen +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Get-a-specific-pipeline-returns-OK-response.frozen @@ -1 +1 @@ -2025-04-25T17:29:29.196Z \ No newline at end of file +2025-12-12T12:01:43.689Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Get-a-specific-pipeline-returns-OK-response.json b/tests/scenarios/cassettes/v2/observability_pipelines/Get-a-specific-pipeline-returns-OK-response.json index 21f2f6d50..302aba308 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Get-a-specific-pipeline-returns-OK-response.json +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Get-a-specific-pipeline-returns-OK-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", + "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"dbbff3d0-21fa-11f0-96e0-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", + "string": "{\"data\":{\"id\":\"53caaa70-d752-11f0-b766-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", "encoding": null }, "headers": { @@ -32,7 +32,7 @@ "message": "Created" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:29 GMT" + "recorded_at": "Fri, 12 Dec 2025 12:01:43 GMT" }, { "request": { @@ -43,11 +43,11 @@ ] }, "method": "get", - "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/dbbff3d0-21fa-11f0-96e0-da7ad0900002" + "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/53caaa70-d752-11f0-b766-da7ad0900002" }, "response": { "body": { - "string": "{\"data\":{\"id\":\"dbbff3d0-21fa-11f0-96e0-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", + "string": "{\"data\":{\"id\":\"53caaa70-d752-11f0-b766-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", "encoding": null }, "headers": { @@ -60,7 +60,7 @@ "message": "OK" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:29 GMT" + "recorded_at": "Fri, 12 Dec 2025 12:01:43 GMT" }, { "request": { @@ -71,7 +71,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/dbbff3d0-21fa-11f0-96e0-da7ad0900002" + "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/53caaa70-d752-11f0-b766-da7ad0900002" }, "response": { "body": { @@ -88,7 +88,7 @@ "message": "No Content" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:29 GMT" + "recorded_at": "Fri, 12 Dec 2025 12:01:43 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-Bad-Request-response.frozen b/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-Bad-Request-response.frozen index 3a7978da8..65b4915a7 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-Bad-Request-response.frozen +++ b/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-Bad-Request-response.frozen @@ -1 +1 @@ -2025-04-25T17:29:31.769Z \ No newline at end of file +2025-12-12T12:01:46.096Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-Bad-Request-response.json b/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-Bad-Request-response.json index 6ff26ad2d..4dbd61e15 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-Bad-Request-response.json +++ b/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-Bad-Request-response.json @@ -26,7 +26,7 @@ "message": "Bad Request" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:31 GMT" + "recorded_at": "Fri, 12 Dec 2025 12:01:46 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-OK-response.frozen index 4c9f3cfcb..d20c66e6a 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-OK-response.frozen +++ b/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-OK-response.frozen @@ -1 +1 @@ -2025-04-25T17:29:32.322Z \ No newline at end of file +2025-12-12T12:01:46.582Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-OK-response.json b/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-OK-response.json index 99db48ab6..57b5ed064 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-OK-response.json +++ b/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-OK-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", + "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"dd87c652-21fa-11f0-96e2-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", + "string": "{\"data\":{\"id\":\"558588ee-d752-11f0-b25e-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", "encoding": null }, "headers": { @@ -32,7 +32,7 @@ "message": "Created" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:32 GMT" + "recorded_at": "Fri, 12 Dec 2025 12:01:46 GMT" }, { "request": { @@ -47,7 +47,7 @@ }, "response": { "body": { - "string": "{\"data\":[{\"id\":\"8d85d864-0f09-11f0-9711-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"3f339054-10ab-11f0-88a2-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"b8c068de-10ab-11f0-88a8-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"32e2f90a-1139-11f0-8501-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"67e79020-1139-11f0-98d1-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"30966e06-113a-11f0-98e1-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"3e3f9382-138f-11f0-8cf0-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"test pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"parser-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"field\":\"message\",\"id\":\"parser-1\",\"include\":\"service:my-service\",\"inputs\":[\"source-1\"],\"type\":\"parse_json\"}],\"sources\":[{\"id\":\"source-1\",\"tls\":{\"crt_file\":\"/path/to/cert.crt\"},\"type\":\"datadog_agent\"}]}}},{\"id\":\"42159650-138f-11f0-a2aa-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"test pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"parser-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"field\":\"message\",\"id\":\"parser-1\",\"include\":\"service:my-service\",\"inputs\":[\"source-1\"],\"type\":\"parse_json\"}],\"sources\":[{\"id\":\"source-1\",\"tls\":{\"crt_file\":\"/path/to/cert.crt\"},\"type\":\"datadog_agent\"}]}}},{\"id\":\"6cc001f8-1392-11f0-9e35-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"agent with tls\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"source-with-tls\"],\"type\":\"datadog_logs\"}],\"processors\":[],\"sources\":[{\"id\":\"source-with-tls\",\"tls\":{\"ca_file\":\"/etc/certs/ca.crt\",\"crt_file\":\"/etc/certs/agent.crt\",\"key_file\":\"/etc/certs/agent.key\"},\"type\":\"datadog_agent\"}]}}},{\"id\":\"bdf5078e-139d-11f0-8e4f-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"e67402d2-139d-11f0-8e51-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"e9849f22-139d-11f0-8e53-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"f9845bb0-139d-11f0-b101-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"2ebd82ca-139e-11f0-b103-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"31ba5a34-139e-11f0-8e55-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"3aa802c2-139e-11f0-8e57-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"7b3daaf8-139e-11f0-8e59-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"7e72d32e-139e-11f0-8e5b-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"818a8728-139e-11f0-8e5d-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"bed86e88-139e-11f0-8e5f-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"c202b050-139e-11f0-b107-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"c5111084-139e-11f0-8e61-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"e01ae6de-139e-11f0-8e63-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"e33ad356-139e-11f0-b109-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"e6783e78-139e-11f0-b10b-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"04407bfa-139f-11f0-8e65-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"126be958-139f-11f0-8e67-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"97607354-139f-11f0-8e6b-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"305f9a88-13a2-11f0-8dd9-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"parse-json-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"parser-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"field\":\"message\",\"id\":\"parser-1\",\"include\":\"env:parse\",\"inputs\":[\"source-1\"],\"type\":\"parse_json\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"45669120-13a2-11f0-8ddb-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"parse-json-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"parser-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"field\":\"message\",\"id\":\"parser-1\",\"include\":\"env:parse\",\"inputs\":[\"source-1\"],\"type\":\"parse_json\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"c00f7548-13a4-11f0-9315-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"test pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"parser-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"field\":\"message\",\"id\":\"parser-1\",\"include\":\"service:my-service\",\"inputs\":[\"source-1\"],\"type\":\"parse_json\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"c07cf206-13a6-11f0-949d-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"test pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"parser-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"field\":\"message\",\"id\":\"parser-1\",\"include\":\"service:my-service\",\"inputs\":[\"source-1\"],\"type\":\"parse_json\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"8ff06e36-13ad-11f0-8243-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"8ff1a508-13ad-11f0-b934-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"agent with tls\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"source-with-tls\"],\"type\":\"datadog_logs\"}],\"processors\":[],\"sources\":[{\"id\":\"source-with-tls\",\"tls\":{\"crt_file\":\"/etc/certs/agent.crt\",\"key_file\":\"/etc/certs/agent.key\"},\"type\":\"datadog_agent\"}]}}},{\"id\":\"8ff38a08-13ad-11f0-8245-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"parse-json-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"parser-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"field\":\"message\",\"id\":\"parser-1\",\"include\":\"env:parse\",\"inputs\":[\"source-1\"],\"type\":\"parse_json\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"8ff54f0a-13ad-11f0-8247-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"kafka pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"kafka-source-1\"],\"type\":\"datadog_logs\"}],\"processors\":[],\"sources\":[{\"group_id\":\"consumer-group-1\",\"id\":\"kafka-source-1\",\"sasl\":{\"mechanism\":\"PLAIN\"},\"tls\":{\"ca_file\":\"\",\"crt_file\":\"/path/to/kafka.crt\"},\"topics\":[\"topic-a\",\"topic-b\"],\"type\":\"kafka\"}]}}},{\"id\":\"f814235e-13ad-11f0-b942-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"agent with tls\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"source-with-tls\"],\"type\":\"datadog_logs\"}],\"processors\":[],\"sources\":[{\"id\":\"source-with-tls\",\"tls\":{\"crt_file\":\"/etc/certs/agent.crt\",\"key_file\":\"/etc/certs/agent.key\"},\"type\":\"datadog_agent\"}]}}},{\"id\":\"5b1a9314-13ce-11f0-a9de-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"rename-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"rename-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"destination\":\"new.field\",\"preserve_source\":true,\"source\":\"old.field\"}],\"id\":\"rename-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"rename_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"1e356802-1419-11f0-8834-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"14156a86-142b-11f0-96f3-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"a5280a06-143a-11f0-aac4-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"5005f6c2-1481-11f0-8faa-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"remove-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"remove-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[\"temp.debug\",\"internal.trace_id\"],\"id\":\"remove-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"remove_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"9c1776c0-14d7-11f0-87c9-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"b1e4c58c-1501-11f0-b0bd-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"43a8a4cc-15c3-11f0-b111-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"45042a58-15c3-11f0-b113-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"f9de3956-15cc-11f0-ac43-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"b3efaa52-1693-11f0-89e0-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"24c83620-1696-11f0-89e6-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"5d2875d6-17a2-11f0-9bd1-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}],\"meta\":{\"totalCount\":128}}\n", + "string": "{\"data\":[{\"id\":\"558588ee-d752-11f0-b25e-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}],\"meta\":{\"totalCount\":1}}\n", "encoding": null }, "headers": { @@ -60,7 +60,7 @@ "message": "OK" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:32 GMT" + "recorded_at": "Fri, 12 Dec 2025 12:01:46 GMT" }, { "request": { @@ -71,7 +71,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/dd87c652-21fa-11f0-96e2-da7ad0900002" + "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/558588ee-d752-11f0-b25e-da7ad0900002" }, "response": { "body": { @@ -88,7 +88,7 @@ "message": "No Content" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:32 GMT" + "recorded_at": "Fri, 12 Dec 2025 12:01:46 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Bad-Request-response.frozen b/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Bad-Request-response.frozen index a8aa863f1..f2c06e4be 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Bad-Request-response.frozen +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Bad-Request-response.frozen @@ -1 +1 @@ -2025-04-25T17:29:34.672Z \ No newline at end of file +2025-12-12T12:01:48.747Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Bad-Request-response.json b/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Bad-Request-response.json index 3f1394aec..223fd02f4 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Bad-Request-response.json +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Bad-Request-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", + "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"deeea5f6-21fa-11f0-96e4-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", + "string": "{\"data\":{\"id\":\"56cdbe24-d752-11f0-b260-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", "encoding": null }, "headers": { @@ -32,12 +32,12 @@ "message": "Created" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:34 GMT" + "recorded_at": "Fri, 12 Dec 2025 12:01:48 GMT" }, { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"unknown-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"id\":\"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\"type\":\"pipelines\"}}", + "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"my-processor-group\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"unknown-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"id\":\"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\"type\":\"pipelines\"}}", "encoding": null }, "headers": { @@ -49,11 +49,11 @@ ] }, "method": "put", - "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/deeea5f6-21fa-11f0-96e4-da7ad0900002" + "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/56cdbe24-d752-11f0-b260-da7ad0900002" }, "response": { "body": { - "string": "{\"errors\":[{\"title\":\"Component with ID filter-processor is an unknown component\",\"meta\":{\"message\":\"Component with ID filter-processor is an unknown component\"}},{\"title\":\"The following components are unused: [datadog-agent-source unknown-processor]\",\"meta\":{\"message\":\"The following components are unused: [datadog-agent-source unknown-processor]\"}}]}\n", + "string": "{\"errors\":[{\"title\":\"Component with ID my-processor-group is an unknown component\",\"meta\":{\"message\":\"Component with ID my-processor-group is an unknown component\"}},{\"title\":\"The following components are unused: [datadog-agent-source unknown-processor]\",\"meta\":{\"message\":\"The following components are unused: [datadog-agent-source unknown-processor]\"}}]}\n", "encoding": null }, "headers": { @@ -66,7 +66,7 @@ "message": "Bad Request" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:34 GMT" + "recorded_at": "Fri, 12 Dec 2025 12:01:48 GMT" }, { "request": { @@ -77,7 +77,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/deeea5f6-21fa-11f0-96e4-da7ad0900002" + "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/56cdbe24-d752-11f0-b260-da7ad0900002" }, "response": { "body": { @@ -94,7 +94,7 @@ "message": "No Content" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:34 GMT" + "recorded_at": "Fri, 12 Dec 2025 12:01:48 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Not-Found-response.frozen b/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Not-Found-response.frozen index 81821e325..90a907bd3 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Not-Found-response.frozen +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Not-Found-response.frozen @@ -1 +1 @@ -2025-04-25T17:29:36.564Z \ No newline at end of file +2025-12-12T12:01:50.671Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Not-Found-response.json b/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Not-Found-response.json index d6402b9f0..30e6ad700 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Not-Found-response.json +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Not-Found-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"id\":\"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\"type\":\"pipelines\"}}", + "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"my-processor-group\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"my-processor-group\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"id\":\"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\"type\":\"pipelines\"}}", "encoding": null }, "headers": { @@ -32,7 +32,7 @@ "message": "Not Found" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:36 GMT" + "recorded_at": "Fri, 12 Dec 2025 12:01:50 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-OK-response.frozen index 8195f92c7..46edcdb93 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-OK-response.frozen +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-OK-response.frozen @@ -1 +1 @@ -2025-04-25T17:29:36.987Z \ No newline at end of file +2025-12-12T12:01:51.160Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-OK-response.json b/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-OK-response.json index 4e01dc6ce..3cd4a76ae 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-OK-response.json +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-OK-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", + "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"e04d5230-21fa-11f0-96e6-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", + "string": "{\"data\":{\"id\":\"58407a12-d752-11f0-b262-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", "encoding": null }, "headers": { @@ -32,12 +32,12 @@ "message": "Created" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:36 GMT" + "recorded_at": "Fri, 12 Dec 2025 12:01:51 GMT" }, { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"updated-datadog-logs-destination-id\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Updated Pipeline Name\"},\"id\":\"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\"type\":\"pipelines\"}}", + "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"updated-datadog-logs-destination-id\",\"inputs\":[\"my-processor-group\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"my-processor-group\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Updated Pipeline Name\"},\"id\":\"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\"type\":\"pipelines\"}}", "encoding": null }, "headers": { @@ -49,11 +49,11 @@ ] }, "method": "put", - "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/e04d5230-21fa-11f0-96e6-da7ad0900002" + "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/58407a12-d752-11f0-b262-da7ad0900002" }, "response": { "body": { - "string": "{\"data\":{\"id\":\"e04d5230-21fa-11f0-96e6-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Updated Pipeline Name\",\"config\":{\"destinations\":[{\"id\":\"updated-datadog-logs-destination-id\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", + "string": "{\"data\":{\"id\":\"58407a12-d752-11f0-b262-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Updated Pipeline Name\",\"config\":{\"destinations\":[{\"id\":\"updated-datadog-logs-destination-id\",\"inputs\":[\"my-processor-group\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"my-processor-group\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", "encoding": null }, "headers": { @@ -66,7 +66,7 @@ "message": "OK" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:36 GMT" + "recorded_at": "Fri, 12 Dec 2025 12:01:51 GMT" }, { "request": { @@ -77,7 +77,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/e04d5230-21fa-11f0-96e6-da7ad0900002" + "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/58407a12-d752-11f0-b262-da7ad0900002" }, "response": { "body": { @@ -94,7 +94,7 @@ "message": "No Content" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:36 GMT" + "recorded_at": "Fri, 12 Dec 2025 12:01:51 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-Bad-Request-response.frozen b/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-Bad-Request-response.frozen index f19e635b2..149cc2fb4 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-Bad-Request-response.frozen +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-Bad-Request-response.frozen @@ -1 +1 @@ -2025-04-25T17:29:39.236Z \ No newline at end of file +2025-12-12T12:01:54.040Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-Bad-Request-response.json b/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-Bad-Request-response.json index ac40712d6..8d7bf48db 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-Bad-Request-response.json +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-Bad-Request-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", + "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"my-processor-group\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"my-processor-group\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", "encoding": null }, "headers": { @@ -32,7 +32,7 @@ "message": "Bad Request" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:39 GMT" + "recorded_at": "Fri, 12 Dec 2025 12:01:54 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-OK-response.frozen index c2e1e3c73..a4c779514 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-OK-response.frozen +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-OK-response.frozen @@ -1 +1 @@ -2025-04-25T17:29:39.613Z \ No newline at end of file +2025-12-12T12:01:54.520Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-OK-response.json b/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-OK-response.json index 327ad4a1a..8603ff262 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-OK-response.json +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-OK-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", + "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"my-processor-group\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"my-processor-group\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", "encoding": null }, "headers": { @@ -24,7 +24,7 @@ }, "headers": { "Content-Type": [ - "application/json" + "application/vnd.api+json" ] }, "status": { @@ -32,7 +32,7 @@ "message": "OK" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:39 GMT" + "recorded_at": "Fri, 12 Dec 2025 12:01:54 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/features/v2/given.json b/tests/scenarios/features/v2/given.json index a6a148f26..7725798de 100644 --- a/tests/scenarios/features/v2/given.json +++ b/tests/scenarios/features/v2/given.json @@ -867,7 +867,7 @@ "parameters": [ { "name": "body", - "value": "{\n \"data\":{\n \"attributes\":{\n \"config\":{\n \"destinations\":[\n {\n \"id\":\"datadog-logs-destination\",\n \"inputs\":[\n \"filter-processor\"\n ],\n \"type\":\"datadog_logs\"\n }\n ],\n \"processors\":[\n {\n \"id\":\"filter-processor\",\n \"include\":\"service:my-service\",\n \"inputs\":[\n \"datadog-agent-source\"\n ],\n \"type\":\"filter\"\n }\n ],\n \"sources\":[\n {\n \"id\":\"datadog-agent-source\",\n \"type\":\"datadog_agent\"\n }\n ]\n },\n \"name\":\"Main Observability Pipeline\"\n },\n \"type\":\"pipelines\"\n }\n}" + "value": "{\n \"data\":{\n \"attributes\":{\n \"config\":{\n \"destinations\":[\n {\n \"id\":\"datadog-logs-destination\",\n \"inputs\":[\n \"processor-group-0\"\n ],\n \"type\":\"datadog_logs\"\n }\n ],\n \"processors\":[\n {\n \"id\":\"processor-group-0\",\n \"include\":\"service:my-service\",\n \"inputs\":[\n \"datadog-agent-source\"\n ],\n \"enabled\": true,\n \"processors\": [\n {\n \"id\": \"filter-processor\",\n \"type\": \"filter\",\n \"include\": \"status:error\",\n \"enabled\": true\n }\n ]\n }\n ],\n \"sources\":[\n {\n \"id\":\"datadog-agent-source\",\n \"type\":\"datadog_agent\"\n }\n ]\n },\n \"name\":\"Main Observability Pipeline\"\n },\n \"type\":\"pipelines\"\n }\n}" } ], "step": "there is a valid \"pipeline\" in the system", diff --git a/tests/scenarios/features/v2/observability_pipelines.feature b/tests/scenarios/features/v2/observability_pipelines.feature index c7149b1e4..c43fa8b3b 100644 --- a/tests/scenarios/features/v2/observability_pipelines.feature +++ b/tests/scenarios/features/v2/observability_pipelines.feature @@ -12,7 +12,7 @@ Feature: Observability Pipelines Scenario: Create a new pipeline returns "Bad Request" response Given operation "CreatePipeline" enabled And new "CreatePipeline" request - And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["filter-processor"], "type": "datadog_logs"}], "processors": [{"id": "unknown-processor", "include": "service:my-service", "inputs": ["datadog-agent-source"], "type": "filter"}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "type": "pipelines"}} + And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["my-processor-group"], "type": "datadog_logs"}], "processors": [{"enabled": true, "id": "unknown-processor", "include": "service:my-service", "inputs": ["datadog-agent-source"], "processors": [{"enabled": true, "id": "filter-processor", "include": "status:error", "type": "filter"}]}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "type": "pipelines"}} When the request is sent Then the response status is 400 Bad Request @@ -20,7 +20,7 @@ Feature: Observability Pipelines Scenario: Create a new pipeline returns "Conflict" response Given operation "CreatePipeline" enabled And new "CreatePipeline" request - And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["filter-processor"], "type": "datadog_logs"}], "processors": [{"id": "filter-processor", "include": "service:my-service", "inputs": ["datadog-agent-source"], "type": "filter"}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "type": "pipelines"}} + And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["filter-processor"], "type": "datadog_logs"}], "processors": [{"enabled": true, "id": "my-processor-group", "include": "service:my-service", "inputs": ["datadog-agent-source"], "processors": [{"enabled": true, "id": "filter-processor", "include": "status:error", "type": "filter"}, {"enabled": true, "field": "message", "id": "json-processor", "include": "*", "type": "parse_json"}]}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "type": "pipelines"}} When the request is sent Then the response status is 409 Conflict @@ -28,7 +28,7 @@ Feature: Observability Pipelines Scenario: Create a new pipeline returns "OK" response Given operation "CreatePipeline" enabled And new "CreatePipeline" request - And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["filter-processor"], "type": "datadog_logs"}], "processors": [{"id": "filter-processor", "include": "service:my-service", "inputs": ["datadog-agent-source"], "type": "filter"}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "type": "pipelines"}} + And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["my-processor-group"], "type": "datadog_logs"}], "processors": [{"enabled": true, "id": "my-processor-group", "include": "service:my-service", "inputs": ["datadog-agent-source"], "processors": [{"enabled": true, "id": "filter-processor", "include": "status:error", "type": "filter"}]}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "type": "pipelines"}} When the request is sent Then the response status is 201 OK And the response "data" has field "id" @@ -106,7 +106,7 @@ Feature: Observability Pipelines And new "UpdatePipeline" request And there is a valid "pipeline" in the system And request contains "pipeline_id" parameter from "pipeline.data.id" - And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["filter-processor"], "type": "datadog_logs"}], "processors": [{"id": "unknown-processor", "include": "service:my-service", "inputs": ["datadog-agent-source"], "type": "filter"}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "type": "pipelines"}} + And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["my-processor-group"], "type": "datadog_logs"}], "processors": [{"enabled": true, "id": "unknown-processor", "include": "service:my-service", "inputs": ["datadog-agent-source"], "processors": [{"enabled": true, "id": "filter-processor", "include": "status:error", "type": "filter"}]}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "type": "pipelines"}} When the request is sent Then the response status is 400 Bad Request @@ -115,7 +115,7 @@ Feature: Observability Pipelines Given operation "UpdatePipeline" enabled And new "UpdatePipeline" request And request contains "pipeline_id" parameter from "REPLACE.ME" - And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["filter-processor"], "type": "datadog_logs"}], "processors": [{"id": "filter-processor", "include": "service:my-service", "inputs": ["datadog-agent-source"], "type": "filter"}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "type": "pipelines"}} + And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["filter-processor"], "type": "datadog_logs"}], "processors": [{"enabled": true, "id": "my-processor-group", "include": "service:my-service", "inputs": ["datadog-agent-source"], "processors": [{"enabled": true, "id": "filter-processor", "include": "status:error", "type": "filter"}, {"enabled": true, "field": "message", "id": "json-processor", "include": "*", "type": "parse_json"}]}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "type": "pipelines"}} When the request is sent Then the response status is 409 Conflict @@ -124,7 +124,7 @@ Feature: Observability Pipelines Given operation "UpdatePipeline" enabled And new "UpdatePipeline" request And request contains "pipeline_id" parameter with value "3fa85f64-5717-4562-b3fc-2c963f66afa6" - And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["filter-processor"], "type": "datadog_logs"}], "processors": [{"id": "filter-processor", "include": "service:my-service", "inputs": ["datadog-agent-source"], "type": "filter"}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "type": "pipelines"}} + And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["my-processor-group"], "type": "datadog_logs"}], "processors": [{"enabled": true, "id": "my-processor-group", "include": "service:my-service", "inputs": ["datadog-agent-source"], "processors": [{"enabled": true, "id": "filter-processor", "include": "status:error", "type": "filter"}]}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "type": "pipelines"}} When the request is sent Then the response status is 404 Not Found @@ -134,7 +134,7 @@ Feature: Observability Pipelines And there is a valid "pipeline" in the system And new "UpdatePipeline" request And request contains "pipeline_id" parameter from "pipeline.data.id" - And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "updated-datadog-logs-destination-id", "inputs": ["filter-processor"], "type": "datadog_logs"}], "processors": [{"id": "filter-processor", "include": "service:my-service", "inputs": ["datadog-agent-source"], "type": "filter"}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Updated Pipeline Name"}, "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "type": "pipelines"}} + And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "updated-datadog-logs-destination-id", "inputs": ["my-processor-group"], "type": "datadog_logs"}], "processors": [{"enabled": true, "id": "my-processor-group", "include": "service:my-service", "inputs": ["datadog-agent-source"], "processors": [{"enabled": true, "id": "filter-processor", "include": "status:error", "type": "filter"}]}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Updated Pipeline Name"}, "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "type": "pipelines"}} When the request is sent Then the response status is 200 OK And the response "data" has field "id" @@ -149,7 +149,7 @@ Feature: Observability Pipelines Scenario: Validate an observability pipeline returns "Bad Request" response Given operation "ValidatePipeline" enabled And new "ValidatePipeline" request - And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["filter-processor"], "type": "datadog_logs"}], "processors": [{"id": "filter-processor", "inputs": ["datadog-agent-source"], "type": "filter"}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "type": "pipelines"}} + And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["my-processor-group"], "type": "datadog_logs"}], "processors": [{"enabled": true, "id": "my-processor-group", "include": "service:my-service", "inputs": ["datadog-agent-source"], "processors": [{"enabled": true, "id": "filter-processor", "type": "filter"}]}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "type": "pipelines"}} When the request is sent Then the response status is 400 Bad Request And the response "errors[0].title" is equal to "Field 'include' is required" @@ -161,7 +161,7 @@ Feature: Observability Pipelines Scenario: Validate an observability pipeline returns "OK" response Given operation "ValidatePipeline" enabled And new "ValidatePipeline" request - And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["filter-processor"], "type": "datadog_logs"}], "processors": [{"id": "filter-processor", "include": "service:my-service", "inputs": ["datadog-agent-source"], "type": "filter"}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "type": "pipelines"}} + And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["my-processor-group"], "type": "datadog_logs"}], "processors": [{"enabled": true, "id": "my-processor-group", "include": "service:my-service", "inputs": ["datadog-agent-source"], "processors": [{"enabled": true, "id": "filter-processor", "include": "status:error", "type": "filter"}]}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "type": "pipelines"}} When the request is sent Then the response status is 200 OK And the response "errors" has length 0