summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-07-07 11:42:01 +0000
committerGerrit Code Review <review@openstack.org>2016-07-07 11:42:01 +0000
commit8fe824e4e3eb475e93154ef919d23bf2e8c20469 (patch)
treea9a94f85a56355e54da4cdd1c1d2cb47e18588b8
parent84e63543e17f6304f0ac07349623464d38fb5b92 (diff)
parent4b6818dc62669d0ca62779ae71e64fcfacbf9850 (diff)
downloadglance_store-8fe824e4e3eb475e93154ef919d23bf2e8c20469.tar.gz
Merge "Check that size is a number"
-rw-r--r--glance_store/_drivers/sheepdog.py3
-rw-r--r--glance_store/tests/unit/test_sheepdog_store.py12
2 files changed, 15 insertions, 0 deletions
diff --git a/glance_store/_drivers/sheepdog.py b/glance_store/_drivers/sheepdog.py
index 95da403..7f0512d 100644
--- a/glance_store/_drivers/sheepdog.py
+++ b/glance_store/_drivers/sheepdog.py
@@ -18,6 +18,7 @@
import hashlib
import logging
+import six
from oslo_concurrency import processutils
from oslo_config import cfg
@@ -109,6 +110,8 @@ class SheepdogImage(object):
Sheepdog Usage: collie vdi create -a address -p port image size
"""
+ if not isinstance(size, (six.integer_types, float)):
+ raise exceptions.Forbidden("Size is not a number")
self._run_command("create", None, str(size))
def resize(self, size):
diff --git a/glance_store/tests/unit/test_sheepdog_store.py b/glance_store/tests/unit/test_sheepdog_store.py
index 59f7b6f..29e9021 100644
--- a/glance_store/tests/unit/test_sheepdog_store.py
+++ b/glance_store/tests/unit/test_sheepdog_store.py
@@ -104,6 +104,18 @@ class TestSheepdogStore(base.StoreBaseTest,
mock_create.assert_called_once_with(2)
mock_write.assert_called_once_with(b'xx', 0, 2)
+ @mock.patch.object(sheepdog.SheepdogImage, 'write')
+ @mock.patch.object(sheepdog.SheepdogImage, 'exist')
+ def test_add_bad_size_with_image(self, mock_exist, mock_write):
+ data = six.BytesIO(b'xx')
+ mock_exist.return_value = False
+
+ self.assertRaises(exceptions.Forbidden, self.store.add,
+ 'fake_image_id', data, 'test')
+
+ mock_exist.assert_called_once_with()
+ self.assertEqual(mock_write.call_count, 0)
+
@mock.patch.object(sheepdog.SheepdogImage, 'delete')
@mock.patch.object(sheepdog.SheepdogImage, 'write')
@mock.patch.object(sheepdog.SheepdogImage, 'create')