diff --git a/.travis.yml b/.travis.yml
index adbf848c3ed..43c7d2eb1bb 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -5,6 +5,7 @@ python:
- "3.5"
install:
- pip install azure==2.0.0a1
+ - pip install mock==1.3.0
script:
- export PYTHONPATH=$PATHONPATH:./src
- python -m unittest discover -s src/azure/cli/tests
\ No newline at end of file
diff --git a/azure-cli.pyproj b/azure-cli.pyproj
index 5c2690500bb..0fa304524fa 100644
--- a/azure-cli.pyproj
+++ b/azure-cli.pyproj
@@ -25,15 +25,23 @@
-
Code
+
+ Code
+
+
+ Code
+
+
+ Code
+
diff --git a/src/azure/cli/_debug.py b/src/azure/cli/_debug.py
new file mode 100644
index 00000000000..845ec253cd9
--- /dev/null
+++ b/src/azure/cli/_debug.py
@@ -0,0 +1,12 @@
+import os
+from ._logging import logger
+
+DISABLE_VERIFY_VARIABLE_NAME = "AZURE_CLI_DISABLE_CONNECTION_VERIFICATION"
+
+def allow_debug_connection(client):
+ if should_disable_connection_verify():
+ logger.warn("Connection verification disabled by environment variable %s", DISABLE_VERIFY_VARIABLE_NAME)
+ client.config.connection.verify = False
+
+def should_disable_connection_verify():
+ return bool(os.environ.get(DISABLE_VERIFY_VARIABLE_NAME))
diff --git a/src/azure/cli/commands/_command_creation.py b/src/azure/cli/commands/_command_creation.py
new file mode 100644
index 00000000000..daacf0aeb2c
--- /dev/null
+++ b/src/azure/cli/commands/_command_creation.py
@@ -0,0 +1,10 @@
+from .._profile import Profile
+import azure.cli._debug as _debug
+import azure.cli as cli
+
+def get_service_client(client_type, config_type):
+ profile = Profile()
+ client = client_type(config_type(*profile.get_login_credentials()))
+ _debug.allow_debug_connection(client)
+ client.config.add_user_agent("AZURECLI_{}".format(cli.__version__))
+ return client
diff --git a/src/azure/cli/commands/login.py b/src/azure/cli/commands/login.py
index 92f7eadd690..09e30b57a51 100644
--- a/src/azure/cli/commands/login.py
+++ b/src/azure/cli/commands/login.py
@@ -6,6 +6,7 @@
from .._profile import Profile
from ..commands import command, description, option
+from .._debug import should_disable_connection_verify
CLIENT_ID = '04b07795-8ddb-461a-bbee-02f9e1bf7b46'
@@ -21,7 +22,7 @@ def login(args, unexpected):
import getpass
password = getpass.getpass(_('Password: '))
- credentials = UserPassCredentials(username, password, client_id=CLIENT_ID)
+ credentials = UserPassCredentials(username, password, client_id=CLIENT_ID, verify=not should_disable_connection_verify())
client = SubscriptionClient(SubscriptionClientConfiguration(credentials))
subscriptions = client.subscriptions.list()
diff --git a/src/azure/cli/commands/storage.py b/src/azure/cli/commands/storage.py
index 92621938fb7..15fde8488db 100644
--- a/src/azure/cli/commands/storage.py
+++ b/src/azure/cli/commands/storage.py
@@ -2,7 +2,7 @@
from ..main import SESSION
from ..commands import command, description, option
-from .._profile import Profile
+from ._command_creation import get_service_client
@command('storage account list')
@description(_('List storage accounts'))
@@ -13,10 +13,7 @@ def list_accounts(args, unexpected):
from azure.mgmt.storage.models import StorageAccount
from msrestazure.azure_active_directory import UserPassCredentials
- profile = Profile()
- smc = StorageManagementClient(StorageManagementClientConfiguration(
- *profile.get_login_credentials()
- ))
+ smc = get_service_client(StorageManagementClient, StorageManagementClientConfiguration)
group = args.get('resource-group')
if group:
@@ -32,7 +29,7 @@ def list_accounts(args, unexpected):
def checkname(args, unexpected):
from azure.mgmt.storage import StorageManagementClient, StorageManagementClientConfiguration
- smc = StorageManagementClient(StorageManagementClientConfiguration())
+ smc = get_service_client(StorageManagementClient, StorageManagementClientConfiguration)
logger.warn(smc.storage_accounts.check_name_availability(args.account_name))
diff --git a/src/azure/cli/tests/test_connection_verify.py b/src/azure/cli/tests/test_connection_verify.py
new file mode 100644
index 00000000000..7a6b1c6613b
--- /dev/null
+++ b/src/azure/cli/tests/test_connection_verify.py
@@ -0,0 +1,39 @@
+import os
+import unittest
+try:
+ from unittest.mock import MagicMock
+except ImportError:
+ from mock import MagicMock
+
+from azure.cli._argparse import ArgumentParser, IncorrectUsageError
+from azure.cli._logging import logger
+import logging
+import azure.cli._debug as _debug
+
+
+class Test_argparse(unittest.TestCase):
+ @classmethod
+ def setUpClass(cls):
+ # Ensure initialization has occurred correctly
+ import azure.cli.main
+ logging.basicConfig(level=logging.DEBUG)
+
+ @classmethod
+ def tearDownClass(cls):
+ logging.shutdown()
+
+ def test_verify_client_connection(self):
+ os.environ[_debug.DISABLE_VERIFY_VARIABLE_NAME] = ""
+ self.assertFalse(_debug.should_disable_connection_verify())
+
+ os.environ[_debug.DISABLE_VERIFY_VARIABLE_NAME] = "1"
+ self.assertTrue(_debug.should_disable_connection_verify())
+
+ clientMock = MagicMock()
+ clientMock.config.connection.verify = True
+ _debug.allow_debug_connection(clientMock)
+ self.assertFalse(clientMock.config.connection.verify)
+
+
+if __name__ == '__main__':
+ unittest.main()