Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@

### Other Changes

- Add attachType character to sdkVersion prefix
([#34226](https://github.com/Azure/azure-sdk-for-python/pull/34226))

## 1.0.0b22 (2024-02-01)

### Features Added
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,23 +36,41 @@


def _is_on_app_service():
return "WEBSITE_SITE_NAME" in environ
return environ.get("WEBSITE_SITE_NAME") is not None

def _is_on_functions():
return environ.get("FUNCTIONS_WORKER_RUNTIME") is not None

def _is_attach_enabled():
return isdir("/agents/python/")


def _get_sdk_version_prefix():
sdk_version_prefix = ''
if _is_on_app_service() and _is_attach_enabled():
os = 'u'
system = platform.system()
if system == "Linux":
os = 'l'
elif system == "Windows":
os = 'w'
sdk_version_prefix = "a{}_".format(os)
rp = 'u'
if _is_on_functions():
rp = 'f'
elif _is_on_app_service():
rp = 'a'
# TODO: Add VM scenario outside statsbeat
# elif _is_on_vm():
# rp = 'v'
# TODO: Add AKS scenario
# elif _is_on_aks():
# rp = 'k'

os = 'u'
system = platform.system()
if system == "Linux":
os = 'l'
elif system == "Windows":
os = 'w'

attach_type = 'm'
if _is_attach_enabled():
attach_type = 'i'
sdk_version_prefix = "{}{}{}_".format(rp, os, attach_type)

return sdk_version_prefix


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,14 +159,14 @@ def _get_attach_metric(self, options: CallbackOptions) -> Iterable[Observation]:
rpId = ''
os_type = platform.system()
# rp, rpId
if os.environ.get("WEBSITE_SITE_NAME") is not None:
if _utils._is_on_app_service():
# Web apps
rp = _RP_NAMES[0]
rpId = '{}/{}'.format(
os.environ.get("WEBSITE_SITE_NAME"),
os.environ.get("WEBSITE_HOME_STAMPNAME", '')
)
elif os.environ.get("FUNCTIONS_WORKER_RUNTIME") is not None:
elif _utils._is_on_functions():
# Function apps
rp = _RP_NAMES[1]
rpId = os.environ.get("WEBSITE_HOSTNAME", '')
Expand All @@ -177,6 +177,7 @@ def _get_attach_metric(self, options: CallbackOptions) -> Iterable[Observation]:
self._vm_data.get("vmId", ''),
self._vm_data.get("subscriptionId", ''))
os_type = self._vm_data.get("osType", '')
# TODO: add AKS scenario
else:
# Not in any rp or VM metadata failed
rp = _RP_NAMES[3]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,3 @@
application = get_asgi_application()

# cSpell:enable

Original file line number Diff line number Diff line change
Expand Up @@ -77,36 +77,110 @@ def test_create_telemetry_item(self, mock_ns_to_iso_str):
)
self.assertEqual(result, expected)

@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=True)
# Unknown

@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=False)
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="")
def test_get_sdk_version_prefix(self, mock_system, mock_getenv):
result = _utils._get_sdk_version_prefix()
self.assertEqual(result, "uum_")

@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=False)
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Linux")
def test_get_sdk_version_prefix_off_app_service(self, mock_system, mock_getenv):
def test_get_sdk_version_prefix_linux(self, mock_system, mock_getenv):
result = _utils._get_sdk_version_prefix()
self.assertEqual(result, "")
self.assertEqual(result, "ulm_")

@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=False)
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Windows")
def test_get_sdk_version_prefix_windows(self, mock_system, mock_getenv):
result = _utils._get_sdk_version_prefix()
self.assertEqual(result, "uwm_")

# App Service

@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"WEBSITE_SITE_NAME": TEST_WEBSITE_SITE_NAME})
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=False)
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="")
def test_get_sdk_version_prefix_app_service(self, mock_system, mock_getenv):
result = _utils._get_sdk_version_prefix()
self.assertEqual(result, "aum_")

@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"WEBSITE_SITE_NAME": TEST_WEBSITE_SITE_NAME})
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=False)
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Linux")
def test_get_sdk_version_prefix_app_service_disabled_attach(self, mock_system, mock_getenv):
def test_get_sdk_version_prefix_app_service_linux(self, mock_system, mock_getenv):
result = _utils._get_sdk_version_prefix()
self.assertEqual(result, "alm_")

@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"WEBSITE_SITE_NAME": TEST_WEBSITE_SITE_NAME})
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=False)
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Windows")
def test_get_sdk_version_prefix_app_service_windows(self, mock_system, mock_getenv):
result = _utils._get_sdk_version_prefix()
self.assertEqual(result, "")
self.assertEqual(result, "awm_")

@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"WEBSITE_SITE_NAME": TEST_WEBSITE_SITE_NAME})
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=True)
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="")
def test_get_sdk_version_prefix_app_service_attach(self, mock_system, mock_getenv):
result = _utils._get_sdk_version_prefix()
self.assertEqual(result, "aui_")

@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"WEBSITE_SITE_NAME": TEST_WEBSITE_SITE_NAME})
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=True)
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Linux")
def test_get_sdk_version_prefix_linux_attach(self, mock_system, mock_getenv):
def test_get_sdk_version_prefix_app_service_linux_attach(self, mock_system, mock_getenv):
result = _utils._get_sdk_version_prefix()
self.assertEqual(result, "al_")
self.assertEqual(result, "ali_")

@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"WEBSITE_SITE_NAME": TEST_WEBSITE_SITE_NAME})
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=True)
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Windows")
def test_get_sdk_version_prefix_windows_attach(self, mock_system, mock_getenv):
def test_get_sdk_version_prefix_app_service_windows_attach(self, mock_system, mock_getenv):
result = _utils._get_sdk_version_prefix()
self.assertEqual(result, "aw_")
self.assertEqual(result, "awi_")

@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"WEBSITE_SITE_NAME": TEST_WEBSITE_SITE_NAME})
# Function

@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"FUNCTIONS_WORKER_RUNTIME": TEST_WEBSITE_SITE_NAME})
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=False)
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="")
def test_get_sdk_version_prefix_function(self, mock_system, mock_getenv):
result = _utils._get_sdk_version_prefix()
self.assertEqual(result, "fum_")

@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"FUNCTIONS_WORKER_RUNTIME": TEST_WEBSITE_SITE_NAME})
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=False)
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Linux")
def test_get_sdk_version_prefix_function_linux(self, mock_system, mock_getenv):
result = _utils._get_sdk_version_prefix()
self.assertEqual(result, "flm_")

@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"FUNCTIONS_WORKER_RUNTIME": TEST_WEBSITE_SITE_NAME})
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=False)
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Windows")
def test_get_sdk_version_prefix_function_windows(self, mock_system, mock_getenv):
result = _utils._get_sdk_version_prefix()
self.assertEqual(result, "fwm_")

@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"FUNCTIONS_WORKER_RUNTIME": TEST_WEBSITE_SITE_NAME})
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=True)
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="")
def test_get_sdk_version_prefix_unknown_attach(self, mock_system, mock_getenv):
def test_get_sdk_version_prefix_function_attach(self, mock_system, mock_getenv):
result = _utils._get_sdk_version_prefix()
self.assertEqual(result, "fui_")

@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"FUNCTIONS_WORKER_RUNTIME": TEST_WEBSITE_SITE_NAME})
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=True)
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Linux")
def test_get_sdk_version_prefix_function_linux_attach(self, mock_system, mock_getenv):
result = _utils._get_sdk_version_prefix()
self.assertEqual(result, "fli_")

@patch("azure.monitor.opentelemetry.exporter._utils.environ", {"FUNCTIONS_WORKER_RUNTIME": TEST_WEBSITE_SITE_NAME})
@patch("azure.monitor.opentelemetry.exporter._utils.isdir", return_value=True)
@patch("azure.monitor.opentelemetry.exporter._utils.platform.system", return_value="Windows")
def test_get_sdk_version_prefix_function_windows_attach(self, mock_system, mock_getenv):
result = _utils._get_sdk_version_prefix()
self.assertEqual(result, "au_")
self.assertEqual(result, "fwi_")