Merge "Fix create_pool_member and update_pool_member"

This commit is contained in:
Jenkins
2016-03-01 14:04:34 +00:00
committed by Gerrit Code Review
3 changed files with 34 additions and 13 deletions

View File

@@ -748,9 +748,12 @@ class Proxy(proxy.BaseProxy):
"""
return self._update(_pool.Pool, pool, **attrs)
def create_pool_member(self, **attrs):
def create_pool_member(self, pool, **attrs):
"""Create a new pool member from attributes
:param pool: The pool can be either the ID of a pool or a
:class:`~openstack.network.v2.pool.Pool` instance that
the member will be created in.
:param dict attrs: Keyword arguments which will be used to create
a :class:`~openstack.network.v2.pool_member.PoolMember`,
comprised of the properties on the PoolMember class.
@@ -758,7 +761,10 @@ class Proxy(proxy.BaseProxy):
:returns: The results of pool member creation
:rtype: :class:`~openstack.network.v2.pool_member.PoolMember`
"""
return self._create(_pool_member.PoolMember, **attrs)
pool_id = resource.Resource.get_id(pool)
return self._create(_pool_member.PoolMember,
path_args={'pool_id': pool_id},
**attrs)
def delete_pool_member(self, pool_member, pool, ignore_missing=True):
"""Delete a pool member
@@ -837,19 +843,24 @@ class Proxy(proxy.BaseProxy):
path_args={'pool_id': pool_id}, paginated=False,
**query)
def update_pool_member(self, pool_member, **attrs):
def update_pool_member(self, pool_member, pool, **attrs):
"""Update a pool member
:param pool_member: Either the ID of a pool member or a
:class:`~openstack.network.v2.pool_member.PoolMember`
instance.
:param pool: The pool can be either the ID of a pool or a
:class:`~openstack.network.v2.pool.Pool` instance that
the member belongs to.
:attrs kwargs: The attributes to update on the pool member represented
by ``value``.
:returns: The updated pool member
:rtype: :class:`~openstack.network.v2.pool_member.PoolMember`
"""
return self._update(_pool_member.PoolMember, pool_member, **attrs)
pool_id = resource.Resource.get_id(pool)
return self._update(_pool_member.PoolMember, pool_member,
path_args={'pool_id': pool_id}, **attrs)
def create_port(self, **attrs):
"""Create a new port from attributes

View File

@@ -240,7 +240,10 @@ class TestNetworkProxy(test_proxy_base.TestProxyBase):
def test_pool_member_create_attrs(self):
self.verify_create(self.proxy.create_pool_member,
pool_member.PoolMember)
pool_member.PoolMember,
method_kwargs={"pool": "test_id"},
expected_kwargs={"path_args": {
"pool_id": "test_id"}})
def test_pool_member_delete(self):
self.verify_delete(self.proxy.delete_pool_member,
@@ -273,7 +276,8 @@ class TestNetworkProxy(test_proxy_base.TestProxyBase):
def test_pool_member_update(self):
self.verify_update(self.proxy.update_pool_member,
pool_member.PoolMember)
pool_member.PoolMember,
path_args={"pool_id": "test_id"})
def test_pool_create_attrs(self):
self.verify_create(self.proxy.create_pool, pool.Pool)

View File

@@ -20,6 +20,13 @@ class TestProxyBase(base.TestCase):
super(TestProxyBase, self).setUp()
self.session = mock.Mock()
def _add_path_args_for_verify(self, path_args, method_args,
expected_kwargs):
if path_args is not None:
for key in path_args:
method_args.append(path_args[key])
expected_kwargs['path_args'] = path_args
def _verify(self, mock_method, test_method,
method_args=None, method_kwargs=None,
expected_args=None, expected_kwargs=None,
@@ -134,10 +141,7 @@ class TestProxyBase(base.TestCase):
method_args = ["name_or_id"]
expected_kwargs = {}
if path_args is not None:
for key in path_args:
method_args.append(path_args[key])
expected_kwargs = {"path_args": path_args}
self._add_path_args_for_verify(path_args, method_args, expected_kwargs)
# TODO(briancurtin): if sub-tests worked in this mess of
# test dependencies, the following would be a lot easier to work with.
@@ -183,12 +187,14 @@ class TestProxyBase(base.TestCase):
def verify_update(self, test_method, resource_type,
mock_method="openstack.proxy.BaseProxy._update",
expected_result="result", **kwargs):
expected_result="result", path_args=None, **kwargs):
the_kwargs = {"x": 1, "y": 2, "z": 3}
method_args = ["resource_or_id"]
method_kwargs = the_kwargs
method_kwargs = the_kwargs.copy()
expected_args = [resource_type, "resource_or_id"]
expected_kwargs = the_kwargs
expected_kwargs = the_kwargs.copy()
self._add_path_args_for_verify(path_args, method_args, expected_kwargs)
self._verify2(mock_method, test_method,
expected_result=expected_result,