Merge "Make sure we use config defaults in profile compat code"
This commit is contained in:
@@ -23,6 +23,7 @@ from six.moves import urllib
|
|||||||
|
|
||||||
import openstack
|
import openstack
|
||||||
from openstack import _log
|
from openstack import _log
|
||||||
|
from openstack.config import defaults as config_defaults
|
||||||
from openstack.config import exceptions
|
from openstack.config import exceptions
|
||||||
|
|
||||||
|
|
||||||
@@ -52,8 +53,10 @@ def from_session(session, name=None, config=None, **kwargs):
|
|||||||
# If someone is constructing one of these from a Session, then they are
|
# If someone is constructing one of these from a Session, then they are
|
||||||
# not using a named config. Use the hostname of their auth_url instead.
|
# not using a named config. Use the hostname of their auth_url instead.
|
||||||
name = name or urllib.parse.urlparse(session.auth.auth_url).hostname
|
name = name or urllib.parse.urlparse(session.auth.auth_url).hostname
|
||||||
config = config or {}
|
config_dict = config_defaults.get_defaults()
|
||||||
return CloudRegion(name=name, session=session, config=config, **kwargs)
|
config_dict.update(config or {})
|
||||||
|
return CloudRegion(
|
||||||
|
name=name, session=session, config=config_dict, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
class CloudRegion(object):
|
class CloudRegion(object):
|
||||||
|
@@ -82,6 +82,7 @@ from six.moves import urllib
|
|||||||
from openstack import _log
|
from openstack import _log
|
||||||
import openstack.config
|
import openstack.config
|
||||||
from openstack.config import cloud_region
|
from openstack.config import cloud_region
|
||||||
|
from openstack.config import defaults as config_defaults
|
||||||
from openstack import exceptions
|
from openstack import exceptions
|
||||||
from openstack import service_description
|
from openstack import service_description
|
||||||
from openstack import task_manager
|
from openstack import task_manager
|
||||||
@@ -188,10 +189,14 @@ class Connection(object):
|
|||||||
self.config = openstack_config.get_one(
|
self.config = openstack_config.get_one(
|
||||||
cloud=cloud, validate=session is None, **kwargs)
|
cloud=cloud, validate=session is None, **kwargs)
|
||||||
|
|
||||||
self.task_manager = task_manager.TaskManager(
|
if self.config.name:
|
||||||
name=':'.join([
|
tm_name = ':'.join([
|
||||||
self.config.name,
|
self.config.name,
|
||||||
self.config.region_name or 'unknown']))
|
self.config.region_name or 'unknown'])
|
||||||
|
else:
|
||||||
|
tm_name = self.config.region_name or 'unknown'
|
||||||
|
|
||||||
|
self.task_manager = task_manager.TaskManager(name=tm_name)
|
||||||
|
|
||||||
if session:
|
if session:
|
||||||
# TODO(mordred) Expose constructor option for this in OCC
|
# TODO(mordred) Expose constructor option for this in OCC
|
||||||
@@ -228,9 +233,12 @@ class Connection(object):
|
|||||||
key = cloud_region._make_key('api_version', service_type)
|
key = cloud_region._make_key('api_version', service_type)
|
||||||
kwargs[key] = service.version
|
kwargs[key] = service.version
|
||||||
|
|
||||||
|
config_kwargs = config_defaults.get_defaults()
|
||||||
|
config_kwargs.update(kwargs)
|
||||||
config = cloud_region.CloudRegion(
|
config = cloud_region.CloudRegion(
|
||||||
name=name, region_name=region_name, config=kwargs)
|
name=name, region_name=region_name, config=config_kwargs)
|
||||||
config._auth = authenticator
|
config._auth = authenticator
|
||||||
|
return config
|
||||||
|
|
||||||
def add_service(self, service):
|
def add_service(self, service):
|
||||||
"""Add a service to the Connection.
|
"""Add a service to the Connection.
|
||||||
|
@@ -18,6 +18,7 @@ import mock
|
|||||||
|
|
||||||
from openstack import connection
|
from openstack import connection
|
||||||
import openstack.config
|
import openstack.config
|
||||||
|
from openstack import profile
|
||||||
from openstack.tests.unit import base
|
from openstack.tests.unit import base
|
||||||
|
|
||||||
|
|
||||||
@@ -174,6 +175,21 @@ class TestConnection(base.RequestsMockTestCase):
|
|||||||
sot = connection.from_config(cloud="cacert")
|
sot = connection.from_config(cloud="cacert")
|
||||||
self.assertEqual(CONFIG_CACERT, sot.session.verify)
|
self.assertEqual(CONFIG_CACERT, sot.session.verify)
|
||||||
|
|
||||||
|
def test_from_profile(self):
|
||||||
|
"""Copied from openstackclient/network/client.py make_client."""
|
||||||
|
API_NAME = "network"
|
||||||
|
instance = self.cloud_config
|
||||||
|
|
||||||
|
prof = profile.Profile()
|
||||||
|
prof.set_region(API_NAME, instance.region_name)
|
||||||
|
prof.set_version(API_NAME, instance.get_api_version(API_NAME))
|
||||||
|
prof.set_interface(API_NAME, instance.get_interface(API_NAME))
|
||||||
|
connection.Connection(
|
||||||
|
authenticator=instance.get_session().auth,
|
||||||
|
verify=instance.get_session().verify,
|
||||||
|
cert=instance.get_session().cert,
|
||||||
|
profile=prof)
|
||||||
|
|
||||||
|
|
||||||
class TestAuthorize(base.RequestsMockTestCase):
|
class TestAuthorize(base.RequestsMockTestCase):
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user