@@ -49,10 +49,11 @@ def list_entries(
49
49
* ,
50
50
filter_ = None ,
51
51
order_by = None ,
52
+ max_results = None ,
52
53
page_size = None ,
53
54
page_token = None ,
54
55
):
55
- """Return a page of log entry resources.
56
+ """Return a generator of log entry resources.
56
57
57
58
Args:
58
59
resource_names (Sequence[str]): Names of one or more parent resources
@@ -69,14 +70,16 @@ def list_entries(
69
70
https://cloud.google.com/logging/docs/view/advanced_filters
70
71
order_by (str) One of :data:`~logging_v2.ASCENDING`
71
72
or :data:`~logging_v2.DESCENDING`.
72
- page_size (int): maximum number of entries to return, If not passed,
73
- defaults to a value set by the API.
74
- page_token (str): opaque marker for the next "page" of entries. If not
75
- passed, the API will return the first page of
76
- entries.
77
-
73
+ max_results (Optional[int]):
74
+ Optional. The maximum number of entries to return.
75
+ Non-positive values are treated as 0. If None, uses API defaults.
76
+ page_size (int): number of entries to fetch in each API call. Although
77
+ requests are paged internally, logs are returned by the generator
78
+ one at a time. If not passed, defaults to a value set by the API.
79
+ page_token (str): opaque marker for the starting "page" of entries. If not
80
+ passed, the API will return the first page of entries.
78
81
Returns:
79
- Iterator [~logging_v2.LogEntry]
82
+ Generator [~logging_v2.LogEntry]
80
83
"""
81
84
# full resource names are expected by the API
82
85
resource_names = resource_names
@@ -89,19 +92,27 @@ def list_entries(
89
92
)
90
93
91
94
response = self ._gapic_api .list_log_entries (request = request )
92
- page_iter = iter (response )
95
+ log_iter = iter (response )
93
96
94
97
# We attach a mutable loggers dictionary so that as Logger
95
98
# objects are created by entry_from_resource, they can be
96
99
# re-used by other log entries from the same logger.
97
100
loggers = {}
98
101
99
- def log_entries_pager (page_iter ):
100
- for page in page_iter :
101
- log_entry_dict = _parse_log_entry (LogEntryPB .pb (page ))
102
+ if max_results is not None and max_results < 0 :
103
+ raise ValueError ("max_results must be positive" )
104
+
105
+ # create generator
106
+ def log_entries_pager (log_iter ):
107
+ i = 0
108
+ for entry in log_iter :
109
+ if max_results is not None and i >= max_results :
110
+ break
111
+ log_entry_dict = _parse_log_entry (LogEntryPB .pb (entry ))
102
112
yield entry_from_resource (log_entry_dict , self ._client , loggers = loggers )
113
+ i += 1
103
114
104
- return log_entries_pager (page_iter )
115
+ return log_entries_pager (log_iter )
105
116
106
117
def write_entries (
107
118
self ,
@@ -175,7 +186,7 @@ def __init__(self, gapic_api, client):
175
186
self ._gapic_api = gapic_api
176
187
self ._client = client
177
188
178
- def list_sinks (self , parent , * , page_size = 0 , page_token = None ):
189
+ def list_sinks (self , parent , * , max_results = None , page_size = None , page_token = None ):
179
190
"""List sinks for the parent resource.
180
191
181
192
Args:
@@ -187,27 +198,37 @@ def list_sinks(self, parent, *, page_size=0, page_token=None):
187
198
"organizations/[ORGANIZATION_ID]"
188
199
"billingAccounts/[BILLING_ACCOUNT_ID]"
189
200
"folders/[FOLDER_ID]".
190
- page_size (Optional[int]): Maximum number of sinks to return, If not passed,
191
- defaults to a value set by the API.
192
- page_token (Optional[str]): Opaque marker for the next "page" of sinks. If not
193
- passed, the API will return the first page of
194
- sinks.
201
+ max_results (Optional[int]):
202
+ Optional. The maximum number of entries to return.
203
+ Non-positive values are treated as 0. If None, uses API defaults.
204
+ page_size (int): number of entries to fetch in each API call. Although
205
+ requests are paged internally, logs are returned by the generator
206
+ one at a time. If not passed, defaults to a value set by the API.
207
+ page_token (str): opaque marker for the starting "page" of entries. If not
208
+ passed, the API will return the first page of entries.
195
209
196
210
Returns:
197
- Iterator [~logging_v2.Sink]
211
+ Generator [~logging_v2.Sink]
198
212
"""
199
213
request = ListSinksRequest (
200
214
parent = parent , page_size = page_size , page_token = page_token
201
215
)
202
216
response = self ._gapic_api .list_sinks (request )
203
- page_iter = iter (response )
217
+ sink_iter = iter (response )
218
+
219
+ if max_results is not None and max_results < 0 :
220
+ raise ValueError ("max_results must be positive" )
204
221
205
- def sinks_pager (page_iter ):
206
- for page in page_iter :
222
+ def sinks_pager (sink_iter ):
223
+ i = 0
224
+ for entry in sink_iter :
225
+ if max_results is not None and i >= max_results :
226
+ break
207
227
# Convert the GAPIC sink type into the handwritten `Sink` type
208
- yield Sink .from_api_repr (LogSink .to_dict (page ), client = self ._client )
228
+ yield Sink .from_api_repr (LogSink .to_dict (entry ), client = self ._client )
229
+ i += 1
209
230
210
- return sinks_pager (page_iter )
231
+ return sinks_pager (sink_iter )
211
232
212
233
def sink_create (
213
234
self , parent , sink_name , filter_ , destination , * , unique_writer_identity = False
@@ -347,33 +368,47 @@ def __init__(self, gapic_api, client):
347
368
self ._gapic_api = gapic_api
348
369
self ._client = client
349
370
350
- def list_metrics (self , project , * , page_size = 0 , page_token = None ):
371
+ def list_metrics (
372
+ self , project , * , max_results = None , page_size = None , page_token = None
373
+ ):
351
374
"""List metrics for the project associated with this client.
352
375
353
376
Args:
354
377
project (str): ID of the project whose metrics are to be listed.
355
- page_size (int): Maximum number of metrics to return, If not passed,
356
- defaults to a value set by the API.
357
- page_token (str): Opaque marker for the next "page" of metrics. If not
358
- passed, the API will return the first page of
359
- sinks.
378
+ max_results (Optional[int]):
379
+ Optional. The maximum number of entries to return.
380
+ Non-positive values are treated as 0. If None, uses API defaults.
381
+ page_size (int): number of entries to fetch in each API call. Although
382
+ requests are paged internally, logs are returned by the generator
383
+ one at a time. If not passed, defaults to a value set by the API.
384
+ page_token (str): opaque marker for the starting "page" of entries. If not
385
+ passed, the API will return the first page of entries.
360
386
361
387
Returns:
362
- Iterable [logging_v2.Metric]: Iterable of metrics.
388
+ Generator [logging_v2.Metric]
363
389
"""
364
390
path = f"projects/{ project } "
365
391
request = ListLogMetricsRequest (
366
392
parent = path , page_size = page_size , page_token = page_token ,
367
393
)
368
394
response = self ._gapic_api .list_log_metrics (request = request )
369
- page_iter = iter (response )
395
+ metric_iter = iter (response )
396
+
397
+ if max_results is not None and max_results < 0 :
398
+ raise ValueError ("max_results must be positive" )
370
399
371
- def metrics_pager (page_iter ):
372
- for page in page_iter :
400
+ def metrics_pager (metric_iter ):
401
+ i = 0
402
+ for entry in metric_iter :
403
+ if max_results is not None and i >= max_results :
404
+ break
373
405
# Convert GAPIC metrics type into handwritten `Metric` type
374
- yield Metric .from_api_repr (LogMetric .to_dict (page ), client = self ._client )
406
+ yield Metric .from_api_repr (
407
+ LogMetric .to_dict (entry ), client = self ._client
408
+ )
409
+ i += 1
375
410
376
- return metrics_pager (page_iter )
411
+ return metrics_pager (metric_iter )
377
412
378
413
def metric_create (self , project , metric_name , filter_ , description ):
379
414
"""Create a metric resource.
0 commit comments