summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorValerii Ponomarov <vponomar@redhat.com>2018-10-22 11:27:09 +0000
committerGerrit Code Review <gerrit2@gerrit.host.prod.eng.bos.redhat.com>2018-10-22 11:27:09 +0000
commit0a73e5b6b3a142b747473651c28c33f99f4a5b13 (patch)
tree77d737574e9c4aa0f186b2cda422d8928ca660c0
parentc71f7515325f8145f41146f7482313ce567a0b8c (diff)
parent2efe6caab6e6ca4aa79a9fad12acd113e6c082b0 (diff)
Merge "[CNS-550] Try to create block volume exceeding free space"
-rw-r--r--cns-libs/cnslibs/common/heketi_ops.py4
-rw-r--r--tests/functional/common/heketi/heketi_tests/test_heketi_create_volume.py38
2 files changed, 40 insertions, 2 deletions
diff --git a/cns-libs/cnslibs/common/heketi_ops.py b/cns-libs/cnslibs/common/heketi_ops.py
index 3c3646ed..2eceb34a 100644
--- a/cns-libs/cnslibs/common/heketi_ops.py
+++ b/cns-libs/cnslibs/common/heketi_ops.py
@@ -2000,9 +2000,9 @@ def heketi_blockvolume_create(heketi_client_node, heketi_server_url, size,
if mode == 'cli':
cmd = ("heketi-cli -s %s blockvolume create --size=%s %s %s %s %s "
- "%s %s %s" % (heketi_server_url, str(size), auth_arg,
+ "%s %s %s %s" % (heketi_server_url, str(size), auth_arg,
clusters_arg, ha_arg, name_arg, name_arg,
- admin_key, user))
+ admin_key, user, json_arg))
ret, out, _ = g.run(heketi_client_node, cmd)
if ret != 0:
diff --git a/tests/functional/common/heketi/heketi_tests/test_heketi_create_volume.py b/tests/functional/common/heketi/heketi_tests/test_heketi_create_volume.py
index 38f6c4e9..90ae7b51 100644
--- a/tests/functional/common/heketi/heketi_tests/test_heketi_create_volume.py
+++ b/tests/functional/common/heketi/heketi_tests/test_heketi_create_volume.py
@@ -8,6 +8,8 @@ from cnslibs.common.heketi_ops import (heketi_volume_create,
heketi_volume_list,
heketi_volume_info,
heketi_volume_delete,
+ heketi_blockvolume_create,
+ heketi_blockvolume_delete,
heketi_cluster_list,
heketi_cluster_delete,
heketi_node_list,
@@ -196,3 +198,39 @@ class TestHeketiVolume(HeketiClientSetupBaseClass):
self.heketi_server_url)
self.assertTrue(node_list, ("Failed to list heketi nodes"))
g.log.info("Successfully got the list of nodes")
+
+ def test_blockvolume_create_no_free_space(self):
+ """Test case CNS-550"""
+
+ # Create first small blockvolume
+ blockvol1 = heketi_blockvolume_create(
+ self.heketi_client_node, self.heketi_server_url, 1, json=True)
+ self.assertTrue(blockvol1, "Failed to create block volume.")
+ self.addCleanup(
+ heketi_blockvolume_delete, self.heketi_client_node,
+ self.heketi_server_url, blockvol1['id'])
+
+ # Get info about block hosting volume available space
+ file_volumes = heketi_volume_list(
+ self.heketi_client_node, self.heketi_server_url, json=True)
+ self.assertTrue(file_volumes)
+ max_freesize = 0
+ for vol_id in file_volumes["volumes"]:
+ vol = heketi_volume_info(
+ self.heketi_client_node, self.heketi_server_url,
+ vol_id, json=True)
+ current_freesize = vol.get("blockinfo", {}).get("freesize", 0)
+ if current_freesize > max_freesize:
+ max_freesize = current_freesize
+ self.assertGreater(max_freesize, 0)
+
+ # Try to create blockvolume with size bigger than available
+ too_big_vol_size = max_freesize + 1
+ blockvol2 = heketi_blockvolume_create(
+ self.heketi_client_node, self.heketi_server_url,
+ too_big_vol_size, json=True)
+ if blockvol2 and blockvol2.get('id'):
+ self.addCleanup(
+ heketi_blockvolume_delete, self.heketi_client_node,
+ self.heketi_server_url, blockvol2['id'])
+ self.assertFalse(blockvol2, 'Volume unexpectedly was created')