You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by vb...@apache.org on 2015/08/20 11:12:51 UTC
[2/2] ambari git commit: AMBARI-12803. BE: SQLA Type-2 driver
support.(vbrodetskyi)
AMBARI-12803. BE: SQLA Type-2 driver support.(vbrodetskyi)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/59d0632e
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/59d0632e
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/59d0632e
Branch: refs/heads/branch-2.1
Commit: 59d0632e41957516dbcf9dbccdf6bae76ef27e76
Parents: e044c15
Author: Vitaly Brodetskyi <vb...@hortonworks.com>
Authored: Thu Aug 20 12:12:50 2015 +0300
Committer: Vitaly Brodetskyi <vb...@hortonworks.com>
Committed: Thu Aug 20 12:12:50 2015 +0300
----------------------------------------------------------------------
ambari-server/src/main/python/ambari-server.py | 10 +-
.../python/ambari_server/dbConfiguration.py | 3 +-
.../main/python/ambari_server/serverSetup.py | 7 +-
.../HIVE/0.12.0.2.0/configuration/hive-env.xml | 4 +
.../HIVE/0.12.0.2.0/package/scripts/hive.py | 22 +-
.../package/scripts/hive_metastore.py | 19 +-
.../0.12.0.2.0/package/scripts/params_linux.py | 18 +-
.../OOZIE/4.0.0.2.0/configuration/oozie-env.xml | 4 +
.../OOZIE/4.0.0.2.0/package/scripts/oozie.py | 24 +-
.../4.0.0.2.0/package/scripts/params_linux.py | 14 +-
.../OOZIE/4.2.0.2.3/configuration/oozie-env.xml | 4 +
.../services/HIVE/configuration/hive-env.xml | 4 +
.../services/OOZIE/configuration/oozie-env.xml | 4 +
.../stacks/2.0.6/OOZIE/test_oozie_server.py | 209 +++++
.../2.0.6/configs/oozie_existing_sqla.json | 821 +++++++++++++++++++
.../stacks/2.1/HIVE/test_hive_metastore.py | 88 ++
16 files changed, 1238 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/59d0632e/ambari-server/src/main/python/ambari-server.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/python/ambari-server.py b/ambari-server/src/main/python/ambari-server.py
index 1b02162..524db30 100755
--- a/ambari-server/src/main/python/ambari-server.py
+++ b/ambari-server/src/main/python/ambari-server.py
@@ -359,10 +359,13 @@ def init_parser_options(parser):
parser.add_option('--databasepassword', default=None, help="Database user password", dest="database_password")
parser.add_option('--sidorsname', default="sname", help="Oracle database identifier type, Service ID/Service "
"Name sid|sname", dest="sid_or_sname")
- parser.add_option('--jdbc-driver', default=None, help="Specifies the path to the JDBC driver JAR file for the " \
- "database type specified with the --jdbc-db option. Used only with --jdbc-db option.",
+ parser.add_option('--jdbc-driver', default=None, help="Specifies the path to the JDBC driver JAR file or archive " \
+ "with all required files(jdbc jar, libraries and etc), for the " \
+ "database type specified with the --jdbc-db option. " \
+ "Used only with --jdbc-db option. Archive is supported only for" \
+ " sqlanywhere database." ,
dest="jdbc_driver")
- parser.add_option('--jdbc-db', default=None, help="Specifies the database type [postgres|mysql|mssql|oracle|hsqldb] for the " \
+ parser.add_option('--jdbc-db', default=None, help="Specifies the database type [postgres|mysql|mssql|oracle|hsqldb|sqlanywhere] for the " \
"JDBC driver specified with the --jdbc-driver option. Used only with --jdbc-driver option.",
dest="jdbc_db")
parser.add_option('--cluster-name', default=None, help="Cluster name", dest="cluster_name")
@@ -468,6 +471,7 @@ def fix_database_options(options, parser):
parser.error("Option --jdbc-db is used only in pair with --jdbc-driver")
elif options.jdbc_driver is not None and options.jdbc_db is None:
parser.error("Option --jdbc-driver is used only in pair with --jdbc-db")
+
if options.sid_or_sname.lower() not in ["sid", "sname"]:
print "WARNING: Valid values for sid_or_sname are 'sid' or 'sname'. Use 'sid' if the db identifier type is " \
"Service ID. Use 'sname' if the db identifier type is Service Name"
http://git-wip-us.apache.org/repos/asf/ambari/blob/59d0632e/ambari-server/src/main/python/ambari_server/dbConfiguration.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/python/ambari_server/dbConfiguration.py b/ambari-server/src/main/python/ambari_server/dbConfiguration.py
index fa8d6e3..a66738b 100644
--- a/ambari-server/src/main/python/ambari_server/dbConfiguration.py
+++ b/ambari-server/src/main/python/ambari_server/dbConfiguration.py
@@ -330,7 +330,8 @@ class DBMSConfigFactoryLinux(DBMSConfigFactory):
'mysql',
'postgres',
'mssql',
- 'hsqldb'
+ 'hsqldb',
+ 'sqlanywhere'
]
self.DBMS_LIST = [
http://git-wip-us.apache.org/repos/asf/ambari/blob/59d0632e/ambari-server/src/main/python/ambari_server/serverSetup.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/python/ambari_server/serverSetup.py b/ambari-server/src/main/python/ambari_server/serverSetup.py
index 045e969..93b393a 100644
--- a/ambari-server/src/main/python/ambari_server/serverSetup.py
+++ b/ambari-server/src/main/python/ambari_server/serverSetup.py
@@ -56,6 +56,8 @@ SE_MODE_PERMISSIVE = "permissive"
PERSISTENCE_TYPE_PROPERTY = "server.persistence.type"
+TAR_GZ_ARCHIVE_TYPE = ".tar.gz"
+
# Non-root user setup commands
NR_USER_COMMENT = "Ambari user"
@@ -858,7 +860,10 @@ def _cache_jdbc_driver(args):
resources_dir = get_resources_location(properties)
- symlink_name = args.jdbc_db + "-jdbc-driver.jar"
+ if args.jdbc_driver.endswith(TAR_GZ_ARCHIVE_TYPE):
+ symlink_name = args.jdbc_db + "-jdbc-driver" + TAR_GZ_ARCHIVE_TYPE
+ else:
+ symlink_name = args.jdbc_db + "-jdbc-driver.jar"
jdbc_symlink = os.path.join(resources_dir, symlink_name)
path, jdbc_name = os.path.split(args.jdbc_driver)
http://git-wip-us.apache.org/repos/asf/ambari/blob/59d0632e/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/configuration/hive-env.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/configuration/hive-env.xml b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/configuration/hive-env.xml
index d201df5..21c52e1 100644
--- a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/configuration/hive-env.xml
+++ b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/configuration/hive-env.xml
@@ -152,6 +152,10 @@ else
export HIVE_AUX_JARS_PATH=/usr/lib/hcatalog/share/hcatalog/hcatalog-core.jar
fi
export METASTORE_PORT={{hive_metastore_port}}
+
+{% if sqla_db_used %}
+export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:{{jdbc_libs_dir}}"
+{% endif %}
</value>
</property>
http://git-wip-us.apache.org/repos/asf/ambari/blob/59d0632e/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive.py b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive.py
index 6081b39..3bb8f4d 100644
--- a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive.py
+++ b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive.py
@@ -34,6 +34,7 @@ from resource_management.libraries.functions.is_empty import is_empty
from resource_management.libraries.resources.xml_config import XmlConfig
from resource_management.libraries.functions.format import format
from resource_management.core.exceptions import Fail
+from resource_management.core.shell import as_sudo
from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl
from ambari_commons import OSConst
@@ -371,10 +372,25 @@ def jdbc_connector():
sudo = True)
File(params.downloaded_custom_connector,
- content = DownloadSource(params.driver_curl_source),
- )
+ content = DownloadSource(params.driver_curl_source))
+
+ # maybe it will be more correcvly to use db type
+ if params.sqla_db_used:
+ untar_sqla_type2_driver = ('tar', '-xvf', params.downloaded_custom_connector, '-C', params.tmp_dir)
+
+ Execute(untar_sqla_type2_driver, sudo = True)
+
+ Execute(as_sudo(['yes', '|', 'cp', params.jars_path_in_archive, params.hive_lib], auto_escape=False),
+ path=["/bin", "/usr/bin/"])
+
+ Directory(params.jdbc_libs_dir,
+ recursive=True)
+
+ Execute(as_sudo(['yes', '|', 'cp', params.libs_path_in_archive, params.jdbc_libs_dir], auto_escape=False),
+ path=["/bin", "/usr/bin/"])
- Execute(('cp', '--remove-destination', params.downloaded_custom_connector, params.target),
+ else:
+ 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)
http://git-wip-us.apache.org/repos/asf/ambari/blob/59d0632e/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_metastore.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_metastore.py b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_metastore.py
index 1a6c6c1..b955b12 100644
--- a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_metastore.py
+++ b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_metastore.py
@@ -20,7 +20,7 @@ limitations under the License.
import os
from resource_management.core.logger import Logger
-from resource_management.core.resources.system import Execute
+from resource_management.core.resources.system import Execute, Directory
from resource_management.libraries.script import Script
from resource_management.libraries.functions import conf_select
from resource_management.libraries.functions import hdp_select
@@ -33,6 +33,7 @@ from resource_management.libraries.functions.security_commons import get_params_
from resource_management.libraries.functions.security_commons import validate_security_config_properties
from resource_management.libraries.functions.security_commons import FILE_TYPE_XML
from resource_management.core.resources.system import File
+from resource_management.core.shell import as_sudo
from hive import hive
from hive import jdbc_connector
@@ -176,8 +177,20 @@ class HiveMetastoreDefault(HiveMetastore):
# download it
jdbc_connector()
- Execute(('cp', params.target, target_directory),
- path=["/bin", "/usr/bin/"], sudo = True)
+ if params.sqla_db_used:
+ target_native_libs_directory = format("{target_directory}/native/lib64")
+
+ Execute(as_sudo(['yes', '|', 'cp', params.jars_in_hive_lib, target_directory], auto_escape=False),
+ path=["/bin", "/usr/bin/"])
+
+ Directory(target_native_libs_directory,
+ recursive=True)
+
+ Execute(as_sudo(['yes', '|', 'cp', params.libs_in_hive_lib, target_native_libs_directory], auto_escape=False),
+ path=["/bin", "/usr/bin/"])
+ else:
+ Execute(('cp', params.target, target_directory),
+ path=["/bin", "/usr/bin/"], sudo = True)
File(os.path.join(target_directory, os.path.basename(params.target)),
mode = 0644,
http://git-wip-us.apache.org/repos/asf/ambari/blob/59d0632e/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 b78dd4b..d672c4e 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
@@ -174,6 +174,9 @@ if hive_metastore_db_type == "mssql":
hive_user = config['configurations']['hive-env']['hive_user']
#JDBC driver jar name
hive_jdbc_driver = config['configurations']['hive-site']['javax.jdo.option.ConnectionDriverName']
+# NOT SURE THAT IT'S A GOOD IDEA TO USE PATH TO CLASS IN DRIVER, MAYBE IT WILL BE BETTER TO USE DB TYPE.
+# BECAUSE PATH TO CLASSES COULD BE CHANGED
+sqla_db_used = False
if hive_jdbc_driver == "com.microsoft.sqlserver.jdbc.SQLServerDriver":
jdbc_jar_name = "sqljdbc4.jar"
jdbc_symlink_name = "mssql-jdbc-driver.jar"
@@ -186,14 +189,26 @@ elif hive_jdbc_driver == "org.postgresql.Driver":
elif hive_jdbc_driver == "oracle.jdbc.driver.OracleDriver":
jdbc_jar_name = "ojdbc.jar"
jdbc_symlink_name = "oracle-jdbc-driver.jar"
+elif hive_jdbc_driver == "sap.jdbc4.sqlanywhere.IDriver":
+ jdbc_jar_name = "sajdbc4.jar"
+ jdbc_symlink_name = "sqlanywhere-jdbc-driver.tar.gz"
+ sqla_db_used = True
check_db_connection_jar_name = "DBConnectionVerification.jar"
check_db_connection_jar = format("/usr/lib/ambari-agent/{check_db_connection_jar_name}")
-hive_jdbc_drivers_list = ["com.microsoft.sqlserver.jdbc.SQLServerDriver","com.mysql.jdbc.Driver","org.postgresql.Driver","oracle.jdbc.driver.OracleDriver"]
+hive_jdbc_drivers_list = ["com.microsoft.sqlserver.jdbc.SQLServerDriver","com.mysql.jdbc.Driver",
+ "org.postgresql.Driver","oracle.jdbc.driver.OracleDriver","sap.jdbc4.sqlanywhere.IDriver"]
downloaded_custom_connector = format("{tmp_dir}/{jdbc_jar_name}")
prepackaged_ojdbc_symlink = format("{hive_lib}/ojdbc6.jar")
templeton_port = config['configurations']['webhcat-site']['templeton.port']
+#constants for type2 jdbc
+if sqla_db_used:
+ jars_path_in_archive = format("{tmp_dir}/sqla-client-jdbc/java/*")
+ libs_path_in_archive = format("{tmp_dir}/sqla-client-jdbc/native/lib64/*")
+ downloaded_custom_connector = format("{tmp_dir}/sqla-client-jdbc.tar.gz")
+ jdbc_libs_dir = format("{hive_lib}/native/lib64")
+ libs_in_hive_lib = format("{jdbc_libs_dir}/*")
#common
hive_metastore_hosts = config['clusterHostInfo']['hive_metastore_host']
@@ -265,6 +280,7 @@ artifact_dir = format("{tmp_dir}/AMBARI-artifacts/")
yarn_log_dir_prefix = config['configurations']['yarn-env']['yarn_log_dir_prefix']
target = format("{hive_lib}/{jdbc_jar_name}")
+jars_in_hive_lib = format("{hive_lib}/*.jar")
jdk_location = config['hostLevelParams']['jdk_location']
driver_curl_source = format("{jdk_location}/{jdbc_symlink_name}")
http://git-wip-us.apache.org/repos/asf/ambari/blob/59d0632e/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/configuration/oozie-env.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/configuration/oozie-env.xml b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/configuration/oozie-env.xml
index d582581..d5b08c9 100644
--- a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/configuration/oozie-env.xml
+++ b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/configuration/oozie-env.xml
@@ -141,6 +141,10 @@ export OOZIE_ADMIN_PORT={{oozie_server_admin_port}}
#
# export OOZIE_BASE_URL="http://${OOZIE_HTTP_HOSTNAME}:${OOZIE_HTTP_PORT}/oozie"
export JAVA_LIBRARY_PATH={{hadoop_lib_home}}/native/Linux-amd64-64
+
+{% if sqla_db_used %}
+export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:{{jdbc_libs_dir}}"
+{% endif %}
</value>
</property>
http://git-wip-us.apache.org/repos/asf/ambari/blob/59d0632e/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 35df33a..5fd531a 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
@@ -31,6 +31,7 @@ from resource_management.libraries.resources.xml_config import XmlConfig
from resource_management.libraries.script.script import Script
from resource_management.core.resources.packaging import Package
from resource_management.core.shell import as_user
+from resource_management.core.shell import as_sudo
from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl
from ambari_commons import OSConst
from ambari_commons.inet_utils import download_file
@@ -295,7 +296,7 @@ def download_database_library_if_needed(target_directory = None):
import params
jdbc_drivers = ["com.mysql.jdbc.Driver",
"com.microsoft.sqlserver.jdbc.SQLServerDriver",
- "oracle.jdbc.driver.OracleDriver"]
+ "oracle.jdbc.driver.OracleDriver","sap.jdbc4.sqlanywhere.IDriver"]
# check to see if the JDBC driver name is in the list of ones that need to
# be downloaded
@@ -312,9 +313,24 @@ def download_database_library_if_needed(target_directory = None):
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)
+ if params.sqla_db_used:
+ untar_sqla_type2_driver = ('tar', '-xvf', params.downloaded_custom_connector, '-C', params.tmp_dir)
+
+ Execute(untar_sqla_type2_driver, sudo = True)
+
+ Execute(as_sudo(['yes', '|', 'cp', params.jars_path_in_archive, params.oozie_libext_dir], auto_escape=False),
+ path=["/bin", "/usr/bin/"])
+
+ Directory(params.jdbc_libs_dir,
+ recursive=True)
+
+ Execute(as_sudo(['yes', '|', 'cp', params.libs_path_in_archive, params.jdbc_libs_dir], auto_escape=False),
+ path=["/bin", "/usr/bin/"])
+
+ else:
+ 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/59d0632e/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/params_linux.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/params_linux.py b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/params_linux.py
index a02594b..6935e93 100644
--- a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/params_linux.py
+++ b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/params_linux.py
@@ -190,7 +190,9 @@ else:
put_shared_lib_to_hdfs_cmd = format("{oozie_setup_sh} sharelib create -fs {fs_root} -locallib {oozie_shared_lib}")
jdbc_driver_name = default("/configurations/oozie-site/oozie.service.JPAService.jdbc.driver", "")
-
+# NOT SURE THAT IT'S A GOOD IDEA TO USE PATH TO CLASS IN DRIVER, MAYBE IT WILL BE BETTER TO USE DB TYPE.
+# BECAUSE PATH TO CLASSES COULD BE CHANGED
+sqla_db_used = False
if jdbc_driver_name == "com.microsoft.sqlserver.jdbc.SQLServerDriver":
jdbc_driver_jar = "sqljdbc4.jar"
jdbc_symlink_name = "mssql-jdbc-driver.jar"
@@ -203,6 +205,10 @@ elif jdbc_driver_name == "org.postgresql.Driver":
elif jdbc_driver_name == "oracle.jdbc.driver.OracleDriver":
jdbc_driver_jar = "ojdbc.jar"
jdbc_symlink_name = "oracle-jdbc-driver.jar"
+elif jdbc_driver_name == "sap.jdbc4.sqlanywhere.IDriver":
+ jdbc_driver_jar = "sajdbc4.jar"
+ jdbc_symlink_name = "sqlanywhere-jdbc-driver.tar.gz"
+ sqla_db_used = True
else:
jdbc_driver_jar = ""
jdbc_symlink_name = ""
@@ -215,6 +221,12 @@ if jdbc_driver_name == "org.postgresql.Driver":
else:
target = format("{oozie_libext_dir}/{jdbc_driver_jar}")
+#constants for type2 jdbc
+if sqla_db_used:
+ jars_path_in_archive = format("{tmp_dir}/sqla-client-jdbc/java/*")
+ libs_path_in_archive = format("{tmp_dir}/sqla-client-jdbc/native/lib64/*")
+ downloaded_custom_connector = format("{tmp_dir}/sqla-client-jdbc.tar.gz")
+ jdbc_libs_dir = format("{oozie_libext_dir}/native/lib64")
hdfs_share_dir = "/user/oozie/share"
ambari_server_hostname = config['clusterHostInfo']['ambari_server_host'][0]
http://git-wip-us.apache.org/repos/asf/ambari/blob/59d0632e/ambari-server/src/main/resources/common-services/OOZIE/4.2.0.2.3/configuration/oozie-env.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/OOZIE/4.2.0.2.3/configuration/oozie-env.xml b/ambari-server/src/main/resources/common-services/OOZIE/4.2.0.2.3/configuration/oozie-env.xml
index 17ce7a5..2b8e754 100644
--- a/ambari-server/src/main/resources/common-services/OOZIE/4.2.0.2.3/configuration/oozie-env.xml
+++ b/ambari-server/src/main/resources/common-services/OOZIE/4.2.0.2.3/configuration/oozie-env.xml
@@ -94,6 +94,10 @@ export JAVA_LIBRARY_PATH={{hadoop_lib_home}}/native/Linux-amd64-64
# At least 1 minute of retry time to account for server downtime during
# upgrade/downgrade
export OOZIE_CLIENT_OPTS="${OOZIE_CLIENT_OPTS} -Doozie.connection.retry.count=5 "
+
+{% if sqla_db_used %}
+export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:{{jdbc_libs_dir}}"
+{% endif %}
</value>
</property>
http://git-wip-us.apache.org/repos/asf/ambari/blob/59d0632e/ambari-server/src/main/resources/stacks/HDP/2.2/services/HIVE/configuration/hive-env.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.2/services/HIVE/configuration/hive-env.xml b/ambari-server/src/main/resources/stacks/HDP/2.2/services/HIVE/configuration/hive-env.xml
index 6d7434d..3b05dd4 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.2/services/HIVE/configuration/hive-env.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.2/services/HIVE/configuration/hive-env.xml
@@ -69,6 +69,10 @@ elif [ -d "/usr/hdp/current/hive-webhcat/share/hcatalog" ]; then
fi
export METASTORE_PORT={{hive_metastore_port}}
+
+{% if sqla_db_used %}
+export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:{{jdbc_libs_dir}}"
+{% endif %}
</value>
</property>
http://git-wip-us.apache.org/repos/asf/ambari/blob/59d0632e/ambari-server/src/main/resources/stacks/HDP/2.2/services/OOZIE/configuration/oozie-env.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.2/services/OOZIE/configuration/oozie-env.xml b/ambari-server/src/main/resources/stacks/HDP/2.2/services/OOZIE/configuration/oozie-env.xml
index 99ca2dc..0611cac 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.2/services/OOZIE/configuration/oozie-env.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.2/services/OOZIE/configuration/oozie-env.xml
@@ -100,6 +100,10 @@ export CATALINA_OPTS="${CATALINA_OPTS} -Xmx2048m -XX:MaxPermSize=256m "
{% else %}
export CATALINA_OPTS="${CATALINA_OPTS} -Xmx2048m"
{% endif %}
+
+{% if sqla_db_used %}
+export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:{{jdbc_libs_dir}}"
+{% endif %}
</value>
</property>
http://git-wip-us.apache.org/repos/asf/ambari/blob/59d0632e/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 3e05542..525963d 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
@@ -253,6 +253,215 @@ class TestOozieServer(RMFTestCase):
sudo = True,
)
+
+ def test_configure_existing_sqla(self):
+ self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/oozie_server.py",
+ classname = "OozieServer",
+ command = "configure",
+ config_file="oozie_existing_sqla.json",
+ hdp_stack_version = self.STACK_VERSION,
+ target = RMFTestCase.TARGET_COMMON_SERVICES
+ )
+ self.assertResourceCalled('HdfsResource', '/user/oozie',
+ security_enabled = False,
+ hadoop_bin_dir = '/usr/bin',
+ keytab = UnknownConfigurationMock(),
+ default_fs = 'hdfs://c6401.ambari.apache.org:8020',
+ hdfs_site = self.getConfig()['configurations']['hdfs-site'],
+ kinit_path_local = '/usr/bin/kinit',
+ principal_name = UnknownConfigurationMock(),
+ user = 'hdfs',
+ owner = 'oozie',
+ hadoop_conf_dir = '/etc/hadoop/conf',
+ type = 'directory',
+ action = ['create_on_execute'],
+ mode = 0775,
+ )
+ self.assertResourceCalled('HdfsResource', None,
+ security_enabled = False,
+ hadoop_bin_dir = '/usr/bin',
+ keytab = UnknownConfigurationMock(),
+ default_fs = 'hdfs://c6401.ambari.apache.org:8020',
+ hdfs_site = self.getConfig()['configurations']['hdfs-site'],
+ kinit_path_local = '/usr/bin/kinit',
+ principal_name = UnknownConfigurationMock(),
+ user = 'hdfs',
+ action = ['execute'],
+ hadoop_conf_dir = '/etc/hadoop/conf',
+ )
+ self.assertResourceCalled('Directory', '/etc/oozie/conf',
+ owner = 'oozie',
+ group = 'hadoop',
+ recursive = True,
+ )
+ self.assertResourceCalled('XmlConfig', 'oozie-site.xml',
+ group = 'hadoop',
+ conf_dir = '/etc/oozie/conf',
+ mode = 0664,
+ configuration_attributes = {u'final': {u'oozie.service.CallableQueueService.queue.size': u'true',
+ u'oozie.service.PurgeService.purge.interval': u'true'}},
+ owner = 'oozie',
+ configurations = self.getConfig()['configurations']['oozie-site'],
+ )
+ self.assertResourceCalled('File', '/etc/oozie/conf/oozie-env.sh',
+ content = InlineTemplate(self.getConfig()['configurations']['oozie-env']['content']),
+ owner = 'oozie',
+ )
+ self.assertResourceCalled('File', '/etc/oozie/conf/oozie-log4j.properties',
+ content = 'log4jproperties\nline2',
+ owner = 'oozie',
+ group = 'hadoop',
+ mode = 0644,
+ )
+ self.assertResourceCalled('File', '/etc/oozie/conf/adminusers.txt',
+ owner = 'oozie',
+ group = 'hadoop',
+ )
+ self.assertResourceCalled('File', '/etc/oozie/conf/hadoop-config.xml',
+ owner = 'oozie',
+ group = 'hadoop',
+ )
+ self.assertResourceCalled('File', '/etc/oozie/conf/oozie-default.xml',
+ owner = 'oozie',
+ group = 'hadoop',
+ )
+ self.assertResourceCalled('Directory', '/etc/oozie/conf/action-conf',
+ owner = 'oozie',
+ group = 'hadoop',
+ )
+ self.assertResourceCalled('File', '/etc/oozie/conf/action-conf/hive.xml',
+ owner = 'oozie',
+ group = 'hadoop',
+ )
+ self.assertResourceCalled('File', '/var/run/oozie/oozie.pid',
+ action = ['delete'],
+ not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1'",
+ )
+ self.assertResourceCalled('Directory', '/usr/lib/oozie//var/tmp/oozie',
+ owner = 'oozie',
+ cd_access = 'a',
+ group = 'hadoop',
+ recursive = True,
+ mode = 0755,
+ )
+ self.assertResourceCalled('Directory', '/var/run/oozie',
+ owner = 'oozie',
+ cd_access = 'a',
+ group = 'hadoop',
+ recursive = True,
+ mode = 0755,
+ )
+ self.assertResourceCalled('Directory', '/var/log/oozie',
+ owner = 'oozie',
+ cd_access = 'a',
+ group = 'hadoop',
+ recursive = True,
+ mode = 0755,
+ )
+ self.assertResourceCalled('Directory', '/var/tmp/oozie',
+ owner = 'oozie',
+ cd_access = 'a',
+ group = 'hadoop',
+ recursive = True,
+ mode = 0755,
+ )
+ self.assertResourceCalled('Directory', '/hadoop/oozie/data',
+ owner = 'oozie',
+ cd_access = 'a',
+ group = 'hadoop',
+ recursive = True,
+ mode = 0755,
+ )
+ self.assertResourceCalled('Directory', '/var/lib/oozie',
+ owner = 'oozie',
+ cd_access = 'a',
+ group = 'hadoop',
+ recursive = True,
+ mode = 0755,
+ )
+ self.assertResourceCalled('Directory', '/var/lib/oozie/oozie-server/webapps/',
+ owner = 'oozie',
+ cd_access = 'a',
+ group = 'hadoop',
+ recursive = True,
+ mode = 0755,
+ )
+ self.assertResourceCalled('Directory', '/var/lib/oozie/oozie-server/conf',
+ owner = 'oozie',
+ cd_access = 'a',
+ group = 'hadoop',
+ recursive = True,
+ mode = 0755,
+ )
+ self.assertResourceCalled('Directory', '/var/lib/oozie/oozie-server',
+ owner = 'oozie',
+ recursive = True,
+ group = 'hadoop',
+ mode = 0755,
+ cd_access = 'a',
+ )
+ self.assertResourceCalled('Directory', '/usr/lib/oozie/libext',
+ recursive = True,
+ )
+ self.assertResourceCalled('Execute', ('tar', '-xvf', '/usr/lib/oozie/oozie-sharelib.tar.gz', '-C', '/usr/lib/oozie'),
+ not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1' || test -f /usr/lib/oozie/.hashcode && test -d /usr/lib/oozie/share && [[ `cat /usr/lib/oozie/.hashcode` == 'abc123hash' ]]",
+ sudo = True,
+ )
+ self.assertResourceCalled('Execute', ('cp', '/usr/share/HDP-oozie/ext-2.2.zip', '/usr/lib/oozie/libext'),
+ not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1'",
+ sudo = True,
+ )
+ self.assertResourceCalled('Execute', ('chown', u'oozie:hadoop', '/usr/lib/oozie/libext/ext-2.2.zip'),
+ not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1'",
+ sudo = True,
+ )
+ self.assertResourceCalled('Execute', ('chown', '-RL', u'oozie:hadoop', '/var/lib/oozie/oozie-server/conf'),
+ not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1'",
+ sudo = True,
+ )
+ self.assertResourceCalled('File', '/tmp/sqla-client-jdbc.tar.gz',
+ content = DownloadSource('http://c6401.ambari.apache.org:8080/resources//sqlanywhere-jdbc-driver.tar.gz'),
+ )
+ self.assertResourceCalled('Execute', ('tar', '-xvf', '/tmp/sqla-client-jdbc.tar.gz', '-C', '/tmp'),
+ sudo = True,
+ )
+ self.assertResourceCalled('Execute', 'ambari-sudo.sh [RMF_ENV_PLACEHOLDER] -H -E yes | cp /tmp/sqla-client-jdbc/java/* /usr/lib/oozie/libext',
+ path = ['/bin', '/usr/bin/'],
+ )
+ self.assertResourceCalled('Directory', '/usr/lib/oozie/libext/native/lib64',
+ recursive = True,
+ )
+ self.assertResourceCalled('Execute', 'ambari-sudo.sh [RMF_ENV_PLACEHOLDER] -H -E yes | cp /tmp/sqla-client-jdbc/native/lib64/* /usr/lib/oozie/libext/native/lib64',
+ path = ['/bin', '/usr/bin/'],
+ )
+ self.assertResourceCalled('File', '/usr/lib/oozie/libext/sajdbc4.jar',
+ owner = 'oozie',
+ group = 'hadoop',
+ )
+ self.assertResourceCalled('Execute', 'ambari-sudo.sh cp /usr/lib/falcon/oozie/ext/falcon-oozie-el-extension-*.jar /usr/lib/oozie/libext',
+ not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1'",
+ )
+ self.assertResourceCalled('Execute', 'ambari-sudo.sh chown oozie:hadoop /usr/lib/oozie/libext/falcon-oozie-el-extension-*.jar',
+ not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1'",
+ )
+ self.assertResourceCalled('Execute', 'cd /var/tmp/oozie && /usr/lib/oozie/bin/oozie-setup.sh prepare-war ',
+ not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1' || test -f /usr/lib/oozie/.hashcode && test -d /usr/lib/oozie/share && [[ `cat /usr/lib/oozie/.hashcode` == 'abc123hash' ]] && test -f /usr/lib/oozie/.prepare_war_cmd && [[ `cat /usr/lib/oozie/.prepare_war_cmd` == 'cd /var/tmp/oozie && /usr/lib/oozie/bin/oozie-setup.sh prepare-war ' ]]",
+ user = 'oozie',
+ )
+ self.assertResourceCalled('File', '/usr/lib/oozie/.hashcode',
+ content = 'abc123hash',
+ mode = 0644,
+ )
+ self.assertResourceCalled('File', '/usr/lib/oozie/.prepare_war_cmd',
+ content = 'cd /var/tmp/oozie && /usr/lib/oozie/bin/oozie-setup.sh prepare-war ',
+ mode = 0644,
+ )
+ self.assertResourceCalled('Execute', ('chown', '-R', u'oozie:hadoop', '/var/lib/oozie/oozie-server'),
+ sudo = True,
+ )
+ self.assertNoMoreResources()
+
+
@patch("os.path.isfile")
def test_start_default(self, isfile_mock):
isfile_mock.return_value = True