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

Reply via email to