Skip to content

Commit d52b7c2

Browse files
author
Matthew Fisher
committed
Merge pull request #2892 from mcano/disable_ssl
feat(client): add flag to disable SSL certificate verification
2 parents 2725d56 + 678f20b commit d52b7c2

1 file changed

Lines changed: 13 additions & 5 deletions

File tree

client/deis.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -390,6 +390,7 @@ def _dispatch(self, method, path, body=None, **kwargs):
390390
func = getattr(self._session, method.lower())
391391
controller = self._settings.get('controller')
392392
token = self._settings.get('token')
393+
ssl_verify = self._settings.get('ssl_verify')
393394
if not token:
394395
raise EnvironmentError(
395396
'Could not find token. Use `deis login` or `deis register` to get started.')
@@ -399,7 +400,7 @@ def _dispatch(self, method, path, body=None, **kwargs):
399400
'X-Deis-Version': __api_version__.rsplit('.', 1)[0],
400401
'Authorization': 'token {}'.format(token)
401402
}
402-
response = func(url, data=body, headers=headers)
403+
response = func(url, data=body, headers=headers, verify=ssl_verify)
403404
# check for version mismatch
404405
server_api_version = response.headers.get('X_DEIS_API_VERSION')
405406
if server_api_version is not None and server_api_version != __api_version__:
@@ -788,8 +789,11 @@ def auth_login(self, args):
788789
provide a username for the account.
789790
--password=<password>
790791
provide a password for the account.
792+
--ssl-verify=false
793+
disables SSL certificate verification for API requests
791794
"""
792795
controller = args['<controller>']
796+
ssl_verify = True
793797
if not urlparse.urlparse(controller).scheme:
794798
controller = "http://{}".format(controller)
795799
username = args.get('--username')
@@ -799,15 +803,20 @@ def auth_login(self, args):
799803
password = args.get('--password')
800804
if not password:
801805
password = getpass('password: ')
806+
ssl_option = args.get('--ssl-verify')
807+
if ssl_option == 'false':
808+
ssl_verify = False
802809
url = urlparse.urljoin(controller, '/v1/auth/login/')
803810
payload = {'username': username, 'password': password}
804811
# post credentials to the login URL
805-
response = self._session.post(url, data=payload, allow_redirects=False)
812+
response = self._session.post(url, data=payload, allow_redirects=False,
813+
verify=ssl_verify)
806814
if response.status_code == requests.codes.ok:
807815
# retrieve and save the API token for future requests
808816
self._settings['controller'] = controller
809817
self._settings['username'] = username
810818
self._settings['token'] = response.json()['token']
819+
self._settings['ssl_verify'] = ssl_verify
811820
self._settings.save()
812821
self._logger.info("Logged in as {}".format(username))
813822
return username
@@ -820,9 +829,8 @@ def auth_logout(self, args):
820829
821830
Usage: deis auth:logout
822831
"""
823-
self._settings['controller'] = None
824-
self._settings['username'] = None
825-
self._settings['token'] = None
832+
for i in ['controller', 'username', 'token', 'ssl_verify']:
833+
self._settings[i] = None
826834
self._settings.save()
827835
self._logger.info('Logged out')
828836

0 commit comments

Comments
 (0)