Browse Source

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
changes/91/229991/2
Victor Stinner 7 years ago
parent
commit
2e20e70e14
  1. 2
      cinder/volume/throttling.py
  2. 1
      tox.ini

2
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')

1
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 \

Loading…
Cancel
Save