From 1bb6c999a19e582af3e088fcab98159fc7dfd18d Mon Sep 17 00:00:00 2001 From: Vitaly Gridnev Date: Sat, 25 Jun 2016 19:05:12 +0300 Subject: [PATCH] forbid cluster creation without secondarynamenode if ambari blueprint was submitted without secondary namenode, we will recieve ValidationError. This affects only clusters without enabled HA mode. Change-Id: I88d429b9b5ba509dc6f3983f442659e0ec8af141 Closes-bug: 1596113 --- sahara/plugins/ambari/validation.py | 6 ++++++ sahara/tests/unit/plugins/ambari/test_validation.py | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/sahara/plugins/ambari/validation.py b/sahara/plugins/ambari/validation.py index 373e506a..6f84303f 100644 --- a/sahara/plugins/ambari/validation.py +++ b/sahara/plugins/ambari/validation.py @@ -53,6 +53,7 @@ def _check_ambari(cluster): def _check_hdfs(cluster): nn_count = utils.get_instances_count(cluster, common.NAMENODE) dn_count = utils.get_instances_count(cluster, common.DATANODE) + snn_count = utils.get_instances_count(cluster, common.SECONDARY_NAMENODE) if cluster.cluster_configs.get("general", {}).get(common.NAMENODE_HA): _check_zk_ha(cluster) @@ -65,6 +66,11 @@ def _check_hdfs(cluster): if nn_count != 1: raise ex.InvalidComponentCountException(common.NAMENODE, 1, nn_count) + + if snn_count != 1: + raise ex.InvalidComponentCountException(common.SECONDARY_NAMENODE, + 1, snn_count) + if dn_count == 0: raise ex.InvalidComponentCountException( common.DATANODE, _("1 or more"), dn_count) diff --git a/sahara/tests/unit/plugins/ambari/test_validation.py b/sahara/tests/unit/plugins/ambari/test_validation.py index 86fdef96..258fe31c 100644 --- a/sahara/tests/unit/plugins/ambari/test_validation.py +++ b/sahara/tests/unit/plugins/ambari/test_validation.py @@ -47,7 +47,8 @@ class AmbariValidationTestCase(base.SaharaTestCase): p_common.RESOURCEMANAGER, p_common.NODEMANAGER, p_common.HISTORYSERVER, - p_common.APP_TIMELINE_SERVER]}) + p_common.APP_TIMELINE_SERVER, + p_common.SECONDARY_NAMENODE]}) cluster.cluster_configs = {"general": {}} with mock.patch("sahara.plugins.ambari.validation.conductor") as p: p.cluster_get = mock.Mock()