Skip to content

Commit 4495b66

Browse files
authored
Generate pagination examples (#1111)
1 parent 801971d commit 4495b66

12 files changed

+244
-4
lines changed

.generator/conftest.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ def pytest_bdd_after_scenario(request, feature, scenario):
143143

144144
def pytest_bdd_apply_tag(tag, function):
145145
"""Register tags as custom markers and skip test for '@skip' ones."""
146-
skip_tags = {"with-pagination"}
146+
skip_tags = {}
147147
if tag in skip_tags:
148148
marker = pytest.mark.skip(reason=f"skipped because '{tag}' in {skip_tags}")
149149
marker(function)
@@ -520,7 +520,11 @@ def record_value(schema):
520520
def execute_request(context):
521521
"""Execute the prepared request."""
522522
assert context["api_request"]["operation_id"] is not None
523-
# NOTE add undo
523+
524+
525+
@when("the request with pagination is sent")
526+
def execute_request_with_pagination(context):
527+
context["pagination"] = True
524528

525529

526530
@then(parsers.parse("the response status is {status:d} {description}"))
@@ -548,6 +552,11 @@ def expect_equal_length(context, response_path, fixture_length):
548552
"""Check the length of a response attribute."""
549553

550554

555+
@then(parsers.parse("the response has {fixture_length:d} items"))
556+
def expect_equal_response_items(context, fixture_length):
557+
"""Check the size of a response."""
558+
559+
551560
@then(parsers.parse('the response "{response_path}" is false'))
552561
def expect_false(context, response_path):
553562
"""Check that a response attribute is false."""

.generator/src/generator/templates/example.j2

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ configuration.unstable_operations["{{ operation|safe_snake_case }}"] = True
3838
{%- endfor %}
3939
with ApiClient(configuration) as api_client:
4040
api_instance = {{ context.api_instance.name }}Api(api_client)
41+
{%- if context.pagination %}
42+
items = api_instance.{{ context.api_request.operation_id|safe_snake_case }}_with_pagination({{ parameters }}{% if body %}body=body{% endif %})
43+
for item in items:
44+
print(item)
45+
{%- else %}
4146
{%- if context.status_code != 204 and context.api_response.content %}
4247
response = api_instance.{{ context.api_request.operation_id|safe_snake_case }}({{ parameters }}{% if body %}body=body{% endif %})
4348

@@ -48,10 +53,9 @@ with ApiClient(configuration) as api_client:
4853
{%- elif schema.get("schema", {}).get("format") == "binary" %}
4954

5055
print(response.read())
51-
{%- else %}
52-
{{ 1/0 }}
5356
{%- endif %}
5457
{%- endfor %}
5558
{%- else %}
5659
api_instance.{{ context.api_request.operation_id|safe_snake_case }}({{ parameters }}{% if body %}body=body{% endif %})
5760
{%- endif %}
61+
{%- endif %}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
"""
2+
Get a list of Audit Logs events returns "OK" response with pagination
3+
"""
4+
5+
from datadog_api_client import ApiClient, Configuration
6+
from datadog_api_client.v2.api.audit_api import AuditApi
7+
8+
configuration = Configuration()
9+
with ApiClient(configuration) as api_client:
10+
api_instance = AuditApi(api_client)
11+
items = api_instance.list_audit_logs_with_pagination(
12+
page_limit=2,
13+
)
14+
for item in items:
15+
print(item)
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
"""
2+
Search Audit Logs events returns "OK" response with pagination
3+
"""
4+
5+
from datadog_api_client import ApiClient, Configuration
6+
from datadog_api_client.v2.api.audit_api import AuditApi
7+
from datadog_api_client.v2.model.audit_logs_query_filter import AuditLogsQueryFilter
8+
from datadog_api_client.v2.model.audit_logs_query_options import AuditLogsQueryOptions
9+
from datadog_api_client.v2.model.audit_logs_query_page_options import AuditLogsQueryPageOptions
10+
from datadog_api_client.v2.model.audit_logs_search_events_request import AuditLogsSearchEventsRequest
11+
from datadog_api_client.v2.model.audit_logs_sort import AuditLogsSort
12+
13+
body = AuditLogsSearchEventsRequest(
14+
filter=AuditLogsQueryFilter(
15+
_from="now-15m",
16+
to="now",
17+
),
18+
options=AuditLogsQueryOptions(
19+
timezone="GMT",
20+
),
21+
page=AuditLogsQueryPageOptions(
22+
limit=2,
23+
),
24+
sort=AuditLogsSort("timestamp"),
25+
)
26+
27+
configuration = Configuration()
28+
with ApiClient(configuration) as api_client:
29+
api_instance = AuditApi(api_client)
30+
items = api_instance.search_audit_logs_with_pagination(body=body)
31+
for item in items:
32+
print(item)
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
"""
2+
Get a list of incidents returns "OK" response with pagination
3+
"""
4+
5+
from datadog_api_client import ApiClient, Configuration
6+
from datadog_api_client.v2.api.incidents_api import IncidentsApi
7+
8+
configuration = Configuration()
9+
configuration.unstable_operations["list_incidents"] = True
10+
with ApiClient(configuration) as api_client:
11+
api_instance = IncidentsApi(api_client)
12+
items = api_instance.list_incidents_with_pagination(
13+
page_size=2,
14+
)
15+
for item in items:
16+
print(item)
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
"""
2+
Get a list of logs returns "OK" response with pagination
3+
"""
4+
5+
from datadog_api_client import ApiClient, Configuration
6+
from datadog_api_client.v2.api.logs_api import LogsApi
7+
8+
configuration = Configuration()
9+
with ApiClient(configuration) as api_client:
10+
api_instance = LogsApi(api_client)
11+
items = api_instance.list_logs_get_with_pagination(
12+
page_limit=2,
13+
)
14+
for item in items:
15+
print(item)
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
"""
2+
Search logs returns "OK" response with pagination
3+
"""
4+
5+
from datadog_api_client import ApiClient, Configuration
6+
from datadog_api_client.v2.api.logs_api import LogsApi
7+
from datadog_api_client.v2.model.logs_list_request import LogsListRequest
8+
from datadog_api_client.v2.model.logs_list_request_page import LogsListRequestPage
9+
from datadog_api_client.v2.model.logs_query_filter import LogsQueryFilter
10+
from datadog_api_client.v2.model.logs_query_options import LogsQueryOptions
11+
from datadog_api_client.v2.model.logs_sort import LogsSort
12+
13+
body = LogsListRequest(
14+
filter=LogsQueryFilter(
15+
_from="now-15m",
16+
indexes=[
17+
"main",
18+
],
19+
to="now",
20+
),
21+
options=LogsQueryOptions(
22+
timezone="GMT",
23+
),
24+
page=LogsListRequestPage(
25+
limit=2,
26+
),
27+
sort=LogsSort("timestamp"),
28+
)
29+
30+
configuration = Configuration()
31+
with ApiClient(configuration) as api_client:
32+
api_instance = LogsApi(api_client)
33+
items = api_instance.list_logs_with_pagination(body=body)
34+
for item in items:
35+
print(item)
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
"""
2+
Get all processes returns "OK" response with pagination
3+
"""
4+
5+
from datadog_api_client import ApiClient, Configuration
6+
from datadog_api_client.v2.api.processes_api import ProcessesApi
7+
8+
configuration = Configuration()
9+
with ApiClient(configuration) as api_client:
10+
api_instance = ProcessesApi(api_client)
11+
items = api_instance.list_processes_with_pagination(
12+
page_limit=2,
13+
)
14+
for item in items:
15+
print(item)
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
"""
2+
Get a list of RUM events returns "OK" response with pagination
3+
"""
4+
5+
from datadog_api_client import ApiClient, Configuration
6+
from datadog_api_client.v2.api.rum_api import RUMApi
7+
8+
configuration = Configuration()
9+
with ApiClient(configuration) as api_client:
10+
api_instance = RUMApi(api_client)
11+
items = api_instance.list_rum_events_with_pagination(
12+
page_limit=2,
13+
)
14+
for item in items:
15+
print(item)
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
"""
2+
Search RUM events returns "OK" response with pagination
3+
"""
4+
5+
from datadog_api_client import ApiClient, Configuration
6+
from datadog_api_client.v2.api.rum_api import RUMApi
7+
from datadog_api_client.v2.model.rum_query_filter import RUMQueryFilter
8+
from datadog_api_client.v2.model.rum_query_options import RUMQueryOptions
9+
from datadog_api_client.v2.model.rum_query_page_options import RUMQueryPageOptions
10+
from datadog_api_client.v2.model.rum_search_events_request import RUMSearchEventsRequest
11+
from datadog_api_client.v2.model.rum_sort import RUMSort
12+
13+
body = RUMSearchEventsRequest(
14+
filter=RUMQueryFilter(
15+
_from="now-15m",
16+
query="@type:session AND @session.type:user",
17+
to="now",
18+
),
19+
options=RUMQueryOptions(
20+
time_offset=0,
21+
timezone="GMT",
22+
),
23+
page=RUMQueryPageOptions(
24+
limit=2,
25+
),
26+
sort=RUMSort("timestamp"),
27+
)
28+
29+
configuration = Configuration()
30+
with ApiClient(configuration) as api_client:
31+
api_instance = RUMApi(api_client)
32+
items = api_instance.search_rum_events_with_pagination(body=body)
33+
for item in items:
34+
print(item)

0 commit comments

Comments
 (0)