From 826eab78dab428187c24f912fd6eed205dadb3d9 Mon Sep 17 00:00:00 2001 From: Srinath Narayanan Date: Mon, 16 Mar 2020 16:38:34 -0700 Subject: [PATCH 1/2] Added user agent suffix --- .../azure/cosmos/_cosmos_client_connection.py | 2 +- sdk/cosmos/azure-cosmos/azure/cosmos/_utils.py | 9 ++++++--- .../azure-cosmos/azure/cosmos/documents.py | 6 +++++- sdk/cosmos/azure-cosmos/test/utils_tests.py | 18 +++++++++++++++++- 4 files changed, 29 insertions(+), 6 deletions(-) diff --git a/sdk/cosmos/azure-cosmos/azure/cosmos/_cosmos_client_connection.py b/sdk/cosmos/azure-cosmos/azure/cosmos/_cosmos_client_connection.py index 8628ffc8d169..66520e37eea3 100644 --- a/sdk/cosmos/azure-cosmos/azure/cosmos/_cosmos_client_connection.py +++ b/sdk/cosmos/azure-cosmos/azure/cosmos/_cosmos_client_connection.py @@ -180,7 +180,7 @@ def __init__( policies = [ HeadersPolicy(**kwargs), ProxyPolicy(proxies=proxies), - UserAgentPolicy(base_user_agent=_utils.get_user_agent(), **kwargs), + UserAgentPolicy(base_user_agent=_utils.get_user_agent(self.connection_policy), **kwargs), ContentDecodePolicy(), retry_policy, CustomHookPolicy(**kwargs), diff --git a/sdk/cosmos/azure-cosmos/azure/cosmos/_utils.py b/sdk/cosmos/azure-cosmos/azure/cosmos/_utils.py index b6b6f0e18d4a..a32a7fdb4d8b 100644 --- a/sdk/cosmos/azure-cosmos/azure/cosmos/_utils.py +++ b/sdk/cosmos/azure-cosmos/azure/cosmos/_utils.py @@ -25,12 +25,15 @@ import platform import re from ._version import VERSION +from .documents import ConnectionPolicy - -def get_user_agent(): +def get_user_agent( + connection_policy # type: ConnectionPolicy +): os_name = safe_user_agent_header(platform.platform()) python_version = safe_user_agent_header(platform.python_version()) - user_agent = "azsdk-python-cosmos/{} Python/{} ({})".format(VERSION, python_version, os_name) + user_agent_suffix = connection_policy.UserAgentSuffix[0:128] + user_agent = "azsdk-python-cosmos/{} Python/{} ({}){}".format(VERSION, python_version, os_name, user_agent_suffix) return user_agent diff --git a/sdk/cosmos/azure-cosmos/azure/cosmos/documents.py b/sdk/cosmos/azure-cosmos/azure/cosmos/documents.py index 0a55158a02be..e972cfc9b12f 100644 --- a/sdk/cosmos/azure-cosmos/azure/cosmos/documents.py +++ b/sdk/cosmos/azure-cosmos/azure/cosmos/documents.py @@ -355,7 +355,10 @@ class ConnectionPolicy(object): # pylint: disable=too-many-instance-attributes :ivar ConnectionRetryConfiguration: Retry Configuration to be used for connection retries. :vartype ConnectionRetryConfiguration: - int or azure.cosmos.ConnectionRetryPolicy or urllib3.util.retry + int or azure.cosmos.ConnectionRetryPolicy or urllib3.util. + :ivar string UserAgentSuffix: + The value to be appended to the user-agent header, used for monitoring purposes. + """ __defaultRequestTimeout = 60000 # milliseconds @@ -371,6 +374,7 @@ def __init__(self): self.DisableSSLVerification = False self.UseMultipleWriteLocations = False self.ConnectionRetryConfiguration = None + self.UserAgentSuffix = "" class _OperationType(object): diff --git a/sdk/cosmos/azure-cosmos/test/utils_tests.py b/sdk/cosmos/azure-cosmos/test/utils_tests.py index 9b7691b0305f..abb907cbd903 100644 --- a/sdk/cosmos/azure-cosmos/test/utils_tests.py +++ b/sdk/cosmos/azure-cosmos/test/utils_tests.py @@ -23,6 +23,7 @@ import pytest import azure.cosmos import azure.cosmos._utils as _utils +from azure.cosmos.documents import ConnectionPolicy import platform import test_config @@ -34,7 +35,8 @@ class UtilsTests(unittest.TestCase): """ def test_user_agent(self): - user_agent = _utils.get_user_agent() + connection_policy = ConnectionPolicy() + user_agent = _utils.get_user_agent(connection_policy) expected_user_agent = "azsdk-python-cosmos/{} Python/{} ({})".format( azure.cosmos.__version__, @@ -43,6 +45,20 @@ def test_user_agent(self): ) self.assertEqual(user_agent, expected_user_agent) + def test_user_agent_with_suffix(self): + user_agent_suffix = "sample app" + connection_policy = ConnectionPolicy() + connection_policy.UserAgentSuffix = user_agent_suffix + user_agent = _utils.get_user_agent(connection_policy) + + expected_user_agent = "azsdk-python-cosmos/{} Python/{} ({}){}".format( + azure.cosmos.__version__, + platform.python_version(), + platform.platform(), + user_agent_suffix + ) + self.assertEqual(user_agent, expected_user_agent) + def test_connection_string(self): client = azure.cosmos.CosmosClient.from_connection_string(test_config._test_config.connection_str) databases = list(client.list_databases()) From 48df345438b9393caf090615285e3ffb42f34270 Mon Sep 17 00:00:00 2001 From: Srinath Narayanan Date: Mon, 16 Mar 2020 18:51:19 -0700 Subject: [PATCH 2/2] added extra space --- sdk/cosmos/azure-cosmos/azure/cosmos/_utils.py | 2 +- sdk/cosmos/azure-cosmos/test/utils_tests.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sdk/cosmos/azure-cosmos/azure/cosmos/_utils.py b/sdk/cosmos/azure-cosmos/azure/cosmos/_utils.py index a32a7fdb4d8b..9c8397a50c16 100644 --- a/sdk/cosmos/azure-cosmos/azure/cosmos/_utils.py +++ b/sdk/cosmos/azure-cosmos/azure/cosmos/_utils.py @@ -33,7 +33,7 @@ def get_user_agent( os_name = safe_user_agent_header(platform.platform()) python_version = safe_user_agent_header(platform.python_version()) user_agent_suffix = connection_policy.UserAgentSuffix[0:128] - user_agent = "azsdk-python-cosmos/{} Python/{} ({}){}".format(VERSION, python_version, os_name, user_agent_suffix) + user_agent = "azsdk-python-cosmos/{} Python/{} ({}) {}".format(VERSION, python_version, os_name, user_agent_suffix) return user_agent diff --git a/sdk/cosmos/azure-cosmos/test/utils_tests.py b/sdk/cosmos/azure-cosmos/test/utils_tests.py index abb907cbd903..02b67528d031 100644 --- a/sdk/cosmos/azure-cosmos/test/utils_tests.py +++ b/sdk/cosmos/azure-cosmos/test/utils_tests.py @@ -38,7 +38,7 @@ def test_user_agent(self): connection_policy = ConnectionPolicy() user_agent = _utils.get_user_agent(connection_policy) - expected_user_agent = "azsdk-python-cosmos/{} Python/{} ({})".format( + expected_user_agent = "azsdk-python-cosmos/{} Python/{} ({}) ".format( azure.cosmos.__version__, platform.python_version(), platform.platform() @@ -51,7 +51,7 @@ def test_user_agent_with_suffix(self): connection_policy.UserAgentSuffix = user_agent_suffix user_agent = _utils.get_user_agent(connection_policy) - expected_user_agent = "azsdk-python-cosmos/{} Python/{} ({}){}".format( + expected_user_agent = "azsdk-python-cosmos/{} Python/{} ({}) {}".format( azure.cosmos.__version__, platform.python_version(), platform.platform(),