Return-Path: X-Original-To: apmail-ambari-commits-archive@www.apache.org Delivered-To: apmail-ambari-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id B40561865F for ; Mon, 6 Jul 2015 20:27:57 +0000 (UTC) Received: (qmail 70664 invoked by uid 500); 6 Jul 2015 20:27:57 -0000 Delivered-To: apmail-ambari-commits-archive@ambari.apache.org Received: (qmail 70629 invoked by uid 500); 6 Jul 2015 20:27:57 -0000 Mailing-List: contact commits-help@ambari.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: ambari-dev@ambari.apache.org Delivered-To: mailing list commits@ambari.apache.org Received: (qmail 70618 invoked by uid 99); 6 Jul 2015 20:27:57 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 06 Jul 2015 20:27:57 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 61668E042D; Mon, 6 Jul 2015 20:27:57 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: jonathanhurley@apache.org To: commits@ambari.apache.org Message-Id: <49d42307239f492db78ca536aa18f28b@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: ambari git commit: AMBARI-12279 - Oozie Rolling Upgrade Fails Due To Missing Database JAR (jonathanhurley) Date: Mon, 6 Jul 2015 20:27:57 +0000 (UTC) Repository: ambari Updated Branches: refs/heads/trunk 6adee814f -> 2a253c056 AMBARI-12279 - Oozie Rolling Upgrade Fails Due To Missing Database JAR (jonathanhurley) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/2a253c05 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/2a253c05 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/2a253c05 Branch: refs/heads/trunk Commit: 2a253c056c9718e64d69b622d405efa17e69fd27 Parents: 6adee81 Author: Jonathan Hurley Authored: Sat Jul 4 20:52:18 2015 -0400 Committer: Jonathan Hurley Committed: Mon Jul 6 16:10:12 2015 -0400 ---------------------------------------------------------------------- .../OOZIE/4.0.0.2.0/package/scripts/oozie.py | 55 ++++++++++----- .../package/scripts/oozie_server_upgrade.py | 24 +++---- .../stacks/2.0.6/OOZIE/test_oozie_server.py | 70 ++++++++++++++++++++ .../stacks/2.2/configs/oozie-upgrade.json | 10 +-- 4 files changed, 123 insertions(+), 36 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/2a253c05/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie.py b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie.py index 8441f11..9b5177f 100644 --- a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie.py +++ b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie.py @@ -220,23 +220,8 @@ def oozie_server_specific(): sudo = True, ) - if params.jdbc_driver_name=="com.mysql.jdbc.Driver" or \ - params.jdbc_driver_name == "com.microsoft.sqlserver.jdbc.SQLServerDriver" or \ - params.jdbc_driver_name=="oracle.jdbc.driver.OracleDriver": - File(params.downloaded_custom_connector, - content = DownloadSource(params.driver_curl_source), - ) - - - Execute(('cp', '--remove-destination', params.downloaded_custom_connector, params.target), - #creates=params.target, TODO: uncomment after ranger_hive_plugin will not provide jdbc - path=["/bin", "/usr/bin/"], - sudo = True) - - File ( params.target, - owner = params.oozie_user, - group = params.user_group - ) + # download the database JAR + download_database_library_if_needed() #falcon el extension if params.has_falcon_host: @@ -289,3 +274,39 @@ def oozie_server_specific(): Execute(('chown', '-R', format("{oozie_user}:{user_group}"), params.oozie_server_dir), sudo=True ) + +def download_database_library_if_needed(target_directory = None): + """ + Downloads the library to use when connecting to the Oozie database, if + necessary. The library will be downloaded to 'params.target' unless + otherwise specified. + :param target_directory: the location where the database library will be + downloaded to. + :return: + """ + import params + jdbc_drivers = ["com.mysql.jdbc.Driver", + "com.microsoft.sqlserver.jdbc.SQLServerDriver", + "oracle.jdbc.driver.OracleDriver"] + + # check to see if the JDBC driver name is in the list of ones that need to + # be downloaded + if params.jdbc_driver_name not in jdbc_drivers: + return + + # if the target directory is not specified + if target_directory is None: + target_jar_with_directory = params.target + else: + # create the full path using the supplied target directory and the JDBC JAR + target_jar_with_directory = target_directory + os.path.sep + params.jdbc_driver_jar + + File(params.downloaded_custom_connector, + content = DownloadSource(params.driver_curl_source)) + + Execute(('cp', '--remove-destination', params.downloaded_custom_connector, target_jar_with_directory), + path=["/bin", "/usr/bin/"], + sudo = True) + + File(target_jar_with_directory, owner = params.oozie_user, + group = params.user_group) http://git-wip-us.apache.org/repos/asf/ambari/blob/2a253c05/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie_server_upgrade.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie_server_upgrade.py b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie_server_upgrade.py index bd423a2..fb19ddf 100644 --- a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie_server_upgrade.py +++ b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie_server_upgrade.py @@ -33,8 +33,8 @@ from resource_management.libraries.functions import hdp_select from resource_management.libraries.functions import format_hdp_stack_version from resource_management.libraries.functions import tar_archive from resource_management.libraries.script.script import Script -from resource_management.core.resources import File -from resource_management.core.source import DownloadSource + +import oozie BACKUP_TEMP_DIR = "oozie-upgrade-backup" BACKUP_CONF_ARCHIVE = "oozie-conf-backup.tar" @@ -156,18 +156,7 @@ class OozieUpgrade(Script): shutil.copy2(oozie_ext_zip_file, params.oozie_libext_customer_dir) # Redownload jdbc driver to a new current location - if params.jdbc_driver_name=="com.mysql.jdbc.Driver" or \ - params.jdbc_driver_name == "com.microsoft.sqlserver.jdbc.SQLServerDriver" or \ - params.jdbc_driver_name=="oracle.jdbc.driver.OracleDriver": - - File(params.downloaded_custom_connector, - content = DownloadSource(params.driver_curl_source)) - - Execute(('cp', '--remove-destination', params.downloaded_custom_connector, params.target), - #creates=params.target, TODO: uncomment after ranger_hive_plugin will not provide jdbc - path=["/bin", "/usr/bin/"], sudo = True) - - File(params.target, owner = params.oozie_user, group = params.user_group) + oozie.download_database_library_if_needed() @staticmethod @@ -230,6 +219,13 @@ class OozieUpgrade(Script): # upgrade oozie DB Logger.info('Upgrading the Oozie database...') + + # the database upgrade requires the db driver JAR, but since we have + # not yet run hdp-select to upgrade the current points, we have to use + # the versioned libext directory as the location[[-vufdtffr, + versioned_libext_dir = "/usr/hdp/{0}/oozie/libext".format(stack_version) + oozie.download_database_library_if_needed(target_directory=versioned_libext_dir) + database_upgrade_command = "/usr/hdp/{0}/oozie/bin/ooziedb.sh upgrade -run".format(stack_version) Execute(database_upgrade_command, user=params.oozie_user, logoutput=True) http://git-wip-us.apache.org/repos/asf/ambari/blob/2a253c05/ambari-server/src/test/python/stacks/2.0.6/OOZIE/test_oozie_server.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/python/stacks/2.0.6/OOZIE/test_oozie_server.py b/ambari-server/src/test/python/stacks/2.0.6/OOZIE/test_oozie_server.py index 0ce0f20..0759678 100644 --- a/ambari-server/src/test/python/stacks/2.0.6/OOZIE/test_oozie_server.py +++ b/ambari-server/src/test/python/stacks/2.0.6/OOZIE/test_oozie_server.py @@ -1153,3 +1153,73 @@ class TestOozieServer(RMFTestCase): self.assertResourceCalled('Execute', '/usr/hdp/2.3.0.0-1234/oozie/bin/oozie-setup.sh sharelib create -fs hdfs://c6401.ambari.apache.org:8020', user='oozie', logoutput = True) + + def test_upgrade_database_sharelib_existing_mysql(self): + """ + Tests that the upgrade script runs the proper commands before the + actual upgrade begins when Oozie is using and external database. This + should ensure that the JDBC JAR is copied. + :return: + """ + config_file = self.get_src_folder()+"/test/python/stacks/2.2/configs/oozie-upgrade.json" + + with open(config_file, "r") as f: + json_content = json.load(f) + + version = '2.3.0.0-1234' + json_content['commandParams']['version'] = version + json_content['hostLevelParams']['stack_name'] = "HDP" + + # use mysql external database + json_content['configurations']['oozie-site']['oozie.service.JPAService.jdbc.driver'] = "com.mysql.jdbc.Driver" + + self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/oozie_server_upgrade.py", + classname = "OozieUpgrade", command = "upgrade_oozie_database_and_sharelib", + config_dict = json_content, + hdp_stack_version = self.UPGRADE_STACK_VERSION, + target = RMFTestCase.TARGET_COMMON_SERVICES ) + + self.assertResourceCalled('File', '/tmp/mysql-connector-java.jar', + content = DownloadSource('http://c6401.ambari.apache.org:8080/resources//mysql-jdbc-driver.jar') ) + + self.assertResourceCalled('Execute', ('cp', '--remove-destination', '/tmp/mysql-connector-java.jar', + '/usr/hdp/2.3.0.0-1234/oozie/libext/mysql-connector-java.jar'), + path = ['/bin', '/usr/bin/'], sudo = True) + + self.assertResourceCalled('File', '/usr/hdp/2.3.0.0-1234/oozie/libext/mysql-connector-java.jar', + owner = 'oozie', group = 'hadoop' ) + + self.assertResourceCalled('Execute', '/usr/hdp/2.3.0.0-1234/oozie/bin/ooziedb.sh upgrade -run', + user = 'oozie', logoutput = True ) + + self.assertResourceCalled('HdfsResource', '/user/oozie/share', + security_enabled = False, + hadoop_bin_dir = '/usr/hdp/2.3.0.0-1234/hadoop/bin', + keytab = UnknownConfigurationMock(), + default_fs = 'hdfs://c6401.ambari.apache.org:8020', + user = 'hdfs', + hdfs_site = UnknownConfigurationMock(), + kinit_path_local = '/usr/bin/kinit', + principal_name = UnknownConfigurationMock(), + recursive_chmod = True, + owner = 'oozie', + group = 'hadoop', + hadoop_conf_dir = '/usr/hdp/current/hadoop-client/conf', + type = 'directory', + action = ['create_on_execute'], + mode = 0755 ) + + self.assertResourceCalled('HdfsResource', None, + security_enabled = False, + hadoop_bin_dir = '/usr/hdp/2.3.0.0-1234/hadoop/bin', + keytab = UnknownConfigurationMock(), + default_fs = 'hdfs://c6401.ambari.apache.org:8020', + hdfs_site = UnknownConfigurationMock(), + kinit_path_local = '/usr/bin/kinit', + principal_name = UnknownConfigurationMock(), + user = 'hdfs', + action = ['execute'], + hadoop_conf_dir = '/usr/hdp/current/hadoop-client/conf' ) + + self.assertResourceCalled('Execute', '/usr/hdp/2.3.0.0-1234/oozie/bin/oozie-setup.sh sharelib create -fs hdfs://c6401.ambari.apache.org:8020', + user='oozie', logoutput = True) \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/2a253c05/ambari-server/src/test/python/stacks/2.2/configs/oozie-upgrade.json ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/python/stacks/2.2/configs/oozie-upgrade.json b/ambari-server/src/test/python/stacks/2.2/configs/oozie-upgrade.json index 1f98793..a2e8b1d 100644 --- a/ambari-server/src/test/python/stacks/2.2/configs/oozie-upgrade.json +++ b/ambari-server/src/test/python/stacks/2.2/configs/oozie-upgrade.json @@ -31,14 +31,14 @@ "clusterName": "c1", "hostname": "c6402.ambari.apache.org", "hostLevelParams": { - "jdk_location": "http://hw10897.ix:8080/resources/", + "jdk_location": "http://c6401.ambari.apache.org:8080/resources/", "ambari_db_rca_password": "mapred", "java_home": "/usr/jdk64/jdk1.7.0_45", "java_version": "8", - "ambari_db_rca_url": "jdbc:postgresql://hw10897.ix/ambarirca", + "ambari_db_rca_url": "jdbc:postgresql://c6401.ambari.apache.org/ambarirca", "stack_name": "HDP", "custom_command": "RESTART", - "oracle_jdbc_url": "http://hw10897.ix:8080/resources//ojdbc6.jar", + "oracle_jdbc_url": "http://c6401.ambari.apache.org:8080/resources//ojdbc6.jar", "repo_info": "[{\"baseUrl\":\"http://repo.ambari.apache.org/hdp/centos6/HDP-2.2.0.0/\",\"osType\":\"redhat6\",\"repoId\":\"HDP-2.2\",\"repoName\":\"HDP\",\"defaultBaseUrl\":\"http://public-repo-1.hortonworks.com/HDP/centos6/2.x/GA/2.2.0.0\",\"latestBaseUrl\":\"http://public-repo-1.hortonworks.com/HDP/centos6/2.x/GA/2.2.0.0\"},{\"baseUrl\":\"http://repo.ambari.apache.org/hdp/centos6/HDP-UTILS-1.1.0.20/\",\"osType\":\"redhat6\",\"repoId\":\"HDP-UTILS-1.1.0.20\",\"repoName\":\"HDP-UTILS\",\"defaultBaseUrl\":\"http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/centos6\",\"latestBaseUrl\":\"http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/centos6\"}]", "group_list": "[\"hadoop\",\"nobody\",\"users\"]", "agentCacheDir": "/var/lib/ambari-agent/cache", @@ -49,7 +49,7 @@ "ambari_db_rca_username": "mapred", "db_driver_filename": "mysql-connector-java.jar", "user_list": "[\"nobody\",\"oozie\",\"hive\",\"mapred\",\"hbase\",\"ambari-qa\",\"zookeeper\",\"tez\",\"hdfs\",\"falcon\",\"yarn\",\"hcat\"]", - "mysql_jdbc_url": "http://hw10897.ix:8080/resources//mysql-connector-java.jar" + "mysql_jdbc_url": "http://c6401.ambari.apache.org:8080/resources//mysql-connector-java.jar" }, "commandType": "EXECUTION_COMMAND", "roleParams": { @@ -225,7 +225,7 @@ "8670" ], "ambari_server_host": [ - "hw10897.ix" + "c6401.ambari.apache.org" ], "rm_host": [ "c6402.ambari.apache.org"