Repository: ambari Updated Branches: refs/heads/trunk 75eca8de4 -> 1c09b40a5
AMBARI-17514. StackAdvisor fix for Oracle 12C and Add message if user forgot to set jdbc.(vbrodetskyi) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/1c09b40a Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/1c09b40a Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/1c09b40a Branch: refs/heads/trunk Commit: 1c09b40a5066857dd0eb2a7649fe081dc4a108c2 Parents: 75eca8d Author: Vitaly Brodetskyi <vbrodets...@hortonworks.com> Authored: Fri Jul 1 15:37:39 2016 +0300 Committer: Vitaly Brodetskyi <vbrodets...@hortonworks.com> Committed: Fri Jul 1 15:37:39 2016 +0300 ---------------------------------------------------------------------- .../RANGER/0.4.0/package/scripts/params.py | 1 + .../0.4.0/package/scripts/setup_ranger_xml.py | 5 +++++ .../RANGER_KMS/0.5.0.2.3/package/scripts/kms.py | 5 +++++ .../0.5.0.2.3/package/scripts/params.py | 1 + .../stacks/HDP/2.3/services/stack_advisor.py | 18 +++++++++++++++--- .../stacks/2.3/common/test_stack_advisor.py | 17 +++++++++++++++-- 6 files changed, 42 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/1c09b40a/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 ba8d3b3..a85bde0 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 @@ -151,6 +151,7 @@ oracle_home = default("/configurations/ranger-env/oracle_home", "-") #For curl command in ranger to get db connector jdk_location = config['hostLevelParams']['jdk_location'] java_share_dir = '/usr/share/java' +jdbc_jar_name = None previous_jdbc_jar_name = None if db_flavor.lower() == 'mysql': jdbc_jar_name = default("/hostLevelParams/custom_mysql_jdbc_name", None) http://git-wip-us.apache.org/repos/asf/ambari/blob/1c09b40a/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/setup_ranger_xml.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/setup_ranger_xml.py b/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/setup_ranger_xml.py index e35ea5f..6b04075 100644 --- a/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/setup_ranger_xml.py +++ b/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/setup_ranger_xml.py @@ -286,6 +286,11 @@ def password_validation(password): def copy_jdbc_connector(stack_version=None): import params + if params.jdbc_jar_name is None and params.driver_curl_source.endswith("/None"): + error_message = "Error! Sorry, but we can't find jdbc driver related to {0} database to download from {1}. \ + Please run 'ambari-server setup --jdbc-db={db_name} --jdbc-driver={path_to_jdbc} on server host.'".format(params.db_flavor, params.jdk_location) + Logger.error(error_message) + if params.driver_curl_source and not params.driver_curl_source.endswith("/None"): if params.previous_jdbc_jar and os.path.isfile(params.previous_jdbc_jar): File(params.previous_jdbc_jar, action='delete') http://git-wip-us.apache.org/repos/asf/ambari/blob/1c09b40a/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/package/scripts/kms.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/package/scripts/kms.py b/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/package/scripts/kms.py index 133760b..4d24893 100755 --- a/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/package/scripts/kms.py +++ b/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/package/scripts/kms.py @@ -309,6 +309,11 @@ def kms(upgrade_type=None): def copy_jdbc_connector(stack_version=None): import params + if params.jdbc_jar_name is None and params.driver_curl_source.endswith("/None"): + error_message = "Error! Sorry, but we can't find jdbc driver related to {0} database to download from {1}. \ + Please run 'ambari-server setup --jdbc-db={db_name} --jdbc-driver={path_to_jdbc} on server host.'".format(params.db_flavor, params.jdk_location) + Logger.error(error_message) + if params.driver_curl_source and not params.driver_curl_source.endswith("/None"): if params.previous_jdbc_jar and os.path.isfile(params.previous_jdbc_jar): File(params.previous_jdbc_jar, action='delete') http://git-wip-us.apache.org/repos/asf/ambari/blob/1c09b40a/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 dce6576..f887cc9 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 @@ -104,6 +104,7 @@ default_connectors_map = { "mssql":"sqljdbc4.jar", "sqla":"sajdbc4.jar"} java_share_dir = '/usr/share/java' +jdbc_jar_name = None previous_jdbc_jar_name = None if db_flavor == 'mysql': jdbc_jar_name = default("/hostLevelParams/custom_mysql_jdbc_name", None) http://git-wip-us.apache.org/repos/asf/ambari/blob/1c09b40a/ambari-server/src/main/resources/stacks/HDP/2.3/services/stack_advisor.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.3/services/stack_advisor.py b/ambari-server/src/main/resources/stacks/HDP/2.3/services/stack_advisor.py index 6a3df08..879008b 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.3/services/stack_advisor.py +++ b/ambari-server/src/main/resources/stacks/HDP/2.3/services/stack_advisor.py @@ -393,7 +393,7 @@ class HDP23StackAdvisor(HDP22StackAdvisor): 'MYSQL': {'ranger.ks.jpa.jdbc.driver': 'com.mysql.jdbc.Driver', 'ranger.ks.jpa.jdbc.url': 'jdbc:mysql://' + self.getDBConnectionHostPort(rangerKmsDbFlavor, rangerKmsDbHost) + '/' + rangerKmsDbName}, 'ORACLE': {'ranger.ks.jpa.jdbc.driver': 'oracle.jdbc.driver.OracleDriver', - 'ranger.ks.jpa.jdbc.url': 'jdbc:oracle:thin:@//' + self.getDBConnectionHostPort(rangerKmsDbFlavor, rangerKmsDbHost) + '/' + rangerKmsDbName}, + 'ranger.ks.jpa.jdbc.url': 'jdbc:oracle:thin:@' + self.getOracleDBConnectionHostPort(rangerKmsDbFlavor, rangerKmsDbHost, rangerKmsDbName)}, 'POSTGRES': {'ranger.ks.jpa.jdbc.driver': 'org.postgresql.Driver', 'ranger.ks.jpa.jdbc.url': 'jdbc:postgresql://' + self.getDBConnectionHostPort(rangerKmsDbFlavor, rangerKmsDbHost) + '/' + rangerKmsDbName}, 'MSSQL': {'ranger.ks.jpa.jdbc.driver': 'com.microsoft.sqlserver.jdbc.SQLServerDriver', @@ -421,6 +421,16 @@ class HDP23StackAdvisor(HDP22StackAdvisor): putRangerKmsAuditProperty('xasecure.audit.destination.hdfs.dir', '{0}/{1}/{2}'.format(default_fs,'ranger','audit')) + def getOracleDBConnectionHostPort(self, db_type, db_host, rangerDbName): + connection_string = self.getDBConnectionHostPort(db_type, db_host) + colon_count = db_host.count(':') + if colon_count == 1 and '/' in db_host: + connection_string = "//" + connection_string + elif colon_count == 0 or colon_count == 1: + connection_string = "//" + connection_string + "/" + rangerDbName if rangerDbName else "//" + connection_string + + return connection_string + def getDBConnectionHostPort(self, db_type, db_host): connection_string = "" if db_type is None or db_type == "": @@ -434,6 +444,8 @@ class HDP23StackAdvisor(HDP22StackAdvisor): connection_string = db_host elif colon_count == 1: connection_string = db_host + elif colon_count == 2: + connection_string = db_host return connection_string @@ -455,7 +467,7 @@ class HDP23StackAdvisor(HDP22StackAdvisor): 'MYSQL': {'ranger.jpa.jdbc.driver': 'com.mysql.jdbc.Driver', 'ranger.jpa.jdbc.url': 'jdbc:mysql://' + self.getDBConnectionHostPort(rangerDbFlavor, rangerDbHost) + '/' + rangerDbName}, 'ORACLE': {'ranger.jpa.jdbc.driver': 'oracle.jdbc.driver.OracleDriver', - 'ranger.jpa.jdbc.url': 'jdbc:oracle:thin:@//' + self.getDBConnectionHostPort(rangerDbFlavor, rangerDbHost) + '/' + rangerDbName}, + 'ranger.jpa.jdbc.url': 'jdbc:oracle:thin:@' + self.getOracleDBConnectionHostPort(rangerDbFlavor, rangerDbHost, rangerDbName)}, 'POSTGRES': {'ranger.jpa.jdbc.driver': 'org.postgresql.Driver', 'ranger.jpa.jdbc.url': 'jdbc:postgresql://' + self.getDBConnectionHostPort(rangerDbFlavor, rangerDbHost) + '/' + rangerDbName}, 'MSSQL': {'ranger.jpa.jdbc.driver': 'com.microsoft.sqlserver.jdbc.SQLServerDriver', @@ -474,7 +486,7 @@ class HDP23StackAdvisor(HDP22StackAdvisor): rangerDbHost = services['configurations']["admin-properties"]["properties"]["db_host"] ranger_db_privelege_url_dict = { 'MYSQL': {'ranger_privelege_user_jdbc_url': 'jdbc:mysql://' + self.getDBConnectionHostPort(rangerDbFlavor, rangerDbHost)}, - 'ORACLE': {'ranger_privelege_user_jdbc_url': 'jdbc:oracle:thin:@//' + self.getDBConnectionHostPort(rangerDbFlavor, rangerDbHost)}, + 'ORACLE': {'ranger_privelege_user_jdbc_url': 'jdbc:oracle:thin:@' + self.getOracleDBConnectionHostPort(rangerDbFlavor, rangerDbHost, None)}, 'POSTGRES': {'ranger_privelege_user_jdbc_url': 'jdbc:postgresql://' + self.getDBConnectionHostPort(rangerDbFlavor, rangerDbHost) + '/postgres'}, 'MSSQL': {'ranger_privelege_user_jdbc_url': 'jdbc:sqlserver://' + self.getDBConnectionHostPort(rangerDbFlavor, rangerDbHost) + ';'}, 'SQLA': {'ranger_privelege_user_jdbc_url': 'jdbc:sqlanywhere:host=' + self.getDBConnectionHostPort(rangerDbFlavor, rangerDbHost) + ';'} http://git-wip-us.apache.org/repos/asf/ambari/blob/1c09b40a/ambari-server/src/test/python/stacks/2.3/common/test_stack_advisor.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/python/stacks/2.3/common/test_stack_advisor.py b/ambari-server/src/test/python/stacks/2.3/common/test_stack_advisor.py index 62d926e..2944f6f 100644 --- a/ambari-server/src/test/python/stacks/2.3/common/test_stack_advisor.py +++ b/ambari-server/src/test/python/stacks/2.3/common/test_stack_advisor.py @@ -2656,6 +2656,13 @@ class TestHDP23StackAdvisor(TestCase): 'ranger-kms-audit': { 'properties': { } + }, + 'kms-properties': { + 'properties': { + 'DB_FLAVOR': 'ORACLE', + 'db_host' : 'c6401.ambari.apache.org:1521:XE', + 'db_name' : "XE" + } } }, "forced-configurations": [] @@ -2665,7 +2672,10 @@ class TestHDP23StackAdvisor(TestCase): 'properties': {} }, 'dbks-site': { - 'properties': {} + 'properties': { + "ranger.ks.jpa.jdbc.driver" : "oracle.jdbc.driver.OracleDriver", + "ranger.ks.jpa.jdbc.url" : "jdbc:oracle:thin:@c6401.ambari.apache.org:1521:XE" + } }, 'core-site': { 'properties': { @@ -2694,7 +2704,10 @@ class TestHDP23StackAdvisor(TestCase): 'properties': {} }, 'dbks-site': { - 'properties': {} + 'properties': { + "ranger.ks.jpa.jdbc.driver" : "oracle.jdbc.driver.OracleDriver", + "ranger.ks.jpa.jdbc.url" : "jdbc:oracle:thin:@c6401.ambari.apache.org:1521:XE" + } }, 'core-site': { 'properties': {