From f985063ff1957f18988997bd215fa29e13dc1ba3 Mon Sep 17 00:00:00 2001 From: MD NADEEM Date: Wed, 13 Jan 2016 14:48:16 +0530 Subject: [PATCH] Update pool on pool create if it exists As of now on PUT, zaqar server updates pool if it is already exists else it will create a new one. However zaqar client return previous pool info if it is already exists. This result to a confusion for operator. The zaqar client should maitain symmetry with zaqar server. Change-Id: I0e7311321630c3f931cf27b0828394589eaf7320 Partial-Bug: #1532776 --- zaqarclient/queues/v1/pool.py | 28 ++++++++++++---------------- zaqarclient/tests/queues/pool.py | 31 +++++++++++++++++-------------- 2 files changed, 29 insertions(+), 30 deletions(-) diff --git a/zaqarclient/queues/v1/pool.py b/zaqarclient/queues/v1/pool.py index 5e0314a7..52724cf4 100644 --- a/zaqarclient/queues/v1/pool.py +++ b/zaqarclient/queues/v1/pool.py @@ -14,7 +14,6 @@ # limitations under the License. from zaqarclient.queues.v1 import core -from zaqarclient.transport import errors class Pool(object): @@ -41,24 +40,21 @@ class Pool(object): right after it was called. """ req, trans = self.client._request_and_transport() + # As of now on PUT, zaqar server updates pool if it is already + # exists else it will create a new one. The zaqar client should + # maitain symmetry with zaqar server. + # TBD(mdnadeem): Have to change this code when zaqar server + # behaviour change for PUT operation. - try: - pool = core.pool_get(trans, req, self.name) - self.uri = pool["uri"] - self.weight = pool["weight"] - self.group = pool.get("group", None) - self.options = pool.get("options", {}) + data = {'uri': self.uri, + 'weight': self.weight, + 'options': self.options} - except errors.ResourceNotFound: - data = {'uri': self.uri, - 'weight': self.weight, - 'options': self.options} + if self.client.api_version >= 1.1 and self.group: + data['group'] = self.group - if self.client.api_version >= 1.1 and self.group: - data['group'] = self.group - - req, trans = self.client._request_and_transport() - core.pool_create(trans, req, self.name, data) + req, trans = self.client._request_and_transport() + core.pool_create(trans, req, self.name, data) def update(self, pool_data): req, trans = self.client._request_and_transport() diff --git a/zaqarclient/tests/queues/pool.py b/zaqarclient/tests/queues/pool.py index c2629ce4..40fe5caf 100644 --- a/zaqarclient/tests/queues/pool.py +++ b/zaqarclient/tests/queues/pool.py @@ -18,7 +18,6 @@ import mock from zaqarclient.queues.v1 import iterator from zaqarclient.tests.queues import base -from zaqarclient.transport import errors from zaqarclient.transport import response @@ -32,7 +31,7 @@ class QueuesV1PoolUnitTest(base.QueuesTestBase): autospec=True) as send_method: resp = response.Response(None, None) - send_method.side_effect = iter([errors.ResourceNotFound, resp]) + send_method.return_value = resp # NOTE(flaper87): This will call # ensure exists in the client instance @@ -43,6 +42,7 @@ class QueuesV1PoolUnitTest(base.QueuesTestBase): def test_pool_get(self): pool_data = {'weight': 10, + 'name': 'test', 'uri': 'sqlite://', 'options': {}} @@ -55,9 +55,11 @@ class QueuesV1PoolUnitTest(base.QueuesTestBase): # NOTE(flaper87): This will call # ensure exists in the client instance # since auto_create's default is True + pool = self.client.pool('test') - self.assertEqual('test', pool.name) - self.assertEqual(10, pool.weight) + pool1 = pool.get() + self.assertEqual('test', pool1['name']) + self.assertEqual(10, pool1['weight']) def test_pool_update(self): pool_data = {'weight': 10, @@ -130,21 +132,22 @@ class QueuesV1_1PoolFunctionalTest(base.QueuesTestBase): 'group': 'us', 'uri': 'mongodb://127.0.0.1:27017'} - self.client.pool('test', **pool_data) - pool = self.client.pool('test') + pool = self.client.pool('FuncTestPool', **pool_data) + resp_data = pool.get() + self.addCleanup(pool.delete) - self.assertEqual('test', pool.name) - self.assertEqual(10, pool.weight) - self.assertEqual('mongodb://127.0.0.1:27017', pool.uri) + self.assertEqual('FuncTestPool', resp_data['name']) + self.assertEqual(10, resp_data['weight']) + self.assertEqual('mongodb://127.0.0.1:27017', resp_data['uri']) def test_pool_create(self): pool_data = {'weight': 10, 'group': 'us', 'uri': 'mongodb://127.0.0.1:27017'} - pool = self.client.pool('test', **pool_data) + pool = self.client.pool('FuncTestPool', **pool_data) self.addCleanup(pool.delete) - self.assertEqual('test', pool.name) + self.assertEqual('FuncTestPool', pool.name) self.assertEqual(10, pool.weight) def test_pool_update(self): @@ -152,7 +155,7 @@ class QueuesV1_1PoolFunctionalTest(base.QueuesTestBase): 'group': 'us', 'uri': 'mongodb://127.0.0.1:27017'} - pool = self.client.pool('test', **pool_data) + pool = self.client.pool('FuncTestPool', **pool_data) self.addCleanup(pool.delete) pool.update({'weight': 20}) self.assertEqual(20, pool.weight) @@ -161,7 +164,7 @@ class QueuesV1_1PoolFunctionalTest(base.QueuesTestBase): pool_data = {'weight': 10, 'group': 'us', 'uri': 'mongodb://127.0.0.1:27017'} - pool = self.client.pool('test', **pool_data) + pool = self.client.pool('FuncTestPool', **pool_data) self.addCleanup(pool.delete) pools = self.client.pools() @@ -173,7 +176,7 @@ class QueuesV1_1PoolFunctionalTest(base.QueuesTestBase): 'group': 'us', 'uri': 'mongodb://127.0.0.1:27017'} - pool = self.client.pool('test', **pool_data) + pool = self.client.pool('FuncTestPool', **pool_data) pool.delete()