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
12 changes: 8 additions & 4 deletions pyrax/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -645,7 +645,7 @@ def _get_service_endpoint(context, svc, region=None, public=True):
return ep


def connect_to_cloudservers(region=None, context=None, **kwargs):
def connect_to_cloudservers(region=None, context=None, verify_ssl=None, **kwargs):
"""Creates a client for working with cloud servers."""
context = context or identity
_cs_auth_plugin.discover_auth_systems()
Expand All @@ -660,7 +660,10 @@ def connect_to_cloudservers(region=None, context=None, **kwargs):
if not mgt_url:
# Service is not available
return
insecure = not get_setting("verify_ssl")
if verify_ssl is None:
insecure = not get_setting("verify_ssl")
else:
insecure = not verify_ssl
cs_shell = _cs_shell()
extensions = cs_shell._discover_extensions("1.1")
cloudservers = _cs_client.Client(context.username, context.password,
Expand Down Expand Up @@ -728,13 +731,14 @@ def connect_to_cloudfiles(region=None, public=None):


@_require_auth
def _create_client(ep_name, region, public=True):
def _create_client(ep_name, region, public=True, verify_ssl=None):
region = _safe_region(region)
ep = _get_service_endpoint(None, ep_name.split(":")[0], region,
public=public)
if not ep:
return
verify_ssl = get_setting("verify_ssl")
if verify_ssl is None:
verify_ssl = get_setting("verify_ssl")
cls = _client_classes[ep_name]
client = cls(identity, region_name=region, management_url=ep,
verify_ssl=verify_ssl, http_log_debug=_http_debug)
Expand Down
11 changes: 6 additions & 5 deletions pyrax/base_identity.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,8 @@ def __init__(self, identity, catalog):
eps = catalog.get("endpoints", [])
for ep in eps:
rgn = ep.get("region", "ALL")
self.endpoints[rgn] = Endpoint(ep, self.service_type, rgn, identity)
self.endpoints[rgn] = Endpoint(ep, self.service_type, rgn, identity,
verify_ssl=self.identity.verify_ssl)
return


Expand Down Expand Up @@ -153,13 +154,14 @@ class Endpoint(object):
}


def __init__(self, ep_dict, service, region, identity):
def __init__(self, ep_dict, service, region, identity, verify_ssl=True):
"""
Set local attributes from the supplied dictionary.
"""
self.service = service
self.region = region
self.identity = identity
self.verify_ssl = verify_ssl
for key, val in list(ep_dict.items()):
att_name = self.attr_map.get(key, key)
setattr(self, att_name, val)
Expand Down Expand Up @@ -246,15 +248,14 @@ def _create_client(self, clt_class, url, public=True, special=False):
"""
Creates a client instance for the service.
"""
verify_ssl = pyrax.get_setting("verify_ssl")
if self.service == "compute" and not special:
# Novaclient requires different parameters.
client = pyrax.connect_to_cloudservers(region=self.region,
context=self.identity)
context=self.identity, verify_ssl=self.verify_ssl)
client.identity = self.identity
else:
client = clt_class(self.identity, region_name=self.region,
management_url=url, verify_ssl=verify_ssl)
management_url=url, verify_ssl=self.verify_ssl)
return client


Expand Down
2 changes: 1 addition & 1 deletion tests/unit/test_identity.py
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,7 @@ def test_ep_create_client_compute(self):
ret = ep._create_client(None, None, public)
self.assertEqual(ret, fake_client)
pyrax.connect_to_cloudservers.assert_called_once_with(region=ep.region,
context=ep.identity)
context=ep.identity, verify_ssl=True)
pyrax.connect_to_cloudservers = sav_conn
pyrax.get_setting = sav_gs

Expand Down