Skip to content

Commit 61a5d21

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
Add daily limit reset options to logs indexes api (#1842)
Co-authored-by: ci.datadog-api-spec <[email protected]>
1 parent 8fa5b3f commit 61a5d21

File tree

10 files changed

+159
-8
lines changed

10 files changed

+159
-8
lines changed

.apigentools-info

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
"spec_versions": {
55
"v1": {
66
"apigentools_version": "1.6.6",
7-
"regenerated": "2024-01-19 16:38:24.372553",
8-
"spec_repo_commit": "80f33fd7"
7+
"regenerated": "2024-01-22 19:09:10.417108",
8+
"spec_repo_commit": "7def3c63"
99
},
1010
"v2": {
1111
"apigentools_version": "1.6.6",
12-
"regenerated": "2024-01-19 16:38:24.402441",
13-
"spec_repo_commit": "80f33fd7"
12+
"regenerated": "2024-01-22 19:09:10.431037",
13+
"spec_repo_commit": "7def3c63"
1414
}
1515
}
1616
}

.generator/schemas/v1/openapi.yaml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5193,6 +5193,21 @@ components:
51935193
type: string
51945194
x-enum-varnames:
51955195
- CATEGORY_PROCESSOR
5196+
LogsDailyLimitReset:
5197+
description: Object containing options to override the default daily limit reset
5198+
time.
5199+
properties:
5200+
reset_time:
5201+
description: String in `HH:00` format representing the time of day the daily
5202+
limit should be reset. The hours must be between 00 and 23 (inclusive).
5203+
example: '14:00'
5204+
type: string
5205+
reset_utc_offset:
5206+
description: String in `(-|+)HH:00` format representing the UTC offset to
5207+
apply to the given reset time. The hours must be between -12 and +14 (inclusive).
5208+
example: +02:00
5209+
type: string
5210+
type: object
51965211
LogsDateRemapper:
51975212
description: "As Datadog receives logs, it timestamps them using the value(s)
51985213
from any of these default attributes.\n\n - `timestamp`\n - `date`\n -
@@ -5407,6 +5422,16 @@ components:
54075422
example: 300000000
54085423
format: int64
54095424
type: integer
5425+
daily_limit_reset:
5426+
$ref: '#/components/schemas/LogsDailyLimitReset'
5427+
daily_limit_warning_threshold_percentage:
5428+
description: A percentage threshold of the daily quota at which a Datadog
5429+
warning event is generated.
5430+
example: 70
5431+
format: double
5432+
maximum: 99.99
5433+
minimum: 50
5434+
type: number
54105435
exclusion_filters:
54115436
description: 'An array of exclusion objects. The logs are tested against
54125437
the query of each filter,
@@ -5462,6 +5487,16 @@ components:
54625487
example: 300000000
54635488
format: int64
54645489
type: integer
5490+
daily_limit_reset:
5491+
$ref: '#/components/schemas/LogsDailyLimitReset'
5492+
daily_limit_warning_threshold_percentage:
5493+
description: A percentage threshold of the daily quota at which a Datadog
5494+
warning event is generated.
5495+
example: 70
5496+
format: double
5497+
maximum: 99.99
5498+
minimum: 50
5499+
type: number
54655500
disable_daily_limit:
54665501
description: 'If true, sets the `daily_limit` value to null and the index
54675502
is not limited on a daily basis (any

docs/datadog_api_client.v1.model.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1618,6 +1618,13 @@ logs\_category\_processor\_type
16181618
:members:
16191619
:show-inheritance:
16201620

1621+
logs\_daily\_limit\_reset
1622+
-------------------------
1623+
1624+
.. automodule:: datadog_api_client.v1.model.logs_daily_limit_reset
1625+
:members:
1626+
:show-inheritance:
1627+
16211628
logs\_date\_remapper
16221629
--------------------
16231630

examples/v1/logs-indexes/CreateLogsIndex.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,19 @@
44

55
from datadog_api_client import ApiClient, Configuration
66
from datadog_api_client.v1.api.logs_indexes_api import LogsIndexesApi
7+
from datadog_api_client.v1.model.logs_daily_limit_reset import LogsDailyLimitReset
78
from datadog_api_client.v1.model.logs_exclusion import LogsExclusion
89
from datadog_api_client.v1.model.logs_exclusion_filter import LogsExclusionFilter
910
from datadog_api_client.v1.model.logs_filter import LogsFilter
1011
from datadog_api_client.v1.model.logs_index import LogsIndex
1112

1213
body = LogsIndex(
1314
daily_limit=300000000,
15+
daily_limit_reset=LogsDailyLimitReset(
16+
reset_time="14:00",
17+
reset_utc_offset="+02:00",
18+
),
19+
daily_limit_warning_threshold_percentage=70.0,
1420
exclusion_filters=[
1521
LogsExclusion(
1622
filter=LogsExclusionFilter(

examples/v1/logs-indexes/UpdateLogsIndex.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,19 @@
44

55
from datadog_api_client import ApiClient, Configuration
66
from datadog_api_client.v1.api.logs_indexes_api import LogsIndexesApi
7+
from datadog_api_client.v1.model.logs_daily_limit_reset import LogsDailyLimitReset
78
from datadog_api_client.v1.model.logs_exclusion import LogsExclusion
89
from datadog_api_client.v1.model.logs_exclusion_filter import LogsExclusionFilter
910
from datadog_api_client.v1.model.logs_filter import LogsFilter
1011
from datadog_api_client.v1.model.logs_index_update_request import LogsIndexUpdateRequest
1112

1213
body = LogsIndexUpdateRequest(
1314
daily_limit=300000000,
15+
daily_limit_reset=LogsDailyLimitReset(
16+
reset_time="14:00",
17+
reset_utc_offset="+02:00",
18+
),
19+
daily_limit_warning_threshold_percentage=70.0,
1420
disable_daily_limit=False,
1521
exclusion_filters=[
1622
LogsExclusion(
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
2+
# This product includes software developed at Datadog (https://www.datadoghq.com/).
3+
# Copyright 2019-Present Datadog, Inc.
4+
from __future__ import annotations
5+
6+
from typing import Union
7+
8+
from datadog_api_client.model_utils import (
9+
ModelNormal,
10+
cached_property,
11+
unset,
12+
UnsetType,
13+
)
14+
15+
16+
class LogsDailyLimitReset(ModelNormal):
17+
@cached_property
18+
def openapi_types(_):
19+
return {
20+
"reset_time": (str,),
21+
"reset_utc_offset": (str,),
22+
}
23+
24+
attribute_map = {
25+
"reset_time": "reset_time",
26+
"reset_utc_offset": "reset_utc_offset",
27+
}
28+
29+
def __init__(
30+
self_, reset_time: Union[str, UnsetType] = unset, reset_utc_offset: Union[str, UnsetType] = unset, **kwargs
31+
):
32+
"""
33+
Object containing options to override the default daily limit reset time.
34+
35+
:param reset_time: String in ``HH:00`` format representing the time of day the daily limit should be reset. The hours must be between 00 and 23 (inclusive).
36+
:type reset_time: str, optional
37+
38+
:param reset_utc_offset: String in ``(-|+)HH:00`` format representing the UTC offset to apply to the given reset time. The hours must be between -12 and +14 (inclusive).
39+
:type reset_utc_offset: str, optional
40+
"""
41+
if reset_time is not unset:
42+
kwargs["reset_time"] = reset_time
43+
if reset_utc_offset is not unset:
44+
kwargs["reset_utc_offset"] = reset_utc_offset
45+
super().__init__(kwargs)

src/datadog_api_client/v1/model/logs_index.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,29 @@
1414

1515

1616
if TYPE_CHECKING:
17+
from datadog_api_client.v1.model.logs_daily_limit_reset import LogsDailyLimitReset
1718
from datadog_api_client.v1.model.logs_exclusion import LogsExclusion
1819
from datadog_api_client.v1.model.logs_filter import LogsFilter
1920

2021

2122
class LogsIndex(ModelNormal):
23+
validations = {
24+
"daily_limit_warning_threshold_percentage": {
25+
"inclusive_maximum": 99.99,
26+
"inclusive_minimum": 50,
27+
},
28+
}
29+
2230
@cached_property
2331
def openapi_types(_):
32+
from datadog_api_client.v1.model.logs_daily_limit_reset import LogsDailyLimitReset
2433
from datadog_api_client.v1.model.logs_exclusion import LogsExclusion
2534
from datadog_api_client.v1.model.logs_filter import LogsFilter
2635

2736
return {
2837
"daily_limit": (int,),
38+
"daily_limit_reset": (LogsDailyLimitReset,),
39+
"daily_limit_warning_threshold_percentage": (float,),
2940
"exclusion_filters": ([LogsExclusion],),
3041
"filter": (LogsFilter,),
3142
"is_rate_limited": (bool,),
@@ -35,6 +46,8 @@ def openapi_types(_):
3546

3647
attribute_map = {
3748
"daily_limit": "daily_limit",
49+
"daily_limit_reset": "daily_limit_reset",
50+
"daily_limit_warning_threshold_percentage": "daily_limit_warning_threshold_percentage",
3851
"exclusion_filters": "exclusion_filters",
3952
"filter": "filter",
4053
"is_rate_limited": "is_rate_limited",
@@ -50,6 +63,8 @@ def __init__(
5063
filter: LogsFilter,
5164
name: str,
5265
daily_limit: Union[int, UnsetType] = unset,
66+
daily_limit_reset: Union[LogsDailyLimitReset, UnsetType] = unset,
67+
daily_limit_warning_threshold_percentage: Union[float, UnsetType] = unset,
5368
exclusion_filters: Union[List[LogsExclusion], UnsetType] = unset,
5469
is_rate_limited: Union[bool, UnsetType] = unset,
5570
num_retention_days: Union[int, UnsetType] = unset,
@@ -61,6 +76,12 @@ def __init__(
6176
:param daily_limit: The number of log events you can send in this index per day before you are rate-limited.
6277
:type daily_limit: int, optional
6378
79+
:param daily_limit_reset: Object containing options to override the default daily limit reset time.
80+
:type daily_limit_reset: LogsDailyLimitReset, optional
81+
82+
:param daily_limit_warning_threshold_percentage: A percentage threshold of the daily quota at which a Datadog warning event is generated.
83+
:type daily_limit_warning_threshold_percentage: float, optional
84+
6485
:param exclusion_filters: An array of exclusion objects. The logs are tested against the query of each filter,
6586
following the order of the array. Only the first matching active exclusion matters,
6687
others (if any) are ignored.
@@ -82,6 +103,10 @@ def __init__(
82103
"""
83104
if daily_limit is not unset:
84105
kwargs["daily_limit"] = daily_limit
106+
if daily_limit_reset is not unset:
107+
kwargs["daily_limit_reset"] = daily_limit_reset
108+
if daily_limit_warning_threshold_percentage is not unset:
109+
kwargs["daily_limit_warning_threshold_percentage"] = daily_limit_warning_threshold_percentage
85110
if exclusion_filters is not unset:
86111
kwargs["exclusion_filters"] = exclusion_filters
87112
if is_rate_limited is not unset:

src/datadog_api_client/v1/model/logs_index_update_request.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,29 @@
1414

1515

1616
if TYPE_CHECKING:
17+
from datadog_api_client.v1.model.logs_daily_limit_reset import LogsDailyLimitReset
1718
from datadog_api_client.v1.model.logs_exclusion import LogsExclusion
1819
from datadog_api_client.v1.model.logs_filter import LogsFilter
1920

2021

2122
class LogsIndexUpdateRequest(ModelNormal):
23+
validations = {
24+
"daily_limit_warning_threshold_percentage": {
25+
"inclusive_maximum": 99.99,
26+
"inclusive_minimum": 50,
27+
},
28+
}
29+
2230
@cached_property
2331
def openapi_types(_):
32+
from datadog_api_client.v1.model.logs_daily_limit_reset import LogsDailyLimitReset
2433
from datadog_api_client.v1.model.logs_exclusion import LogsExclusion
2534
from datadog_api_client.v1.model.logs_filter import LogsFilter
2635

2736
return {
2837
"daily_limit": (int,),
38+
"daily_limit_reset": (LogsDailyLimitReset,),
39+
"daily_limit_warning_threshold_percentage": (float,),
2940
"disable_daily_limit": (bool,),
3041
"exclusion_filters": ([LogsExclusion],),
3142
"filter": (LogsFilter,),
@@ -34,6 +45,8 @@ def openapi_types(_):
3445

3546
attribute_map = {
3647
"daily_limit": "daily_limit",
48+
"daily_limit_reset": "daily_limit_reset",
49+
"daily_limit_warning_threshold_percentage": "daily_limit_warning_threshold_percentage",
3750
"disable_daily_limit": "disable_daily_limit",
3851
"exclusion_filters": "exclusion_filters",
3952
"filter": "filter",
@@ -44,6 +57,8 @@ def __init__(
4457
self_,
4558
filter: LogsFilter,
4659
daily_limit: Union[int, UnsetType] = unset,
60+
daily_limit_reset: Union[LogsDailyLimitReset, UnsetType] = unset,
61+
daily_limit_warning_threshold_percentage: Union[float, UnsetType] = unset,
4762
disable_daily_limit: Union[bool, UnsetType] = unset,
4863
exclusion_filters: Union[List[LogsExclusion], UnsetType] = unset,
4964
num_retention_days: Union[int, UnsetType] = unset,
@@ -55,6 +70,12 @@ def __init__(
5570
:param daily_limit: The number of log events you can send in this index per day before you are rate-limited.
5671
:type daily_limit: int, optional
5772
73+
:param daily_limit_reset: Object containing options to override the default daily limit reset time.
74+
:type daily_limit_reset: LogsDailyLimitReset, optional
75+
76+
:param daily_limit_warning_threshold_percentage: A percentage threshold of the daily quota at which a Datadog warning event is generated.
77+
:type daily_limit_warning_threshold_percentage: float, optional
78+
5879
:param disable_daily_limit: If true, sets the ``daily_limit`` value to null and the index is not limited on a daily basis (any
5980
specified ``daily_limit`` value in the request is ignored). If false or omitted, the index's current
6081
``daily_limit`` is maintained.
@@ -77,6 +98,10 @@ def __init__(
7798
"""
7899
if daily_limit is not unset:
79100
kwargs["daily_limit"] = daily_limit
101+
if daily_limit_reset is not unset:
102+
kwargs["daily_limit_reset"] = daily_limit_reset
103+
if daily_limit_warning_threshold_percentage is not unset:
104+
kwargs["daily_limit_warning_threshold_percentage"] = daily_limit_warning_threshold_percentage
80105
if disable_daily_limit is not unset:
81106
kwargs["disable_daily_limit"] = disable_daily_limit
82107
if exclusion_filters is not unset:

src/datadog_api_client/v1/models/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,7 @@
263263
from datadog_api_client.v1.model.logs_category_processor import LogsCategoryProcessor
264264
from datadog_api_client.v1.model.logs_category_processor_category import LogsCategoryProcessorCategory
265265
from datadog_api_client.v1.model.logs_category_processor_type import LogsCategoryProcessorType
266+
from datadog_api_client.v1.model.logs_daily_limit_reset import LogsDailyLimitReset
266267
from datadog_api_client.v1.model.logs_date_remapper import LogsDateRemapper
267268
from datadog_api_client.v1.model.logs_date_remapper_type import LogsDateRemapperType
268269
from datadog_api_client.v1.model.logs_exclusion import LogsExclusion
@@ -1196,6 +1197,7 @@
11961197
"LogsCategoryProcessor",
11971198
"LogsCategoryProcessorCategory",
11981199
"LogsCategoryProcessorType",
1200+
"LogsDailyLimitReset",
11991201
"LogsDateRemapper",
12001202
"LogsDateRemapperType",
12011203
"LogsExclusion",

tests/v1/features/logs_indexes.feature

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@ Feature: Logs Indexes
1212
@generated @skip @team:DataDog/logs-backend
1313
Scenario: Create an index returns "Invalid Parameter Error" response
1414
Given new "CreateLogsIndex" request
15-
And body with value {"daily_limit": 300000000, "exclusion_filters": [{"filter": {"query": "*", "sample_rate": 1.0}, "name": "payment"}], "filter": {"query": "source:python"}, "name": "main", "num_retention_days": 15}
15+
And body with value {"daily_limit": 300000000, "daily_limit_reset": {"reset_time": "14:00", "reset_utc_offset": "+02:00"}, "daily_limit_warning_threshold_percentage": 70, "exclusion_filters": [{"filter": {"query": "*", "sample_rate": 1.0}, "name": "payment"}], "filter": {"query": "source:python"}, "name": "main", "num_retention_days": 15}
1616
When the request is sent
1717
Then the response status is 400 Invalid Parameter Error
1818

1919
@generated @skip @team:DataDog/logs-backend
2020
Scenario: Create an index returns "OK" response
2121
Given new "CreateLogsIndex" request
22-
And body with value {"daily_limit": 300000000, "exclusion_filters": [{"filter": {"query": "*", "sample_rate": 1.0}, "name": "payment"}], "filter": {"query": "source:python"}, "name": "main", "num_retention_days": 15}
22+
And body with value {"daily_limit": 300000000, "daily_limit_reset": {"reset_time": "14:00", "reset_utc_offset": "+02:00"}, "daily_limit_warning_threshold_percentage": 70, "exclusion_filters": [{"filter": {"query": "*", "sample_rate": 1.0}, "name": "payment"}], "filter": {"query": "source:python"}, "name": "main", "num_retention_days": 15}
2323
When the request is sent
2424
Then the response status is 200 OK
2525

@@ -53,15 +53,15 @@ Feature: Logs Indexes
5353
Scenario: Update an index returns "Invalid Parameter Error" response
5454
Given new "UpdateLogsIndex" request
5555
And request contains "name" parameter from "REPLACE.ME"
56-
And body with value {"daily_limit": 300000000, "disable_daily_limit": false, "exclusion_filters": [{"filter": {"query": "*", "sample_rate": 1.0}, "name": "payment"}], "filter": {"query": "source:python"}, "num_retention_days": 15}
56+
And body with value {"daily_limit": 300000000, "daily_limit_reset": {"reset_time": "14:00", "reset_utc_offset": "+02:00"}, "daily_limit_warning_threshold_percentage": 70, "disable_daily_limit": false, "exclusion_filters": [{"filter": {"query": "*", "sample_rate": 1.0}, "name": "payment"}], "filter": {"query": "source:python"}, "num_retention_days": 15}
5757
When the request is sent
5858
Then the response status is 400 Invalid Parameter Error
5959

6060
@generated @skip @team:DataDog/logs-backend
6161
Scenario: Update an index returns "OK" response
6262
Given new "UpdateLogsIndex" request
6363
And request contains "name" parameter from "REPLACE.ME"
64-
And body with value {"daily_limit": 300000000, "disable_daily_limit": false, "exclusion_filters": [{"filter": {"query": "*", "sample_rate": 1.0}, "name": "payment"}], "filter": {"query": "source:python"}, "num_retention_days": 15}
64+
And body with value {"daily_limit": 300000000, "daily_limit_reset": {"reset_time": "14:00", "reset_utc_offset": "+02:00"}, "daily_limit_warning_threshold_percentage": 70, "disable_daily_limit": false, "exclusion_filters": [{"filter": {"query": "*", "sample_rate": 1.0}, "name": "payment"}], "filter": {"query": "source:python"}, "num_retention_days": 15}
6565
When the request is sent
6666
Then the response status is 200 OK
6767

0 commit comments

Comments
 (0)