Pass kwargs through to the adapter
A major point of the adapter is that we should be able to add new arguments to the adapter that are supported automatically by the clients that support it. This means we have to pass all additional arguments through to adapter. Regardless of whether the arguments are passed to the adapter or to the traditional client the kwargs are explicitly provided so we won't end up with missing arguments. Closes-Bug: #1403329 Change-Id: I7303b184875dc296ca855ad89496173c42070879
This commit is contained in:
parent
e422109eb3
commit
003f1ed048
|
@ -720,11 +720,11 @@ def _construct_http_client(username=None, password=None, project_id=None,
|
|||
auth_token=None, cacert=None, tenant_id=None,
|
||||
user_id=None, connection_pool=False, session=None,
|
||||
auth=None, user_agent='python-novaclient',
|
||||
**kwargs):
|
||||
interface=None, **kwargs):
|
||||
if session:
|
||||
return SessionClient(session=session,
|
||||
auth=auth,
|
||||
interface=endpoint_type,
|
||||
interface=interface or endpoint_type,
|
||||
service_type=service_type,
|
||||
region_name=region_name,
|
||||
service_name=service_name,
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import uuid
|
||||
|
||||
from keystoneclient import session
|
||||
|
||||
from novaclient.tests import utils
|
||||
from novaclient.v1_1 import client
|
||||
|
||||
|
||||
class ClientTest(utils.TestCase):
|
||||
|
||||
def test_adapter_properties(self):
|
||||
# sample of properties, there are many more
|
||||
user_agent = uuid.uuid4().hex
|
||||
endpoint_override = uuid.uuid4().hex
|
||||
|
||||
s = session.Session()
|
||||
c = client.Client(session=s,
|
||||
user_agent=user_agent,
|
||||
endpoint_override=endpoint_override)
|
||||
|
||||
self.assertEqual(user_agent, c.client.user_agent)
|
||||
self.assertEqual(endpoint_override, c.client.endpoint_override)
|
||||
|
||||
def test_passing_interface(self):
|
||||
endpoint_type = uuid.uuid4().hex
|
||||
interface = uuid.uuid4().hex
|
||||
|
||||
s = session.Session()
|
||||
c = client.Client(session=s,
|
||||
interface=interface,
|
||||
endpoint_type=endpoint_type)
|
||||
|
||||
self.assertEqual(interface, c.client.interface)
|
|
@ -103,7 +103,7 @@ class Client(object):
|
|||
auth_system='keystone', auth_plugin=None, auth_token=None,
|
||||
cacert=None, tenant_id=None, user_id=None,
|
||||
connection_pool=False, session=None, auth=None,
|
||||
completion_cache=None):
|
||||
completion_cache=None, **kwargs):
|
||||
# FIXME(comstud): Rename the api_key argument above when we
|
||||
# know it's not being used as keyword argument
|
||||
|
||||
|
@ -192,7 +192,8 @@ class Client(object):
|
|||
cacert=cacert,
|
||||
connection_pool=connection_pool,
|
||||
session=session,
|
||||
auth=auth)
|
||||
auth=auth,
|
||||
**kwargs)
|
||||
|
||||
self.completion_cache = completion_cache
|
||||
|
||||
|
|
Loading…
Reference in New Issue