From 5df1e2f62b4258b91c4420426785191e8dbc39ab Mon Sep 17 00:00:00 2001 From: "ci.datadog-api-spec" Date: Wed, 1 Jul 2026 12:02:35 +0000 Subject: [PATCH] Regenerate client from commit 380f1c0 of spec repo --- .generator/schemas/v2/openapi.yaml | 49 ++++++++- docs/datadog_api_client.v2.model.rst | 14 +++ .../ValidatePipeline_3345949653.py | 99 +++++++++++++++++ .../ValidatePipeline_3928499240.py | 100 ++++++++++++++++++ ...vability_pipeline_config_processor_item.py | 8 +- ...rvability_pipeline_parse_grok_processor.py | 36 +++++-- ...eline_parse_grok_processor_include_rule.py | 73 +++++++++++++ ...pipeline_parse_grok_processor_rule_item.py | 54 ++++++++++ src/datadog_api_client/v2/models/__init__.py | 8 ++ ...r_include_rules_returns_ok_response.frozen | 1 + ...sor_include_rules_returns_ok_response.yaml | 23 ++++ ...or_source_rules_returns_ok_response.frozen | 1 + ...ssor_source_rules_returns_ok_response.yaml | 23 ++++ .../features/observability_pipelines.feature | 16 +++ 14 files changed, 491 insertions(+), 14 deletions(-) create mode 100644 examples/v2/observability-pipelines/ValidatePipeline_3345949653.py create mode 100644 examples/v2/observability-pipelines/ValidatePipeline_3928499240.py create mode 100644 src/datadog_api_client/v2/model/observability_pipeline_parse_grok_processor_include_rule.py create mode 100644 src/datadog_api_client/v2/model/observability_pipeline_parse_grok_processor_rule_item.py create mode 100644 tests/v2/cassettes/test_scenarios/test_validate_an_observability_pipeline_with_parse_grok_processor_include_rules_returns_ok_response.frozen create mode 100644 tests/v2/cassettes/test_scenarios/test_validate_an_observability_pipeline_with_parse_grok_processor_include_rules_returns_ok_response.yaml create mode 100644 tests/v2/cassettes/test_scenarios/test_validate_an_observability_pipeline_with_parse_grok_processor_source_rules_returns_ok_response.frozen create mode 100644 tests/v2/cassettes/test_scenarios/test_validate_an_observability_pipeline_with_parse_grok_processor_source_rules_returns_ok_response.yaml diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index b37669c620..e8790871ff 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -67723,6 +67723,10 @@ components: The `parse_grok` processor extracts structured fields from unstructured log messages using Grok patterns. **Supported pipeline types:** logs + example: + id: "parse-grok-processor" + include: "service:my-service" + type: "parse_grok" properties: disable_library_rules: default: false @@ -67735,6 +67739,11 @@ components: description: Indicates whether the processor is enabled. example: true type: boolean + field: + default: "message" + description: The log field to parse with the Grok rules. + example: "message" + type: string id: description: A unique identifier for this processor. example: "parse-grok-processor" @@ -67744,9 +67753,9 @@ components: example: "service:my-service" type: string rules: - description: The list of Grok parsing rules. If multiple matching rules are provided, they are evaluated in order. The first successful match is applied. + description: The list of Grok parsing rules selected by either source field or include query. items: - $ref: "#/components/schemas/ObservabilityPipelineParseGrokProcessorRule" + $ref: "#/components/schemas/ObservabilityPipelineParseGrokProcessorRuleItem" type: array type: $ref: "#/components/schemas/ObservabilityPipelineParseGrokProcessorType" @@ -67758,6 +67767,37 @@ components: - enabled type: object x-pipeline-types: [logs] + ObservabilityPipelineParseGrokProcessorIncludeRule: + description: |- + A Grok parsing rule selected using the `include` query. Each rule defines how to extract structured fields + from logs matching a Datadog search query. + properties: + include: + description: A Datadog search query used to determine which logs this Grok rule targets. + example: "service:my-service" + type: string + match_rules: + description: |- + A list of Grok parsing rules that define how to extract fields from matching logs. + Each rule must contain a name and a valid Grok pattern. + example: + - name: "MyParsingRule" + rule: '%{word:user} connected on %{date("MM/dd/yyyy"):date}' + items: + $ref: "#/components/schemas/ObservabilityPipelineParseGrokProcessorRuleMatchRule" + type: array + support_rules: + description: A list of Grok helper rules that can be referenced by the parsing rules. + example: + - name: "user" + rule: "%{word:user.name}" + items: + $ref: "#/components/schemas/ObservabilityPipelineParseGrokProcessorRuleSupportRule" + type: array + required: + - include + - match_rules + type: object ObservabilityPipelineParseGrokProcessorRule: description: |- A Grok parsing rule used in the `parse_grok` processor. Each rule defines how to extract structured fields @@ -67790,6 +67830,11 @@ components: - source - match_rules type: object + ObservabilityPipelineParseGrokProcessorRuleItem: + description: A single Grok parsing rule, selected by either source field or include query. + oneOf: + - $ref: "#/components/schemas/ObservabilityPipelineParseGrokProcessorRule" + - $ref: "#/components/schemas/ObservabilityPipelineParseGrokProcessorIncludeRule" ObservabilityPipelineParseGrokProcessorRuleMatchRule: description: |- Defines a Grok parsing rule, which extracts structured fields from log content using named Grok patterns. diff --git a/docs/datadog_api_client.v2.model.rst b/docs/datadog_api_client.v2.model.rst index b4c49cf189..80b6a14730 100644 --- a/docs/datadog_api_client.v2.model.rst +++ b/docs/datadog_api_client.v2.model.rst @@ -28004,6 +28004,13 @@ datadog\_api\_client.v2.model.observability\_pipeline\_parse\_grok\_processor mo :members: :show-inheritance: +datadog\_api\_client.v2.model.observability\_pipeline\_parse\_grok\_processor\_include\_rule module +--------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.observability_pipeline_parse_grok_processor_include_rule + :members: + :show-inheritance: + datadog\_api\_client.v2.model.observability\_pipeline\_parse\_grok\_processor\_rule module ------------------------------------------------------------------------------------------ @@ -28011,6 +28018,13 @@ datadog\_api\_client.v2.model.observability\_pipeline\_parse\_grok\_processor\_r :members: :show-inheritance: +datadog\_api\_client.v2.model.observability\_pipeline\_parse\_grok\_processor\_rule\_item module +------------------------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.observability_pipeline_parse_grok_processor_rule_item + :members: + :show-inheritance: + datadog\_api\_client.v2.model.observability\_pipeline\_parse\_grok\_processor\_rule\_match\_rule module ------------------------------------------------------------------------------------------------------- diff --git a/examples/v2/observability-pipelines/ValidatePipeline_3345949653.py b/examples/v2/observability-pipelines/ValidatePipeline_3345949653.py new file mode 100644 index 0000000000..f80121968e --- /dev/null +++ b/examples/v2/observability-pipelines/ValidatePipeline_3345949653.py @@ -0,0 +1,99 @@ +""" +Validate an observability pipeline with parse grok processor source rules returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.observability_pipelines_api import ObservabilityPipelinesApi +from datadog_api_client.v2.model.observability_pipeline_config import ObservabilityPipelineConfig +from datadog_api_client.v2.model.observability_pipeline_config_processor_group import ( + ObservabilityPipelineConfigProcessorGroup, +) +from datadog_api_client.v2.model.observability_pipeline_data_attributes import ObservabilityPipelineDataAttributes +from datadog_api_client.v2.model.observability_pipeline_datadog_agent_source import ( + ObservabilityPipelineDatadogAgentSource, +) +from datadog_api_client.v2.model.observability_pipeline_datadog_agent_source_type import ( + ObservabilityPipelineDatadogAgentSourceType, +) +from datadog_api_client.v2.model.observability_pipeline_datadog_logs_destination import ( + ObservabilityPipelineDatadogLogsDestination, +) +from datadog_api_client.v2.model.observability_pipeline_datadog_logs_destination_type import ( + ObservabilityPipelineDatadogLogsDestinationType, +) +from datadog_api_client.v2.model.observability_pipeline_parse_grok_processor import ( + ObservabilityPipelineParseGrokProcessor, +) +from datadog_api_client.v2.model.observability_pipeline_parse_grok_processor_rule import ( + ObservabilityPipelineParseGrokProcessorRule, +) +from datadog_api_client.v2.model.observability_pipeline_parse_grok_processor_rule_match_rule import ( + ObservabilityPipelineParseGrokProcessorRuleMatchRule, +) +from datadog_api_client.v2.model.observability_pipeline_parse_grok_processor_type import ( + ObservabilityPipelineParseGrokProcessorType, +) +from datadog_api_client.v2.model.observability_pipeline_spec import ObservabilityPipelineSpec +from datadog_api_client.v2.model.observability_pipeline_spec_data import ObservabilityPipelineSpecData + +body = ObservabilityPipelineSpec( + data=ObservabilityPipelineSpecData( + attributes=ObservabilityPipelineDataAttributes( + config=ObservabilityPipelineConfig( + destinations=[ + ObservabilityPipelineDatadogLogsDestination( + id="datadog-logs-destination", + inputs=[ + "my-processor-group", + ], + type=ObservabilityPipelineDatadogLogsDestinationType.DATADOG_LOGS, + ), + ], + processor_groups=[ + ObservabilityPipelineConfigProcessorGroup( + enabled=True, + id="my-processor-group", + include="service:my-service", + inputs=[ + "datadog-agent-source", + ], + processors=[ + ObservabilityPipelineParseGrokProcessor( + enabled=True, + id="parse-grok-processor", + include="*", + type=ObservabilityPipelineParseGrokProcessorType.PARSE_GROK, + rules=[ + ObservabilityPipelineParseGrokProcessorRule( + source="message", + match_rules=[ + ObservabilityPipelineParseGrokProcessorRuleMatchRule( + name="MyParsingRule", + rule="%{word:user}", + ), + ], + ), + ], + ), + ], + ), + ], + sources=[ + ObservabilityPipelineDatadogAgentSource( + id="datadog-agent-source", + type=ObservabilityPipelineDatadogAgentSourceType.DATADOG_AGENT, + ), + ], + ), + name="Pipeline with Parse Grok Source Rules", + ), + type="pipelines", + ), +) + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = ObservabilityPipelinesApi(api_client) + response = api_instance.validate_pipeline(body=body) + + print(response) diff --git a/examples/v2/observability-pipelines/ValidatePipeline_3928499240.py b/examples/v2/observability-pipelines/ValidatePipeline_3928499240.py new file mode 100644 index 0000000000..6c98e274bd --- /dev/null +++ b/examples/v2/observability-pipelines/ValidatePipeline_3928499240.py @@ -0,0 +1,100 @@ +""" +Validate an observability pipeline with parse grok processor include rules returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.observability_pipelines_api import ObservabilityPipelinesApi +from datadog_api_client.v2.model.observability_pipeline_config import ObservabilityPipelineConfig +from datadog_api_client.v2.model.observability_pipeline_config_processor_group import ( + ObservabilityPipelineConfigProcessorGroup, +) +from datadog_api_client.v2.model.observability_pipeline_data_attributes import ObservabilityPipelineDataAttributes +from datadog_api_client.v2.model.observability_pipeline_datadog_agent_source import ( + ObservabilityPipelineDatadogAgentSource, +) +from datadog_api_client.v2.model.observability_pipeline_datadog_agent_source_type import ( + ObservabilityPipelineDatadogAgentSourceType, +) +from datadog_api_client.v2.model.observability_pipeline_datadog_logs_destination import ( + ObservabilityPipelineDatadogLogsDestination, +) +from datadog_api_client.v2.model.observability_pipeline_datadog_logs_destination_type import ( + ObservabilityPipelineDatadogLogsDestinationType, +) +from datadog_api_client.v2.model.observability_pipeline_parse_grok_processor import ( + ObservabilityPipelineParseGrokProcessor, +) +from datadog_api_client.v2.model.observability_pipeline_parse_grok_processor_include_rule import ( + ObservabilityPipelineParseGrokProcessorIncludeRule, +) +from datadog_api_client.v2.model.observability_pipeline_parse_grok_processor_rule_match_rule import ( + ObservabilityPipelineParseGrokProcessorRuleMatchRule, +) +from datadog_api_client.v2.model.observability_pipeline_parse_grok_processor_type import ( + ObservabilityPipelineParseGrokProcessorType, +) +from datadog_api_client.v2.model.observability_pipeline_spec import ObservabilityPipelineSpec +from datadog_api_client.v2.model.observability_pipeline_spec_data import ObservabilityPipelineSpecData + +body = ObservabilityPipelineSpec( + data=ObservabilityPipelineSpecData( + attributes=ObservabilityPipelineDataAttributes( + config=ObservabilityPipelineConfig( + destinations=[ + ObservabilityPipelineDatadogLogsDestination( + id="datadog-logs-destination", + inputs=[ + "my-processor-group", + ], + type=ObservabilityPipelineDatadogLogsDestinationType.DATADOG_LOGS, + ), + ], + processor_groups=[ + ObservabilityPipelineConfigProcessorGroup( + enabled=True, + id="my-processor-group", + include="service:my-service", + inputs=[ + "datadog-agent-source", + ], + processors=[ + ObservabilityPipelineParseGrokProcessor( + enabled=True, + id="parse-grok-processor", + include="*", + type=ObservabilityPipelineParseGrokProcessorType.PARSE_GROK, + field="content", + rules=[ + ObservabilityPipelineParseGrokProcessorIncludeRule( + include="service:foo", + match_rules=[ + ObservabilityPipelineParseGrokProcessorRuleMatchRule( + name="MyParsingRule", + rule="%{word:user}", + ), + ], + ), + ], + ), + ], + ), + ], + sources=[ + ObservabilityPipelineDatadogAgentSource( + id="datadog-agent-source", + type=ObservabilityPipelineDatadogAgentSourceType.DATADOG_AGENT, + ), + ], + ), + name="Pipeline with Parse Grok Include Rules", + ), + type="pipelines", + ), +) + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = ObservabilityPipelinesApi(api_client) + response = api_instance.validate_pipeline(body=body) + + print(response) diff --git a/src/datadog_api_client/v2/model/observability_pipeline_config_processor_item.py b/src/datadog_api_client/v2/model/observability_pipeline_config_processor_item.py index e269334825..434095b861 100644 --- a/src/datadog_api_client/v2/model/observability_pipeline_config_processor_item.py +++ b/src/datadog_api_client/v2/model/observability_pipeline_config_processor_item.py @@ -75,11 +75,11 @@ def __init__(self, **kwargs): :param disable_library_rules: If set to `true`, disables the default Grok rules provided by Datadog. :type disable_library_rules: bool, optional - :param rules: The list of Grok parsing rules. If multiple matching rules are provided, they are evaluated in order. The first successful match is applied. - :type rules: [ObservabilityPipelineParseGrokProcessorRule] + :param field: The log field to parse with the Grok rules. + :type field: str, optional - :param field: The name of the log field that contains a JSON string. - :type field: str + :param rules: The list of Grok parsing rules selected by either source field or include query. + :type rules: [ObservabilityPipelineParseGrokProcessorRuleItem] :param always_use_text_key: Whether to always use a text key for element content. :type always_use_text_key: bool, optional diff --git a/src/datadog_api_client/v2/model/observability_pipeline_parse_grok_processor.py b/src/datadog_api_client/v2/model/observability_pipeline_parse_grok_processor.py index d92f1ea6f8..18698e2351 100644 --- a/src/datadog_api_client/v2/model/observability_pipeline_parse_grok_processor.py +++ b/src/datadog_api_client/v2/model/observability_pipeline_parse_grok_processor.py @@ -14,19 +14,25 @@ if TYPE_CHECKING: - from datadog_api_client.v2.model.observability_pipeline_parse_grok_processor_rule import ( - ObservabilityPipelineParseGrokProcessorRule, + from datadog_api_client.v2.model.observability_pipeline_parse_grok_processor_rule_item import ( + ObservabilityPipelineParseGrokProcessorRuleItem, ) from datadog_api_client.v2.model.observability_pipeline_parse_grok_processor_type import ( ObservabilityPipelineParseGrokProcessorType, ) + from datadog_api_client.v2.model.observability_pipeline_parse_grok_processor_rule import ( + ObservabilityPipelineParseGrokProcessorRule, + ) + from datadog_api_client.v2.model.observability_pipeline_parse_grok_processor_include_rule import ( + ObservabilityPipelineParseGrokProcessorIncludeRule, + ) class ObservabilityPipelineParseGrokProcessor(ModelNormal): @cached_property def openapi_types(_): - from datadog_api_client.v2.model.observability_pipeline_parse_grok_processor_rule import ( - ObservabilityPipelineParseGrokProcessorRule, + from datadog_api_client.v2.model.observability_pipeline_parse_grok_processor_rule_item import ( + ObservabilityPipelineParseGrokProcessorRuleItem, ) from datadog_api_client.v2.model.observability_pipeline_parse_grok_processor_type import ( ObservabilityPipelineParseGrokProcessorType, @@ -36,9 +42,10 @@ def openapi_types(_): "disable_library_rules": (bool,), "display_name": (str,), "enabled": (bool,), + "field": (str,), "id": (str,), "include": (str,), - "rules": ([ObservabilityPipelineParseGrokProcessorRule],), + "rules": ([ObservabilityPipelineParseGrokProcessorRuleItem],), "type": (ObservabilityPipelineParseGrokProcessorType,), } @@ -46,6 +53,7 @@ def openapi_types(_): "disable_library_rules": "disable_library_rules", "display_name": "display_name", "enabled": "enabled", + "field": "field", "id": "id", "include": "include", "rules": "rules", @@ -57,10 +65,17 @@ def __init__( enabled: bool, id: str, include: str, - rules: List[ObservabilityPipelineParseGrokProcessorRule], + rules: List[ + Union[ + ObservabilityPipelineParseGrokProcessorRuleItem, + ObservabilityPipelineParseGrokProcessorRule, + ObservabilityPipelineParseGrokProcessorIncludeRule, + ] + ], type: ObservabilityPipelineParseGrokProcessorType, disable_library_rules: Union[bool, UnsetType] = unset, display_name: Union[str, UnsetType] = unset, + field: Union[str, UnsetType] = unset, **kwargs, ): """ @@ -77,14 +92,17 @@ def __init__( :param enabled: Indicates whether the processor is enabled. :type enabled: bool + :param field: The log field to parse with the Grok rules. + :type field: str, optional + :param id: A unique identifier for this processor. :type id: str :param include: A Datadog search query used to determine which logs this processor targets. :type include: str - :param rules: The list of Grok parsing rules. If multiple matching rules are provided, they are evaluated in order. The first successful match is applied. - :type rules: [ObservabilityPipelineParseGrokProcessorRule] + :param rules: The list of Grok parsing rules selected by either source field or include query. + :type rules: [ObservabilityPipelineParseGrokProcessorRuleItem] :param type: The processor type. The value should always be ``parse_grok``. :type type: ObservabilityPipelineParseGrokProcessorType @@ -93,6 +111,8 @@ def __init__( kwargs["disable_library_rules"] = disable_library_rules if display_name is not unset: kwargs["display_name"] = display_name + if field is not unset: + kwargs["field"] = field super().__init__(kwargs) self_.enabled = enabled diff --git a/src/datadog_api_client/v2/model/observability_pipeline_parse_grok_processor_include_rule.py b/src/datadog_api_client/v2/model/observability_pipeline_parse_grok_processor_include_rule.py new file mode 100644 index 0000000000..e5de2ddd45 --- /dev/null +++ b/src/datadog_api_client/v2/model/observability_pipeline_parse_grok_processor_include_rule.py @@ -0,0 +1,73 @@ +# 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. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.observability_pipeline_parse_grok_processor_rule_match_rule import ( + ObservabilityPipelineParseGrokProcessorRuleMatchRule, + ) + from datadog_api_client.v2.model.observability_pipeline_parse_grok_processor_rule_support_rule import ( + ObservabilityPipelineParseGrokProcessorRuleSupportRule, + ) + + +class ObservabilityPipelineParseGrokProcessorIncludeRule(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.observability_pipeline_parse_grok_processor_rule_match_rule import ( + ObservabilityPipelineParseGrokProcessorRuleMatchRule, + ) + from datadog_api_client.v2.model.observability_pipeline_parse_grok_processor_rule_support_rule import ( + ObservabilityPipelineParseGrokProcessorRuleSupportRule, + ) + + return { + "include": (str,), + "match_rules": ([ObservabilityPipelineParseGrokProcessorRuleMatchRule],), + "support_rules": ([ObservabilityPipelineParseGrokProcessorRuleSupportRule],), + } + + attribute_map = { + "include": "include", + "match_rules": "match_rules", + "support_rules": "support_rules", + } + + def __init__( + self_, + include: str, + match_rules: List[ObservabilityPipelineParseGrokProcessorRuleMatchRule], + support_rules: Union[List[ObservabilityPipelineParseGrokProcessorRuleSupportRule], UnsetType] = unset, + **kwargs, + ): + """ + A Grok parsing rule selected using the ``include`` query. Each rule defines how to extract structured fields + from logs matching a Datadog search query. + + :param include: A Datadog search query used to determine which logs this Grok rule targets. + :type include: str + + :param match_rules: A list of Grok parsing rules that define how to extract fields from matching logs. + Each rule must contain a name and a valid Grok pattern. + :type match_rules: [ObservabilityPipelineParseGrokProcessorRuleMatchRule] + + :param support_rules: A list of Grok helper rules that can be referenced by the parsing rules. + :type support_rules: [ObservabilityPipelineParseGrokProcessorRuleSupportRule], optional + """ + if support_rules is not unset: + kwargs["support_rules"] = support_rules + super().__init__(kwargs) + + self_.include = include + self_.match_rules = match_rules diff --git a/src/datadog_api_client/v2/model/observability_pipeline_parse_grok_processor_rule_item.py b/src/datadog_api_client/v2/model/observability_pipeline_parse_grok_processor_rule_item.py new file mode 100644 index 0000000000..6f8f9b581c --- /dev/null +++ b/src/datadog_api_client/v2/model/observability_pipeline_parse_grok_processor_rule_item.py @@ -0,0 +1,54 @@ +# 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. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelComposed, + cached_property, +) + + +class ObservabilityPipelineParseGrokProcessorRuleItem(ModelComposed): + def __init__(self, **kwargs): + """ + A single Grok parsing rule, selected by either source field or include query. + + :param match_rules: A list of Grok parsing rules that define how to extract fields from the source field. + Each rule must contain a name and a valid Grok pattern. + :type match_rules: [ObservabilityPipelineParseGrokProcessorRuleMatchRule] + + :param source: The value of the source field in log events to be processed by the Grok rules. + :type source: str + + :param support_rules: A list of Grok helper rules that can be referenced by the parsing rules. + :type support_rules: [ObservabilityPipelineParseGrokProcessorRuleSupportRule], optional + + :param include: A Datadog search query used to determine which logs this Grok rule targets. + :type include: str + """ + super().__init__(kwargs) + + @cached_property + def _composed_schemas(_): + # we need this here to make our import statements work + # we must store _composed_schemas in here so the code is only run + # when we invoke this method. If we kept this at the class + # level we would get an error because the class level + # code would be run when this module is imported, and these composed + # classes don't exist yet because their module has not finished + # loading + from datadog_api_client.v2.model.observability_pipeline_parse_grok_processor_rule import ( + ObservabilityPipelineParseGrokProcessorRule, + ) + from datadog_api_client.v2.model.observability_pipeline_parse_grok_processor_include_rule import ( + ObservabilityPipelineParseGrokProcessorIncludeRule, + ) + + return { + "oneOf": [ + ObservabilityPipelineParseGrokProcessorRule, + ObservabilityPipelineParseGrokProcessorIncludeRule, + ], + } diff --git a/src/datadog_api_client/v2/models/__init__.py b/src/datadog_api_client/v2/models/__init__.py index caeb3db66e..9ae2c366d2 100644 --- a/src/datadog_api_client/v2/models/__init__.py +++ b/src/datadog_api_client/v2/models/__init__.py @@ -5519,9 +5519,15 @@ from datadog_api_client.v2.model.observability_pipeline_parse_grok_processor import ( ObservabilityPipelineParseGrokProcessor, ) +from datadog_api_client.v2.model.observability_pipeline_parse_grok_processor_include_rule import ( + ObservabilityPipelineParseGrokProcessorIncludeRule, +) from datadog_api_client.v2.model.observability_pipeline_parse_grok_processor_rule import ( ObservabilityPipelineParseGrokProcessorRule, ) +from datadog_api_client.v2.model.observability_pipeline_parse_grok_processor_rule_item import ( + ObservabilityPipelineParseGrokProcessorRuleItem, +) from datadog_api_client.v2.model.observability_pipeline_parse_grok_processor_rule_match_rule import ( ObservabilityPipelineParseGrokProcessorRuleMatchRule, ) @@ -13530,7 +13536,9 @@ "ObservabilityPipelineOpentelemetrySource", "ObservabilityPipelineOpentelemetrySourceType", "ObservabilityPipelineParseGrokProcessor", + "ObservabilityPipelineParseGrokProcessorIncludeRule", "ObservabilityPipelineParseGrokProcessorRule", + "ObservabilityPipelineParseGrokProcessorRuleItem", "ObservabilityPipelineParseGrokProcessorRuleMatchRule", "ObservabilityPipelineParseGrokProcessorRuleSupportRule", "ObservabilityPipelineParseGrokProcessorType", diff --git a/tests/v2/cassettes/test_scenarios/test_validate_an_observability_pipeline_with_parse_grok_processor_include_rules_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_validate_an_observability_pipeline_with_parse_grok_processor_include_rules_returns_ok_response.frozen new file mode 100644 index 0000000000..985fe4f60a --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_validate_an_observability_pipeline_with_parse_grok_processor_include_rules_returns_ok_response.frozen @@ -0,0 +1 @@ +2026-06-29T20:01:05.978Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_validate_an_observability_pipeline_with_parse_grok_processor_include_rules_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_validate_an_observability_pipeline_with_parse_grok_processor_include_rules_returns_ok_response.yaml new file mode 100644 index 0000000000..714675e4a0 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_validate_an_observability_pipeline_with_parse_grok_processor_include_rules_returns_ok_response.yaml @@ -0,0 +1,23 @@ +interactions: +- request: + body: '{"data":{"attributes":{"config":{"destinations":[{"id":"datadog-logs-destination","inputs":["my-processor-group"],"type":"datadog_logs"}],"processor_groups":[{"enabled":true,"id":"my-processor-group","include":"service:my-service","inputs":["datadog-agent-source"],"processors":[{"enabled":true,"field":"content","id":"parse-grok-processor","include":"*","rules":[{"include":"service:foo","match_rules":[{"name":"MyParsingRule","rule":"%{word:user}"}]}],"type":"parse_grok"}]}],"sources":[{"id":"datadog-agent-source","type":"datadog_agent"}]},"name":"Pipeline + with Parse Grok Include Rules"},"type":"pipelines"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/obs-pipelines/pipelines/validate + response: + body: + string: '{"errors":[]} + + ' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_validate_an_observability_pipeline_with_parse_grok_processor_source_rules_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_validate_an_observability_pipeline_with_parse_grok_processor_source_rules_returns_ok_response.frozen new file mode 100644 index 0000000000..4db9a90b93 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_validate_an_observability_pipeline_with_parse_grok_processor_source_rules_returns_ok_response.frozen @@ -0,0 +1 @@ +2026-06-29T18:24:15.839Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_validate_an_observability_pipeline_with_parse_grok_processor_source_rules_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_validate_an_observability_pipeline_with_parse_grok_processor_source_rules_returns_ok_response.yaml new file mode 100644 index 0000000000..f2c3d67bcb --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_validate_an_observability_pipeline_with_parse_grok_processor_source_rules_returns_ok_response.yaml @@ -0,0 +1,23 @@ +interactions: +- request: + body: '{"data":{"attributes":{"config":{"destinations":[{"id":"datadog-logs-destination","inputs":["my-processor-group"],"type":"datadog_logs"}],"processor_groups":[{"enabled":true,"id":"my-processor-group","include":"service:my-service","inputs":["datadog-agent-source"],"processors":[{"enabled":true,"id":"parse-grok-processor","include":"*","rules":[{"match_rules":[{"name":"MyParsingRule","rule":"%{word:user}"}],"source":"message"}],"type":"parse_grok"}]}],"sources":[{"id":"datadog-agent-source","type":"datadog_agent"}]},"name":"Pipeline + with Parse Grok Source Rules"},"type":"pipelines"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/obs-pipelines/pipelines/validate + response: + body: + string: '{"errors":[]} + + ' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +version: 1 diff --git a/tests/v2/features/observability_pipelines.feature b/tests/v2/features/observability_pipelines.feature index e42bbd7b03..8aa6ef3615 100644 --- a/tests/v2/features/observability_pipelines.feature +++ b/tests/v2/features/observability_pipelines.feature @@ -295,6 +295,22 @@ Feature: Observability Pipelines Then the response status is 200 OK And the response "errors" has length 0 + @team:DataDog/observability-pipelines + Scenario: Validate an observability pipeline with parse grok processor include rules returns "OK" response + Given new "ValidatePipeline" request + And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["my-processor-group"], "type": "datadog_logs"}], "processor_groups": [{"enabled": true, "id": "my-processor-group", "include": "service:my-service", "inputs": ["datadog-agent-source"], "processors": [{"enabled": true, "id": "parse-grok-processor", "include": "*", "type": "parse_grok", "field": "content", "rules": [{"include": "service:foo", "match_rules": [{"name": "MyParsingRule", "rule": "%{word:user}"}]}]}]}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Pipeline with Parse Grok Include Rules"}, "type": "pipelines"}} + When the request is sent + Then the response status is 200 OK + And the response "errors" has length 0 + + @team:DataDog/observability-pipelines + Scenario: Validate an observability pipeline with parse grok processor source rules returns "OK" response + Given new "ValidatePipeline" request + And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["my-processor-group"], "type": "datadog_logs"}], "processor_groups": [{"enabled": true, "id": "my-processor-group", "include": "service:my-service", "inputs": ["datadog-agent-source"], "processors": [{"enabled": true, "id": "parse-grok-processor", "include": "*", "type": "parse_grok", "rules": [{"source": "message", "match_rules": [{"name": "MyParsingRule", "rule": "%{word:user}"}]}]}]}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Pipeline with Parse Grok Source Rules"}, "type": "pipelines"}} + When the request is sent + Then the response status is 200 OK + And the response "errors" has length 0 + @team:DataDog/observability-pipelines Scenario: Validate an observability pipeline with source secret key returns "OK" response Given new "ValidatePipeline" request