Skip to content

Commit d3dcf0d

Browse files
authored
Update SDK Version Prefix (#34226)
* Update SDK Version Prefix * lint * lint
1 parent 83a52c4 commit d3dcf0d

File tree

5 files changed

+119
-24
lines changed

5 files changed

+119
-24
lines changed

sdk/monitor/azure-monitor-opentelemetry-exporter/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@
1313

1414
### Other Changes
1515

16+
- Add attachType character to sdkVersion prefix
17+
([#34226](https://github.com/Azure/azure-sdk-for-python/pull/34226))
18+
1619
## 1.0.0b22 (2024-02-01)
1720

1821
### Features Added

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

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,23 +36,41 @@
3636

3737

3838
def _is_on_app_service():
39-
return "WEBSITE_SITE_NAME" in environ
39+
return environ.get("WEBSITE_SITE_NAME") is not None
4040

41+
def _is_on_functions():
42+
return environ.get("FUNCTIONS_WORKER_RUNTIME") is not None
4143

4244
def _is_attach_enabled():
4345
return isdir("/agents/python/")
4446

4547

4648
def _get_sdk_version_prefix():
4749
sdk_version_prefix = ''
48-
if _is_on_app_service() and _is_attach_enabled():
49-
os = 'u'
50-
system = platform.system()
51-
if system == "Linux":
52-
os = 'l'
53-
elif system == "Windows":
54-
os = 'w'
55-
sdk_version_prefix = "a{}_".format(os)
50+
rp = 'u'
51+
if _is_on_functions():
52+
rp = 'f'
53+
elif _is_on_app_service():
54+
rp = 'a'
55+
# TODO: Add VM scenario outside statsbeat
56+
# elif _is_on_vm():
57+
# rp = 'v'
58+
# TODO: Add AKS scenario
59+
# elif _is_on_aks():
60+
# rp = 'k'
61+
62+
os = 'u'
63+
system = platform.system()
64+
if system == "Linux":
65+
os = 'l'
66+
elif system == "Windows":
67+
os = 'w'
68+
69+
attach_type = 'm'
70+
if _is_attach_enabled():
71+
attach_type = 'i'
72+
sdk_version_prefix = "{}{}{}_".format(rp, os, attach_type)
73+
5674
return sdk_version_prefix
5775

5876

sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/statsbeat/_statsbeat_metrics.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,14 +159,14 @@ def _get_attach_metric(self, options: CallbackOptions) -> Iterable[Observation]:
159159
rpId = ''
160160
os_type = platform.system()
161161
# rp, rpId
162-
if os.environ.get("WEBSITE_SITE_NAME") is not None:
162+
if _utils._is_on_app_service():
163163
# Web apps
164164
rp = _RP_NAMES[0]
165165
rpId = '{}/{}'.format(
166166
os.environ.get("WEBSITE_SITE_NAME"),
167167
os.environ.get("WEBSITE_HOME_STAMPNAME", '')
168168
)
169-
elif os.environ.get("FUNCTIONS_WORKER_RUNTIME") is not None:
169+
elif _utils._is_on_functions():
170170
# Function apps
171171
rp = _RP_NAMES[1]
172172
rpId = os.environ.get("WEBSITE_HOSTNAME", '')
@@ -177,6 +177,7 @@ def _get_attach_metric(self, options: CallbackOptions) -> Iterable[Observation]:
177177
self._vm_data.get("vmId", ''),
178178
self._vm_data.get("subscriptionId", ''))
179179
os_type = self._vm_data.get("osType", '')
180+
# TODO: add AKS scenario
180181
else:
181182
# Not in any rp or VM metadata failed
182183
rp = _RP_NAMES[3]

sdk/monitor/azure-monitor-opentelemetry-exporter/samples/traces/django/sample/sample/asgi.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,3 @@
3838
application = get_asgi_application()
3939

4040
# cSpell:enable
41-

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

Lines changed: 86 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -83,36 +83,110 @@ def test_create_telemetry_item(self, mock_ns_to_iso_str):
8383
)
8484
self.assertEqual(result, expected)
8585

86-
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=True)
86+
# Unknown
87+
88+
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=False)
89+
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="")
90+
def test_get_sdk_version_prefix(self, mock_system, mock_getenv):
91+
result = _utils._get_sdk_version_prefix()
92+
self.assertEqual(result, "uum_")
93+
94+
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=False)
8795
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Linux")
88-
def test_get_sdk_version_prefix_off_app_service(self, mock_system, mock_getenv):
96+
def test_get_sdk_version_prefix_linux(self, mock_system, mock_getenv):
8997
result = _utils._get_sdk_version_prefix()
90-
self.assertEqual(result, "")
98+
self.assertEqual(result, "ulm_")
99+
100+
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=False)
101+
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Windows")
102+
def test_get_sdk_version_prefix_windows(self, mock_system, mock_getenv):
103+
result = _utils._get_sdk_version_prefix()
104+
self.assertEqual(result, "uwm_")
105+
106+
# App Service
107+
108+
@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"WEBSITE_SITE_NAME": TEST_WEBSITE_SITE_NAME})
109+
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=False)
110+
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="")
111+
def test_get_sdk_version_prefix_app_service(self, mock_system, mock_getenv):
112+
result = _utils._get_sdk_version_prefix()
113+
self.assertEqual(result, "aum_")
91114

92115
@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"WEBSITE_SITE_NAME": TEST_WEBSITE_SITE_NAME})
93116
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=False)
94117
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Linux")
95-
def test_get_sdk_version_prefix_app_service_disabled_attach(self, mock_system, mock_getenv):
118+
def test_get_sdk_version_prefix_app_service_linux(self, mock_system, mock_getenv):
119+
result = _utils._get_sdk_version_prefix()
120+
self.assertEqual(result, "alm_")
121+
122+
@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"WEBSITE_SITE_NAME": TEST_WEBSITE_SITE_NAME})
123+
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=False)
124+
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Windows")
125+
def test_get_sdk_version_prefix_app_service_windows(self, mock_system, mock_getenv):
96126
result = _utils._get_sdk_version_prefix()
97-
self.assertEqual(result, "")
127+
self.assertEqual(result, "awm_")
128+
129+
@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"WEBSITE_SITE_NAME": TEST_WEBSITE_SITE_NAME})
130+
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=True)
131+
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="")
132+
def test_get_sdk_version_prefix_app_service_attach(self, mock_system, mock_getenv):
133+
result = _utils._get_sdk_version_prefix()
134+
self.assertEqual(result, "aui_")
98135

99136
@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"WEBSITE_SITE_NAME": TEST_WEBSITE_SITE_NAME})
100137
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=True)
101138
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Linux")
102-
def test_get_sdk_version_prefix_linux_attach(self, mock_system, mock_getenv):
139+
def test_get_sdk_version_prefix_app_service_linux_attach(self, mock_system, mock_getenv):
103140
result = _utils._get_sdk_version_prefix()
104-
self.assertEqual(result, "al_")
141+
self.assertEqual(result, "ali_")
105142

106143
@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"WEBSITE_SITE_NAME": TEST_WEBSITE_SITE_NAME})
107144
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=True)
108145
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Windows")
109-
def test_get_sdk_version_prefix_windows_attach(self, mock_system, mock_getenv):
146+
def test_get_sdk_version_prefix_app_service_windows_attach(self, mock_system, mock_getenv):
110147
result = _utils._get_sdk_version_prefix()
111-
self.assertEqual(result, "aw_")
148+
self.assertEqual(result, "awi_")
112149

113-
@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"WEBSITE_SITE_NAME": TEST_WEBSITE_SITE_NAME})
150+
# Function
151+
152+
@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"FUNCTIONS_WORKER_RUNTIME": TEST_WEBSITE_SITE_NAME})
153+
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=False)
154+
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="")
155+
def test_get_sdk_version_prefix_function(self, mock_system, mock_getenv):
156+
result = _utils._get_sdk_version_prefix()
157+
self.assertEqual(result, "fum_")
158+
159+
@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"FUNCTIONS_WORKER_RUNTIME": TEST_WEBSITE_SITE_NAME})
160+
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=False)
161+
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Linux")
162+
def test_get_sdk_version_prefix_function_linux(self, mock_system, mock_getenv):
163+
result = _utils._get_sdk_version_prefix()
164+
self.assertEqual(result, "flm_")
165+
166+
@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"FUNCTIONS_WORKER_RUNTIME": TEST_WEBSITE_SITE_NAME})
167+
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=False)
168+
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Windows")
169+
def test_get_sdk_version_prefix_function_windows(self, mock_system, mock_getenv):
170+
result = _utils._get_sdk_version_prefix()
171+
self.assertEqual(result, "fwm_")
172+
173+
@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"FUNCTIONS_WORKER_RUNTIME": TEST_WEBSITE_SITE_NAME})
114174
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=True)
115175
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="")
116-
def test_get_sdk_version_prefix_unknown_attach(self, mock_system, mock_getenv):
176+
def test_get_sdk_version_prefix_function_attach(self, mock_system, mock_getenv):
177+
result = _utils._get_sdk_version_prefix()
178+
self.assertEqual(result, "fui_")
179+
180+
@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"FUNCTIONS_WORKER_RUNTIME": TEST_WEBSITE_SITE_NAME})
181+
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=True)
182+
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Linux")
183+
def test_get_sdk_version_prefix_function_linux_attach(self, mock_system, mock_getenv):
184+
result = _utils._get_sdk_version_prefix()
185+
self.assertEqual(result, "fli_")
186+
187+
@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"FUNCTIONS_WORKER_RUNTIME": TEST_WEBSITE_SITE_NAME})
188+
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=True)
189+
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Windows")
190+
def test_get_sdk_version_prefix_function_windows_attach(self, mock_system, mock_getenv):
117191
result = _utils._get_sdk_version_prefix()
118-
self.assertEqual(result, "au_")
192+
self.assertEqual(result, "fwi_")

0 commit comments

Comments
 (0)