Merge "Add hadoop_version validation to sahara resources"
This commit is contained in:
commit
fa7ddec112
@ -52,6 +52,17 @@ class SaharaClientPlugin(client_plugin.ClientPlugin):
|
||||
client = sahara_client.Client('1.1', **args)
|
||||
return client
|
||||
|
||||
def validate_hadoop_version(self, plugin_name, hadoop_version):
|
||||
plugin = self.client().plugins.get(plugin_name)
|
||||
allowed_versions = plugin.versions
|
||||
if hadoop_version not in allowed_versions:
|
||||
msg = (_("Requested plugin '%(plugin)s' doesn\'t support version "
|
||||
"'%(version)s'. Allowed versions are %(allowed)s") %
|
||||
{'plugin': plugin_name,
|
||||
'version': hadoop_version,
|
||||
'allowed': ', '.join(allowed_versions)})
|
||||
raise exception.StackValidationFailed(message=msg)
|
||||
|
||||
def is_not_found(self, ex):
|
||||
return (isinstance(ex, sahara_base.APIException) and
|
||||
ex.error_code == 404)
|
||||
|
@ -230,6 +230,11 @@ class SaharaCluster(resource.Resource):
|
||||
) % self.MANAGEMENT_NETWORK
|
||||
raise exception.StackValidationFailed(message=msg)
|
||||
|
||||
self.client_plugin().validate_hadoop_version(
|
||||
self.properties[self.PLUGIN_NAME],
|
||||
self.properties[self.HADOOP_VERSION]
|
||||
)
|
||||
|
||||
|
||||
def resource_mapping():
|
||||
return {
|
||||
|
@ -265,6 +265,11 @@ class SaharaNodeGroupTemplate(resource.Resource):
|
||||
message=ex.message)
|
||||
raise
|
||||
|
||||
self.client_plugin().validate_hadoop_version(
|
||||
self.properties[self.PLUGIN_NAME],
|
||||
self.properties[self.HADOOP_VERSION]
|
||||
)
|
||||
|
||||
|
||||
class SaharaClusterTemplate(resource.Resource):
|
||||
|
||||
@ -429,6 +434,11 @@ class SaharaClusterTemplate(resource.Resource):
|
||||
) % self.MANAGEMENT_NETWORK
|
||||
raise exception.StackValidationFailed(message=msg)
|
||||
|
||||
self.client_plugin().validate_hadoop_version(
|
||||
self.properties[self.PLUGIN_NAME],
|
||||
self.properties[self.HADOOP_VERSION]
|
||||
)
|
||||
|
||||
|
||||
def resource_mapping():
|
||||
return {
|
||||
|
@ -135,6 +135,25 @@ class SaharaUtilsTests(common.HeatTestCase):
|
||||
calls = [mock.call(plugin_name), mock.call('noplugin')]
|
||||
self.sahara_client.plugins.get.assert_has_calls(calls)
|
||||
|
||||
def test_validate_hadoop_version(self):
|
||||
"""Tests the validate_hadoop_version function."""
|
||||
versions = ['1.2.1', '2.6.0', '2.7.1']
|
||||
plugin_name = 'vanilla'
|
||||
self.my_plugin.name = plugin_name
|
||||
self.my_plugin.versions = versions
|
||||
|
||||
self.sahara_client.plugins.get.return_value = self.my_plugin
|
||||
self.assertIsNone(self.sahara_plugin.validate_hadoop_version(
|
||||
plugin_name, '2.6.0'))
|
||||
ex = self.assertRaises(exception.StackValidationFailed,
|
||||
self.sahara_plugin.validate_hadoop_version,
|
||||
plugin_name, '1.2.3')
|
||||
self.assertEqual("Requested plugin 'vanilla' doesn't support version "
|
||||
"'1.2.3'. Allowed versions are 1.2.1, 2.6.0, 2.7.1",
|
||||
six.text_type(ex))
|
||||
calls = [mock.call(plugin_name), mock.call(plugin_name)]
|
||||
self.sahara_client.plugins.get.assert_has_calls(calls)
|
||||
|
||||
|
||||
class ImageConstraintTest(common.HeatTestCase):
|
||||
|
||||
|
@ -68,6 +68,8 @@ class SaharaClusterTest(common.HeatTestCase):
|
||||
self.sahara_mock = mock.MagicMock()
|
||||
self.patchobject(sahara.SaharaClientPlugin, '_create'
|
||||
).return_value = self.sahara_mock
|
||||
self.patchobject(sahara.SaharaClientPlugin, 'validate_hadoop_version'
|
||||
).return_value = None
|
||||
self.cl_mgr = self.sahara_mock.clusters
|
||||
self.fake_cl = FakeCluster()
|
||||
|
||||
|
@ -114,6 +114,8 @@ class SaharaNodeGroupTemplateTest(common.HeatTestCase):
|
||||
self.ngt_mgr = sahara_mock.node_group_templates
|
||||
self.patchobject(sahara.SaharaClientPlugin,
|
||||
'_create').return_value = sahara_mock
|
||||
self.patchobject(sahara.SaharaClientPlugin, 'validate_hadoop_version'
|
||||
).return_value = None
|
||||
self.fake_ngt = FakeNodeGroupTemplate()
|
||||
|
||||
self.t = template_format.parse(node_group_template)
|
||||
@ -256,6 +258,8 @@ class SaharaClusterTemplateTest(common.HeatTestCase):
|
||||
self.ct_mgr = sahara_mock.cluster_templates
|
||||
self.patchobject(sahara.SaharaClientPlugin,
|
||||
'_create').return_value = sahara_mock
|
||||
self.patchobject(sahara.SaharaClientPlugin, 'validate_hadoop_version'
|
||||
).return_value = None
|
||||
self.fake_ct = FakeClusterTemplate()
|
||||
|
||||
self.t = template_format.parse(cluster_template)
|
||||
|
Loading…
x
Reference in New Issue
Block a user