Repository: incubator-slider Updated Branches: refs/heads/develop 937e0a7ce -> 94df22c92 refs/heads/feature/SLIDER-149_Support_a_YARN_service_registry 821d30664 -> 8b2d4d5a1
SLIDER-440. Add an env.sh file to limit post install changes to conf dir Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/2d6f4835 Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/2d6f4835 Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/2d6f4835 Branch: refs/heads/feature/SLIDER-149_Support_a_YARN_service_registry Commit: 2d6f48357e4622fe69de1184fbf6022646100745 Parents: 26e7c2a Author: Sumit Mohanty <smoha...@hortonworks.com> Authored: Wed Sep 17 21:49:29 2014 -0700 Committer: Sumit Mohanty <smoha...@hortonworks.com> Committed: Wed Sep 17 21:49:29 2014 -0700 ---------------------------------------------------------------------- slider-assembly/src/conf/slider-env.sh | 26 ++++++++++++++++ slider-assembly/src/main/scripts/slider | 9 ++++-- slider-assembly/src/main/scripts/slider.py | 40 ++++++++++++++++++------- 3 files changed, 61 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/2d6f4835/slider-assembly/src/conf/slider-env.sh ---------------------------------------------------------------------- diff --git a/slider-assembly/src/conf/slider-env.sh b/slider-assembly/src/conf/slider-env.sh new file mode 100644 index 0000000..f3ec550 --- /dev/null +++ b/slider-assembly/src/conf/slider-env.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# 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. + + +# this is the shell script to start Slider deploying an application +# Usage: slider <action> <commands> + +# The env variable SLIDER_JVM_OPTS can be used to override +# the default JVM opts + +export JAVA_HOME=${JAVA_HOME} +export HADOOP_CONF_DIR=${HADOOP_CONF_DIR} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/2d6f4835/slider-assembly/src/main/scripts/slider ---------------------------------------------------------------------- diff --git a/slider-assembly/src/main/scripts/slider b/slider-assembly/src/main/scripts/slider index 477e237..7e277c5 100755 --- a/slider-assembly/src/main/scripts/slider +++ b/slider-assembly/src/main/scripts/slider @@ -22,8 +22,6 @@ # The env variable SLIDER_JVM_OPTS can be used to override # the default JVM opts -export JAVA_HOME=${JAVA_HOME} - function usage { echo "Usage: slider <action> <arguments>" @@ -53,13 +51,18 @@ confdir=`cd -P "${confdir}" && pwd -P` confdir=${SLIDER_CONF_DIR:-$confdir} +if [ -f "${confdir}/slider-env.sh" ]; then + . "${confdir}/slider-env.sh" +fi + slider_jvm_opts="-Djava.net.preferIPv4Stack=true -Djava.awt.headless=true -Xmx256m -Djava.confdir=${confdir}" slider_jvm_opts=${SLIDER_JVM_OPTS:-$slider_jvm_opts} # allow for an extra classpath slider_classpath_extra=${SLIDER_CLASSPATH_EXTRA:-""} +hadoop_conf_dir=${HADOOP_CONF_DIR:-""} -slider_classpath="${libdir}/*:${confdir}:${slider_classpath_extra}" +slider_classpath="${libdir}/*:${confdir}:${slider_classpath_extra}:${hadoop_conf_dir}" launcher=org.apache.slider.Slider http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/2d6f4835/slider-assembly/src/main/scripts/slider.py ---------------------------------------------------------------------- diff --git a/slider-assembly/src/main/scripts/slider.py b/slider-assembly/src/main/scripts/slider.py index 735e09b..b290f07 100644 --- a/slider-assembly/src/main/scripts/slider.py +++ b/slider-assembly/src/main/scripts/slider.py @@ -25,10 +25,11 @@ CONF = "conf" LIB = "lib" -JAVA_HOME = None +ENV_KEYS = ["JAVA_HOME", "HADOOP_CONF_DIR"] SLIDER_CONF_DIR = "SLIDER_CONF_DIR" SLIDER_JVM_OPTS = "SLIDER_JVM_OPTS" SLIDER_CLASSPATH_EXTRA = "SLIDER_CLASSPATH_EXTRA" +HADOOP_CONF_DIR = "HADOOP_CONF_DIR" SLIDER_CLASSNAME = "org.apache.slider.Slider" DEFAULT_JVM__OPTS = "-Djava.net.preferIPv4Stack=true -Djava.awt.headless=true -Xmx256m -Djava.confdir=%s" @@ -36,7 +37,7 @@ DEFAULT_JVM__OPTS = "-Djava.net.preferIPv4Stack=true -Djava.awt.headless=true -X ON_POSIX = 'posix' in sys.builtin_module_names finished = False -DEBUG = True +DEBUG = False """ Launches slider @@ -48,6 +49,18 @@ to explain the code here """ +def executeEnvSh(confDir): + envCmd = 'source %s/slider-env.sh && env' % confDir + command = ['bash', '-c', envCmd] + + proc = subprocess.Popen(command, stdout = subprocess.PIPE) + + for line in proc.stdout: + (key, _, value) = line.strip().partition("=") + if key in ENV_KEYS: + os.environ[key] = value + + proc.communicate() def scriptDir(): @@ -70,7 +83,7 @@ def confDir(sliderdir): override the relative path """ localconf = os.path.join(sliderdir, CONF) - return os.environ.get(SLIDER_CONF_DIR,localconf) + return os.environ.get(SLIDER_CONF_DIR, localconf) def dirMustExist(dirname): if not os.path.exists(dirname): @@ -124,7 +137,10 @@ def print_output(name, src): while not finished: (line, done) = read(src, line) if done: - info(name +': ' + line) + if DEBUG: + info(name +': ' + line) + else: + info(line) line = "" src.close() @@ -158,6 +174,8 @@ def runProcess(commandline): time.sleep(1) debug("completed with exit code : %d" % exe.returncode) finished = True + t.join() + t2.join() return exe.returncode @@ -192,11 +210,8 @@ def java(classname, args, classpath, jvm_opts_list): # split the JVM opts by space # java = "/usr/bin/java" prg = "java" - if JAVA_HOME: - prg = os.path.join(JAVA_HOME, "bin", "java") - else: - if which("java") is None: - prg = os.path.join(os.environ["JAVA_HOME"], "bin", "java") + if which("java") is None: + prg = os.path.join(os.environ["JAVA_HOME"], "bin", "java") commandline = [prg] commandline.extend(jvm_opts_list) commandline.append("-classpath") @@ -223,16 +238,19 @@ def main(): slider_home = sliderDir() libdir = dirMustExist(libDir(slider_home)) confdir = dirMustExist(confDir(slider_home)) + executeEnvSh(confdir) default_jvm_opts = DEFAULT_JVM__OPTS % confdir slider_jvm_opts = os.environ.get(SLIDER_JVM_OPTS, default_jvm_opts) jvm_opts_split = slider_jvm_opts.split() slider_classpath_extra = os.environ.get(SLIDER_CLASSPATH_EXTRA, "") + hadoop_conf_dir = os.environ.get(HADOOP_CONF_DIR, "") p = os.pathsep # path separator d = os.sep # dir separator slider_classpath = libdir + d + "*" + p \ + confdir + p \ - + slider_classpath_extra - + + slider_classpath_extra + p \ + + hadoop_conf_dir + print "slider_home = \"%s\"" % slider_home print "slider_jvm_opts = \"%s\"" % slider_jvm_opts