You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by mr...@apache.org on 2017/09/11 04:39:33 UTC

[63/94] [abbrv] ambari git commit: AMBARI-21882. Throw an error if unsupported database JDBC driver is configured for HDP services. (stoader)

AMBARI-21882. Throw an error if unsupported database JDBC driver is configured for HDP services. (stoader)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/680f1148
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/680f1148
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/680f1148

Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 680f1148e8e0dac064b7b77f9fba77d7d5a3c448
Parents: 202eaed
Author: Toader, Sebastian <st...@hortonworks.com>
Authored: Wed Sep 6 15:07:49 2017 +0200
Committer: Toader, Sebastian <st...@hortonworks.com>
Committed: Wed Sep 6 15:07:49 2017 +0200

----------------------------------------------------------------------
 .../functions/setup_ranger_plugin_xml.py        |   1 +
 .../0.12.0.2.0/package/scripts/params_linux.py  |   2 +
 .../2.1.0.3.0/package/scripts/params_linux.py   |   2 +
 .../RANGER/0.4.0/package/scripts/params.py      |   2 +
 .../RANGER/1.0.0.3.0/package/scripts/params.py  |   2 +
 .../0.5.0.2.3/package/scripts/params.py         |   3 +
 .../1.0.0.3.0/package/scripts/params.py         |   3 +
 .../1.4.4.2.0/package/scripts/params_linux.py   |   2 +
 .../1.4.4.3.0/package/scripts/params_linux.py   |   2 +
 .../custom_actions/scripts/check_host.py        |   1 +
 .../HIVE/test_jdbc_driver_config.py             |  66 ++
 .../RANGER/test_db_flavor_config.py             |  63 ++
 .../RANGER_KMS/test_db_flavor_config.py         |  63 ++
 .../SQOOP/test_jdbc_driver_config.py            |  63 ++
 .../common-services/configs/hive_default.json   | 650 ++++++++++++++
 .../configs/hive_unsupported_jdbc_type.json     | 650 ++++++++++++++
 .../configs/ranger_admin_default.json           | 386 ++++++++
 .../ranger_admin_unsupported_db_flavor.json     | 386 ++++++++
 .../configs/ranger_kms_default.json             | 802 +++++++++++++++++
 .../ranger_kms_unsupported_db_flavor.json       | 802 +++++++++++++++++
 .../common-services/configs/sqoop_default.json  | 879 +++++++++++++++++++
 .../configs/sqoop_unsupported_jdbc_driver.json  | 879 +++++++++++++++++++
 .../test/python/custom_actions/TestCheckHost.py |  33 +
 23 files changed, 5742 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/680f1148/ambari-common/src/main/python/resource_management/libraries/functions/setup_ranger_plugin_xml.py
----------------------------------------------------------------------
diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/setup_ranger_plugin_xml.py b/ambari-common/src/main/python/resource_management/libraries/functions/setup_ranger_plugin_xml.py
index c80c577..485c1a6 100644
--- a/ambari-common/src/main/python/resource_management/libraries/functions/setup_ranger_plugin_xml.py
+++ b/ambari-common/src/main/python/resource_management/libraries/functions/setup_ranger_plugin_xml.py
@@ -284,6 +284,7 @@ def get_audit_configs(config):
     previous_jdbc_jar_name = default("/hostLevelParams/previous_custom_sqlanywhere_jdbc_name", None)
     audit_jdbc_url = format('jdbc:sqlanywhere:database={xa_audit_db_name};host={xa_db_host}')
     jdbc_driver = "sap.jdbc4.sqlanywhere.IDriver"
+  else: raise Fail(format("'{xa_audit_db_flavor}' db flavor not supported."))
 
   return jdbc_jar_name, previous_jdbc_jar_name, audit_jdbc_url, jdbc_driver
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/680f1148/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/params_linux.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/params_linux.py b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/params_linux.py
index 39c06f2..9ba1f99 100644
--- a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/params_linux.py
+++ b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/params_linux.py
@@ -49,6 +49,7 @@ from resource_management.libraries.functions.get_architecture import get_archite
 from resource_management.libraries.functions.version import get_major_version
 
 from resource_management.core.utils import PasswordString
+from resource_management.core.exceptions import Fail
 from resource_management.core.shell import checked_call
 from ambari_commons.credential_store_helper import get_password_from_credential_store
 
@@ -288,6 +289,7 @@ elif hive_jdbc_driver == "sap.jdbc4.sqlanywhere.IDriver":
   jdbc_jar_name = default("/hostLevelParams/custom_sqlanywhere_jdbc_name", None)
   hive_previous_jdbc_jar_name = default("/hostLevelParams/previous_custom_sqlanywhere_jdbc_name", None)
   sqla_db_used = True
+else: raise Fail(format("JDBC driver '{hive_jdbc_driver}' not supported."))
 
 default_mysql_jar_name = "mysql-connector-java.jar"
 default_mysql_target = format("{hive_lib}/{default_mysql_jar_name}")

http://git-wip-us.apache.org/repos/asf/ambari/blob/680f1148/ambari-server/src/main/resources/common-services/HIVE/2.1.0.3.0/package/scripts/params_linux.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HIVE/2.1.0.3.0/package/scripts/params_linux.py b/ambari-server/src/main/resources/common-services/HIVE/2.1.0.3.0/package/scripts/params_linux.py
index 90d9067..f6b676b 100644
--- a/ambari-server/src/main/resources/common-services/HIVE/2.1.0.3.0/package/scripts/params_linux.py
+++ b/ambari-server/src/main/resources/common-services/HIVE/2.1.0.3.0/package/scripts/params_linux.py
@@ -49,6 +49,7 @@ from resource_management.libraries.functions.get_architecture import get_archite
 
 from resource_management.core.utils import PasswordString
 from resource_management.core.shell import checked_call
+from resource_management.core.exceptions import Fail
 from ambari_commons.credential_store_helper import get_password_from_credential_store
 
 # Default log4j version; put config files under /etc/hive/conf
@@ -286,6 +287,7 @@ elif hive_jdbc_driver == "sap.jdbc4.sqlanywhere.IDriver":
   jdbc_jar_name = default("/hostLevelParams/custom_sqlanywhere_jdbc_name", None)
   hive_previous_jdbc_jar_name = default("/hostLevelParams/previous_custom_sqlanywhere_jdbc_name", None)
   sqla_db_used = True
+else: raise Fail(format("JDBC driver '{hive_jdbc_driver}' not supported."))
 
 default_mysql_jar_name = "mysql-connector-java.jar"
 default_mysql_target = format("{hive_lib}/{default_mysql_jar_name}")

http://git-wip-us.apache.org/repos/asf/ambari/blob/680f1148/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/params.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/params.py b/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/params.py
index d0f0974..5731e6c 100644
--- a/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/params.py
+++ b/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/params.py
@@ -29,6 +29,7 @@ from resource_management.libraries.functions.stack_features import check_stack_f
 from resource_management.libraries.functions.stack_features import get_stack_feature_version
 from resource_management.libraries.functions import StackFeature
 from resource_management.libraries.functions.get_bare_principal import get_bare_principal
+from resource_management.core.exceptions import Fail
 
 # a map of the Ambari role to the component name
 # for use with <stack-root>/current/<component>
@@ -199,6 +200,7 @@ elif db_flavor.lower() == 'sqla':
   previous_jdbc_jar_name = default("/hostLevelParams/previous_custom_sqlanywhere_jdbc_name", None)
   audit_jdbc_url = format('jdbc:sqlanywhere:database={ranger_auditdb_name};host={db_host}') if stack_supports_ranger_audit_db else None
   jdbc_dialect = "org.eclipse.persistence.platform.database.SQLAnywherePlatform"
+else: raise Fail(format("'{db_flavor}' db flavor not supported."))
 
 downloaded_custom_connector = format("{tmp_dir}/{jdbc_jar_name}")
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/680f1148/ambari-server/src/main/resources/common-services/RANGER/1.0.0.3.0/package/scripts/params.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/RANGER/1.0.0.3.0/package/scripts/params.py b/ambari-server/src/main/resources/common-services/RANGER/1.0.0.3.0/package/scripts/params.py
index 24f459c..b88f1a4 100644
--- a/ambari-server/src/main/resources/common-services/RANGER/1.0.0.3.0/package/scripts/params.py
+++ b/ambari-server/src/main/resources/common-services/RANGER/1.0.0.3.0/package/scripts/params.py
@@ -29,6 +29,7 @@ from resource_management.libraries.functions.stack_features import check_stack_f
 from resource_management.libraries.functions.stack_features import get_stack_feature_version
 from resource_management.libraries.functions import StackFeature
 from resource_management.libraries.functions.get_bare_principal import get_bare_principal
+from resource_management.core.exceptions import Fail
 
 # a map of the Ambari role to the component name
 # for use with <stack-root>/current/<component>
@@ -197,6 +198,7 @@ elif db_flavor.lower() == 'sqla':
   previous_jdbc_jar_name = default("/hostLevelParams/previous_custom_sqlanywhere_jdbc_name", None)
   audit_jdbc_url = format('jdbc:sqlanywhere:database={ranger_auditdb_name};host={db_host}') if stack_supports_ranger_audit_db else None
   jdbc_dialect = "org.eclipse.persistence.platform.database.SQLAnywherePlatform"
+else: raise Fail(format("'{db_flavor}' db flavor not supported."))
 
 downloaded_custom_connector = format("{tmp_dir}/{jdbc_jar_name}")
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/680f1148/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/package/scripts/params.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/package/scripts/params.py b/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/package/scripts/params.py
index 466646b..56003ad 100755
--- a/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/package/scripts/params.py
+++ b/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/package/scripts/params.py
@@ -32,6 +32,7 @@ from resource_management.libraries.functions.setup_ranger_plugin_xml import gene
 from resource_management.libraries.resources.hdfs_resource import HdfsResource
 from resource_management.libraries.functions import stack_select
 from resource_management.libraries.functions import get_kinit_path
+from resource_management.core.exceptions import Fail
 
 config  = Script.get_config()
 tmp_dir = Script.get_tmp_dir()
@@ -163,6 +164,7 @@ elif db_flavor == 'sqla':
   db_jdbc_url = format('jdbc:sqlanywhere:database={db_name};host={db_host}')
   db_jdbc_driver = "sap.jdbc4.sqlanywhere.IDriver"
   jdbc_dialect = "org.eclipse.persistence.platform.database.SQLAnywherePlatform"
+else: raise Fail(format("'{db_flavor}' db flavor not supported."))
 
 downloaded_custom_connector = format("{tmp_dir}/{jdbc_jar_name}")
 
@@ -210,6 +212,7 @@ if has_ranger_admin:
       xa_previous_jdbc_jar_name = default("/hostLevelParams/previous_custom_sqlanywhere_jdbc_name", None)
       audit_jdbc_url = format('jdbc:sqlanywhere:database={xa_audit_db_name};host={xa_db_host}')
       jdbc_driver = "sap.jdbc4.sqlanywhere.IDriver"
+    else: raise Fail(format("'{xa_audit_db_flavor}' db flavor not supported."))
 
   downloaded_connector_path = format("{tmp_dir}/{jdbc_jar}") if stack_supports_ranger_audit_db else None
   driver_source = format("{jdk_location}/{jdbc_jar}") if stack_supports_ranger_audit_db else None

http://git-wip-us.apache.org/repos/asf/ambari/blob/680f1148/ambari-server/src/main/resources/common-services/RANGER_KMS/1.0.0.3.0/package/scripts/params.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/RANGER_KMS/1.0.0.3.0/package/scripts/params.py b/ambari-server/src/main/resources/common-services/RANGER_KMS/1.0.0.3.0/package/scripts/params.py
index 003eee1..da8eb8c 100755
--- a/ambari-server/src/main/resources/common-services/RANGER_KMS/1.0.0.3.0/package/scripts/params.py
+++ b/ambari-server/src/main/resources/common-services/RANGER_KMS/1.0.0.3.0/package/scripts/params.py
@@ -32,6 +32,7 @@ from resource_management.libraries.functions.setup_ranger_plugin_xml import gene
 from resource_management.libraries.resources.hdfs_resource import HdfsResource
 from resource_management.libraries.functions import stack_select
 from resource_management.libraries.functions import get_kinit_path
+from resource_management.core.exceptions import Fail
 
 config  = Script.get_config()
 tmp_dir = Script.get_tmp_dir()
@@ -162,6 +163,7 @@ elif db_flavor == 'sqla':
   db_jdbc_url = format('jdbc:sqlanywhere:database={db_name};host={db_host}')
   db_jdbc_driver = "sap.jdbc4.sqlanywhere.IDriver"
   jdbc_dialect = "org.eclipse.persistence.platform.database.SQLAnywherePlatform"
+else: raise Fail(format("'{db_flavor}' db flavor not supported."))
 
 downloaded_custom_connector = format("{tmp_dir}/{jdbc_jar_name}")
 
@@ -209,6 +211,7 @@ if has_ranger_admin:
       xa_previous_jdbc_jar_name = default("/hostLevelParams/previous_custom_sqlanywhere_jdbc_name", None)
       audit_jdbc_url = format('jdbc:sqlanywhere:database={xa_audit_db_name};host={xa_db_host}')
       jdbc_driver = "sap.jdbc4.sqlanywhere.IDriver"
+    else: raise Fail(format("'{xa_audit_db_flavor}' db flavor not supported."))
 
   downloaded_connector_path = format("{tmp_dir}/{jdbc_jar}") if stack_supports_ranger_audit_db else None
   driver_source = format("{jdk_location}/{jdbc_jar}") if stack_supports_ranger_audit_db else None

http://git-wip-us.apache.org/repos/asf/ambari/blob/680f1148/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.2.0/package/scripts/params_linux.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.2.0/package/scripts/params_linux.py b/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.2.0/package/scripts/params_linux.py
index c1138b3..400c87c 100644
--- a/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.2.0/package/scripts/params_linux.py
+++ b/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.2.0/package/scripts/params_linux.py
@@ -28,6 +28,7 @@ from resource_management.libraries.functions import StackFeature
 from resource_management.libraries.functions.stack_features import check_stack_feature
 from resource_management.libraries.functions.expect import expect
 from resource_management.libraries.functions.setup_atlas_hook import has_atlas_in_cluster
+from resource_management.core.exceptions import Fail
 
 
 # a map of the Ambari role to the component name
@@ -117,6 +118,7 @@ if "jdbc_drivers" in config['configurations']['sqoop-env']:
         jdbc_name = default("/hostLevelParams/custom_hsqldb_jdbc_name", None)
         previous_jdbc_jar_name = default("/hostLevelParams/previous_custom_hsqldb_jdbc_name", None)
         jdbc_driver_name = "hsqldb"
+      else: raise Fail(format("JDBC driver '{driver_name}' not supported."))
     else:
       continue
     sqoop_jdbc_drivers_dict.append(jdbc_name)

http://git-wip-us.apache.org/repos/asf/ambari/blob/680f1148/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.3.0/package/scripts/params_linux.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.3.0/package/scripts/params_linux.py b/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.3.0/package/scripts/params_linux.py
index c1138b3..400c87c 100644
--- a/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.3.0/package/scripts/params_linux.py
+++ b/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.3.0/package/scripts/params_linux.py
@@ -28,6 +28,7 @@ from resource_management.libraries.functions import StackFeature
 from resource_management.libraries.functions.stack_features import check_stack_feature
 from resource_management.libraries.functions.expect import expect
 from resource_management.libraries.functions.setup_atlas_hook import has_atlas_in_cluster
+from resource_management.core.exceptions import Fail
 
 
 # a map of the Ambari role to the component name
@@ -117,6 +118,7 @@ if "jdbc_drivers" in config['configurations']['sqoop-env']:
         jdbc_name = default("/hostLevelParams/custom_hsqldb_jdbc_name", None)
         previous_jdbc_jar_name = default("/hostLevelParams/previous_custom_hsqldb_jdbc_name", None)
         jdbc_driver_name = "hsqldb"
+      else: raise Fail(format("JDBC driver '{driver_name}' not supported."))
     else:
       continue
     sqoop_jdbc_drivers_dict.append(jdbc_name)

http://git-wip-us.apache.org/repos/asf/ambari/blob/680f1148/ambari-server/src/main/resources/custom_actions/scripts/check_host.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/custom_actions/scripts/check_host.py b/ambari-server/src/main/resources/custom_actions/scripts/check_host.py
index a485415..3ca2909 100644
--- a/ambari-server/src/main/resources/custom_actions/scripts/check_host.py
+++ b/ambari-server/src/main/resources/custom_actions/scripts/check_host.py
@@ -319,6 +319,7 @@ class CheckHost(Script):
         jdbc_url = jdk_location + jdbc_driver_sqla_name
         jdbc_driver_class = JDBC_DRIVER_CLASS_SQLA
         jdbc_name = jdbc_driver_sqla_name
+    else: no_jdbc_error_message = format("'{db_name}' database type not supported.")
 
     if no_jdbc_error_message:
       Logger.warning(no_jdbc_error_message)

http://git-wip-us.apache.org/repos/asf/ambari/blob/680f1148/ambari-server/src/test/python/common-services/HIVE/test_jdbc_driver_config.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/common-services/HIVE/test_jdbc_driver_config.py b/ambari-server/src/test/python/common-services/HIVE/test_jdbc_driver_config.py
new file mode 100644
index 0000000..e4d81b1
--- /dev/null
+++ b/ambari-server/src/test/python/common-services/HIVE/test_jdbc_driver_config.py
@@ -0,0 +1,66 @@
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import os
+
+from resource_management.core.exceptions import Fail
+from stacks.utils.RMFTestCase import RMFTestCase
+
+import unittest
+
+class TestJdbcDriverConfig(RMFTestCase):
+  STACK_VERSION = "2.6"
+  CONFIG_DIR = os.path.join(os.path.dirname(__file__), '../configs')
+
+  def test_jdbc_type_0_12_0_2_0(self):
+    self.executeScript("HIVE/0.12.0.2.0/package/scripts/hive_server.py",
+                       classname="HiveServer",
+                       command="configure",
+                       target=RMFTestCase.TARGET_COMMON_SERVICES,
+                       stack_version=self.STACK_VERSION,
+                       config_file=os.path.join(self.CONFIG_DIR, "hive_default.json"))
+
+  def test_unsupported_jdbc_type_throws_error_0_12_0_2_0(self):
+    with self.assertRaises(Fail):
+      self.executeScript("HIVE/0.12.0.2.0/package/scripts/hive_server.py",
+                       classname="HiveServer",
+                       command="configure",
+                       target=RMFTestCase.TARGET_COMMON_SERVICES,
+                       stack_version=self.STACK_VERSION,
+                       config_file=os.path.join(self.CONFIG_DIR, "hive_unsupported_jdbc_type.json"))
+
+  def test_jdbc_type_2_1_0_3_0(self):
+    self.executeScript("HIVE/2.1.0.3.0/package/scripts/hive_server.py",
+                       classname="HiveServer",
+                       command="configure",
+                       target=RMFTestCase.TARGET_COMMON_SERVICES,
+                       stack_version=self.STACK_VERSION,
+                       config_file=os.path.join(self.CONFIG_DIR, "hive_default.json"))
+
+  def test_unsupported_jdbc_type_throws_error_2_1_0_3_0(self):
+    with self.assertRaises(Fail):
+      self.executeScript("HIVE/2.1.0.3.0/package/scripts/hive_server.py",
+                         classname="HiveServer",
+                         command="configure",
+                         target=RMFTestCase.TARGET_COMMON_SERVICES,
+                         stack_version=self.STACK_VERSION,
+                         config_file=os.path.join(self.CONFIG_DIR, "hive_unsupported_jdbc_type.json"))
+
+
+
+

http://git-wip-us.apache.org/repos/asf/ambari/blob/680f1148/ambari-server/src/test/python/common-services/RANGER/test_db_flavor_config.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/common-services/RANGER/test_db_flavor_config.py b/ambari-server/src/test/python/common-services/RANGER/test_db_flavor_config.py
new file mode 100644
index 0000000..568e3fd
--- /dev/null
+++ b/ambari-server/src/test/python/common-services/RANGER/test_db_flavor_config.py
@@ -0,0 +1,63 @@
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import os
+
+from resource_management.core.exceptions import Fail
+from stacks.utils.RMFTestCase import RMFTestCase
+
+import unittest
+
+class TestDbFlavorConfig(RMFTestCase):
+  STACK_VERSION = "2.6"
+  CONFIG_DIR = os.path.join(os.path.dirname(__file__), '../configs')
+
+
+  def test_db_flavor_0_4_0(self):
+    self.executeScript("RANGER/0.4.0/package/scripts/ranger_admin.py",
+                       classname="RangerAdmin",
+                       command="configure",
+                       target=RMFTestCase.TARGET_COMMON_SERVICES,
+                       stack_version=self.STACK_VERSION,
+                       config_file=os.path.join(self.CONFIG_DIR, "ranger_admin_default.json"))
+
+  def test_unsupported_db_flavor_0_4_0(self):
+    with self.assertRaises(Fail):
+      self.executeScript("RANGER/0.4.0/package/scripts/ranger_admin.py",
+                       classname="RangerAdmin",
+                       command="configure",
+                       target=RMFTestCase.TARGET_COMMON_SERVICES,
+                       stack_version=self.STACK_VERSION,
+                       config_file=os.path.join(self.CONFIG_DIR, "ranger_admin_unsupported_db_flavor.json"))
+
+  def test_db_flavor_1_0_0_3_0(self):
+    self.executeScript("RANGER/1.0.0.3.0/package/scripts/ranger_admin.py",
+                       classname="RangerAdmin",
+                       command="configure",
+                       target=RMFTestCase.TARGET_COMMON_SERVICES,
+                       stack_version=self.STACK_VERSION,
+                       config_file=os.path.join(self.CONFIG_DIR, "ranger_admin_default.json"))
+
+  def test_unsupported_db_flavor_1_0_0_3_0(self):
+    with self.assertRaises(Fail):
+      self.executeScript("RANGER/1.0.0.3.0/package/scripts/ranger_admin.py",
+                         classname="RangerAdmin",
+                         command="configure",
+                         target=RMFTestCase.TARGET_COMMON_SERVICES,
+                         stack_version=self.STACK_VERSION,
+                         config_file=os.path.join(self.CONFIG_DIR, "ranger_admin_unsupported_db_flavor.json"))
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/680f1148/ambari-server/src/test/python/common-services/RANGER_KMS/test_db_flavor_config.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/common-services/RANGER_KMS/test_db_flavor_config.py b/ambari-server/src/test/python/common-services/RANGER_KMS/test_db_flavor_config.py
new file mode 100644
index 0000000..48654ee
--- /dev/null
+++ b/ambari-server/src/test/python/common-services/RANGER_KMS/test_db_flavor_config.py
@@ -0,0 +1,63 @@
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import os
+
+from resource_management.core.exceptions import Fail
+from stacks.utils.RMFTestCase import RMFTestCase
+
+import unittest
+
+class TestDbFlavorConfig(RMFTestCase):
+  STACK_VERSION = "2.6"
+  CONFIG_DIR = os.path.join(os.path.dirname(__file__), '../configs')
+
+
+  def test_db_flavor_0_5_0_2_3(self):
+    self.executeScript("RANGER_KMS/0.5.0.2.3/package/scripts/kms_server.py",
+                       classname="KmsServer",
+                       command="configure",
+                       target=RMFTestCase.TARGET_COMMON_SERVICES,
+                       stack_version=self.STACK_VERSION,
+                       config_file=os.path.join(self.CONFIG_DIR, "ranger_kms_default.json"))
+
+  def test_unsupported_db_flavor_0_5_0_2_3(self):
+    with self.assertRaises(Fail):
+      self.executeScript("RANGER_KMS/0.5.0.2.3/package/scripts/kms_server.py",
+                       classname="KmsServer",
+                       command="configure",
+                       target=RMFTestCase.TARGET_COMMON_SERVICES,
+                       stack_version=self.STACK_VERSION,
+                       config_file=os.path.join(self.CONFIG_DIR, "ranger_kms_unsupported_db_flavor.json"))
+
+  def test_db_flavor_1_0_0_3_0(self):
+    self.executeScript("RANGER_KMS/1.0.0.3.0/package/scripts/kms_server.py",
+                       classname="KmsServer",
+                       command="configure",
+                       target=RMFTestCase.TARGET_COMMON_SERVICES,
+                       stack_version=self.STACK_VERSION,
+                       config_file=os.path.join(self.CONFIG_DIR, "ranger_kms_default.json"))
+
+  def test_unsupported_db_flavor_1_0_0_3_0(self):
+    with self.assertRaises(Fail):
+      self.executeScript("RANGER_KMS/1.0.0.3.0/package/scripts/kms_server.py",
+                         classname="KmsServer",
+                         command="configure",
+                         target=RMFTestCase.TARGET_COMMON_SERVICES,
+                         stack_version=self.STACK_VERSION,
+                         config_file=os.path.join(self.CONFIG_DIR, "ranger_kms_unsupported_db_flavor.json"))
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/680f1148/ambari-server/src/test/python/common-services/SQOOP/test_jdbc_driver_config.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/common-services/SQOOP/test_jdbc_driver_config.py b/ambari-server/src/test/python/common-services/SQOOP/test_jdbc_driver_config.py
new file mode 100644
index 0000000..7bb809a
--- /dev/null
+++ b/ambari-server/src/test/python/common-services/SQOOP/test_jdbc_driver_config.py
@@ -0,0 +1,63 @@
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import os
+
+from resource_management.core.exceptions import Fail
+from stacks.utils.RMFTestCase import RMFTestCase
+
+import unittest
+
+class TestJdbcDriverConfig(RMFTestCase):
+  STACK_VERSION = "2.6"
+  CONFIG_DIR = os.path.join(os.path.dirname(__file__), '../configs')
+
+
+  def test_jdbc_driver_1_4_4_2_0(self):
+    self.executeScript("SQOOP/1.4.4.2.0/package/scripts/sqoop_client.py",
+                       classname="SqoopClient",
+                       command="configure",
+                       target=RMFTestCase.TARGET_COMMON_SERVICES,
+                       stack_version=self.STACK_VERSION,
+                       config_file=os.path.join(self.CONFIG_DIR, "sqoop_default.json"))
+
+  def test_unsupported_jdbc_driver_1_4_4_2_0(self):
+    with self.assertRaises(Fail):
+      self.executeScript("SQOOP/1.4.4.2.0/package/scripts/sqoop_client.py",
+                       classname="SqoopClient",
+                       command="configure",
+                       target=RMFTestCase.TARGET_COMMON_SERVICES,
+                       stack_version=self.STACK_VERSION,
+                       config_file=os.path.join(self.CONFIG_DIR, "sqoop_unsupported_jdbc_driver.json"))
+
+  def test_jdbc_driver_1_4_4_3_0(self):
+    self.executeScript("SQOOP/1.4.4.3.0/package/scripts/sqoop_client.py",
+                       classname="SqoopClient",
+                       command="configure",
+                       target=RMFTestCase.TARGET_COMMON_SERVICES,
+                       stack_version=self.STACK_VERSION,
+                       config_file=os.path.join(self.CONFIG_DIR, "sqoop_default.json"))
+
+  def test_unsupported_jdbc_driver_1_4_4_3_0(self):
+    with self.assertRaises(Fail):
+      self.executeScript("SQOOP/1.4.4.3.0/package/scripts/sqoop_client.py",
+                         classname="SqoopClient",
+                         command="configure",
+                         target=RMFTestCase.TARGET_COMMON_SERVICES,
+                         stack_version=self.STACK_VERSION,
+                         config_file=os.path.join(self.CONFIG_DIR, "sqoop_unsupported_jdbc_driver.json"))
\ No newline at end of file