From 023d6aa9302e9942e6a47fbbb9bd40aea2126140 Mon Sep 17 00:00:00 2001 From: wangqun Date: Tue, 19 Jan 2016 02:40:11 +0000 Subject: [PATCH] Validates baymodel volume_driver requests Instead of allowing any volume_driver value to be accepted by the baymodel API. When creating baymodel, the patch can limit the volume_driver value for the different coe. Kubernetes <=> volume_driver = "cinder" Swarm <=> volume_driver = "rexray" Mesos <=> volume_driver = "rexray" Co-Authored By: Kai Qiang Wu(Kennan) Co-Authored By: Ton Ngo Partially-Implements: blueprint magnum-integrate-with-cinder Depends-On: I52c97e2b04ac636ddac611e3677c4ea3972220eb Change-Id: I25f1cd005a39950c47f31a8b925f664909b79ee3 --- magnum/tests/functional/api/v1/test_baymodel.py | 8 ++++++++ magnum/tests/functional/common/datagen.py | 14 +++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/magnum/tests/functional/api/v1/test_baymodel.py b/magnum/tests/functional/api/v1/test_baymodel.py index 1e48cd8..4df7397 100644 --- a/magnum/tests/functional/api/v1/test_baymodel.py +++ b/magnum/tests/functional/api/v1/test_baymodel.py @@ -176,3 +176,11 @@ class BayModelTest(base.BaseMagnumTest): self.assertRaises( exceptions.BadRequest, self.baymodel_client.post_baymodel, gen_model) + + @testtools.testcase.attr('negative') + def test_create_baymodel_invalid_volume_driver(self): + gen_model = datagen.baymodel_data_with_valid_keypair_and_image_id() + gen_model.volume_driver = 'invalid_volume_driver' + self.assertRaises( + exceptions.BadRequest, + self.baymodel_client.post_baymodel, gen_model) diff --git a/magnum/tests/functional/common/datagen.py b/magnum/tests/functional/common/datagen.py index 89f1ba6..f5a1225 100644 --- a/magnum/tests/functional/common/datagen.py +++ b/magnum/tests/functional/common/datagen.py @@ -38,6 +38,16 @@ def gen_coe_dep_network_driver(coe): return driver_types[random.randrange(0, len(driver_types))] +def gen_coe_dep_volume_driver(coe): + allowed_driver_types = { + 'kubernetes': ['cinder', None], + 'swarm': ['rexray', None], + 'mesos': ['rexray', None], + } + driver_types = allowed_driver_types[coe] + return driver_types[random.randrange(0, len(driver_types))] + + def gen_random_port(): return random_int(49152, 65535) @@ -91,6 +101,7 @@ def baymodel_data(**kwargs): "coe": "swarm", "tls_disabled": False, "network_driver": None, + "volume_driver": None, "docker_volume_size": 3, "labels": {}, "fixed_network": "192.168.0.0/24", @@ -175,7 +186,8 @@ def valid_swarm_baymodel(): docker_volume_size=3, cluster_distro=None, ssh_authorized_key=None, external_network_id="public", http_proxy=None, https_proxy=None, no_proxy=None, - network_driver=None, labels={}, tls_disabled=False) + network_driver=None, volume_driver=None, labels={}, + tls_disabled=False) def bay_data(name=data_utils.rand_name('bay'),