]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commitdiff
Fix bug in sheepdog driver: the wrong volume size
authorustcdylan <liujunwei@chinamobile.com>
Sat, 6 Dec 2014 14:23:21 +0000 (22:23 +0800)
committerustcdylan <liujunwei@chinamobile.com>
Tue, 13 Jan 2015 11:59:35 +0000 (19:59 +0800)
We give a volume size when create a volume from an snapshot,
but the sheepdog driver ignores the size.

Change-Id: I4310e7ef07e98c002ad3494e623ea243e3aad468
Closes-Bug: #1399598

cinder/tests/test_sheepdog.py
cinder/volume/drivers/sheepdog.py

index ccedc27b20a6d49be7e6badb6b4059f8a11fce29..97fb768041ae64d1f04fbc8684ab7475acafbe19 100644 (file)
@@ -17,6 +17,7 @@
 
 import contextlib
 
+import mock
 from oslo.utils import units
 from oslo_concurrency import processutils
 
@@ -139,3 +140,25 @@ class SheepdogTestCase(test.TestCase):
         self.driver.extend_volume(fake_vol, fake_size)
 
         self.mox.VerifyAll()
+
+    def test_create_volume_from_snapshot(self):
+        fake_name = u'volume-00000001'
+        fake_size = '10'
+        fake_vol = {'project_id': 'testprjid', 'name': fake_name,
+                    'size': fake_size,
+                    'id': 'a720b3c0-d1f0-11e1-9b23-0800200c9a66'}
+
+        ss_uuid = '00000000-0000-0000-0000-c3aa7ee01536'
+        fake_snapshot = {'volume_name': fake_name,
+                         'name': 'volume-%s' % ss_uuid,
+                         'id': ss_uuid,
+                         'size': fake_size}
+
+        with mock.patch.object(SheepdogDriver, '_try_execute') as mock_exe:
+            self.driver.create_volume_from_snapshot(fake_vol, fake_snapshot)
+            args = ['qemu-img', 'create', '-b',
+                    "sheepdog:%s:%s" % (fake_snapshot['volume_name'],
+                                        fake_snapshot['name']),
+                    "sheepdog:%s" % fake_vol['name'],
+                    "%sG" % fake_vol['size']]
+            mock_exe.assert_called_once_with(*args)
index 026ee7f9e7faf1f55e4861642e44a21a250c52c2..3bafdbd3beca3e3ec62ad9a8c85c20b4e52ce0f8 100644 (file)
@@ -77,7 +77,8 @@ class SheepdogDriver(driver.VolumeDriver):
         self._try_execute('qemu-img', 'create', '-b',
                           "sheepdog:%s:%s" % (snapshot['volume_name'],
                                               snapshot['name']),
-                          "sheepdog:%s" % volume['name'])
+                          "sheepdog:%s" % volume['name'],
+                          '%sG' % volume['size'])
 
     def delete_volume(self, volume):
         """Delete a logical volume."""