Skip to content

Commit 17a8e92

Browse files
committed
Update SDK Version Prefix
1 parent 8360566 commit 17a8e92

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
@@ -10,6 +10,9 @@
1010

1111
### Other Changes
1212

13+
- Add attachType character to sdkVersion prefix
14+
([#34226](https://github.com/Azure/azure-sdk-for-python/pull/34226))
15+
1316
## 1.0.0b22 (2024-02-01)
1417

1518
### 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
@@ -77,36 +77,110 @@ def test_create_telemetry_item(self, mock_ns_to_iso_str):
7777
)
7878
self.assertEqual(result, expected)
7979

80-
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=True)
80+
# Unknown
81+
82+
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=False)
83+
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="")
84+
def test_get_sdk_version_prefix(self, mock_system, mock_getenv):
85+
result = _utils._get_sdk_version_prefix()
86+
self.assertEqual(result, "uum_")
87+
88+
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=False)
8189
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Linux")
82-
def test_get_sdk_version_prefix_off_app_service(self, mock_system, mock_getenv):
90+
def test_get_sdk_version_prefix_linux(self, mock_system, mock_getenv):
8391
result = _utils._get_sdk_version_prefix()
84-
self.assertEqual(result, "")
92+
self.assertEqual(result, "ulm_")
93+
94+
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=False)
95+
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Windows")
96+
def test_get_sdk_version_prefix_wiindows(self, mock_system, mock_getenv):
97+
result = _utils._get_sdk_version_prefix()
98+
self.assertEqual(result, "uwm_")
99+
100+
# App Service
101+
102+
@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"WEBSITE_SITE_NAME": TEST_WEBSITE_SITE_NAME})
103+
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=False)
104+
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="")
105+
def test_get_sdk_version_prefix_app_service(self, mock_system, mock_getenv):
106+
result = _utils._get_sdk_version_prefix()
107+
self.assertEqual(result, "aum_")
85108

86109
@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"WEBSITE_SITE_NAME": TEST_WEBSITE_SITE_NAME})
87110
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=False)
88111
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Linux")
89-
def test_get_sdk_version_prefix_app_service_disabled_attach(self, mock_system, mock_getenv):
112+
def test_get_sdk_version_prefix_app_service_linux(self, mock_system, mock_getenv):
113+
result = _utils._get_sdk_version_prefix()
114+
self.assertEqual(result, "alm_")
115+
116+
@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"WEBSITE_SITE_NAME": TEST_WEBSITE_SITE_NAME})
117+
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=False)
118+
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Windows")
119+
def test_get_sdk_version_prefix_app_service_windows(self, mock_system, mock_getenv):
90120
result = _utils._get_sdk_version_prefix()
91-
self.assertEqual(result, "")
121+
self.assertEqual(result, "awm_")
122+
123+
@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"WEBSITE_SITE_NAME": TEST_WEBSITE_SITE_NAME})
124+
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=True)
125+
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="")
126+
def test_get_sdk_version_prefix_app_service_attach(self, mock_system, mock_getenv):
127+
result = _utils._get_sdk_version_prefix()
128+
self.assertEqual(result, "aui_")
92129

93130
@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"WEBSITE_SITE_NAME": TEST_WEBSITE_SITE_NAME})
94131
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=True)
95132
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Linux")
96-
def test_get_sdk_version_prefix_linux_attach(self, mock_system, mock_getenv):
133+
def test_get_sdk_version_prefix_app_service_linux_attach(self, mock_system, mock_getenv):
97134
result = _utils._get_sdk_version_prefix()
98-
self.assertEqual(result, "al_")
135+
self.assertEqual(result, "ali_")
99136

100137
@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"WEBSITE_SITE_NAME": TEST_WEBSITE_SITE_NAME})
101138
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=True)
102139
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Windows")
103-
def test_get_sdk_version_prefix_windows_attach(self, mock_system, mock_getenv):
140+
def test_get_sdk_version_prefix_app_service_windows_attach(self, mock_system, mock_getenv):
104141
result = _utils._get_sdk_version_prefix()
105-
self.assertEqual(result, "aw_")
142+
self.assertEqual(result, "awi_")
106143

107-
@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"WEBSITE_SITE_NAME": TEST_WEBSITE_SITE_NAME})
144+
# Function
145+
146+
@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"FUNCTIONS_WORKER_RUNTIME": TEST_WEBSITE_SITE_NAME})
147+
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=False)
148+
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="")
149+
def test_get_sdk_version_prefix_function(self, mock_system, mock_getenv):
150+
result = _utils._get_sdk_version_prefix()
151+
self.assertEqual(result, "fum_")
152+
153+
@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"FUNCTIONS_WORKER_RUNTIME": TEST_WEBSITE_SITE_NAME})
154+
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=False)
155+
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Linux")
156+
def test_get_sdk_version_prefix_function_linux(self, mock_system, mock_getenv):
157+
result = _utils._get_sdk_version_prefix()
158+
self.assertEqual(result, "flm_")
159+
160+
@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"FUNCTIONS_WORKER_RUNTIME": TEST_WEBSITE_SITE_NAME})
161+
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=False)
162+
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Windows")
163+
def test_get_sdk_version_prefix_function_windows(self, mock_system, mock_getenv):
164+
result = _utils._get_sdk_version_prefix()
165+
self.assertEqual(result, "fwm_")
166+
167+
@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"FUNCTIONS_WORKER_RUNTIME": TEST_WEBSITE_SITE_NAME})
108168
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=True)
109169
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="")
110-
def test_get_sdk_version_prefix_unknown_attach(self, mock_system, mock_getenv):
170+
def test_get_sdk_version_prefix_function_attach(self, mock_system, mock_getenv):
171+
result = _utils._get_sdk_version_prefix()
172+
self.assertEqual(result, "fui_")
173+
174+
@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"FUNCTIONS_WORKER_RUNTIME": TEST_WEBSITE_SITE_NAME})
175+
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=True)
176+
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Linux")
177+
def test_get_sdk_version_prefix_function_linux_attach(self, mock_system, mock_getenv):
178+
result = _utils._get_sdk_version_prefix()
179+
self.assertEqual(result, "fli_")
180+
181+
@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"FUNCTIONS_WORKER_RUNTIME": TEST_WEBSITE_SITE_NAME})
182+
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=True)
183+
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Windows")
184+
def test_get_sdk_version_prefix_function_windows_attach(self, mock_system, mock_getenv):
111185
result = _utils._get_sdk_version_prefix()
112-
self.assertEqual(result, "au_")
186+
self.assertEqual(result, "fwi_")

0 commit comments

Comments
 (0)