From: Victor Stinner Date: Thu, 1 Oct 2015 16:04:30 +0000 (+0200) Subject: Fix volume throttling to Python 3 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=2e20e70e1430b1f05a98616ba47464829e764390;p=openstack-build%2Fcinder-build.git Fix volume throttling to Python 3 BlkioCgroup._set_limits(): sort devices before iterating on them to have a reliable behaviour. The devs variable is a dictionary. On Python 3, the hash function is now randomized, so iterating on a dictionary gives items in a random order. Use sorted() to iterate on the list of sorted devices instead. tox.ini: add cinder.tests.unit.test_volume_throttling to Python 3. Blueprint cinder-python3 Partial-Bug: #1348818 Change-Id: Icf7141f772397c7ac08f0f1e21ad74cb86a06351 --- diff --git a/cinder/volume/throttling.py b/cinder/volume/throttling.py index 21c19956e..b8ce5705a 100644 --- a/cinder/volume/throttling.py +++ b/cinder/volume/throttling.py @@ -90,7 +90,7 @@ class BlkioCgroup(Throttle): def _set_limits(self, rw, devs): total = sum(devs.values()) - for dev in devs: + for dev in sorted(devs): self._limit_bps(rw, dev, self.bps_limit * devs[dev] / total) @utils.synchronized('BlkioCgroup') diff --git a/tox.ini b/tox.ini index 720d14492..d86012f20 100644 --- a/tox.ini +++ b/tox.ini @@ -103,6 +103,7 @@ commands = cinder.tests.unit.test_volume_configuration \ cinder.tests.unit.test_volume_glance_metadata \ cinder.tests.unit.test_volume_rpcapi \ + cinder.tests.unit.test_volume_throttling \ cinder.tests.unit.test_volume_transfer \ cinder.tests.unit.test_volume_types \ cinder.tests.unit.test_volume_types_extra_specs \