Merge "Fix duplicated queues on multi pools"

This commit is contained in:
Jenkins 2015-09-18 22:54:27 +00:00 committed by Gerrit Code Review
commit ce731cfc71
2 changed files with 21 additions and 7 deletions

View File

@ -146,13 +146,14 @@ class QueueController(storage.Queue):
def all_pages():
cursor = self._pool_catalog._pools_ctrl.list(limit=0)
for pool in next(cursor):
yield next(self._pool_catalog.get_driver(pool['name'])
.queue_controller.list(
project=project,
marker=marker,
limit=limit,
detailed=detailed))
pools_list = list(next(cursor))
anypool = pools_list and pools_list[0]
yield next(self._pool_catalog.get_driver(anypool['name'])
.queue_controller.list(
project=project,
marker=marker,
limit=limit,
detailed=detailed))
# make a heap compared with 'name'
ls = heapq.merge(*[

View File

@ -12,6 +12,7 @@
# License for the specific language governing permissions and limitations under
# the License.
import mock
import uuid
from zaqar.openstack.common.cache import cache as oslo_cache
@ -105,3 +106,15 @@ class PoolCatalogTest(testing.TestBase):
self.catalog.register,
'test', project=self.project,
flavor='fake')
def test_queues_list_on_multi_pools(self):
def fake_list(project=None, marker=None, limit=10, detailed=False):
yield iter([{'name': 'fake_queue'}])
list_str = 'zaqar.storage.mongodb.queues.QueueController.list'
with mock.patch(list_str) as queues_list:
queues_list.side_effect = fake_list
queue_controller = pooling.QueueController(self.catalog)
result = queue_controller.list(project=self.project)
queue_list = list(next(result))
self.assertEqual(1, len(queue_list))