From 9ab2ec8a1c8e1cc4ab7aaaf6ad01d452679b055a Mon Sep 17 00:00:00 2001 From: "ci.datadog-api-spec" Date: Thu, 9 Jul 2026 15:49:07 +0000 Subject: [PATCH] Regenerate client from commit 60cde6d of spec repo --- .generator/schemas/v2/openapi.yaml | 323 ++++++++++++++++++ docs/datadog_api_client.v2.model.rst | 98 ++++++ .../GetAWSMetricNameFilterPreview.py | 16 + .../PreviewAWSMetricNameFilter.py | 39 +++ src/datadog_api_client/configuration.py | 2 + .../v2/api/aws_integration_api.py | 95 ++++++ .../aws_metric_name_filter_preview_dd_name.py | 39 +++ ...metric_name_filter_preview_filter_match.py | 39 +++ .../aws_metric_name_filter_preview_metric.py | 46 +++ ...ws_metric_name_filter_preview_namespace.py | 65 ++++ .../aws_metric_name_filter_preview_request.py | 44 +++ ..._name_filter_preview_request_attributes.py | 48 +++ ...metric_name_filter_preview_request_data.py | 54 +++ ...aws_metric_name_filter_preview_response.py | 44 +++ ...name_filter_preview_response_attributes.py | 42 +++ ...etric_name_filter_preview_response_data.py | 67 ++++ .../aws_metric_name_filter_preview_type.py | 35 ++ .../v2/model/aws_metric_name_filters.py | 47 +++ .../aws_metric_name_filters_exclude_only.py | 40 +++ .../aws_metric_name_filters_include_only.py | 40 +++ .../v2/model/aws_metrics_config.py | 16 + src/datadog_api_client/v2/models/__init__.py | 38 +++ tests/v2/features/aws_integration.feature | 43 +++ tests/v2/features/undo.json | 12 + 24 files changed, 1332 insertions(+) create mode 100644 examples/v2/aws-integration/GetAWSMetricNameFilterPreview.py create mode 100644 examples/v2/aws-integration/PreviewAWSMetricNameFilter.py create mode 100644 src/datadog_api_client/v2/model/aws_metric_name_filter_preview_dd_name.py create mode 100644 src/datadog_api_client/v2/model/aws_metric_name_filter_preview_filter_match.py create mode 100644 src/datadog_api_client/v2/model/aws_metric_name_filter_preview_metric.py create mode 100644 src/datadog_api_client/v2/model/aws_metric_name_filter_preview_namespace.py create mode 100644 src/datadog_api_client/v2/model/aws_metric_name_filter_preview_request.py create mode 100644 src/datadog_api_client/v2/model/aws_metric_name_filter_preview_request_attributes.py create mode 100644 src/datadog_api_client/v2/model/aws_metric_name_filter_preview_request_data.py create mode 100644 src/datadog_api_client/v2/model/aws_metric_name_filter_preview_response.py create mode 100644 src/datadog_api_client/v2/model/aws_metric_name_filter_preview_response_attributes.py create mode 100644 src/datadog_api_client/v2/model/aws_metric_name_filter_preview_response_data.py create mode 100644 src/datadog_api_client/v2/model/aws_metric_name_filter_preview_type.py create mode 100644 src/datadog_api_client/v2/model/aws_metric_name_filters.py create mode 100644 src/datadog_api_client/v2/model/aws_metric_name_filters_exclude_only.py create mode 100644 src/datadog_api_client/v2/model/aws_metric_name_filters_include_only.py diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index c2aa6fb686..6ff3d3ebfe 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -3555,6 +3555,196 @@ components: type: string x-enum-varnames: - LOGS_SERVICES + AWSMetricNameFilterPreviewDDName: + description: A Datadog metric name and whether it is filtered. + properties: + filtered: + description: Whether this Datadog metric name is filtered out. + example: true + type: boolean + name: + description: The Datadog metric name. + example: "aws.ec2.network_in" + type: string + required: + - name + - filtered + type: object + AWSMetricNameFilterPreviewFilterMatch: + description: A metric name filter pattern and how many metrics it matched. + properties: + match_count: + description: The number of Datadog metric names matched by this pattern. + example: 1 + format: int64 + type: integer + pattern: + description: The metric name filter pattern. + example: "aws.ec2.network_in" + type: string + required: + - pattern + - match_count + type: object + AWSMetricNameFilterPreviewMetric: + description: A CloudWatch metric and the Datadog metric names it produces. + properties: + cw_name: + description: The CloudWatch metric name. + example: "NetworkIn" + type: string + dd_names: + description: The Datadog metric names produced from this CloudWatch metric. + items: + $ref: "#/components/schemas/AWSMetricNameFilterPreviewDDName" + type: array + required: + - cw_name + - dd_names + type: object + AWSMetricNameFilterPreviewNamespace: + description: The metric name filter preview for a single namespace. + properties: + filters: + description: The metric name filter patterns evaluated for this namespace and how many metrics they matched. + items: + $ref: "#/components/schemas/AWSMetricNameFilterPreviewFilterMatch" + type: array + metrics: + description: |- + The CloudWatch metrics collected for this namespace and whether each resulting + Datadog metric is filtered. + items: + $ref: "#/components/schemas/AWSMetricNameFilterPreviewMetric" + type: array + namespace: + description: The AWS CloudWatch namespace. + example: "AWS/EC2" + type: string + required: + - namespace + - filters + - metrics + type: object + AWSMetricNameFilterPreviewRequest: + description: AWS metric name filter preview request body. + properties: + data: + $ref: "#/components/schemas/AWSMetricNameFilterPreviewRequestData" + required: + - data + type: object + AWSMetricNameFilterPreviewRequestAttributes: + description: AWS metric name filter preview request attributes. + properties: + metric_name_filters: + description: The metric name filters to preview. + items: + $ref: "#/components/schemas/AWSMetricNameFilters" + type: array + required: + - metric_name_filters + type: object + AWSMetricNameFilterPreviewRequestData: + description: AWS metric name filter preview request data. + properties: + attributes: + $ref: "#/components/schemas/AWSMetricNameFilterPreviewRequestAttributes" + type: + $ref: "#/components/schemas/AWSMetricNameFilterPreviewType" + required: + - type + - attributes + type: object + AWSMetricNameFilterPreviewResponse: + description: AWS metric name filter preview response body. + properties: + data: + $ref: "#/components/schemas/AWSMetricNameFilterPreviewResponseData" + required: + - data + type: object + AWSMetricNameFilterPreviewResponseAttributes: + description: AWS metric name filter preview response attributes. + properties: + namespaces: + description: The list of namespaces affected by the previewed metric name filters. + items: + $ref: "#/components/schemas/AWSMetricNameFilterPreviewNamespace" + type: array + required: + - namespaces + type: object + AWSMetricNameFilterPreviewResponseData: + description: AWS metric name filter preview response data. + properties: + attributes: + $ref: "#/components/schemas/AWSMetricNameFilterPreviewResponseAttributes" + id: + $ref: "#/components/schemas/AWSAccountConfigID" + type: + $ref: "#/components/schemas/AWSMetricNameFilterPreviewType" + required: + - id + - type + - attributes + type: object + AWSMetricNameFilterPreviewType: + default: "metric_name_filter_preview" + description: The `AWSMetricNameFilterPreviewResponseData` `type`. + enum: + - metric_name_filter_preview + example: "metric_name_filter_preview" + type: string + x-enum-varnames: + - METRIC_NAME_FILTER_PREVIEW + AWSMetricNameFilters: + description: |- + AWS CloudWatch metric name filter for a single namespace. + Exactly one of `include_only` or `exclude_only` must be set. + oneOf: + - $ref: "#/components/schemas/AWSMetricNameFiltersIncludeOnly" + - $ref: "#/components/schemas/AWSMetricNameFiltersExcludeOnly" + AWSMetricNameFiltersExcludeOnly: + description: Exclude metric names matching one of these patterns for a single namespace. + properties: + exclude_only: + description: Exclude metric names matching one of these patterns. + example: + - "aws.ec2.network_in" + items: + description: A metric name pattern to exclude. + example: "aws.ec2.network_in" + type: string + type: array + namespace: + description: The AWS CloudWatch namespace to which this metric name filter applies. + example: "AWS/EC2" + type: string + required: + - namespace + - exclude_only + type: object + AWSMetricNameFiltersIncludeOnly: + description: Include only metric names matching one of these patterns for a single namespace. + properties: + include_only: + description: Include only metric names matching one of these patterns. + example: + - "aws.ec2.network_in" + items: + description: A metric name pattern to include. + example: "aws.ec2.network_in" + type: string + type: array + namespace: + description: The AWS CloudWatch namespace to which this metric name filter applies. + example: "AWS/EC2" + type: string + required: + - namespace + - include_only + type: object AWSMetricsConfig: description: AWS Metrics Collection config. properties: @@ -3574,6 +3764,13 @@ components: description: Enable AWS metrics collection. Defaults to `true`. example: true type: boolean + metric_name_filters: + description: |- + AWS CloudWatch metric name filters. Each filter applies to a single namespace. + Exactly one of `include_only` or `exclude_only` must be set on each filter. + items: + $ref: "#/components/schemas/AWSMetricNameFilters" + type: array namespace_filters: $ref: "#/components/schemas/AWSNamespaceFilters" tag_filters: @@ -141429,6 +141626,10 @@ paths: collect_cloudwatch_alarms: false collect_custom_metrics: false enabled: true + metric_name_filters: + - include_only: + - aws.ec2.network_in + namespace: AWS/EC2 tag_filters: - namespace: AWS/EC2 resources_config: @@ -141567,6 +141768,10 @@ paths: collect_cloudwatch_alarms: false collect_custom_metrics: false enabled: true + metric_name_filters: + - include_only: + - aws.ec2.network_in + namespace: AWS/EC2 tag_filters: - namespace: AWS/EC2 resources_config: @@ -141811,6 +142016,124 @@ paths: x-unstable: |- **Note**: This endpoint is in preview and may be subject to change. If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/integration/aws/accounts/{aws_account_config_id}/metric_name_filter_preview: + get: + description: |- + Preview which collected CloudWatch metrics would be filtered by the account's saved metric name filters. + operationId: GetAWSMetricNameFilterPreview + parameters: + - $ref: "#/components/parameters/AWSAccountConfigIDPathParameter" + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + namespaces: + - filters: + - match_count: 1 + pattern: "aws.ec2.network_in" + metrics: + - cw_name: "NetworkIn" + dd_names: + - filtered: true + name: "aws.ec2.network_in" + namespace: "AWS/EC2" + id: "00000000-0000-0000-0000-000000000001" + type: metric_name_filter_preview + schema: + $ref: "#/components/schemas/AWSMetricNameFilterPreviewResponse" + description: AWS metric name filter preview result + "403": + $ref: "#/components/responses/ForbiddenResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Get AWS metric name filter preview + tags: + - AWS Integration + "x-permission": + operator: OR + permissions: + - aws_configuration_read + 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/). + post: + description: |- + Preview which collected CloudWatch metrics would be filtered by the supplied metric name filters. + The filters are not persisted. + operationId: PreviewAWSMetricNameFilter + parameters: + - $ref: "#/components/parameters/AWSAccountConfigIDPathParameter" + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + metric_name_filters: + - exclude_only: + - "aws.ec2.network_in" + namespace: "AWS/EC2" + type: metric_name_filter_preview + schema: + $ref: "#/components/schemas/AWSMetricNameFilterPreviewRequest" + description: The metric name filters to preview. + required: true + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + namespaces: + - filters: + - match_count: 1 + pattern: "aws.ec2.network_in" + metrics: + - cw_name: "NetworkIn" + dd_names: + - filtered: true + name: "aws.ec2.network_in" + namespace: "AWS/EC2" + id: "00000000-0000-0000-0000-000000000001" + type: metric_name_filter_preview + schema: + $ref: "#/components/schemas/AWSMetricNameFilterPreviewResponse" + description: AWS metric name filter preview result + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "403": + $ref: "#/components/responses/ForbiddenResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Preview AWS metric name filter + tags: + - AWS Integration + x-codegen-request-body-name: body + "x-permission": + operator: OR + permissions: + - aws_configuration_read + 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/integration/aws/available_namespaces: get: description: Get a list of available AWS CloudWatch namespaces that can send metrics to Datadog. diff --git a/docs/datadog_api_client.v2.model.rst b/docs/datadog_api_client.v2.model.rst index 2c283062c8..878b4c5b54 100644 --- a/docs/datadog_api_client.v2.model.rst +++ b/docs/datadog_api_client.v2.model.rst @@ -3798,6 +3798,104 @@ datadog\_api\_client.v2.model.aws\_logs\_services\_response\_data\_type module :members: :show-inheritance: +datadog\_api\_client.v2.model.aws\_metric\_name\_filter\_preview\_dd\_name module +--------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.aws_metric_name_filter_preview_dd_name + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.aws\_metric\_name\_filter\_preview\_filter\_match module +-------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.aws_metric_name_filter_preview_filter_match + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.aws\_metric\_name\_filter\_preview\_metric module +------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.aws_metric_name_filter_preview_metric + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.aws\_metric\_name\_filter\_preview\_namespace module +---------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.aws_metric_name_filter_preview_namespace + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.aws\_metric\_name\_filter\_preview\_request module +-------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.aws_metric_name_filter_preview_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.aws\_metric\_name\_filter\_preview\_request\_attributes module +-------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.aws_metric_name_filter_preview_request_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.aws\_metric\_name\_filter\_preview\_request\_data module +-------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.aws_metric_name_filter_preview_request_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.aws\_metric\_name\_filter\_preview\_response module +--------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.aws_metric_name_filter_preview_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.aws\_metric\_name\_filter\_preview\_response\_attributes module +--------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.aws_metric_name_filter_preview_response_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.aws\_metric\_name\_filter\_preview\_response\_data module +--------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.aws_metric_name_filter_preview_response_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.aws\_metric\_name\_filter\_preview\_type module +----------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.aws_metric_name_filter_preview_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.aws\_metric\_name\_filters module +--------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.aws_metric_name_filters + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.aws\_metric\_name\_filters\_exclude\_only module +------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.aws_metric_name_filters_exclude_only + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.aws\_metric\_name\_filters\_include\_only module +------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.aws_metric_name_filters_include_only + :members: + :show-inheritance: + datadog\_api\_client.v2.model.aws\_metrics\_config module --------------------------------------------------------- diff --git a/examples/v2/aws-integration/GetAWSMetricNameFilterPreview.py b/examples/v2/aws-integration/GetAWSMetricNameFilterPreview.py new file mode 100644 index 0000000000..a25442346d --- /dev/null +++ b/examples/v2/aws-integration/GetAWSMetricNameFilterPreview.py @@ -0,0 +1,16 @@ +""" +Get AWS metric name filter preview returns "AWS metric name filter preview result" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.aws_integration_api import AWSIntegrationApi + +configuration = Configuration() +configuration.unstable_operations["get_aws_metric_name_filter_preview"] = True +with ApiClient(configuration) as api_client: + api_instance = AWSIntegrationApi(api_client) + response = api_instance.get_aws_metric_name_filter_preview( + aws_account_config_id="aws_account_config_id", + ) + + print(response) diff --git a/examples/v2/aws-integration/PreviewAWSMetricNameFilter.py b/examples/v2/aws-integration/PreviewAWSMetricNameFilter.py new file mode 100644 index 0000000000..e8140e6365 --- /dev/null +++ b/examples/v2/aws-integration/PreviewAWSMetricNameFilter.py @@ -0,0 +1,39 @@ +""" +Preview AWS metric name filter returns "AWS metric name filter preview result" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.aws_integration_api import AWSIntegrationApi +from datadog_api_client.v2.model.aws_metric_name_filter_preview_request import AWSMetricNameFilterPreviewRequest +from datadog_api_client.v2.model.aws_metric_name_filter_preview_request_attributes import ( + AWSMetricNameFilterPreviewRequestAttributes, +) +from datadog_api_client.v2.model.aws_metric_name_filter_preview_request_data import ( + AWSMetricNameFilterPreviewRequestData, +) +from datadog_api_client.v2.model.aws_metric_name_filter_preview_type import AWSMetricNameFilterPreviewType +from datadog_api_client.v2.model.aws_metric_name_filters_include_only import AWSMetricNameFiltersIncludeOnly + +body = AWSMetricNameFilterPreviewRequest( + data=AWSMetricNameFilterPreviewRequestData( + attributes=AWSMetricNameFilterPreviewRequestAttributes( + metric_name_filters=[ + AWSMetricNameFiltersIncludeOnly( + include_only=[ + "aws.ec2.network_in", + ], + namespace="AWS/EC2", + ), + ], + ), + type=AWSMetricNameFilterPreviewType.METRIC_NAME_FILTER_PREVIEW, + ), +) + +configuration = Configuration() +configuration.unstable_operations["preview_aws_metric_name_filter"] = True +with ApiClient(configuration) as api_client: + api_instance = AWSIntegrationApi(api_client) + response = api_instance.preview_aws_metric_name_filter(aws_account_config_id="aws_account_config_id", body=body) + + print(response) diff --git a/src/datadog_api_client/configuration.py b/src/datadog_api_client/configuration.py index b743b035d3..cb1fadb705 100644 --- a/src/datadog_api_client/configuration.py +++ b/src/datadog_api_client/configuration.py @@ -615,6 +615,8 @@ def __init__( "v2.create_aws_account_ccm_config": False, "v2.delete_aws_account_ccm_config": False, "v2.get_aws_account_ccm_config": False, + "v2.get_aws_metric_name_filter_preview": False, + "v2.preview_aws_metric_name_filter": False, "v2.update_aws_account_ccm_config": False, "v2.validate_awsccm_config": False, "v2.create_jira_issue_template": False, diff --git a/src/datadog_api_client/v2/api/aws_integration_api.py b/src/datadog_api_client/v2/api/aws_integration_api.py index b10a190825..e134921e20 100644 --- a/src/datadog_api_client/v2/api/aws_integration_api.py +++ b/src/datadog_api_client/v2/api/aws_integration_api.py @@ -17,6 +17,8 @@ from datadog_api_client.v2.model.aws_account_update_request import AWSAccountUpdateRequest from datadog_api_client.v2.model.aws_ccm_config_response import AWSCcmConfigResponse from datadog_api_client.v2.model.aws_ccm_config_request import AWSCcmConfigRequest +from datadog_api_client.v2.model.aws_metric_name_filter_preview_response import AWSMetricNameFilterPreviewResponse +from datadog_api_client.v2.model.aws_metric_name_filter_preview_request import AWSMetricNameFilterPreviewRequest from datadog_api_client.v2.model.aws_namespaces_response import AWSNamespacesResponse from datadog_api_client.v2.model.aws_event_bridge_delete_response import AWSEventBridgeDeleteResponse from datadog_api_client.v2.model.aws_event_bridge_delete_request import AWSEventBridgeDeleteRequest @@ -282,6 +284,29 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._get_aws_metric_name_filter_preview_endpoint = _Endpoint( + settings={ + "response_type": (AWSMetricNameFilterPreviewResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/integration/aws/accounts/{aws_account_config_id}/metric_name_filter_preview", + "operation_id": "get_aws_metric_name_filter_preview", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "aws_account_config_id": { + "required": True, + "openapi_types": (str,), + "attribute": "aws_account_config_id", + "location": "path", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + self._list_aws_accounts_endpoint = _Endpoint( settings={ "response_type": (AWSAccountsResponse,), @@ -336,6 +361,32 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._preview_aws_metric_name_filter_endpoint = _Endpoint( + settings={ + "response_type": (AWSMetricNameFilterPreviewResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/integration/aws/accounts/{aws_account_config_id}/metric_name_filter_preview", + "operation_id": "preview_aws_metric_name_filter", + "http_method": "POST", + "version": "v2", + }, + params_map={ + "aws_account_config_id": { + "required": True, + "openapi_types": (str,), + "attribute": "aws_account_config_id", + "location": "path", + }, + "body": { + "required": True, + "openapi_types": (AWSMetricNameFilterPreviewRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + self._update_aws_account_endpoint = _Endpoint( settings={ "response_type": (AWSAccountResponse,), @@ -609,6 +660,25 @@ def get_aws_integration_iam_permissions_standard( kwargs: Dict[str, Any] = {} return self._get_aws_integration_iam_permissions_standard_endpoint.call_with_http_info(**kwargs) + def get_aws_metric_name_filter_preview( + self, + aws_account_config_id: str, + ) -> AWSMetricNameFilterPreviewResponse: + """Get AWS metric name filter preview. + + Preview which collected CloudWatch metrics would be filtered by the account's saved metric name filters. + + :param aws_account_config_id: Unique Datadog ID of the AWS Account Integration Config. To get the config ID for an account, use the + `List all AWS integrations `_ + endpoint and query by AWS Account ID. + :type aws_account_config_id: str + :rtype: AWSMetricNameFilterPreviewResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["aws_account_config_id"] = aws_account_config_id + + return self._get_aws_metric_name_filter_preview_endpoint.call_with_http_info(**kwargs) + def list_aws_accounts( self, *, @@ -653,6 +723,31 @@ def list_aws_namespaces( kwargs: Dict[str, Any] = {} return self._list_aws_namespaces_endpoint.call_with_http_info(**kwargs) + def preview_aws_metric_name_filter( + self, + aws_account_config_id: str, + body: AWSMetricNameFilterPreviewRequest, + ) -> AWSMetricNameFilterPreviewResponse: + """Preview AWS metric name filter. + + Preview which collected CloudWatch metrics would be filtered by the supplied metric name filters. + The filters are not persisted. + + :param aws_account_config_id: Unique Datadog ID of the AWS Account Integration Config. To get the config ID for an account, use the + `List all AWS integrations `_ + endpoint and query by AWS Account ID. + :type aws_account_config_id: str + :param body: The metric name filters to preview. + :type body: AWSMetricNameFilterPreviewRequest + :rtype: AWSMetricNameFilterPreviewResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["aws_account_config_id"] = aws_account_config_id + + kwargs["body"] = body + + return self._preview_aws_metric_name_filter_endpoint.call_with_http_info(**kwargs) + def update_aws_account( self, aws_account_config_id: str, diff --git a/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_dd_name.py b/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_dd_name.py new file mode 100644 index 0000000000..295894226e --- /dev/null +++ b/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_dd_name.py @@ -0,0 +1,39 @@ +# 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 ( + ModelNormal, + cached_property, +) + + +class AWSMetricNameFilterPreviewDDName(ModelNormal): + @cached_property + def openapi_types(_): + return { + "filtered": (bool,), + "name": (str,), + } + + attribute_map = { + "filtered": "filtered", + "name": "name", + } + + def __init__(self_, filtered: bool, name: str, **kwargs): + """ + A Datadog metric name and whether it is filtered. + + :param filtered: Whether this Datadog metric name is filtered out. + :type filtered: bool + + :param name: The Datadog metric name. + :type name: str + """ + super().__init__(kwargs) + + self_.filtered = filtered + self_.name = name diff --git a/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_filter_match.py b/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_filter_match.py new file mode 100644 index 0000000000..06a00a3399 --- /dev/null +++ b/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_filter_match.py @@ -0,0 +1,39 @@ +# 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 ( + ModelNormal, + cached_property, +) + + +class AWSMetricNameFilterPreviewFilterMatch(ModelNormal): + @cached_property + def openapi_types(_): + return { + "match_count": (int,), + "pattern": (str,), + } + + attribute_map = { + "match_count": "match_count", + "pattern": "pattern", + } + + def __init__(self_, match_count: int, pattern: str, **kwargs): + """ + A metric name filter pattern and how many metrics it matched. + + :param match_count: The number of Datadog metric names matched by this pattern. + :type match_count: int + + :param pattern: The metric name filter pattern. + :type pattern: str + """ + super().__init__(kwargs) + + self_.match_count = match_count + self_.pattern = pattern diff --git a/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_metric.py b/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_metric.py new file mode 100644 index 0000000000..8f0e82f5ec --- /dev/null +++ b/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_metric.py @@ -0,0 +1,46 @@ +# 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, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.aws_metric_name_filter_preview_dd_name import AWSMetricNameFilterPreviewDDName + + +class AWSMetricNameFilterPreviewMetric(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.aws_metric_name_filter_preview_dd_name import AWSMetricNameFilterPreviewDDName + + return { + "cw_name": (str,), + "dd_names": ([AWSMetricNameFilterPreviewDDName],), + } + + attribute_map = { + "cw_name": "cw_name", + "dd_names": "dd_names", + } + + def __init__(self_, cw_name: str, dd_names: List[AWSMetricNameFilterPreviewDDName], **kwargs): + """ + A CloudWatch metric and the Datadog metric names it produces. + + :param cw_name: The CloudWatch metric name. + :type cw_name: str + + :param dd_names: The Datadog metric names produced from this CloudWatch metric. + :type dd_names: [AWSMetricNameFilterPreviewDDName] + """ + super().__init__(kwargs) + + self_.cw_name = cw_name + self_.dd_names = dd_names diff --git a/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_namespace.py b/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_namespace.py new file mode 100644 index 0000000000..0a95d5cf7c --- /dev/null +++ b/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_namespace.py @@ -0,0 +1,65 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.aws_metric_name_filter_preview_filter_match import ( + AWSMetricNameFilterPreviewFilterMatch, + ) + from datadog_api_client.v2.model.aws_metric_name_filter_preview_metric import AWSMetricNameFilterPreviewMetric + + +class AWSMetricNameFilterPreviewNamespace(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.aws_metric_name_filter_preview_filter_match import ( + AWSMetricNameFilterPreviewFilterMatch, + ) + from datadog_api_client.v2.model.aws_metric_name_filter_preview_metric import AWSMetricNameFilterPreviewMetric + + return { + "filters": ([AWSMetricNameFilterPreviewFilterMatch],), + "metrics": ([AWSMetricNameFilterPreviewMetric],), + "namespace": (str,), + } + + attribute_map = { + "filters": "filters", + "metrics": "metrics", + "namespace": "namespace", + } + + def __init__( + self_, + filters: List[AWSMetricNameFilterPreviewFilterMatch], + metrics: List[AWSMetricNameFilterPreviewMetric], + namespace: str, + **kwargs, + ): + """ + The metric name filter preview for a single namespace. + + :param filters: The metric name filter patterns evaluated for this namespace and how many metrics they matched. + :type filters: [AWSMetricNameFilterPreviewFilterMatch] + + :param metrics: The CloudWatch metrics collected for this namespace and whether each resulting + Datadog metric is filtered. + :type metrics: [AWSMetricNameFilterPreviewMetric] + + :param namespace: The AWS CloudWatch namespace. + :type namespace: str + """ + super().__init__(kwargs) + + self_.filters = filters + self_.metrics = metrics + self_.namespace = namespace diff --git a/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_request.py b/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_request.py new file mode 100644 index 0000000000..ee888d4c88 --- /dev/null +++ b/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_request.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.aws_metric_name_filter_preview_request_data import ( + AWSMetricNameFilterPreviewRequestData, + ) + + +class AWSMetricNameFilterPreviewRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.aws_metric_name_filter_preview_request_data import ( + AWSMetricNameFilterPreviewRequestData, + ) + + return { + "data": (AWSMetricNameFilterPreviewRequestData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: AWSMetricNameFilterPreviewRequestData, **kwargs): + """ + AWS metric name filter preview request body. + + :param data: AWS metric name filter preview request data. + :type data: AWSMetricNameFilterPreviewRequestData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_request_attributes.py b/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_request_attributes.py new file mode 100644 index 0000000000..0813148f4e --- /dev/null +++ b/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_request_attributes.py @@ -0,0 +1,48 @@ +# 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, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.aws_metric_name_filters import AWSMetricNameFilters + from datadog_api_client.v2.model.aws_metric_name_filters_include_only import AWSMetricNameFiltersIncludeOnly + from datadog_api_client.v2.model.aws_metric_name_filters_exclude_only import AWSMetricNameFiltersExcludeOnly + + +class AWSMetricNameFilterPreviewRequestAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.aws_metric_name_filters import AWSMetricNameFilters + + return { + "metric_name_filters": ([AWSMetricNameFilters],), + } + + attribute_map = { + "metric_name_filters": "metric_name_filters", + } + + def __init__( + self_, + metric_name_filters: List[ + Union[AWSMetricNameFilters, AWSMetricNameFiltersIncludeOnly, AWSMetricNameFiltersExcludeOnly] + ], + **kwargs, + ): + """ + AWS metric name filter preview request attributes. + + :param metric_name_filters: The metric name filters to preview. + :type metric_name_filters: [AWSMetricNameFilters] + """ + super().__init__(kwargs) + + self_.metric_name_filters = metric_name_filters diff --git a/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_request_data.py b/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_request_data.py new file mode 100644 index 0000000000..c3f309ef7e --- /dev/null +++ b/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_request_data.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 typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.aws_metric_name_filter_preview_request_attributes import ( + AWSMetricNameFilterPreviewRequestAttributes, + ) + from datadog_api_client.v2.model.aws_metric_name_filter_preview_type import AWSMetricNameFilterPreviewType + + +class AWSMetricNameFilterPreviewRequestData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.aws_metric_name_filter_preview_request_attributes import ( + AWSMetricNameFilterPreviewRequestAttributes, + ) + from datadog_api_client.v2.model.aws_metric_name_filter_preview_type import AWSMetricNameFilterPreviewType + + return { + "attributes": (AWSMetricNameFilterPreviewRequestAttributes,), + "type": (AWSMetricNameFilterPreviewType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__( + self_, attributes: AWSMetricNameFilterPreviewRequestAttributes, type: AWSMetricNameFilterPreviewType, **kwargs + ): + """ + AWS metric name filter preview request data. + + :param attributes: AWS metric name filter preview request attributes. + :type attributes: AWSMetricNameFilterPreviewRequestAttributes + + :param type: The ``AWSMetricNameFilterPreviewResponseData`` ``type``. + :type type: AWSMetricNameFilterPreviewType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_response.py b/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_response.py new file mode 100644 index 0000000000..14d4d0b13d --- /dev/null +++ b/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_response.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.aws_metric_name_filter_preview_response_data import ( + AWSMetricNameFilterPreviewResponseData, + ) + + +class AWSMetricNameFilterPreviewResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.aws_metric_name_filter_preview_response_data import ( + AWSMetricNameFilterPreviewResponseData, + ) + + return { + "data": (AWSMetricNameFilterPreviewResponseData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: AWSMetricNameFilterPreviewResponseData, **kwargs): + """ + AWS metric name filter preview response body. + + :param data: AWS metric name filter preview response data. + :type data: AWSMetricNameFilterPreviewResponseData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_response_attributes.py b/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_response_attributes.py new file mode 100644 index 0000000000..c9d0746507 --- /dev/null +++ b/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_response_attributes.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 typing import List, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.aws_metric_name_filter_preview_namespace import AWSMetricNameFilterPreviewNamespace + + +class AWSMetricNameFilterPreviewResponseAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.aws_metric_name_filter_preview_namespace import ( + AWSMetricNameFilterPreviewNamespace, + ) + + return { + "namespaces": ([AWSMetricNameFilterPreviewNamespace],), + } + + attribute_map = { + "namespaces": "namespaces", + } + + def __init__(self_, namespaces: List[AWSMetricNameFilterPreviewNamespace], **kwargs): + """ + AWS metric name filter preview response attributes. + + :param namespaces: The list of namespaces affected by the previewed metric name filters. + :type namespaces: [AWSMetricNameFilterPreviewNamespace] + """ + super().__init__(kwargs) + + self_.namespaces = namespaces diff --git a/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_response_data.py b/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_response_data.py new file mode 100644 index 0000000000..bc1b37aa76 --- /dev/null +++ b/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_response_data.py @@ -0,0 +1,67 @@ +# 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.aws_metric_name_filter_preview_response_attributes import ( + AWSMetricNameFilterPreviewResponseAttributes, + ) + from datadog_api_client.v2.model.aws_metric_name_filter_preview_type import AWSMetricNameFilterPreviewType + + +class AWSMetricNameFilterPreviewResponseData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.aws_metric_name_filter_preview_response_attributes import ( + AWSMetricNameFilterPreviewResponseAttributes, + ) + from datadog_api_client.v2.model.aws_metric_name_filter_preview_type import AWSMetricNameFilterPreviewType + + return { + "attributes": (AWSMetricNameFilterPreviewResponseAttributes,), + "id": (str,), + "type": (AWSMetricNameFilterPreviewType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, + attributes: AWSMetricNameFilterPreviewResponseAttributes, + id: str, + type: AWSMetricNameFilterPreviewType, + **kwargs, + ): + """ + AWS metric name filter preview response data. + + :param attributes: AWS metric name filter preview response attributes. + :type attributes: AWSMetricNameFilterPreviewResponseAttributes + + :param id: Unique Datadog ID of the AWS Account Integration Config. + To get the config ID for an account, use the + `List all AWS integrations `_ + endpoint and query by AWS Account ID. + :type id: str + + :param type: The ``AWSMetricNameFilterPreviewResponseData`` ``type``. + :type type: AWSMetricNameFilterPreviewType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_type.py b/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_type.py new file mode 100644 index 0000000000..51e3aff8a7 --- /dev/null +++ b/src/datadog_api_client/v2/model/aws_metric_name_filter_preview_type.py @@ -0,0 +1,35 @@ +# 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 AWSMetricNameFilterPreviewType(ModelSimple): + """ + The `AWSMetricNameFilterPreviewResponseData` `type`. + + :param value: If omitted defaults to "metric_name_filter_preview". Must be one of ["metric_name_filter_preview"]. + :type value: str + """ + + allowed_values = { + "metric_name_filter_preview", + } + METRIC_NAME_FILTER_PREVIEW: ClassVar["AWSMetricNameFilterPreviewType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +AWSMetricNameFilterPreviewType.METRIC_NAME_FILTER_PREVIEW = AWSMetricNameFilterPreviewType("metric_name_filter_preview") diff --git a/src/datadog_api_client/v2/model/aws_metric_name_filters.py b/src/datadog_api_client/v2/model/aws_metric_name_filters.py new file mode 100644 index 0000000000..fac522cf7f --- /dev/null +++ b/src/datadog_api_client/v2/model/aws_metric_name_filters.py @@ -0,0 +1,47 @@ +# 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 AWSMetricNameFilters(ModelComposed): + def __init__(self, **kwargs): + """ + AWS CloudWatch metric name filter for a single namespace. + Exactly one of ``include_only`` or ``exclude_only`` must be set. + + :param include_only: Include only metric names matching one of these patterns. + :type include_only: [str] + + :param namespace: The AWS CloudWatch namespace to which this metric name filter applies. + :type namespace: str + + :param exclude_only: Exclude metric names matching one of these patterns. + :type exclude_only: [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.aws_metric_name_filters_include_only import AWSMetricNameFiltersIncludeOnly + from datadog_api_client.v2.model.aws_metric_name_filters_exclude_only import AWSMetricNameFiltersExcludeOnly + + return { + "oneOf": [ + AWSMetricNameFiltersIncludeOnly, + AWSMetricNameFiltersExcludeOnly, + ], + } diff --git a/src/datadog_api_client/v2/model/aws_metric_name_filters_exclude_only.py b/src/datadog_api_client/v2/model/aws_metric_name_filters_exclude_only.py new file mode 100644 index 0000000000..87fc758fb4 --- /dev/null +++ b/src/datadog_api_client/v2/model/aws_metric_name_filters_exclude_only.py @@ -0,0 +1,40 @@ +# 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 + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class AWSMetricNameFiltersExcludeOnly(ModelNormal): + @cached_property + def openapi_types(_): + return { + "exclude_only": ([str],), + "namespace": (str,), + } + + attribute_map = { + "exclude_only": "exclude_only", + "namespace": "namespace", + } + + def __init__(self_, exclude_only: List[str], namespace: str, **kwargs): + """ + Exclude metric names matching one of these patterns for a single namespace. + + :param exclude_only: Exclude metric names matching one of these patterns. + :type exclude_only: [str] + + :param namespace: The AWS CloudWatch namespace to which this metric name filter applies. + :type namespace: str + """ + super().__init__(kwargs) + + self_.exclude_only = exclude_only + self_.namespace = namespace diff --git a/src/datadog_api_client/v2/model/aws_metric_name_filters_include_only.py b/src/datadog_api_client/v2/model/aws_metric_name_filters_include_only.py new file mode 100644 index 0000000000..47e5c5b9dc --- /dev/null +++ b/src/datadog_api_client/v2/model/aws_metric_name_filters_include_only.py @@ -0,0 +1,40 @@ +# 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 + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class AWSMetricNameFiltersIncludeOnly(ModelNormal): + @cached_property + def openapi_types(_): + return { + "include_only": ([str],), + "namespace": (str,), + } + + attribute_map = { + "include_only": "include_only", + "namespace": "namespace", + } + + def __init__(self_, include_only: List[str], namespace: str, **kwargs): + """ + Include only metric names matching one of these patterns for a single namespace. + + :param include_only: Include only metric names matching one of these patterns. + :type include_only: [str] + + :param namespace: The AWS CloudWatch namespace to which this metric name filter applies. + :type namespace: str + """ + super().__init__(kwargs) + + self_.include_only = include_only + self_.namespace = namespace diff --git a/src/datadog_api_client/v2/model/aws_metrics_config.py b/src/datadog_api_client/v2/model/aws_metrics_config.py index 153fde004e..72c59fa1b7 100644 --- a/src/datadog_api_client/v2/model/aws_metrics_config.py +++ b/src/datadog_api_client/v2/model/aws_metrics_config.py @@ -14,8 +14,11 @@ if TYPE_CHECKING: + from datadog_api_client.v2.model.aws_metric_name_filters import AWSMetricNameFilters from datadog_api_client.v2.model.aws_namespace_filters import AWSNamespaceFilters from datadog_api_client.v2.model.aws_namespace_tag_filter import AWSNamespaceTagFilter + from datadog_api_client.v2.model.aws_metric_name_filters_include_only import AWSMetricNameFiltersIncludeOnly + from datadog_api_client.v2.model.aws_metric_name_filters_exclude_only import AWSMetricNameFiltersExcludeOnly from datadog_api_client.v2.model.aws_namespace_filters_exclude_only import AWSNamespaceFiltersExcludeOnly from datadog_api_client.v2.model.aws_namespace_filters_include_only import AWSNamespaceFiltersIncludeOnly @@ -23,6 +26,7 @@ class AWSMetricsConfig(ModelNormal): @cached_property def openapi_types(_): + from datadog_api_client.v2.model.aws_metric_name_filters import AWSMetricNameFilters from datadog_api_client.v2.model.aws_namespace_filters import AWSNamespaceFilters from datadog_api_client.v2.model.aws_namespace_tag_filter import AWSNamespaceTagFilter @@ -31,6 +35,7 @@ def openapi_types(_): "collect_cloudwatch_alarms": (bool,), "collect_custom_metrics": (bool,), "enabled": (bool,), + "metric_name_filters": ([AWSMetricNameFilters],), "namespace_filters": (AWSNamespaceFilters,), "tag_filters": ([AWSNamespaceTagFilter],), } @@ -40,6 +45,7 @@ def openapi_types(_): "collect_cloudwatch_alarms": "collect_cloudwatch_alarms", "collect_custom_metrics": "collect_custom_metrics", "enabled": "enabled", + "metric_name_filters": "metric_name_filters", "namespace_filters": "namespace_filters", "tag_filters": "tag_filters", } @@ -50,6 +56,10 @@ def __init__( collect_cloudwatch_alarms: Union[bool, UnsetType] = unset, collect_custom_metrics: Union[bool, UnsetType] = unset, enabled: Union[bool, UnsetType] = unset, + metric_name_filters: Union[ + List[Union[AWSMetricNameFilters, AWSMetricNameFiltersIncludeOnly, AWSMetricNameFiltersExcludeOnly]], + UnsetType, + ] = unset, namespace_filters: Union[ AWSNamespaceFilters, AWSNamespaceFiltersExcludeOnly, AWSNamespaceFiltersIncludeOnly, UnsetType ] = unset, @@ -71,6 +81,10 @@ def __init__( :param enabled: Enable AWS metrics collection. Defaults to ``true``. :type enabled: bool, optional + :param metric_name_filters: AWS CloudWatch metric name filters. Each filter applies to a single namespace. + Exactly one of ``include_only`` or ``exclude_only`` must be set on each filter. + :type metric_name_filters: [AWSMetricNameFilters], optional + :param namespace_filters: AWS Metrics namespace filters. Defaults to ``exclude_only``. :type namespace_filters: AWSNamespaceFilters, optional @@ -85,6 +99,8 @@ def __init__( kwargs["collect_custom_metrics"] = collect_custom_metrics if enabled is not unset: kwargs["enabled"] = enabled + if metric_name_filters is not unset: + kwargs["metric_name_filters"] = metric_name_filters if namespace_filters is not unset: kwargs["namespace_filters"] = namespace_filters if tag_filters is not unset: diff --git a/src/datadog_api_client/v2/models/__init__.py b/src/datadog_api_client/v2/models/__init__.py index 07daae87cb..72cf21929b 100644 --- a/src/datadog_api_client/v2/models/__init__.py +++ b/src/datadog_api_client/v2/models/__init__.py @@ -121,6 +121,30 @@ from datadog_api_client.v2.model.aws_logs_services_response_attributes import AWSLogsServicesResponseAttributes from datadog_api_client.v2.model.aws_logs_services_response_data import AWSLogsServicesResponseData from datadog_api_client.v2.model.aws_logs_services_response_data_type import AWSLogsServicesResponseDataType +from datadog_api_client.v2.model.aws_metric_name_filter_preview_dd_name import AWSMetricNameFilterPreviewDDName +from datadog_api_client.v2.model.aws_metric_name_filter_preview_filter_match import ( + AWSMetricNameFilterPreviewFilterMatch, +) +from datadog_api_client.v2.model.aws_metric_name_filter_preview_metric import AWSMetricNameFilterPreviewMetric +from datadog_api_client.v2.model.aws_metric_name_filter_preview_namespace import AWSMetricNameFilterPreviewNamespace +from datadog_api_client.v2.model.aws_metric_name_filter_preview_request import AWSMetricNameFilterPreviewRequest +from datadog_api_client.v2.model.aws_metric_name_filter_preview_request_attributes import ( + AWSMetricNameFilterPreviewRequestAttributes, +) +from datadog_api_client.v2.model.aws_metric_name_filter_preview_request_data import ( + AWSMetricNameFilterPreviewRequestData, +) +from datadog_api_client.v2.model.aws_metric_name_filter_preview_response import AWSMetricNameFilterPreviewResponse +from datadog_api_client.v2.model.aws_metric_name_filter_preview_response_attributes import ( + AWSMetricNameFilterPreviewResponseAttributes, +) +from datadog_api_client.v2.model.aws_metric_name_filter_preview_response_data import ( + AWSMetricNameFilterPreviewResponseData, +) +from datadog_api_client.v2.model.aws_metric_name_filter_preview_type import AWSMetricNameFilterPreviewType +from datadog_api_client.v2.model.aws_metric_name_filters import AWSMetricNameFilters +from datadog_api_client.v2.model.aws_metric_name_filters_exclude_only import AWSMetricNameFiltersExcludeOnly +from datadog_api_client.v2.model.aws_metric_name_filters_include_only import AWSMetricNameFiltersIncludeOnly from datadog_api_client.v2.model.aws_metrics_config import AWSMetricsConfig from datadog_api_client.v2.model.aws_namespace_filters import AWSNamespaceFilters from datadog_api_client.v2.model.aws_namespace_filters_exclude_only import AWSNamespaceFiltersExcludeOnly @@ -9771,6 +9795,20 @@ "AWSLogsServicesResponseAttributes", "AWSLogsServicesResponseData", "AWSLogsServicesResponseDataType", + "AWSMetricNameFilterPreviewDDName", + "AWSMetricNameFilterPreviewFilterMatch", + "AWSMetricNameFilterPreviewMetric", + "AWSMetricNameFilterPreviewNamespace", + "AWSMetricNameFilterPreviewRequest", + "AWSMetricNameFilterPreviewRequestAttributes", + "AWSMetricNameFilterPreviewRequestData", + "AWSMetricNameFilterPreviewResponse", + "AWSMetricNameFilterPreviewResponseAttributes", + "AWSMetricNameFilterPreviewResponseData", + "AWSMetricNameFilterPreviewType", + "AWSMetricNameFilters", + "AWSMetricNameFiltersExcludeOnly", + "AWSMetricNameFiltersIncludeOnly", "AWSMetricsConfig", "AWSNamespaceFilters", "AWSNamespaceFiltersExcludeOnly", diff --git a/tests/v2/features/aws_integration.feature b/tests/v2/features/aws_integration.feature index dac51bb744..8d91676e64 100644 --- a/tests/v2/features/aws_integration.feature +++ b/tests/v2/features/aws_integration.feature @@ -185,6 +185,22 @@ Feature: AWS Integration When the request is sent Then the response status is 200 AWS integration standard IAM permissions. + @generated @skip @team:DataDog/aws-integrations + Scenario: Get AWS metric name filter preview returns "AWS metric name filter preview result" response + Given operation "GetAWSMetricNameFilterPreview" enabled + And new "GetAWSMetricNameFilterPreview" request + And request contains "aws_account_config_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 AWS metric name filter preview result + + @generated @skip @team:DataDog/aws-integrations + Scenario: Get AWS metric name filter preview returns "Not Found" response + Given operation "GetAWSMetricNameFilterPreview" enabled + And new "GetAWSMetricNameFilterPreview" request + And request contains "aws_account_config_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + @generated @skip @team:DataDog/aws-integrations Scenario: Get all Amazon EventBridge sources returns "Amazon EventBridge sources list." response Given new "ListAWSEventBridgeSources" request @@ -249,6 +265,33 @@ Feature: AWS Integration When the request is sent Then the response status is 200 AWS Namespaces List object + @generated @skip @team:DataDog/aws-integrations + Scenario: Preview AWS metric name filter returns "AWS metric name filter preview result" response + Given operation "PreviewAWSMetricNameFilter" enabled + And new "PreviewAWSMetricNameFilter" request + And request contains "aws_account_config_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"metric_name_filters": [{"include_only": ["aws.ec2.network_in"], "namespace": "AWS/EC2"}]}, "type": "metric_name_filter_preview"}} + When the request is sent + Then the response status is 200 AWS metric name filter preview result + + @generated @skip @team:DataDog/aws-integrations + Scenario: Preview AWS metric name filter returns "Bad Request" response + Given operation "PreviewAWSMetricNameFilter" enabled + And new "PreviewAWSMetricNameFilter" request + And request contains "aws_account_config_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"metric_name_filters": [{"include_only": ["aws.ec2.network_in"], "namespace": "AWS/EC2"}]}, "type": "metric_name_filter_preview"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/aws-integrations + Scenario: Preview AWS metric name filter returns "Not Found" response + Given operation "PreviewAWSMetricNameFilter" enabled + And new "PreviewAWSMetricNameFilter" request + And request contains "aws_account_config_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"metric_name_filters": [{"include_only": ["aws.ec2.network_in"], "namespace": "AWS/EC2"}]}, "type": "metric_name_filter_preview"}} + When the request is sent + Then the response status is 404 Not Found + @skip @team:DataDog/aws-integrations Scenario: Update AWS CCM config returns "AWS CCM Config object" response Given operation "UpdateAWSAccountCCMConfig" enabled diff --git a/tests/v2/features/undo.json b/tests/v2/features/undo.json index 1eaba52ee9..22089f0ece 100644 --- a/tests/v2/features/undo.json +++ b/tests/v2/features/undo.json @@ -3363,6 +3363,18 @@ "type": "unsafe" } }, + "GetAWSMetricNameFilterPreview": { + "tag": "AWS Integration", + "undo": { + "type": "safe" + } + }, + "PreviewAWSMetricNameFilter": { + "tag": "AWS Integration", + "undo": { + "type": "safe" + } + }, "ListAWSNamespaces": { "tag": "AWS Integration", "undo": {