Skip to content

Commit def7440

Browse files
fix: remove unnecessary detect_resource calls from CloudLoggingHandler (#484)
1 parent 96bb6f7 commit def7440

File tree

9 files changed

+48
-15
lines changed

9 files changed

+48
-15
lines changed

google/cloud/logging_v2/_helpers.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ def entry_from_resource(resource, client, loggers):
8989
return LogEntry.from_api_repr(resource, client, loggers=loggers)
9090

9191

92-
def retrieve_metadata_server(metadata_key):
92+
def retrieve_metadata_server(metadata_key, timeout=5):
9393
"""Retrieve the metadata key in the metadata server.
9494
9595
See: https://cloud.google.com/compute/docs/storing-retrieving-metadata
@@ -99,14 +99,15 @@ def retrieve_metadata_server(metadata_key):
9999
Key of the metadata which will form the url. You can
100100
also supply query parameters after the metadata key.
101101
e.g. "tags?alt=json"
102+
timeout (number): number of seconds to wait for the HTTP request
102103
103104
Returns:
104105
str: The value of the metadata key returned by the metadata server.
105106
"""
106107
url = METADATA_URL + metadata_key
107108

108109
try:
109-
response = requests.get(url, headers=METADATA_HEADERS)
110+
response = requests.get(url, headers=METADATA_HEADERS, timeout=timeout)
110111

111112
if response.status_code == requests.codes.ok:
112113
return response.text

google/cloud/logging_v2/handlers/handlers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ def __init__(
179179
resource = detect_resource(client.project)
180180
self.name = name
181181
self.client = client
182-
self.transport = transport(client, name)
182+
self.transport = transport(client, name, resource=resource)
183183
self.project_id = client.project
184184
self.resource = resource
185185
self.labels = labels

google/cloud/logging_v2/handlers/transports/background_thread.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929

3030
from google.cloud.logging_v2 import _helpers
3131
from google.cloud.logging_v2.handlers.transports.base import Transport
32+
from google.cloud.logging_v2.logger import _GLOBAL_RESOURCE
3233

3334
_DEFAULT_GRACE_PERIOD = 5.0 # Seconds
3435
_DEFAULT_MAX_BATCH_SIZE = 10
@@ -260,6 +261,8 @@ def __init__(
260261
grace_period=_DEFAULT_GRACE_PERIOD,
261262
batch_size=_DEFAULT_MAX_BATCH_SIZE,
262263
max_latency=_DEFAULT_MAX_LATENCY,
264+
resource=_GLOBAL_RESOURCE,
265+
**kwargs,
263266
):
264267
"""
265268
Args:
@@ -275,9 +278,11 @@ def __init__(
275278
than the grace_period. This means this is effectively the longest
276279
amount of time the background thread will hold onto log entries
277280
before sending them to the server.
281+
resource (Optional[Resource|dict]): The default monitored resource to associate
282+
with logs when not specified
278283
"""
279284
self.client = client
280-
logger = self.client.logger(name)
285+
logger = self.client.logger(name, resource=resource)
281286
self.worker = _Worker(
282287
logger,
283288
grace_period=grace_period,

google/cloud/logging_v2/handlers/transports/base.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
"""Module containing base class for logging transport."""
1616

17+
from google.cloud.logging_v2.logger import _GLOBAL_RESOURCE
18+
1719

1820
class Transport(object):
1921
"""Base class for Google Cloud Logging handler transports.
@@ -22,6 +24,17 @@ class Transport(object):
2224
client and name object, and must override :meth:`send`.
2325
"""
2426

27+
def __init__(self, client, name, resource=_GLOBAL_RESOURCE, **kwargs):
28+
"""
29+
Args:
30+
client (~logging_v2.client.Client):
31+
The Logging client.
32+
name (str): The name of the lgoger.
33+
resource (Optional[Resource|dict]): The default monitored resource to associate
34+
with logs when not specified
35+
"""
36+
super().__init__()
37+
2538
def send(self, record, message, **kwargs):
2639
"""Transport send to be implemented by subclasses.
2740

google/cloud/logging_v2/handlers/transports/sync.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
"""
1919
from google.cloud.logging_v2 import _helpers
2020
from google.cloud.logging_v2.handlers.transports.base import Transport
21+
from google.cloud.logging_v2.logger import _GLOBAL_RESOURCE
2122

2223

2324
class SyncTransport(Transport):
@@ -26,8 +27,16 @@ class SyncTransport(Transport):
2627
Uses this library's Logging client to directly make the API call.
2728
"""
2829

29-
def __init__(self, client, name):
30-
self.logger = client.logger(name)
30+
def __init__(self, client, name, resource=_GLOBAL_RESOURCE, **kwargs):
31+
"""
32+
Args:
33+
client (~logging_v2.client.Client):
34+
The Logging client.
35+
name (str): The name of the lgoger.
36+
resource (Optional[Resource|dict]): The default monitored resource to associate
37+
with logs when not specified
38+
"""
39+
self.logger = client.logger(name, resource=resource)
3140

3241
def send(self, record, message, **kwargs):
3342
"""Overrides transport.send().

tests/unit/handlers/test_handlers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -860,7 +860,7 @@ def __init__(self, project):
860860

861861

862862
class _Transport(object):
863-
def __init__(self, client, name):
863+
def __init__(self, client, name, resource=None):
864864
self.client = client
865865
self.name = name
866866

tests/unit/handlers/transports/test_background_thread.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -509,11 +509,12 @@ def commit(self):
509509

510510

511511
class _Logger(object):
512-
def __init__(self, name):
512+
def __init__(self, name, resource=None):
513513
self.name = name
514514
self._batch_cls = _Batch
515515
self._batch = None
516516
self._num_batches = 0
517+
self.resource = resource
517518

518519
def batch(self):
519520
self._batch = self._batch_cls()
@@ -530,6 +531,6 @@ def __init__(self, project, _http=None, credentials=None):
530531
self._credentials = credentials
531532
self._connection = mock.Mock(credentials=credentials, spec=["credentials"])
532533

533-
def logger(self, name): # pylint: disable=unused-argument
534-
self._logger = _Logger(name)
534+
def logger(self, name, resource=None): # pylint: disable=unused-argument
535+
self._logger = _Logger(name, resource=resource)
535536
return self._logger

tests/unit/handlers/transports/test_base.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,13 @@ def _make_one(self, *args, **kw):
2929
return self._get_target_class()(*args, **kw)
3030

3131
def test_send_is_abstract(self):
32-
target = self._make_one()
32+
target = self._make_one("client", "name")
3333
with self.assertRaises(NotImplementedError):
3434
target.send(None, None, resource=None)
3535

36+
def test_resource_is_valid_argunent(self):
37+
self._make_one("client", "name", resource="resource")
38+
3639
def test_flush_is_abstract_and_optional(self):
37-
target = self._make_one()
40+
target = self._make_one("client", "name")
3841
target.flush()

tests/unit/handlers/transports/test_sync.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,9 @@ def test_send_struct(self):
9191
class _Logger(object):
9292
from google.cloud.logging_v2.logger import _GLOBAL_RESOURCE
9393

94-
def __init__(self, name):
94+
def __init__(self, name, resource=_GLOBAL_RESOURCE):
9595
self.name = name
96+
self.resource = resource
9697

9798
def log(
9899
self,
@@ -119,8 +120,8 @@ class _Client(object):
119120
def __init__(self, project):
120121
self.project = project
121122

122-
def logger(self, name): # pylint: disable=unused-argument
123-
self._logger = _Logger(name)
123+
def logger(self, name, resource=None): # pylint: disable=unused-argument
124+
self._logger = _Logger(name, resource=resource)
124125
return self._logger
125126

126127

0 commit comments

Comments
 (0)