Skip to content

Commit b093bb1

Browse files
committed
Update AKS checks and tests
1 parent 9af398d commit b093bb1

File tree

3 files changed

+140
-30
lines changed

3 files changed

+140
-30
lines changed

sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/_constants.py

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
_FUNCTIONS_WORKER_RUNTIME = "FUNCTIONS_WORKER_RUNTIME"
2525
_PYTHON_APPLICATIONINSIGHTS_ENABLE_TELEMETRY = "PYTHON_APPLICATIONINSIGHTS_ENABLE_TELEMETRY"
2626
_AKS_ARM_NAMESPACE_ID = "AKS_ARM_NAMESPACE_ID"
27+
_KUBERNETES_SERVICE_HOST = "KUBERNETES_SERVICE_HOST"
2728

2829
# Network
2930

sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/_utils.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,9 @@
2323
from azure.monitor.opentelemetry.exporter._constants import (
2424
_AKS_ARM_NAMESPACE_ID,
2525
_DEFAULT_AAD_SCOPE,
26-
_INSTRUMENTATIONS_BIT_MAP,
2726
_FUNCTIONS_WORKER_RUNTIME,
27+
_INSTRUMENTATIONS_BIT_MAP,
28+
_KUBERNETES_SERVICE_HOST,
2829
_PYTHON_APPLICATIONINSIGHTS_ENABLE_TELEMETRY,
2930
_WEBSITE_SITE_NAME,
3031
)
@@ -63,7 +64,7 @@ def _is_on_functions():
6364

6465

6566
def _is_on_aks():
66-
return _AKS_ARM_NAMESPACE_ID in environ
67+
return _KUBERNETES_SERVICE_HOST in environ
6768

6869

6970
# Attach
@@ -74,6 +75,8 @@ def _is_attach_enabled():
7475
return isdir("/agents/python/")
7576
if _is_on_functions():
7677
return environ.get(_PYTHON_APPLICATIONINSIGHTS_ENABLE_TELEMETRY) == "true"
78+
if _is_on_aks():
79+
return _AKS_ARM_NAMESPACE_ID in environ
7780
return False
7881

7982

sdk/monitor/azure-monitor-opentelemetry-exporter/tests/test_utils.py

+134-28
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,15 @@
1111
from azure.monitor.opentelemetry.exporter._generated.models import TelemetryItem
1212
from opentelemetry.sdk.resources import Resource
1313
from unittest.mock import patch
14+
# from azure.monitor.opentelemetry.exporter._constants import (
15+
# _AKS_ARM_NAMESPACE_ID,
16+
# _DEFAULT_AAD_SCOPE,
17+
# _FUNCTIONS_WORKER_RUNTIME,
18+
# _INSTRUMENTATIONS_BIT_MAP,
19+
# _KUBERNETES_SERVICE_HOST,
20+
# _PYTHON_APPLICATIONINSIGHTS_ENABLE_TELEMETRY,
21+
# _WEBSITE_SITE_NAME,
22+
# )
1423

1524

1625
TEST_AI_DEVICE_ID = "TEST_AI_DEVICE_ID"
@@ -29,6 +38,8 @@
2938
TEST_TIMESTAMP = "TEST_TIMESTAMP"
3039
TEST_TIME = "TEST_TIME"
3140
TEST_WEBSITE_SITE_NAME = "TEST_WEBSITE_SITE_NAME"
41+
TEST_KUBERNETES_SERVICE_HOST = "TEST_KUBERNETES_SERVICE_HOST"
42+
TEST_AKS_ARM_NAMESPACE_ID = "TEST_AKS_ARM_NAMESPACE_ID"
3243

3344

3445
class TestUtils(unittest.TestCase):
@@ -105,37 +116,37 @@ def test_create_telemetry_item(self, mock_ns_to_iso_str):
105116

106117
@patch("azure.monitor.opentelemetry.exporter._utils._is_attach_enabled", return_value=False)
107118
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="")
108-
def test_get_sdk_version_prefix(self, mock_system, mock_getenv):
119+
def test_get_sdk_version_prefix(self, mock_system, mock_isdir):
109120
result = _utils._get_sdk_version_prefix()
110121
self.assertEqual(result, "uum_")
111122

112123
@patch("azure.monitor.opentelemetry.exporter._utils._is_attach_enabled", return_value=False)
113124
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Linux")
114-
def test_get_sdk_version_prefix_linux(self, mock_system, mock_getenv):
125+
def test_get_sdk_version_prefix_linux(self, mock_system, mock_isdir):
115126
result = _utils._get_sdk_version_prefix()
116127
self.assertEqual(result, "ulm_")
117128

118129
@patch("azure.monitor.opentelemetry.exporter._utils._is_attach_enabled", return_value=False)
119130
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Windows")
120-
def test_get_sdk_version_prefix_windows(self, mock_system, mock_getenv):
131+
def test_get_sdk_version_prefix_windows(self, mock_system, mock_isdir):
121132
result = _utils._get_sdk_version_prefix()
122133
self.assertEqual(result, "uwm_")
123134

124135
@patch("azure.monitor.opentelemetry.exporter._utils._is_attach_enabled", return_value=True)
125136
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="")
126-
def test_get_sdk_version_prefix_attach(self, mock_system, mock_getenv):
137+
def test_get_sdk_version_prefix_attach(self, mock_system, mock_isdir):
127138
result = _utils._get_sdk_version_prefix()
128139
self.assertEqual(result, "uui_")
129140

130141
@patch("azure.monitor.opentelemetry.exporter._utils._is_attach_enabled", return_value=True)
131142
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Linux")
132-
def test_get_sdk_version_prefix_attach_linux(self, mock_system, mock_getenv):
143+
def test_get_sdk_version_prefix_attach_linux(self, mock_system, mock_isdir):
133144
result = _utils._get_sdk_version_prefix()
134145
self.assertEqual(result, "uli_")
135146

136147
@patch("azure.monitor.opentelemetry.exporter._utils._is_attach_enabled", return_value=True)
137148
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Windows")
138-
def test_get_sdk_version_prefix_attach_windows(self, mock_system, mock_getenv):
149+
def test_get_sdk_version_prefix_attach_windows(self, mock_system, mock_isdir):
139150
result = _utils._get_sdk_version_prefix()
140151
self.assertEqual(result, "uwi_")
141152

@@ -146,7 +157,7 @@ def test_get_sdk_version_prefix_attach_windows(self, mock_system, mock_getenv):
146157
)
147158
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=False)
148159
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="")
149-
def test_get_sdk_version_prefix_app_service(self, mock_system, mock_getenv):
160+
def test_get_sdk_version_prefix_app_service(self, mock_system, mock_isdir):
150161
result = _utils._get_sdk_version_prefix()
151162
self.assertEqual(result, "aum_")
152163

@@ -155,7 +166,7 @@ def test_get_sdk_version_prefix_app_service(self, mock_system, mock_getenv):
155166
)
156167
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=False)
157168
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Linux")
158-
def test_get_sdk_version_prefix_app_service_linux(self, mock_system, mock_getenv):
169+
def test_get_sdk_version_prefix_app_service_linux(self, mock_system, mock_isdir):
159170
result = _utils._get_sdk_version_prefix()
160171
self.assertEqual(result, "alm_")
161172

@@ -164,7 +175,7 @@ def test_get_sdk_version_prefix_app_service_linux(self, mock_system, mock_getenv
164175
)
165176
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=False)
166177
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Windows")
167-
def test_get_sdk_version_prefix_app_service_windows(self, mock_system, mock_getenv):
178+
def test_get_sdk_version_prefix_app_service_windows(self, mock_system, mock_isdir):
168179
result = _utils._get_sdk_version_prefix()
169180
self.assertEqual(result, "awm_")
170181

@@ -173,7 +184,7 @@ def test_get_sdk_version_prefix_app_service_windows(self, mock_system, mock_gete
173184
)
174185
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=True)
175186
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="")
176-
def test_get_sdk_version_prefix_app_service_attach(self, mock_system, mock_getenv):
187+
def test_get_sdk_version_prefix_app_service_attach(self, mock_system, mock_isdir):
177188
result = _utils._get_sdk_version_prefix()
178189
self.assertEqual(result, "aui_")
179190

@@ -182,7 +193,7 @@ def test_get_sdk_version_prefix_app_service_attach(self, mock_system, mock_geten
182193
)
183194
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=True)
184195
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Linux")
185-
def test_get_sdk_version_prefix_app_service_linux_attach(self, mock_system, mock_getenv):
196+
def test_get_sdk_version_prefix_app_service_linux_attach(self, mock_system, mock_isdir):
186197
result = _utils._get_sdk_version_prefix()
187198
self.assertEqual(result, "ali_")
188199

@@ -191,7 +202,7 @@ def test_get_sdk_version_prefix_app_service_linux_attach(self, mock_system, mock
191202
)
192203
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=True)
193204
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Windows")
194-
def test_get_sdk_version_prefix_app_service_windows_attach(self, mock_system, mock_getenv):
205+
def test_get_sdk_version_prefix_app_service_windows_attach(self, mock_system, mock_isdir):
195206
result = _utils._get_sdk_version_prefix()
196207
self.assertEqual(result, "awi_")
197208

@@ -202,9 +213,8 @@ def test_get_sdk_version_prefix_app_service_windows_attach(self, mock_system, mo
202213
{"FUNCTIONS_WORKER_RUNTIME": TEST_WEBSITE_SITE_NAME},
203214
clear=True,
204215
)
205-
@patch("azure.monitor.opentelemetry.exporter._utils._is_attach_enabled", return_value=False)
206216
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="")
207-
def test_get_sdk_version_prefix_function(self, mock_system, mock_getenv):
217+
def test_get_sdk_version_prefix_function(self, mock_system):
208218
result = _utils._get_sdk_version_prefix()
209219
self.assertEqual(result, "fum_")
210220

@@ -213,9 +223,8 @@ def test_get_sdk_version_prefix_function(self, mock_system, mock_getenv):
213223
{"FUNCTIONS_WORKER_RUNTIME": TEST_WEBSITE_SITE_NAME},
214224
clear=True,
215225
)
216-
@patch("azure.monitor.opentelemetry.exporter._utils._is_attach_enabled", return_value=False)
217226
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Linux")
218-
def test_get_sdk_version_prefix_function_linux(self, mock_system, mock_getenv):
227+
def test_get_sdk_version_prefix_function_linux(self, mock_system):
219228
result = _utils._get_sdk_version_prefix()
220229
self.assertEqual(result, "flm_")
221230

@@ -224,45 +233,127 @@ def test_get_sdk_version_prefix_function_linux(self, mock_system, mock_getenv):
224233
{"FUNCTIONS_WORKER_RUNTIME": TEST_WEBSITE_SITE_NAME},
225234
clear=True,
226235
)
227-
@patch("azure.monitor.opentelemetry.exporter._utils._is_attach_enabled", return_value=False)
228236
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Windows")
229-
def test_get_sdk_version_prefix_function_windows(self, mock_system, mock_getenv):
237+
def test_get_sdk_version_prefix_function_windows(self, mock_system):
230238
result = _utils._get_sdk_version_prefix()
231239
self.assertEqual(result, "fwm_")
232240

233241
@patch.dict(
234242
"azure.monitor.opentelemetry.exporter._utils.environ",
235-
{"FUNCTIONS_WORKER_RUNTIME": TEST_WEBSITE_SITE_NAME},
243+
{
244+
"FUNCTIONS_WORKER_RUNTIME": TEST_WEBSITE_SITE_NAME,
245+
"PYTHON_APPLICATIONINSIGHTS_ENABLE_TELEMETRY": "true",
246+
},
236247
clear=True,
237248
)
238-
@patch("azure.monitor.opentelemetry.exporter._utils._is_attach_enabled", return_value=True)
239249
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="")
240-
def test_get_sdk_version_prefix_function_attach(self, mock_system, mock_getenv):
250+
def test_get_sdk_version_prefix_function_attach(self, mock_system):
241251
result = _utils._get_sdk_version_prefix()
242252
self.assertEqual(result, "fui_")
243253

244254
@patch.dict(
245255
"azure.monitor.opentelemetry.exporter._utils.environ",
246-
{"FUNCTIONS_WORKER_RUNTIME": TEST_WEBSITE_SITE_NAME},
256+
{
257+
"FUNCTIONS_WORKER_RUNTIME": TEST_WEBSITE_SITE_NAME,
258+
"PYTHON_APPLICATIONINSIGHTS_ENABLE_TELEMETRY": "true",
259+
},
247260
clear=True,
248261
)
249-
@patch("azure.monitor.opentelemetry.exporter._utils._is_attach_enabled", return_value=True)
250262
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Linux")
251-
def test_get_sdk_version_prefix_function_linux_attach(self, mock_system, mock_getenv):
263+
def test_get_sdk_version_prefix_function_linux_attach(self, mock_system):
252264
result = _utils._get_sdk_version_prefix()
253265
self.assertEqual(result, "fli_")
254266

255267
@patch.dict(
256268
"azure.monitor.opentelemetry.exporter._utils.environ",
257-
{"FUNCTIONS_WORKER_RUNTIME": TEST_WEBSITE_SITE_NAME},
269+
{
270+
"FUNCTIONS_WORKER_RUNTIME": TEST_WEBSITE_SITE_NAME,
271+
"PYTHON_APPLICATIONINSIGHTS_ENABLE_TELEMETRY": "true",
272+
},
258273
clear=True,
259274
)
260-
@patch("azure.monitor.opentelemetry.exporter._utils._is_attach_enabled", return_value=True)
261275
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Windows")
262-
def test_get_sdk_version_prefix_function_windows_attach(self, mock_system, mock_getenv):
276+
def test_get_sdk_version_prefix_function_windows_attach(self, mock_system):
263277
result = _utils._get_sdk_version_prefix()
264278
self.assertEqual(result, "fwi_")
265279

280+
# AKS SDK Version Prefix
281+
282+
@patch.dict(
283+
"azure.monitor.opentelemetry.exporter._utils.environ",
284+
{
285+
"KUBERNETES_SERVICE_HOST": TEST_KUBERNETES_SERVICE_HOST,
286+
},
287+
clear=True,
288+
)
289+
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="")
290+
def test_get_sdk_version_prefix_aks(self, mock_system):
291+
result = _utils._get_sdk_version_prefix()
292+
self.assertEqual(result, "kum_")
293+
294+
@patch.dict(
295+
"azure.monitor.opentelemetry.exporter._utils.environ",
296+
{
297+
"KUBERNETES_SERVICE_HOST": TEST_KUBERNETES_SERVICE_HOST,
298+
},
299+
clear=True,
300+
)
301+
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Linux")
302+
def test_get_sdk_version_prefix_aks_linux(self, mock_system):
303+
result = _utils._get_sdk_version_prefix()
304+
self.assertEqual(result, "klm_")
305+
306+
@patch.dict(
307+
"azure.monitor.opentelemetry.exporter._utils.environ",
308+
{
309+
"KUBERNETES_SERVICE_HOST": TEST_KUBERNETES_SERVICE_HOST,
310+
},
311+
clear=True,
312+
)
313+
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Windows")
314+
def test_get_sdk_version_prefix_aks_windows(self, mock_system):
315+
result = _utils._get_sdk_version_prefix()
316+
self.assertEqual(result, "kwm_")
317+
318+
@patch.dict(
319+
"azure.monitor.opentelemetry.exporter._utils.environ",
320+
{
321+
"KUBERNETES_SERVICE_HOST": TEST_KUBERNETES_SERVICE_HOST,
322+
"AKS_ARM_NAMESPACE_ID": TEST_AKS_ARM_NAMESPACE_ID,
323+
},
324+
clear=True,
325+
)
326+
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="")
327+
def test_get_sdk_version_prefix_aks_attach(self, mock_system):
328+
result = _utils._get_sdk_version_prefix()
329+
self.assertEqual(result, "kui_")
330+
331+
@patch.dict(
332+
"azure.monitor.opentelemetry.exporter._utils.environ",
333+
{
334+
"KUBERNETES_SERVICE_HOST": TEST_KUBERNETES_SERVICE_HOST,
335+
"AKS_ARM_NAMESPACE_ID": TEST_AKS_ARM_NAMESPACE_ID,
336+
},
337+
clear=True,
338+
)
339+
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Linux")
340+
def test_get_sdk_version_prefix_aks_linux_attach(self, mock_system):
341+
result = _utils._get_sdk_version_prefix()
342+
self.assertEqual(result, "kli_")
343+
344+
@patch.dict(
345+
"azure.monitor.opentelemetry.exporter._utils.environ",
346+
{
347+
"KUBERNETES_SERVICE_HOST": TEST_KUBERNETES_SERVICE_HOST,
348+
"AKS_ARM_NAMESPACE_ID": TEST_AKS_ARM_NAMESPACE_ID,
349+
},
350+
clear=True,
351+
)
352+
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Windows")
353+
def test_get_sdk_version_prefix_aks_windows_attach(self, mock_system):
354+
result = _utils._get_sdk_version_prefix()
355+
self.assertEqual(result, "kwi_")
356+
266357
# Attach
267358

268359
@patch(
@@ -288,7 +379,22 @@ def test_attach_app_service_disabled(self, mock_isdir):
288379
@patch.dict("azure.monitor.opentelemetry.exporter._utils.environ", {}, clear=True)
289380
def test_attach_off_app_service_with_agent(self, mock_isdir):
290381
# This is not an expected scenario and just tests the default
291-
self.assertEqual(_utils._is_attach_enabled(), False)
382+
self.assertFalse(_utils._is_attach_enabled())
383+
384+
@patch.dict("azure.monitor.opentelemetry.exporter._utils.environ", {
385+
"KUBERNETES_SERVICE_HOST": TEST_KUBERNETES_SERVICE_HOST,
386+
"AKS_ARM_NAMESPACE_ID": TEST_AKS_ARM_NAMESPACE_ID,
387+
}, clear=True)
388+
def test_attach_aks(self):
389+
# This is not an expected scenario and just tests the default
390+
self.assertTrue(_utils._is_attach_enabled())
391+
392+
@patch.dict("azure.monitor.opentelemetry.exporter._utils.environ", {
393+
"KUBERNETES_SERVICE_HOST": TEST_KUBERNETES_SERVICE_HOST,
394+
}, clear=True)
395+
def test_aks_no_attach(self):
396+
# This is not an expected scenario and just tests the default
397+
self.assertFalse(_utils._is_attach_enabled())
292398

293399
# Synthetic
294400

0 commit comments

Comments
 (0)