Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 3b310d6

Browse filesBrowse files
authored
feat: add cloud_run_job monitored resource type. (#788)
1 parent f25c119 commit 3b310d6
Copy full SHA for 3b310d6

File tree

2 files changed

+70
-11
lines changed
Filter options

2 files changed

+70
-11
lines changed

‎google/cloud/logging_v2/handlers/_monitored_resources.py

Copy file name to clipboardExpand all lines: google/cloud/logging_v2/handlers/_monitored_resources.py
+36-5Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,21 @@
2626
_CLOUD_RUN_SERVICE_ID = "K_SERVICE"
2727
_CLOUD_RUN_REVISION_ID = "K_REVISION"
2828
_CLOUD_RUN_CONFIGURATION_ID = "K_CONFIGURATION"
29-
_CLOUD_RUN_ENV_VARS = [
29+
_CLOUD_RUN_SERVICE_ENV_VARS = [
3030
_CLOUD_RUN_SERVICE_ID,
3131
_CLOUD_RUN_REVISION_ID,
3232
_CLOUD_RUN_CONFIGURATION_ID,
3333
]
34+
_CLOUD_RUN_JOB_ID = "CLOUD_RUN_JOB"
35+
_CLOUD_RUN_EXECUTION_ID = "CLOUD_RUN_EXECUTION"
36+
_CLOUD_RUN_TASK_INDEX = "CLOUD_RUN_TASK_INDEX"
37+
_CLOUD_RUN_TASK_ATTEMPT = "CLOUD_RUN_TASK_ATTEMPT"
38+
_CLOUD_RUN_JOB_ENV_VARS = [
39+
_CLOUD_RUN_JOB_ID,
40+
_CLOUD_RUN_EXECUTION_ID,
41+
_CLOUD_RUN_TASK_INDEX,
42+
_CLOUD_RUN_TASK_ATTEMPT,
43+
]
3444
"""Environment variables set in Cloud Run environment."""
3545

3646
_FUNCTION_TARGET = "FUNCTION_TARGET"
@@ -118,8 +128,8 @@ def _create_compute_resource():
118128
return resource
119129

120130

121-
def _create_cloud_run_resource():
122-
"""Create a standardized Cloud Run resource.
131+
def _create_cloud_run_service_resource():
132+
"""Create a standardized Cloud Run service resource.
123133
Returns:
124134
google.cloud.logging.Resource
125135
"""
@@ -138,6 +148,24 @@ def _create_cloud_run_resource():
138148
return resource
139149

140150

151+
def _create_cloud_run_job_resource():
152+
"""Create a standardized Cloud Run job resource.
153+
Returns:
154+
google.cloud.logging.Resource
155+
"""
156+
region = retrieve_metadata_server(_REGION_ID)
157+
project = retrieve_metadata_server(_PROJECT_NAME)
158+
resource = Resource(
159+
type="cloud_run_job",
160+
labels={
161+
"project_id": project if project else "",
162+
"job_name": os.environ.get(_CLOUD_RUN_JOB_ID, ""),
163+
"location": region.split("/")[-1] if region else "",
164+
},
165+
)
166+
return resource
167+
168+
141169
def _create_app_engine_resource():
142170
"""Create a standardized App Engine resource.
143171
Returns:
@@ -190,9 +218,12 @@ def detect_resource(project=""):
190218
):
191219
# Cloud Functions
192220
return _create_functions_resource()
193-
elif all([env in os.environ for env in _CLOUD_RUN_ENV_VARS]):
221+
elif all([env in os.environ for env in _CLOUD_RUN_SERVICE_ENV_VARS]):
222+
# Cloud Run
223+
return _create_cloud_run_service_resource()
224+
elif all([env in os.environ for env in _CLOUD_RUN_JOB_ENV_VARS]):
194225
# Cloud Run
195-
return _create_cloud_run_resource()
226+
return _create_cloud_run_job_resource()
196227
elif gce_instance_name is not None:
197228
# Compute Engine
198229
return _create_compute_resource()

‎tests/unit/handlers/test__monitored_resources.py

Copy file name to clipboardExpand all lines: tests/unit/handlers/test__monitored_resources.py
+34-6Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,10 @@
2828
_create_kubernetes_resource,
2929
)
3030
from google.cloud.logging_v2.handlers._monitored_resources import (
31-
_create_cloud_run_resource,
31+
_create_cloud_run_service_resource,
32+
)
33+
from google.cloud.logging_v2.handlers._monitored_resources import (
34+
_create_cloud_run_job_resource,
3235
)
3336
from google.cloud.logging_v2.handlers._monitored_resources import (
3437
_create_compute_resource,
@@ -160,7 +163,7 @@ def test_compute_resource(self):
160163
self.assertEqual(resource.labels["instance_id"], self.NAME)
161164
self.assertEqual(resource.labels["zone"], self.LOCATION)
162165

163-
def test_cloud_run_resource(self):
166+
def test_cloud_run_service_resource(self):
164167
patch = mock.patch(
165168
"google.cloud.logging_v2.handlers._monitored_resources.retrieve_metadata_server",
166169
wraps=self._mock_metadata,
@@ -169,7 +172,7 @@ def test_cloud_run_resource(self):
169172
os.environ[_monitored_resources._CLOUD_RUN_REVISION_ID] = self.VERSION
170173
os.environ[_monitored_resources._CLOUD_RUN_CONFIGURATION_ID] = self.CONFIG
171174
with patch:
172-
resource = _create_cloud_run_resource()
175+
resource = _create_cloud_run_service_resource()
173176
self.assertIsInstance(resource, Resource)
174177
self.assertEqual(resource.type, "cloud_run_revision")
175178
self.assertEqual(resource.labels["project_id"], self.PROJECT)
@@ -178,6 +181,23 @@ def test_cloud_run_resource(self):
178181
self.assertEqual(resource.labels["configuration_name"], self.CONFIG)
179182
self.assertEqual(resource.labels["location"], self.LOCATION)
180183

184+
def test_cloud_run_job_resource(self):
185+
patch = mock.patch(
186+
"google.cloud.logging_v2.handlers._monitored_resources.retrieve_metadata_server",
187+
wraps=self._mock_metadata,
188+
)
189+
os.environ[_monitored_resources._CLOUD_RUN_JOB_ID] = self.NAME
190+
os.environ[_monitored_resources._CLOUD_RUN_EXECUTION_ID] = self.VERSION
191+
os.environ[_monitored_resources._CLOUD_RUN_TASK_INDEX] = self.CONFIG
192+
os.environ[_monitored_resources._CLOUD_RUN_TASK_ATTEMPT] = self.CLUSTER
193+
with patch:
194+
resource = _create_cloud_run_job_resource()
195+
self.assertIsInstance(resource, Resource)
196+
self.assertEqual(resource.type, "cloud_run_job")
197+
self.assertEqual(resource.labels["project_id"], self.PROJECT)
198+
self.assertEqual(resource.labels["job_name"], self.NAME)
199+
self.assertEqual(resource.labels["location"], self.LOCATION)
200+
181201
def test_app_engine_resource(self):
182202
patch = mock.patch(
183203
"google.cloud.logging_v2.handlers._monitored_resources.retrieve_metadata_server",
@@ -214,7 +234,8 @@ def test_with_no_project_from_server(self):
214234
resource_fns = [
215235
_global_resource_patched,
216236
_create_app_engine_resource,
217-
_create_cloud_run_resource,
237+
_create_cloud_run_service_resource,
238+
_create_cloud_run_job_resource,
218239
_create_compute_resource,
219240
_create_kubernetes_resource,
220241
_create_functions_resource,
@@ -285,13 +306,20 @@ def test_detect_legacy_functions(self):
285306
self.assertIsInstance(resource, Resource)
286307
self.assertEqual(resource.type, "cloud_function")
287308

288-
def test_detect_cloud_run(self):
289-
for env in _monitored_resources._CLOUD_RUN_ENV_VARS:
309+
def test_detect_cloud_run_service(self):
310+
for env in _monitored_resources._CLOUD_RUN_SERVICE_ENV_VARS:
290311
os.environ[env] = "TRUE"
291312
resource = detect_resource(self.PROJECT)
292313
self.assertIsInstance(resource, Resource)
293314
self.assertEqual(resource.type, "cloud_run_revision")
294315

316+
def test_detect_cloud_run_job(self):
317+
for env in _monitored_resources._CLOUD_RUN_JOB_ENV_VARS:
318+
os.environ[env] = "TRUE"
319+
resource = detect_resource(self.PROJECT)
320+
self.assertIsInstance(resource, Resource)
321+
self.assertEqual(resource.type, "cloud_run_job")
322+
295323
def test_detect_compute_engine(self):
296324
patch = mock.patch(
297325
"google.cloud.logging_v2.handlers._monitored_resources.retrieve_metadata_server",

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.