From b2acb1d89fb24817892dc62fad3939fc3bd75595 Mon Sep 17 00:00:00 2001 From: yuyafei Date: Thu, 30 Jun 2016 19:04:25 +0800 Subject: [PATCH] EMC ScaleIO should return ceiling of volume size The function _get_volume_size returns the floor of volume size in EMC ScaleIO driver. This patch fixes it by returning the ceiling of volume size. Change-Id: I9cdd4437305df4526404029fab00403eb9b21692 Closes-Bug: #1591598 --- .../unit/volume/drivers/emc/scaleio/test_manage_existing.py | 2 +- .../drivers/emc/scaleio/test_manage_existing_snapshot.py | 2 +- cinder/volume/drivers/emc/scaleio.py | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/cinder/tests/unit/volume/drivers/emc/scaleio/test_manage_existing.py b/cinder/tests/unit/volume/drivers/emc/scaleio/test_manage_existing.py index 42ba1d0a1e5..bf00cc49ed6 100644 --- a/cinder/tests/unit/volume/drivers/emc/scaleio/test_manage_existing.py +++ b/cinder/tests/unit/volume/drivers/emc/scaleio/test_manage_existing.py @@ -48,7 +48,7 @@ class TestManageExisting(scaleio.TestScaleIODriver): 'instances/Volume::' + self.volume['provider_id']: mocks.MockHTTPSResponse({ 'id': fake.PROVIDER_ID, - 'sizeInKb': 8388608, + 'sizeInKb': 8000000, 'mappedSdcInfo': None }, 200) }, diff --git a/cinder/tests/unit/volume/drivers/emc/scaleio/test_manage_existing_snapshot.py b/cinder/tests/unit/volume/drivers/emc/scaleio/test_manage_existing_snapshot.py index 33521bcebe0..26adc8d41fa 100644 --- a/cinder/tests/unit/volume/drivers/emc/scaleio/test_manage_existing_snapshot.py +++ b/cinder/tests/unit/volume/drivers/emc/scaleio/test_manage_existing_snapshot.py @@ -58,7 +58,7 @@ class TestManageExistingSnapshot(scaleio.TestScaleIODriver): 'instances/Volume::' + self.snapshot['provider_id']: mocks.MockHTTPSResponse({ 'id': fake.PROVIDER2_ID, - 'sizeInKb': 8388608, + 'sizeInKb': 8000000, 'mappedSdcInfo': None, 'ancestorVolumeId': fake.PROVIDER_ID }, 200), diff --git a/cinder/volume/drivers/emc/scaleio.py b/cinder/volume/drivers/emc/scaleio.py index 346c6645c39..16dedd1c674 100644 --- a/cinder/volume/drivers/emc/scaleio.py +++ b/cinder/volume/drivers/emc/scaleio.py @@ -19,6 +19,7 @@ Driver for EMC ScaleIO based on ScaleIO remote CLI. import base64 import binascii import json +import math from os_brick.initiator import connector from oslo_config import cfg @@ -1078,7 +1079,7 @@ class ScaleIODriver(driver.VolumeDriver): def _get_volume_size(self, volume, existing_ref): response = self._query_scaleio_volume(volume, existing_ref) - return int(response['sizeInKb'] / units.Mi) + return int(math.ceil(float(response['sizeInKb']) / units.Mi)) def _execute_scaleio_get_request(self, request): r = requests.get(