Improving node group templates validation
* Enabling node group templates update validation if plugin_name is not updated * Adding check for volumes_size parameter if volumes_per_node is specified * Adding ability to change plugin version without changing a plugin Closes-Bug: #1494730 Partially-bug: #1494728 Change-Id: If6db35611e5b1501ca6485d0f40bb6c3b65561b8
This commit is contained in:
parent
57ddf86431
commit
472e8627c6
@ -150,6 +150,10 @@ def check_node_group_basic_fields(plugin_name, hadoop_version, ng,
|
|||||||
if ng.get('volume_type'):
|
if ng.get('volume_type'):
|
||||||
check_volume_type_exists(ng['volume_type'])
|
check_volume_type_exists(ng['volume_type'])
|
||||||
|
|
||||||
|
if not ng.get('volumes_size'):
|
||||||
|
raise ex.InvalidReferenceException(
|
||||||
|
_("You must specify a volumes_size parameter"))
|
||||||
|
|
||||||
if ng.get('floating_ip_pool'):
|
if ng.get('floating_ip_pool'):
|
||||||
check_floatingip_pool_exists(ng['name'], ng['floating_ip_pool'])
|
check_floatingip_pool_exists(ng['name'], ng['floating_ip_pool'])
|
||||||
|
|
||||||
|
@ -57,23 +57,27 @@ def check_node_group_template_usage(node_group_template_id, **kwargs):
|
|||||||
'clusters': cluster_users and ', '.join(cluster_users) or 'N/A'})
|
'clusters': cluster_users and ', '.join(cluster_users) or 'N/A'})
|
||||||
|
|
||||||
|
|
||||||
def check_node_group_template_update(data, **kwargs):
|
def check_node_group_template_update(node_group_template_id, data, **kwargs):
|
||||||
if data.get('plugin_name') and not data.get('hadoop_version'):
|
if data.get('plugin_name') and not data.get('hadoop_version'):
|
||||||
raise ex.InvalidReferenceException(
|
raise ex.InvalidReferenceException(
|
||||||
_("You must specify a hadoop_version value"
|
_("You must specify a hadoop_version value "
|
||||||
"for your plugin_name"))
|
"for your plugin_name"))
|
||||||
|
|
||||||
if data.get('hadoop_version') and not data.get('plugin_name'):
|
|
||||||
raise ex.InvalidReferenceException(
|
|
||||||
_("You must specify a plugin_name"
|
|
||||||
"for your hadoop_version value"))
|
|
||||||
|
|
||||||
if data.get('plugin_name'):
|
if data.get('plugin_name'):
|
||||||
b.check_plugin_name_exists(data['plugin_name'])
|
plugin = data.get('plugin_name')
|
||||||
b.check_plugin_supports_version(data['plugin_name'],
|
version = data.get('hadoop_version')
|
||||||
data['hadoop_version'])
|
b.check_plugin_name_exists(plugin)
|
||||||
b.check_node_group_basic_fields(data['plugin_name'],
|
b.check_plugin_supports_version(plugin, version)
|
||||||
data['hadoop_version'], data)
|
else:
|
||||||
|
ngt = api.get_node_group_template(node_group_template_id)
|
||||||
|
plugin = ngt.plugin_name
|
||||||
|
if data.get('hadoop_version'):
|
||||||
|
version = data.get('hadoop_version')
|
||||||
|
b.check_plugin_supports_version(plugin, version)
|
||||||
|
else:
|
||||||
|
version = ngt.hadoop_version
|
||||||
|
|
||||||
|
b.check_node_group_basic_fields(plugin, version, data)
|
||||||
|
|
||||||
if data.get('shares'):
|
if data.get('shares'):
|
||||||
shares.check_shares(data['shares'])
|
shares.check_shares(data['shares'])
|
||||||
|
@ -418,6 +418,7 @@ class TestClusterCreateValidation(u.ValidationTestCase):
|
|||||||
'd9a3bebc-f788-4b81-9a93-aa048022c1ca',
|
'd9a3bebc-f788-4b81-9a93-aa048022c1ca',
|
||||||
'availability_zone': 'nova',
|
'availability_zone': 'nova',
|
||||||
'volumes_per_node': 1,
|
'volumes_per_node': 1,
|
||||||
|
'volumes_size': 1,
|
||||||
'volumes_availability_zone': 'nova'
|
'volumes_availability_zone': 'nova'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -336,3 +336,17 @@ class TestNGTemplateCreateValidation(u.ValidationTestCase):
|
|||||||
bad_req_i=(1, 'NOT_FOUND', "Floating IP pool network_bad "
|
bad_req_i=(1, 'NOT_FOUND', "Floating IP pool network_bad "
|
||||||
"not found")
|
"not found")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_volumes_per_node_without_volumes_size(self):
|
||||||
|
self._assert_create_object_validation(
|
||||||
|
data={
|
||||||
|
'name': 'a',
|
||||||
|
'flavor_id': '42',
|
||||||
|
'plugin_name': 'fake',
|
||||||
|
'hadoop_version': '0.1',
|
||||||
|
'node_processes': ['datanode', 'tasktracker'],
|
||||||
|
'volumes_per_node': 1
|
||||||
|
},
|
||||||
|
bad_req_i=(1, 'INVALID_REFERENCE', "You must specify a "
|
||||||
|
"volumes_size parameter")
|
||||||
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user