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)<wkqwu@cn.ibm.com>
Co-Authored By: Ton Ngo<ton@us.ibm.com>

Partially-Implements: blueprint magnum-integrate-with-cinder
Depends-On: I52c97e2b04ac636ddac611e3677c4ea3972220eb
Change-Id: I25f1cd005a39950c47f31a8b925f664909b79ee3
This commit is contained in:
wangqun 2016-01-19 02:40:11 +00:00
parent a28251726d
commit 023d6aa930
2 changed files with 21 additions and 1 deletions

View File

@ -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)

View File

@ -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'),