From a165aa4ffc7d28f3519f92528768b30f77da90fd Mon Sep 17 00:00:00 2001 From: "ci.datadog-api-spec" Date: Tue, 14 Jul 2026 07:58:43 +0000 Subject: [PATCH] Regenerate client from commit 5ab0fd6 of spec repo --- .generator/schemas/v2/openapi.yaml | 111 ++++++++++++++---- docs/datadog_api_client.v2.model.rst | 23 ++-- .../GetCustomForecast.py | 16 +++ src/datadog_api_client/configuration.py | 1 + .../v2/api/cloud_cost_management_api.py | 40 +++++++ ...vability_pipeline_config_processor_item.py | 3 + ...ipeline_tag_cardinality_limit_processor.py | 13 ++ ...dinality_limit_processor_override_type.py} | 16 +-- ...nality_limit_processor_per_metric_limit.py | 24 ++-- ...inality_limit_processor_per_metric_mode.py | 42 ------- ...rdinality_limit_processor_per_tag_limit.py | 22 ++-- ...rdinality_limit_processor_tracking_mode.py | 44 +++++++ ...lity_limit_processor_tracking_mode_mode.py | 42 +++++++ src/datadog_api_client/v2/models/__init__.py | 18 +-- .../v2/features/cloud_cost_management.feature | 24 ++++ tests/v2/features/undo.json | 6 + 16 files changed, 332 insertions(+), 113 deletions(-) create mode 100644 examples/v2/cloud-cost-management/GetCustomForecast.py rename src/datadog_api_client/v2/model/{observability_pipeline_tag_cardinality_limit_processor_per_tag_mode.py => observability_pipeline_tag_cardinality_limit_processor_override_type.py} (57%) delete mode 100644 src/datadog_api_client/v2/model/observability_pipeline_tag_cardinality_limit_processor_per_metric_mode.py create mode 100644 src/datadog_api_client/v2/model/observability_pipeline_tag_cardinality_limit_processor_tracking_mode.py create mode 100644 src/datadog_api_client/v2/model/observability_pipeline_tag_cardinality_limit_processor_tracking_mode_mode.py diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index 49e923cae4..578d401e99 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -70492,6 +70492,8 @@ components: $ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit" maxItems: 100 type: array + tracking_mode: + $ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorTrackingMode" type: $ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorType" value_limit: @@ -70506,6 +70508,7 @@ components: - type - include - limit_exceeded_action + - tracking_mode - value_limit - enabled type: object @@ -70520,6 +70523,16 @@ components: x-enum-varnames: - DROP_TAG - DROP_EVENT + ObservabilityPipelineTagCardinalityLimitProcessorOverrideType: + description: How the override is applied. `limit_override` enforces a custom limit; `excluded` omits the metric or tag from cardinality tracking. + enum: + - limit_override + - excluded + example: limit_override + type: string + x-enum-varnames: + - LIMIT_OVERRIDE + - EXCLUDED ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit: description: A cardinality override applied to a specific metric. properties: @@ -70529,16 +70542,16 @@ components: description: The name of the metric this override applies to. example: "system.cpu.user" type: string - mode: - $ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode" + override_type: + $ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorOverrideType" per_tag_limits: - description: A list of per-tag cardinality overrides that apply within this metric. Must be omitted when `mode` is `excluded`. + description: A list of per-tag cardinality overrides that apply within this metric. Must be omitted when `override_type` is `excluded`. items: $ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit" maxItems: 50 type: array value_limit: - description: The maximum number of distinct tag value combinations allowed for this metric. Required when `mode` is `tracked`. Must be omitted when `mode` is `excluded`. + description: The maximum number of distinct tag value combinations allowed for this metric. Required when `override_type` is `limit_override`. Must be omitted when `override_type` is `excluded`. example: 10000 format: int64 maximum: 1000000 @@ -70546,29 +70559,19 @@ components: type: integer required: - metric_name - - mode + - override_type type: object - ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode: - description: How the per-metric override is applied. `tracked` enforces a custom limit; `excluded` skips the metric entirely. - enum: - - tracked - - excluded - example: tracked - type: string - x-enum-varnames: - - TRACKED - - EXCLUDED ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit: description: A cardinality override for a specific tag key within a per-metric limit. properties: - mode: - $ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode" + override_type: + $ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorOverrideType" tag_key: description: The tag key this override applies to. example: "host" type: string value_limit: - description: The maximum number of distinct values allowed for this tag. Required when `mode` is `limit_override`. Must be omitted when `mode` is `excluded`. + description: The maximum number of distinct values allowed for this tag. Required when `override_type` is `limit_override`. Must be omitted when `override_type` is `excluded`. example: 5000 format: int64 maximum: 1000000 @@ -70576,18 +70579,26 @@ components: type: integer required: - tag_key + - override_type + type: object + ObservabilityPipelineTagCardinalityLimitProcessorTrackingMode: + description: Controls whether the processor uses exact or probabilistic tag tracking. + properties: + mode: + $ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorTrackingModeMode" + required: - mode type: object - ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode: - description: How the per-tag override is applied. `limit_override` enforces a custom limit on the tag; `excluded` skips the tag from cardinality tracking. + ObservabilityPipelineTagCardinalityLimitProcessorTrackingModeMode: + description: The cardinality tracking algorithm to use. enum: - - limit_override - - excluded - example: limit_override + - exact_fingerprint + - probabilistic + example: exact_fingerprint type: string x-enum-varnames: - - LIMIT_OVERRIDE - - EXCLUDED + - EXACT_FINGERPRINT + - PROBABILISTIC ObservabilityPipelineTagCardinalityLimitProcessorType: default: tag_cardinality_limit description: The processor type. The value must be `tag_cardinality_limit`. @@ -127284,6 +127295,56 @@ paths: x-unstable: |- **Note**: This endpoint is in preview and is subject to change. If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + get: + description: Get the custom forecast for a budget. + operationId: GetCustomForecast + parameters: + - $ref: "#/components/parameters/BudgetID" + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + budget_uid: 00000000-0000-0000-0000-000000000001 + created_at: 1738258683590 + created_by: 00000000-0a0a-0a0a-aaa0-00000000000a + entries: + - amount: 400 + month: 202501 + tag_filters: + - tag_key: service + tag_value: ec2 + - amount: 450 + month: 202502 + tag_filters: + - tag_key: service + tag_value: ec2 + updated_at: 1738258683590 + updated_by: 00000000-0a0a-0a0a-aaa0-00000000000a + id: 11111111-1111-1111-1111-111111111111 + type: custom_forecast + schema: + $ref: "#/components/schemas/CustomForecastResponse" + description: OK + "400": + $ref: "#/components/responses/BadRequestResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: Get a budget's custom forecast + tags: + - Cloud Cost Management + x-unstable: |- + **Note**: This endpoint is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). /api/v2/cost/budgets: get: description: List budgets. diff --git a/docs/datadog_api_client.v2.model.rst b/docs/datadog_api_client.v2.model.rst index 878b4c5b54..15264605bc 100644 --- a/docs/datadog_api_client.v2.model.rst +++ b/docs/datadog_api_client.v2.model.rst @@ -29201,17 +29201,17 @@ datadog\_api\_client.v2.model.observability\_pipeline\_tag\_cardinality\_limit\_ :members: :show-inheritance: -datadog\_api\_client.v2.model.observability\_pipeline\_tag\_cardinality\_limit\_processor\_per\_metric\_limit module --------------------------------------------------------------------------------------------------------------------- +datadog\_api\_client.v2.model.observability\_pipeline\_tag\_cardinality\_limit\_processor\_override\_type module +---------------------------------------------------------------------------------------------------------------- -.. automodule:: datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_per_metric_limit +.. automodule:: datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_override_type :members: :show-inheritance: -datadog\_api\_client.v2.model.observability\_pipeline\_tag\_cardinality\_limit\_processor\_per\_metric\_mode module -------------------------------------------------------------------------------------------------------------------- +datadog\_api\_client.v2.model.observability\_pipeline\_tag\_cardinality\_limit\_processor\_per\_metric\_limit module +-------------------------------------------------------------------------------------------------------------------- -.. automodule:: datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_per_metric_mode +.. automodule:: datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_per_metric_limit :members: :show-inheritance: @@ -29222,10 +29222,17 @@ datadog\_api\_client.v2.model.observability\_pipeline\_tag\_cardinality\_limit\_ :members: :show-inheritance: -datadog\_api\_client.v2.model.observability\_pipeline\_tag\_cardinality\_limit\_processor\_per\_tag\_mode module +datadog\_api\_client.v2.model.observability\_pipeline\_tag\_cardinality\_limit\_processor\_tracking\_mode module ---------------------------------------------------------------------------------------------------------------- -.. automodule:: datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_per_tag_mode +.. automodule:: datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_tracking_mode + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.observability\_pipeline\_tag\_cardinality\_limit\_processor\_tracking\_mode\_mode module +---------------------------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_tracking_mode_mode :members: :show-inheritance: diff --git a/examples/v2/cloud-cost-management/GetCustomForecast.py b/examples/v2/cloud-cost-management/GetCustomForecast.py new file mode 100644 index 0000000000..51f4381a91 --- /dev/null +++ b/examples/v2/cloud-cost-management/GetCustomForecast.py @@ -0,0 +1,16 @@ +""" +Get a budget's custom forecast returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.cloud_cost_management_api import CloudCostManagementApi + +configuration = Configuration() +configuration.unstable_operations["get_custom_forecast"] = True +with ApiClient(configuration) as api_client: + api_instance = CloudCostManagementApi(api_client) + response = api_instance.get_custom_forecast( + budget_id="budget_id", + ) + + print(response) diff --git a/src/datadog_api_client/configuration.py b/src/datadog_api_client/configuration.py index cb1fadb705..33003c7e07 100644 --- a/src/datadog_api_client/configuration.py +++ b/src/datadog_api_client/configuration.py @@ -490,6 +490,7 @@ def __init__( "v2.get_commitments_utilization_timeseries": False, "v2.get_cost_anomaly": False, "v2.get_cost_tag_metadata_currency": False, + "v2.get_custom_forecast": False, "v2.list_cost_anomalies": False, "v2.list_cost_tag_key_sources": False, "v2.list_cost_tag_metadata": False, diff --git a/src/datadog_api_client/v2/api/cloud_cost_management_api.py b/src/datadog_api_client/v2/api/cloud_cost_management_api.py index 9e6d0627df..7ffeef2f98 100644 --- a/src/datadog_api_client/v2/api/cloud_cost_management_api.py +++ b/src/datadog_api_client/v2/api/cloud_cost_management_api.py @@ -1085,6 +1085,29 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._get_custom_forecast_endpoint = _Endpoint( + settings={ + "response_type": (CustomForecastResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/cost/budget/{budget_id}/custom-forecast", + "operation_id": "get_custom_forecast", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "budget_id": { + "required": True, + "openapi_types": (str,), + "attribute": "budget_id", + "location": "path", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + self._get_tag_pipelines_ruleset_endpoint = _Endpoint( settings={ "response_type": (RulesetResp,), @@ -2791,6 +2814,23 @@ def get_custom_costs_file( return self._get_custom_costs_file_endpoint.call_with_http_info(**kwargs) + def get_custom_forecast( + self, + budget_id: str, + ) -> CustomForecastResponse: + """Get a budget's custom forecast. + + Get the custom forecast for a budget. + + :param budget_id: Budget id. + :type budget_id: str + :rtype: CustomForecastResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["budget_id"] = budget_id + + return self._get_custom_forecast_endpoint.call_with_http_info(**kwargs) + def get_tag_pipelines_ruleset( self, ruleset_id: str, 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 434095b861..9c63576030 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 @@ -162,6 +162,9 @@ def __init__(self, **kwargs): :param per_metric_limits: A list of per-metric cardinality overrides that take precedence over the default `value_limit`. :type per_metric_limits: [ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit], optional + :param tracking_mode: Controls whether the processor uses exact or probabilistic tag tracking. + :type tracking_mode: ObservabilityPipelineTagCardinalityLimitProcessorTrackingMode + :param value_limit: The default maximum number of distinct tag value combinations allowed per metric. :type value_limit: int """ diff --git a/src/datadog_api_client/v2/model/observability_pipeline_tag_cardinality_limit_processor.py b/src/datadog_api_client/v2/model/observability_pipeline_tag_cardinality_limit_processor.py index 54462a1881..e2f7bd7dd4 100644 --- a/src/datadog_api_client/v2/model/observability_pipeline_tag_cardinality_limit_processor.py +++ b/src/datadog_api_client/v2/model/observability_pipeline_tag_cardinality_limit_processor.py @@ -20,6 +20,9 @@ from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_per_metric_limit import ( ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit, ) + from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_tracking_mode import ( + ObservabilityPipelineTagCardinalityLimitProcessorTrackingMode, + ) from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_type import ( ObservabilityPipelineTagCardinalityLimitProcessorType, ) @@ -44,6 +47,9 @@ def openapi_types(_): from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_per_metric_limit import ( ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit, ) + from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_tracking_mode import ( + ObservabilityPipelineTagCardinalityLimitProcessorTrackingMode, + ) from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_type import ( ObservabilityPipelineTagCardinalityLimitProcessorType, ) @@ -55,6 +61,7 @@ def openapi_types(_): "include": (str,), "limit_exceeded_action": (ObservabilityPipelineTagCardinalityLimitProcessorAction,), "per_metric_limits": ([ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit],), + "tracking_mode": (ObservabilityPipelineTagCardinalityLimitProcessorTrackingMode,), "type": (ObservabilityPipelineTagCardinalityLimitProcessorType,), "value_limit": (int,), } @@ -66,6 +73,7 @@ def openapi_types(_): "include": "include", "limit_exceeded_action": "limit_exceeded_action", "per_metric_limits": "per_metric_limits", + "tracking_mode": "tracking_mode", "type": "type", "value_limit": "value_limit", } @@ -76,6 +84,7 @@ def __init__( id: str, include: str, limit_exceeded_action: ObservabilityPipelineTagCardinalityLimitProcessorAction, + tracking_mode: ObservabilityPipelineTagCardinalityLimitProcessorTrackingMode, type: ObservabilityPipelineTagCardinalityLimitProcessorType, value_limit: int, display_name: Union[str, UnsetType] = unset, @@ -107,6 +116,9 @@ def __init__( :param per_metric_limits: A list of per-metric cardinality overrides that take precedence over the default ``value_limit``. :type per_metric_limits: [ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit], optional + :param tracking_mode: Controls whether the processor uses exact or probabilistic tag tracking. + :type tracking_mode: ObservabilityPipelineTagCardinalityLimitProcessorTrackingMode + :param type: The processor type. The value must be ``tag_cardinality_limit``. :type type: ObservabilityPipelineTagCardinalityLimitProcessorType @@ -123,5 +135,6 @@ def __init__( self_.id = id self_.include = include self_.limit_exceeded_action = limit_exceeded_action + self_.tracking_mode = tracking_mode self_.type = type self_.value_limit = value_limit diff --git a/src/datadog_api_client/v2/model/observability_pipeline_tag_cardinality_limit_processor_per_tag_mode.py b/src/datadog_api_client/v2/model/observability_pipeline_tag_cardinality_limit_processor_override_type.py similarity index 57% rename from src/datadog_api_client/v2/model/observability_pipeline_tag_cardinality_limit_processor_per_tag_mode.py rename to src/datadog_api_client/v2/model/observability_pipeline_tag_cardinality_limit_processor_override_type.py index c49352f06e..6049f919c1 100644 --- a/src/datadog_api_client/v2/model/observability_pipeline_tag_cardinality_limit_processor_per_tag_mode.py +++ b/src/datadog_api_client/v2/model/observability_pipeline_tag_cardinality_limit_processor_override_type.py @@ -12,9 +12,9 @@ from typing import ClassVar -class ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode(ModelSimple): +class ObservabilityPipelineTagCardinalityLimitProcessorOverrideType(ModelSimple): """ - How the per-tag override is applied. `limit_override` enforces a custom limit on the tag; `excluded` skips the tag from cardinality tracking. + How the override is applied. `limit_override` enforces a custom limit; `excluded` omits the metric or tag from cardinality tracking. :param value: Must be one of ["limit_override", "excluded"]. :type value: str @@ -24,8 +24,8 @@ class ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode(ModelSimple): "limit_override", "excluded", } - LIMIT_OVERRIDE: ClassVar["ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode"] - EXCLUDED: ClassVar["ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode"] + LIMIT_OVERRIDE: ClassVar["ObservabilityPipelineTagCardinalityLimitProcessorOverrideType"] + EXCLUDED: ClassVar["ObservabilityPipelineTagCardinalityLimitProcessorOverrideType"] @cached_property def openapi_types(_): @@ -34,9 +34,9 @@ def openapi_types(_): } -ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode.LIMIT_OVERRIDE = ( - ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode("limit_override") +ObservabilityPipelineTagCardinalityLimitProcessorOverrideType.LIMIT_OVERRIDE = ( + ObservabilityPipelineTagCardinalityLimitProcessorOverrideType("limit_override") ) -ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode.EXCLUDED = ( - ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode("excluded") +ObservabilityPipelineTagCardinalityLimitProcessorOverrideType.EXCLUDED = ( + ObservabilityPipelineTagCardinalityLimitProcessorOverrideType("excluded") ) diff --git a/src/datadog_api_client/v2/model/observability_pipeline_tag_cardinality_limit_processor_per_metric_limit.py b/src/datadog_api_client/v2/model/observability_pipeline_tag_cardinality_limit_processor_per_metric_limit.py index b366fdd408..223a49329c 100644 --- a/src/datadog_api_client/v2/model/observability_pipeline_tag_cardinality_limit_processor_per_metric_limit.py +++ b/src/datadog_api_client/v2/model/observability_pipeline_tag_cardinality_limit_processor_per_metric_limit.py @@ -17,8 +17,8 @@ from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_action import ( ObservabilityPipelineTagCardinalityLimitProcessorAction, ) - from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_per_metric_mode import ( - ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode, + from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_override_type import ( + ObservabilityPipelineTagCardinalityLimitProcessorOverrideType, ) from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_per_tag_limit import ( ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit, @@ -41,8 +41,8 @@ def openapi_types(_): from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_action import ( ObservabilityPipelineTagCardinalityLimitProcessorAction, ) - from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_per_metric_mode import ( - ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode, + from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_override_type import ( + ObservabilityPipelineTagCardinalityLimitProcessorOverrideType, ) from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_per_tag_limit import ( ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit, @@ -51,7 +51,7 @@ def openapi_types(_): return { "limit_exceeded_action": (ObservabilityPipelineTagCardinalityLimitProcessorAction,), "metric_name": (str,), - "mode": (ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode,), + "override_type": (ObservabilityPipelineTagCardinalityLimitProcessorOverrideType,), "per_tag_limits": ([ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit],), "value_limit": (int,), } @@ -59,7 +59,7 @@ def openapi_types(_): attribute_map = { "limit_exceeded_action": "limit_exceeded_action", "metric_name": "metric_name", - "mode": "mode", + "override_type": "override_type", "per_tag_limits": "per_tag_limits", "value_limit": "value_limit", } @@ -67,7 +67,7 @@ def openapi_types(_): def __init__( self_, metric_name: str, - mode: ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode, + override_type: ObservabilityPipelineTagCardinalityLimitProcessorOverrideType, limit_exceeded_action: Union[ObservabilityPipelineTagCardinalityLimitProcessorAction, UnsetType] = unset, per_tag_limits: Union[List[ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit], UnsetType] = unset, value_limit: Union[int, UnsetType] = unset, @@ -82,13 +82,13 @@ def __init__( :param metric_name: The name of the metric this override applies to. :type metric_name: str - :param mode: How the per-metric override is applied. ``tracked`` enforces a custom limit; ``excluded`` skips the metric entirely. - :type mode: ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode + :param override_type: How the override is applied. ``limit_override`` enforces a custom limit; ``excluded`` omits the metric or tag from cardinality tracking. + :type override_type: ObservabilityPipelineTagCardinalityLimitProcessorOverrideType - :param per_tag_limits: A list of per-tag cardinality overrides that apply within this metric. Must be omitted when ``mode`` is ``excluded``. + :param per_tag_limits: A list of per-tag cardinality overrides that apply within this metric. Must be omitted when ``override_type`` is ``excluded``. :type per_tag_limits: [ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit], optional - :param value_limit: The maximum number of distinct tag value combinations allowed for this metric. Required when ``mode`` is ``tracked``. Must be omitted when ``mode`` is ``excluded``. + :param value_limit: The maximum number of distinct tag value combinations allowed for this metric. Required when ``override_type`` is ``limit_override``. Must be omitted when ``override_type`` is ``excluded``. :type value_limit: int, optional """ if limit_exceeded_action is not unset: @@ -100,4 +100,4 @@ def __init__( super().__init__(kwargs) self_.metric_name = metric_name - self_.mode = mode + self_.override_type = override_type diff --git a/src/datadog_api_client/v2/model/observability_pipeline_tag_cardinality_limit_processor_per_metric_mode.py b/src/datadog_api_client/v2/model/observability_pipeline_tag_cardinality_limit_processor_per_metric_mode.py deleted file mode 100644 index 31534c0c16..0000000000 --- a/src/datadog_api_client/v2/model/observability_pipeline_tag_cardinality_limit_processor_per_metric_mode.py +++ /dev/null @@ -1,42 +0,0 @@ -# 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 ( - ModelSimple, - cached_property, -) - -from typing import ClassVar - - -class ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode(ModelSimple): - """ - How the per-metric override is applied. `tracked` enforces a custom limit; `excluded` skips the metric entirely. - - :param value: Must be one of ["tracked", "excluded"]. - :type value: str - """ - - allowed_values = { - "tracked", - "excluded", - } - TRACKED: ClassVar["ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode"] - EXCLUDED: ClassVar["ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode"] - - @cached_property - def openapi_types(_): - return { - "value": (str,), - } - - -ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode.TRACKED = ( - ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode("tracked") -) -ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode.EXCLUDED = ( - ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode("excluded") -) diff --git a/src/datadog_api_client/v2/model/observability_pipeline_tag_cardinality_limit_processor_per_tag_limit.py b/src/datadog_api_client/v2/model/observability_pipeline_tag_cardinality_limit_processor_per_tag_limit.py index e50a85ced7..c2a9d71cf9 100644 --- a/src/datadog_api_client/v2/model/observability_pipeline_tag_cardinality_limit_processor_per_tag_limit.py +++ b/src/datadog_api_client/v2/model/observability_pipeline_tag_cardinality_limit_processor_per_tag_limit.py @@ -14,8 +14,8 @@ if TYPE_CHECKING: - from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_per_tag_mode import ( - ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode, + from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_override_type import ( + ObservabilityPipelineTagCardinalityLimitProcessorOverrideType, ) @@ -29,25 +29,25 @@ class ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit(ModelNormal): @cached_property def openapi_types(_): - from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_per_tag_mode import ( - ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode, + from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_override_type import ( + ObservabilityPipelineTagCardinalityLimitProcessorOverrideType, ) return { - "mode": (ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode,), + "override_type": (ObservabilityPipelineTagCardinalityLimitProcessorOverrideType,), "tag_key": (str,), "value_limit": (int,), } attribute_map = { - "mode": "mode", + "override_type": "override_type", "tag_key": "tag_key", "value_limit": "value_limit", } def __init__( self_, - mode: ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode, + override_type: ObservabilityPipelineTagCardinalityLimitProcessorOverrideType, tag_key: str, value_limit: Union[int, UnsetType] = unset, **kwargs, @@ -55,18 +55,18 @@ def __init__( """ A cardinality override for a specific tag key within a per-metric limit. - :param mode: How the per-tag override is applied. ``limit_override`` enforces a custom limit on the tag; ``excluded`` skips the tag from cardinality tracking. - :type mode: ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode + :param override_type: How the override is applied. ``limit_override`` enforces a custom limit; ``excluded`` omits the metric or tag from cardinality tracking. + :type override_type: ObservabilityPipelineTagCardinalityLimitProcessorOverrideType :param tag_key: The tag key this override applies to. :type tag_key: str - :param value_limit: The maximum number of distinct values allowed for this tag. Required when ``mode`` is ``limit_override``. Must be omitted when ``mode`` is ``excluded``. + :param value_limit: The maximum number of distinct values allowed for this tag. Required when ``override_type`` is ``limit_override``. Must be omitted when ``override_type`` is ``excluded``. :type value_limit: int, optional """ if value_limit is not unset: kwargs["value_limit"] = value_limit super().__init__(kwargs) - self_.mode = mode + self_.override_type = override_type self_.tag_key = tag_key diff --git a/src/datadog_api_client/v2/model/observability_pipeline_tag_cardinality_limit_processor_tracking_mode.py b/src/datadog_api_client/v2/model/observability_pipeline_tag_cardinality_limit_processor_tracking_mode.py new file mode 100644 index 0000000000..215e99ebc9 --- /dev/null +++ b/src/datadog_api_client/v2/model/observability_pipeline_tag_cardinality_limit_processor_tracking_mode.py @@ -0,0 +1,44 @@ +# 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 TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_tracking_mode_mode import ( + ObservabilityPipelineTagCardinalityLimitProcessorTrackingModeMode, + ) + + +class ObservabilityPipelineTagCardinalityLimitProcessorTrackingMode(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_tracking_mode_mode import ( + ObservabilityPipelineTagCardinalityLimitProcessorTrackingModeMode, + ) + + return { + "mode": (ObservabilityPipelineTagCardinalityLimitProcessorTrackingModeMode,), + } + + attribute_map = { + "mode": "mode", + } + + def __init__(self_, mode: ObservabilityPipelineTagCardinalityLimitProcessorTrackingModeMode, **kwargs): + """ + Controls whether the processor uses exact or probabilistic tag tracking. + + :param mode: The cardinality tracking algorithm to use. + :type mode: ObservabilityPipelineTagCardinalityLimitProcessorTrackingModeMode + """ + super().__init__(kwargs) + + self_.mode = mode diff --git a/src/datadog_api_client/v2/model/observability_pipeline_tag_cardinality_limit_processor_tracking_mode_mode.py b/src/datadog_api_client/v2/model/observability_pipeline_tag_cardinality_limit_processor_tracking_mode_mode.py new file mode 100644 index 0000000000..a0ac0a23ef --- /dev/null +++ b/src/datadog_api_client/v2/model/observability_pipeline_tag_cardinality_limit_processor_tracking_mode_mode.py @@ -0,0 +1,42 @@ +# 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 ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class ObservabilityPipelineTagCardinalityLimitProcessorTrackingModeMode(ModelSimple): + """ + The cardinality tracking algorithm to use. + + :param value: Must be one of ["exact_fingerprint", "probabilistic"]. + :type value: str + """ + + allowed_values = { + "exact_fingerprint", + "probabilistic", + } + EXACT_FINGERPRINT: ClassVar["ObservabilityPipelineTagCardinalityLimitProcessorTrackingModeMode"] + PROBABILISTIC: ClassVar["ObservabilityPipelineTagCardinalityLimitProcessorTrackingModeMode"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +ObservabilityPipelineTagCardinalityLimitProcessorTrackingModeMode.EXACT_FINGERPRINT = ( + ObservabilityPipelineTagCardinalityLimitProcessorTrackingModeMode("exact_fingerprint") +) +ObservabilityPipelineTagCardinalityLimitProcessorTrackingModeMode.PROBABILISTIC = ( + ObservabilityPipelineTagCardinalityLimitProcessorTrackingModeMode("probabilistic") +) diff --git a/src/datadog_api_client/v2/models/__init__.py b/src/datadog_api_client/v2/models/__init__.py index 72cf21929b..65f64b967f 100644 --- a/src/datadog_api_client/v2/models/__init__.py +++ b/src/datadog_api_client/v2/models/__init__.py @@ -5924,17 +5924,20 @@ from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_action import ( ObservabilityPipelineTagCardinalityLimitProcessorAction, ) +from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_override_type import ( + ObservabilityPipelineTagCardinalityLimitProcessorOverrideType, +) from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_per_metric_limit import ( ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit, ) -from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_per_metric_mode import ( - ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode, -) from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_per_tag_limit import ( ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit, ) -from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_per_tag_mode import ( - ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode, +from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_tracking_mode import ( + ObservabilityPipelineTagCardinalityLimitProcessorTrackingMode, +) +from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_tracking_mode_mode import ( + ObservabilityPipelineTagCardinalityLimitProcessorTrackingModeMode, ) from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_type import ( ObservabilityPipelineTagCardinalityLimitProcessorType, @@ -13878,10 +13881,11 @@ "ObservabilityPipelineSyslogSourceMode", "ObservabilityPipelineTagCardinalityLimitProcessor", "ObservabilityPipelineTagCardinalityLimitProcessorAction", + "ObservabilityPipelineTagCardinalityLimitProcessorOverrideType", "ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit", - "ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode", "ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit", - "ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode", + "ObservabilityPipelineTagCardinalityLimitProcessorTrackingMode", + "ObservabilityPipelineTagCardinalityLimitProcessorTrackingModeMode", "ObservabilityPipelineTagCardinalityLimitProcessorType", "ObservabilityPipelineThrottleProcessor", "ObservabilityPipelineThrottleProcessorType", diff --git a/tests/v2/features/cloud_cost_management.feature b/tests/v2/features/cloud_cost_management.feature index 258f3468a9..0288644613 100644 --- a/tests/v2/features/cloud_cost_management.feature +++ b/tests/v2/features/cloud_cost_management.feature @@ -375,6 +375,30 @@ Feature: Cloud Cost Management When the request is sent Then the response status is 404 Not Found + @generated @skip @team:DataDog/cloud-cost-management + Scenario: Get a budget's custom forecast returns "Bad Request" response + Given operation "GetCustomForecast" enabled + And new "GetCustomForecast" request + And request contains "budget_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/cloud-cost-management + Scenario: Get a budget's custom forecast returns "Not Found" response + Given operation "GetCustomForecast" enabled + And new "GetCustomForecast" request + And request contains "budget_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/cloud-cost-management + Scenario: Get a budget's custom forecast returns "OK" response + Given operation "GetCustomForecast" enabled + And new "GetCustomForecast" request + And request contains "budget_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + @replay-only @team:DataDog/cloud-cost-management Scenario: Get a tag pipeline ruleset returns "OK" response Given new "GetTagPipelinesRuleset" request diff --git a/tests/v2/features/undo.json b/tests/v2/features/undo.json index 22089f0ece..0718c335cf 100644 --- a/tests/v2/features/undo.json +++ b/tests/v2/features/undo.json @@ -1785,6 +1785,12 @@ "type": "idempotent" } }, + "GetCustomForecast": { + "tag": "Cloud Cost Management", + "undo": { + "type": "safe" + } + }, "ListBudgets": { "tag": "Cloud Cost Management", "undo": {