Skip to content

Commit

Permalink
Add a cost monitor example (#2363)
Browse files Browse the repository at this point in the history
Co-authored-by: ci.datadog-api-spec <[email protected]>
  • Loading branch information
api-clients-generation-pipeline[bot] and ci.datadog-api-spec authored Jan 17, 2025
1 parent 183cfc9 commit 44a302a
Show file tree
Hide file tree
Showing 13 changed files with 399 additions and 5 deletions.
8 changes: 4 additions & 4 deletions .apigentools-info
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@
"spec_versions": {
"v1": {
"apigentools_version": "1.6.6",
"regenerated": "2025-01-17 21:03:26.896240",
"spec_repo_commit": "617655da"
"regenerated": "2025-01-17 21:41:13.492369",
"spec_repo_commit": "27e609f7"
},
"v2": {
"apigentools_version": "1.6.6",
"regenerated": "2025-01-17 21:03:26.910869",
"spec_repo_commit": "617655da"
"regenerated": "2025-01-17 21:41:13.506549",
"spec_repo_commit": "27e609f7"
}
}
}
57 changes: 57 additions & 0 deletions .generator/schemas/v1/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6784,6 +6784,62 @@ components:
- FIREFOX_LAPTOP_LARGE
- FIREFOX_TABLET
- FIREFOX_MOBILE_SMALL
MonitorFormulaAndFunctionCostAggregator:
description: Aggregation methods for metric queries.
enum:
- avg
- sum
- max
- min
- last
- area
- l2norm
- percentile
- stddev
example: avg
type: string
x-enum-varnames:
- AVG
- SUM
- MAX
- MIN
- LAST
- AREA
- L2NORM
- PERCENTILE
- STDDEV
MonitorFormulaAndFunctionCostDataSource:
description: Data source for cost queries.
enum:
- metrics
- cloud_cost
- datadog_usage
example: cloud_cost
type: string
x-enum-varnames:
- METRICS
- CLOUD_COST
- DATADOG_USAGE
MonitorFormulaAndFunctionCostQueryDefinition:
description: A formula and functions cost query.
properties:
aggregator:
$ref: '#/components/schemas/MonitorFormulaAndFunctionCostAggregator'
data_source:
$ref: '#/components/schemas/MonitorFormulaAndFunctionCostDataSource'
name:
description: Name of the query for use in formulas.
example: query1
type: string
query:
description: The monitor query.
example: sum:all.cost{*}.rollup(sum, 86400)
type: string
required:
- name
- data_source
- query
type: object
MonitorFormulaAndFunctionEventAggregation:
description: Aggregation methods for event platform queries.
enum:
Expand Down Expand Up @@ -6934,6 +6990,7 @@ components:
description: A formula and function query.
oneOf:
- $ref: '#/components/schemas/MonitorFormulaAndFunctionEventQueryDefinition'
- $ref: '#/components/schemas/MonitorFormulaAndFunctionCostQueryDefinition'
MonitorGroupSearchResponse:
description: The response of a monitor group search.
example:
Expand Down
21 changes: 21 additions & 0 deletions docs/datadog_api_client.v1.model.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2027,6 +2027,27 @@ datadog\_api\_client.v1.model.monitor\_device\_id module
:members:
:show-inheritance:

datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_cost\_aggregator module
--------------------------------------------------------------------------------------

.. automodule:: datadog_api_client.v1.model.monitor_formula_and_function_cost_aggregator
:members:
:show-inheritance:

datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_cost\_data\_source module
----------------------------------------------------------------------------------------

.. automodule:: datadog_api_client.v1.model.monitor_formula_and_function_cost_data_source
:members:
:show-inheritance:

datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_cost\_query\_definition module
---------------------------------------------------------------------------------------------

.. automodule:: datadog_api_client.v1.model.monitor_formula_and_function_cost_query_definition
:members:
:show-inheritance:

datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_event\_aggregation module
----------------------------------------------------------------------------------------

Expand Down
53 changes: 53 additions & 0 deletions examples/v1/monitors/CreateMonitor_1303514967.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
"""
Create a Cost Monitor returns "OK" response
"""

from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v1.api.monitors_api import MonitorsApi
from datadog_api_client.v1.model.monitor import Monitor
from datadog_api_client.v1.model.monitor_formula_and_function_cost_aggregator import (
MonitorFormulaAndFunctionCostAggregator,
)
from datadog_api_client.v1.model.monitor_formula_and_function_cost_data_source import (
MonitorFormulaAndFunctionCostDataSource,
)
from datadog_api_client.v1.model.monitor_formula_and_function_cost_query_definition import (
MonitorFormulaAndFunctionCostQueryDefinition,
)
from datadog_api_client.v1.model.monitor_options import MonitorOptions
from datadog_api_client.v1.model.monitor_thresholds import MonitorThresholds
from datadog_api_client.v1.model.monitor_type import MonitorType

body = Monitor(
name="Example Monitor",
type=MonitorType.COST_ALERT,
query='formula("exclude_null(query1)").last("7d").anomaly(direction="above", threshold=10) >= 5',
message="some message Notify: @hipchat-channel",
tags=[
"test:examplemonitor",
"env:ci",
],
priority=3,
options=MonitorOptions(
thresholds=MonitorThresholds(
critical=5.0,
warning=3.0,
),
variables=[
MonitorFormulaAndFunctionCostQueryDefinition(
data_source=MonitorFormulaAndFunctionCostDataSource.CLOUD_COST,
query="sum:aws.cost.net.amortized.shared.resources.allocated{aws_product IN (amplify ,athena, backup, bedrock ) } by {aws_product}.rollup(sum, 86400)",
name="query1",
aggregator=MonitorFormulaAndFunctionCostAggregator.SUM,
),
],
include_tags=True,
),
)

configuration = Configuration()
with ApiClient(configuration) as api_client:
api_instance = MonitorsApi(api_client)
response = api_instance.create_monitor(body=body)

print(response)
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# 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 MonitorFormulaAndFunctionCostAggregator(ModelSimple):
"""
Aggregation methods for metric queries.
:param value: Must be one of ["avg", "sum", "max", "min", "last", "area", "l2norm", "percentile", "stddev"].
:type value: str
"""

allowed_values = {
"avg",
"sum",
"max",
"min",
"last",
"area",
"l2norm",
"percentile",
"stddev",
}
AVG: ClassVar["MonitorFormulaAndFunctionCostAggregator"]
SUM: ClassVar["MonitorFormulaAndFunctionCostAggregator"]
MAX: ClassVar["MonitorFormulaAndFunctionCostAggregator"]
MIN: ClassVar["MonitorFormulaAndFunctionCostAggregator"]
LAST: ClassVar["MonitorFormulaAndFunctionCostAggregator"]
AREA: ClassVar["MonitorFormulaAndFunctionCostAggregator"]
L2NORM: ClassVar["MonitorFormulaAndFunctionCostAggregator"]
PERCENTILE: ClassVar["MonitorFormulaAndFunctionCostAggregator"]
STDDEV: ClassVar["MonitorFormulaAndFunctionCostAggregator"]

@cached_property
def openapi_types(_):
return {
"value": (str,),
}


MonitorFormulaAndFunctionCostAggregator.AVG = MonitorFormulaAndFunctionCostAggregator("avg")
MonitorFormulaAndFunctionCostAggregator.SUM = MonitorFormulaAndFunctionCostAggregator("sum")
MonitorFormulaAndFunctionCostAggregator.MAX = MonitorFormulaAndFunctionCostAggregator("max")
MonitorFormulaAndFunctionCostAggregator.MIN = MonitorFormulaAndFunctionCostAggregator("min")
MonitorFormulaAndFunctionCostAggregator.LAST = MonitorFormulaAndFunctionCostAggregator("last")
MonitorFormulaAndFunctionCostAggregator.AREA = MonitorFormulaAndFunctionCostAggregator("area")
MonitorFormulaAndFunctionCostAggregator.L2NORM = MonitorFormulaAndFunctionCostAggregator("l2norm")
MonitorFormulaAndFunctionCostAggregator.PERCENTILE = MonitorFormulaAndFunctionCostAggregator("percentile")
MonitorFormulaAndFunctionCostAggregator.STDDEV = MonitorFormulaAndFunctionCostAggregator("stddev")
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# 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 MonitorFormulaAndFunctionCostDataSource(ModelSimple):
"""
Data source for cost queries.
:param value: Must be one of ["metrics", "cloud_cost", "datadog_usage"].
:type value: str
"""

allowed_values = {
"metrics",
"cloud_cost",
"datadog_usage",
}
METRICS: ClassVar["MonitorFormulaAndFunctionCostDataSource"]
CLOUD_COST: ClassVar["MonitorFormulaAndFunctionCostDataSource"]
DATADOG_USAGE: ClassVar["MonitorFormulaAndFunctionCostDataSource"]

@cached_property
def openapi_types(_):
return {
"value": (str,),
}


MonitorFormulaAndFunctionCostDataSource.METRICS = MonitorFormulaAndFunctionCostDataSource("metrics")
MonitorFormulaAndFunctionCostDataSource.CLOUD_COST = MonitorFormulaAndFunctionCostDataSource("cloud_cost")
MonitorFormulaAndFunctionCostDataSource.DATADOG_USAGE = MonitorFormulaAndFunctionCostDataSource("datadog_usage")
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# 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 Union, TYPE_CHECKING

from datadog_api_client.model_utils import (
ModelNormal,
cached_property,
unset,
UnsetType,
)


if TYPE_CHECKING:
from datadog_api_client.v1.model.monitor_formula_and_function_cost_aggregator import (
MonitorFormulaAndFunctionCostAggregator,
)
from datadog_api_client.v1.model.monitor_formula_and_function_cost_data_source import (
MonitorFormulaAndFunctionCostDataSource,
)


class MonitorFormulaAndFunctionCostQueryDefinition(ModelNormal):
@cached_property
def openapi_types(_):
from datadog_api_client.v1.model.monitor_formula_and_function_cost_aggregator import (
MonitorFormulaAndFunctionCostAggregator,
)
from datadog_api_client.v1.model.monitor_formula_and_function_cost_data_source import (
MonitorFormulaAndFunctionCostDataSource,
)

return {
"aggregator": (MonitorFormulaAndFunctionCostAggregator,),
"data_source": (MonitorFormulaAndFunctionCostDataSource,),
"name": (str,),
"query": (str,),
}

attribute_map = {
"aggregator": "aggregator",
"data_source": "data_source",
"name": "name",
"query": "query",
}

def __init__(
self_,
data_source: MonitorFormulaAndFunctionCostDataSource,
name: str,
query: str,
aggregator: Union[MonitorFormulaAndFunctionCostAggregator, UnsetType] = unset,
**kwargs,
):
"""
A formula and functions cost query.
:param aggregator: Aggregation methods for metric queries.
:type aggregator: MonitorFormulaAndFunctionCostAggregator, optional
:param data_source: Data source for cost queries.
:type data_source: MonitorFormulaAndFunctionCostDataSource
:param name: Name of the query for use in formulas.
:type name: str
:param query: The monitor query.
:type query: str
"""
if aggregator is not unset:
kwargs["aggregator"] = aggregator
super().__init__(kwargs)

self_.data_source = data_source
self_.name = name
self_.query = query
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,12 @@ def __init__(self, **kwargs):
:param search: Search options.
:type search: MonitorFormulaAndFunctionEventQueryDefinitionSearch, optional
:param aggregator: Aggregation methods for metric queries.
:type aggregator: MonitorFormulaAndFunctionCostAggregator, optional
:param query: The monitor query.
:type query: str
"""
super().__init__(kwargs)

Expand All @@ -47,9 +53,13 @@ def _composed_schemas(_):
from datadog_api_client.v1.model.monitor_formula_and_function_event_query_definition import (
MonitorFormulaAndFunctionEventQueryDefinition,
)
from datadog_api_client.v1.model.monitor_formula_and_function_cost_query_definition import (
MonitorFormulaAndFunctionCostQueryDefinition,
)

return {
"oneOf": [
MonitorFormulaAndFunctionEventQueryDefinition,
MonitorFormulaAndFunctionCostQueryDefinition,
],
}
Loading

0 comments on commit 44a302a

Please sign in to comment.