diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/styles/cluster-information.css b/ambari-admin/src/main/resources/ui/admin-web/app/styles/cluster-information.css index 64e9ecb29ba..519eeaea508 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/styles/cluster-information.css +++ b/ambari-admin/src/main/resources/ui/admin-web/app/styles/cluster-information.css @@ -52,7 +52,30 @@ padding: 30px; } -#cluster-information .fa-cloud { - font-size: 150px; - color: #f0f0f0; +#cluster-information .install-button { + height: 40px; +} + +#cluster-information .install-button a { + height: 100%; + padding: 0; + width: 225px; + font-size: 16px; + line-height: 40px; +} + +@keyframes INSTALL-BOX-ROTATE { + 0% {transform: rotate(0deg)} + 12.5% {transform: rotate(-30deg)} + 37.5% {transform: rotate(30deg)} + 62.5% {transform: rotate(-30deg)} + 87.5% {transform: rotate(30deg)} + 100% {transform: rotate(0deg)} +} + +#cluster-information #install-box { + animation: INSTALL-BOX-ROTATE 2s; + width: 116px; + margin-bottom: 20px; + margin-top: 40px; } diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/clusterInformation.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/clusterInformation.html index ead73c309f2..9747addcf8e 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/clusterInformation.html +++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/clusterInformation.html @@ -20,17 +20,17 @@

{{'main.title' | translate}}

- {{'main.noClusterDescription' | translate}} + {{'main.noClusterDescription' | translate}}

{{'main.createCluster.title' | translate}}

- + {{'main.createCluster.description' | translate}}
-
-
+
+
{{'main.createCluster.launchInstallWizard' | translate}} diff --git a/ambari-common/src/main/python/ambari_commons/os_check.py b/ambari-common/src/main/python/ambari_commons/os_check.py index 04165848508..b2b227408ac 100644 --- a/ambari-common/src/main/python/ambari_commons/os_check.py +++ b/ambari-common/src/main/python/ambari_commons/os_check.py @@ -164,6 +164,8 @@ def __getattr__(cls, name): class OSConst: __metaclass__ = OS_CONST_TYPE + systemd_redhat_os_major_versions = ["7"] + class OSCheck: diff --git a/ambari-infra/ambari-infra-assembly/pom.xml b/ambari-infra/ambari-infra-assembly/pom.xml index bf0e6791d49..41fa5739c92 100644 --- a/ambari-infra/ambari-infra-assembly/pom.xml +++ b/ambari-infra/ambari-infra-assembly/pom.xml @@ -25,7 +25,7 @@ 4.0.0 ambari-infra-assembly - Ambari Infra Solr Assembly + Ambari Infra Assembly http://maven.apache.org @@ -41,7 +41,7 @@ ambari-infra-manager ${project.basedir}/../ambari-infra-manager ${mapping.base.path}/${infra-manager.package.name} - /etc/${infra-manager.package.name}/conf + ${infra-manager.mapping.path}/conf @@ -142,30 +142,16 @@ ${project.basedir}/src/main/package/rpm/manager/postinstall.sh utf-8 + + ${project.basedir}/src/main/package/rpm/manager/postremove.sh + utf-8 + ${infra-manager.mapping.path} ${infra-manager.dir}/target/package - - log4j.xml - infra-manager.properties - infra-manager-env.sh - - - - - - ${infra-manager.conf.mapping.path} - - - ${infra-manager.dir}/target/package - - log4j.xml - infra-manager.properties - infra-manager-env.sh - @@ -354,23 +340,6 @@ root ${infra-manager.mapping.path} - - log4j.xml,infra-manager.properties,infra-manager-env.sh - - - - ${infra-manager.dir}/target/package - directory - - ${infra-manager.conf.mapping.path} - perm - root - root - 644 - - - log4j.xml,infra-manager.properties,infra-manager-env.sh - diff --git a/ambari-infra/ambari-infra-assembly/src/main/package/deb/manager/postinst b/ambari-infra/ambari-infra-assembly/src/main/package/deb/manager/postinst index c8d6ecd2042..acce62dd2cb 100644 --- a/ambari-infra/ambari-infra-assembly/src/main/package/deb/manager/postinst +++ b/ambari-infra/ambari-infra-assembly/src/main/package/deb/manager/postinst @@ -15,6 +15,13 @@ # limitations under the License INFRA_MANAGER_LINK_NAME="/usr/bin/infra-manager" -INFRA_MANAGER_SOURCE="/usr/lib/ambari-infra-manager/infraManager.sh" +INFRA_MANAGER_SOURCE="/usr/lib/ambari-infra-manager/bin/infraManager.sh" +INFRA_MANAGER_CONF_LINK_DIR="/etc/ambari-infra-manager" +INFRA_MANAGER_CONF_LINK_NAME="$INFRA_MANAGER_CONF_LINK_DIR/conf" +INFRA_MANAGER_CONF_SOURCE="/usr/lib/ambari-infra-manager/conf" rm -f $INFRA_MANAGER_LINK_NAME ; ln -s $INFRA_MANAGER_SOURCE $INFRA_MANAGER_LINK_NAME +rm -f $INFRA_MANAGER_CONF_LINK_NAME +rm -rf $INFRA_MANAGER_CONF_LINK_DIR +mkdir -p $INFRA_MANAGER_CONF_LINK_DIR +ln -s $INFRA_MANAGER_CONF_SOURCE $INFRA_MANAGER_CONF_LINK_NAME diff --git a/ambari-infra/ambari-infra-assembly/src/main/package/deb/manager/postrm b/ambari-infra/ambari-infra-assembly/src/main/package/deb/manager/postrm index 21a01faa534..e62abc6f2bc 100644 --- a/ambari-infra/ambari-infra-assembly/src/main/package/deb/manager/postrm +++ b/ambari-infra/ambari-infra-assembly/src/main/package/deb/manager/postrm @@ -13,3 +13,11 @@ # 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 + +INFRA_MANAGER_CONF_LINK_DIR="/etc/ambari-infra-manager" +INFRA_MANAGER_CONF_LINK_NAME="$INFRA_MANAGER_CONF_LINK_DIR/conf" +INFRA_MANAGER_LINK_NAME="/usr/bin/infra-manager" + +rm -f $INFRA_MANAGER_LINK_NAME +rm -f $INFRA_MANAGER_CONF_LINK_NAME +rm -rf $INFRA_MANAGER_CONF_LINK_DIR \ No newline at end of file diff --git a/ambari-infra/ambari-infra-assembly/src/main/package/rpm/manager/postinstall.sh b/ambari-infra/ambari-infra-assembly/src/main/package/rpm/manager/postinstall.sh index 48a39985c55..acce62dd2cb 100644 --- a/ambari-infra/ambari-infra-assembly/src/main/package/rpm/manager/postinstall.sh +++ b/ambari-infra/ambari-infra-assembly/src/main/package/rpm/manager/postinstall.sh @@ -15,6 +15,13 @@ # limitations under the License INFRA_MANAGER_LINK_NAME="/usr/bin/infra-manager" -INFRA_MANAGER_SOURCE="/usr/lib/ambari-infra-manager/infraManager.sh" +INFRA_MANAGER_SOURCE="/usr/lib/ambari-infra-manager/bin/infraManager.sh" +INFRA_MANAGER_CONF_LINK_DIR="/etc/ambari-infra-manager" +INFRA_MANAGER_CONF_LINK_NAME="$INFRA_MANAGER_CONF_LINK_DIR/conf" +INFRA_MANAGER_CONF_SOURCE="/usr/lib/ambari-infra-manager/conf" -rm -f $INFRA_MANAGER_LINK_NAME ; ln -s $INFRA_MANAGER_SOURCE $INFRA_MANAGER_LINK_NAME \ No newline at end of file +rm -f $INFRA_MANAGER_LINK_NAME ; ln -s $INFRA_MANAGER_SOURCE $INFRA_MANAGER_LINK_NAME +rm -f $INFRA_MANAGER_CONF_LINK_NAME +rm -rf $INFRA_MANAGER_CONF_LINK_DIR +mkdir -p $INFRA_MANAGER_CONF_LINK_DIR +ln -s $INFRA_MANAGER_CONF_SOURCE $INFRA_MANAGER_CONF_LINK_NAME diff --git a/ambari-infra/ambari-infra-assembly/src/main/package/rpm/manager/postremove.sh b/ambari-infra/ambari-infra-assembly/src/main/package/rpm/manager/postremove.sh new file mode 100644 index 00000000000..e62abc6f2bc --- /dev/null +++ b/ambari-infra/ambari-infra-assembly/src/main/package/rpm/manager/postremove.sh @@ -0,0 +1,23 @@ +#!/bin/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 + +INFRA_MANAGER_CONF_LINK_DIR="/etc/ambari-infra-manager" +INFRA_MANAGER_CONF_LINK_NAME="$INFRA_MANAGER_CONF_LINK_DIR/conf" +INFRA_MANAGER_LINK_NAME="/usr/bin/infra-manager" + +rm -f $INFRA_MANAGER_LINK_NAME +rm -f $INFRA_MANAGER_CONF_LINK_NAME +rm -rf $INFRA_MANAGER_CONF_LINK_DIR \ No newline at end of file diff --git a/ambari-infra/ambari-infra-manager/build.xml b/ambari-infra/ambari-infra-manager/build.xml index 3d0f4da8a05..6df3767c821 100644 --- a/ambari-infra/ambari-infra-manager/build.xml +++ b/ambari-infra/ambari-infra-manager/build.xml @@ -33,13 +33,16 @@ - - + - + + + + - + + diff --git a/ambari-infra/ambari-infra-manager/pom.xml b/ambari-infra/ambari-infra-manager/pom.xml index 75adb8dc43d..467dbad19a4 100644 --- a/ambari-infra/ambari-infra-manager/pom.xml +++ b/ambari-infra/ambari-infra-manager/pom.xml @@ -74,16 +74,6 @@ org.springframework.boot spring-boot-maven-plugin ${spring-boot.version} - - exec - - - - - repackage - - - org.apache.maven.plugins diff --git a/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/InfraManager.java b/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/InfraManager.java index 179b2d1cd4c..a212164e7ea 100644 --- a/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/InfraManager.java +++ b/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/InfraManager.java @@ -41,7 +41,7 @@ public class InfraManager { public static void main(String[] args) { - String pidFile = System.getenv("PID_FILE") == null ? "infra-manager.pid" : System.getenv("PID_FILE"); + String pidFile = System.getenv("INFRA_MANAGER_PID_FILE") == null ? "infra-manager.pid" : System.getenv("INFRA_MANAGER_PID_FILE"); new SpringApplicationBuilder(InfraManager.class) .bannerMode(Banner.Mode.OFF) .listeners(new ApplicationPidFileWriter(pidFile)) diff --git a/ambari-infra/ambari-infra-manager/src/main/resources/infra-manager-env.sh b/ambari-infra/ambari-infra-manager/src/main/resources/infra-manager-env.sh index c7e11c3265a..6897ea47199 100644 --- a/ambari-infra/ambari-infra-manager/src/main/resources/infra-manager-env.sh +++ b/ambari-infra/ambari-infra-manager/src/main/resources/infra-manager-env.sh @@ -15,4 +15,26 @@ # limitations under the License. # Extend with java options or system properties. e.g.: INFRA_MANAGER_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=5007,server=y,suspend=n" -export INFRA_MANAGER_OPTS="" \ No newline at end of file +export INFRA_MANAGER_OPTS="" + +# Log Search debug options +# export INFRA_MANAGER_DEBUG=true +# exoprt INFRA_MANAGER_DEBUG_SUSPEND=n +export INFRA_MANAGER_DEBUG_PORT=5005 + +# Log Search memory +# export INFRA_MANAGER_JAVA_MEM="--Xmx1024m" + +# export LOG_PATH=/var/log/ambari-logsearch-logfeeder/ +# export LOG_FILE=logsearch.log + +# Pid file of the application +# export INFRA_MANAGER_PID_DIR=/var/run/ambari-infra-manager +# export INFRA_MANAGER_PID_FILE=infra-manager.pid + +# SSL settings" +# export INFRA_MANAGER_SSL="true" +# export INFRA_MANAGER_KEYSTORE_LOCATION="/my/path/keystore.jks" +# export INFRA_MANAGER_KEYSTORE_TYPE="jks" +# export INFRA_MANAGER_TRUSTSTORE_LOCATION="/my/path/trutstore.jks" +# export INFRA_MANAGER_TRUSTSTORE_TYPE="jks" \ No newline at end of file diff --git a/ambari-infra/ambari-infra-manager/src/main/resources/infra-manager.properties b/ambari-infra/ambari-infra-manager/src/main/resources/infra-manager.properties index 61c08e5631d..70c46d33985 100644 --- a/ambari-infra/ambari-infra-manager/src/main/resources/infra-manager.properties +++ b/ambari-infra/ambari-infra-manager/src/main/resources/infra-manager.properties @@ -41,7 +41,7 @@ infra-manager.jobs.solr_data_export.archive_audit_logs.solr.sort_column[1]=id infra-manager.jobs.solr_data_export.archive_audit_logs.solr.delete_query_text=logtime:[${start.logtime} TO ${end.logtime}} OR (logtime:${end.logtime} AND id:[* TO ${end.id}]) infra-manager.jobs.solr_data_export.archive_audit_logs.read_block_size=100 infra-manager.jobs.solr_data_export.archive_audit_logs.write_block_size=150 -infra-manager.jobs.solr_data_export.archive_audit_logs.destination=S3 +infra-manager.jobs.solr_data_export.archive_audit_logs.destination=HDFS # TODO: logtime may not be enough: The same filename can be generated when more than write_block_size count docs has the same logtime value infra-manager.jobs.solr_data_export.archive_audit_logs.file_name_suffix_column=logtime infra-manager.jobs.solr_data_export.archive_audit_logs.file_name_suffix_date_format=yyyy-MM-dd'T'HH-mm-ss.SSSX diff --git a/ambari-infra/ambari-infra-manager/src/main/resources/infraManager.sh b/ambari-infra/ambari-infra-manager/src/main/resources/infraManager.sh index bbf03dff4fe..0e3e749a48c 100644 --- a/ambari-infra/ambari-infra-manager/src/main/resources/infraManager.sh +++ b/ambari-infra/ambari-infra-manager/src/main/resources/infraManager.sh @@ -14,15 +14,259 @@ # See the License for the specific language governing permissions and # limitations under the License. -: ${JAVA_HOME:?"Please set the JAVA_HOME variable!"} - JVM="java" -sdir="`dirname \"$0\"`" -ldir="`dirname "$(readlink -f "$0")"`" -DIR="$sdir" -if [ "$sdir" != "$ldir" ]; then - DIR="$ldir" +if [ -x $JAVA_HOME/bin/java ]; then + JVM=$JAVA_HOME/bin/java +fi + +if [ "$INFRA_MANAGER_JAVA_MEM" = "" ]; then + INFRA_MANAGER_JAVA_MEM="-Xmx1g" +fi + +readlinkf(){ + # get real path on mac OSX + perl -MCwd -e 'print Cwd::abs_path shift' "$1"; +} + +if [ "$(uname -s)" = 'Linux' ]; then + SCRIPT_DIR="`dirname "$(readlink -f "$0")"`" +else + SCRIPT_DIR="`dirname "$(readlinkf "$0")"`" +fi + +INFRA_MANAGER_ROOT_DIR="`dirname \"$SCRIPT_DIR\"`" +INFRA_MANAGER_LIBS_DIR="$INFRA_MANAGER_ROOT_DIR/libs" + +if [ "$INFRA_MANAGER_CONF_DIR" = "" ]; then + if [ -d "$INFRA_MANAGER_ROOT_DIR/conf" ]; then + INFRA_MANAGER_CONF_DIR="$INFRA_MANAGER_ROOT_DIR/conf" + fi +fi + +if [ -f "$INFRA_MANAGER_CONF_DIR/infra-manager-env.sh" ]; then + source $INFRA_MANAGER_CONF_DIR/infra-manager-env.sh +fi + +if [ ! -z "$INFRA_MANAGER_SOLR_CLIENT_SSL_INCLUDE" ]; then + source $INFRA_MANAGER_SOLR_CLIENT_SSL_INCLUDE +fi + +if [ -z "$INFRA_MANAGER_PID_FILE" ]; then + INFRA_MANAGER_PID_DIR=$HOME + export INFRA_MANAGER_PID_FILE=$INFRA_MANAGER_PID_DIR/infra-manager.pid +fi + +if [ -z "$LOG_FILE" ]; then + export LOG_FILE="infra-manager.log" +fi + +INFRA_MANAGER_GC_LOGFILE="infra-manager-gc.log" + +if [ -z "$LOG_PATH" ]; then + LOG_FILE="$HOME/$LOG_FILE" + INFRA_MANAGER_GC_LOGFILE="$HOME/$INFRA_MANAGER_GC_LOGFILE" +else + LOG_PATH_WITHOUT_SLASH=${LOG_PATH%/} + LOG_FILE="$LOG_PATH_WITHOUT_SLASH/$LOG_FILE" + INFRA_MANAGER_GC_LOGFILE="$LOG_PATH_WITHOUT_SLASH/$INFRA_MANAGER_GC_LOGFILE" +fi + +INFRA_MANAGER_GC_OPTS="-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:$INFRA_MANAGER_GC_LOGFILE" + +function print_usage() { + cat << EOF + + Usage: [] [] + + commands: + start Start Infra Manager + stop Stop Infra Manager + status Check Infra Manager is running or not (pid file) + help Print usage + + + start command arguments: + -d, --debug Start java process in debug mode + -f, --foreground Start java process in foreground + +EOF +} + +function spinner() { + local pid=$1 + local delay=0.5 + local spinstr='|/-\' + while [ "$(ps aux | awk '{print $2}' | grep -w $pid)" ]; do + local temp=${spinstr#?} + printf " [%c] " "$spinstr" + local spinstr=$temp${spinstr%"$temp"} + sleep $delay + printf "\b\b\b\b\b\b" + done + printf " \b\b\b\b" +} + +function status() { + echo "Checking Infra Manager status ..." >&2 + if [ -f "$INFRA_MANAGER_PID_FILE" ]; then + INFRA_MANAGER_PID=`cat "$INFRA_MANAGER_PID_FILE"` + else + echo "Infra Manager pid not exists. (probably the process is not running)" >&2 + return 1 + fi + + if ps -p $INFRA_MANAGER_PID > /dev/null + then + echo "Infra Manager process is running. (pid: $INFRA_MANAGER_PID)" >&2 + return 0 + else + echo "Infra Manager process is not running." >&2 + return 1 + fi +} + +function start() { + exit_status=$(status; echo $?) + if [ "$exit_status" = "0" ]; then + echo "Skipping start process." + exit 0 + fi + + FG="false" + INFRA_MANAGER_DEBUG_SUSPEND=${INFRA_MANAGER_DEBUG_SUSPEND:-n} + INFRA_MANAGER_DEBUG_PORT=${INFRA_MANAGER_DEBUG_PORT:-"5005"} + + if [ "$INFRA_MANAGER_DEBUG" = "true" ]; then + INFRA_MANAGER_JAVA_OPTS="$INFRA_MANAGER_JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,address=$INFRA_MANAGER_DEBUG_PORT,server=y,suspend=$INFRA_MANAGER_DEBUG_SUSPEND " + fi + + if [ "$INFRA_MANAGER_SSL" = "true" ]; then + INFRA_MANAGER_JAVA_OPTS="$INFRA_MANAGER_JAVA_OPTS -Djavax.net.ssl.keyStore=$INFRA_MANAGER_KEYSTORE_LOCATION -Djavax.net.ssl.keyStoreType=$INFRA_MANAGER_KEYSTORE_TYPE -Djavax.net.ssl.trustStore=$INFRA_MANAGER_TRUSTSTORE_LOCATION -Djavax.net.ssl.trustStoreType=$INFRA_MANAGER_TRUSTSTORE_TYPE" + fi + + if [ "$INFRA_MANAGER_JMX" = "true" ]; then + INFRA_MANAGER_JAVA_OPTS="$INFRA_MANAGER_JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=2099" + fi + + if [ $# -gt 0 ]; then + while true; do + case "$1" in + -f|--foreground) + FG="true" + shift + ;; + -d|--debug) + if [ "$INFRA_MANAGER_DEBUG" != "true" ]; then + INFRA_MANAGER_JAVA_OPTS="$INFRA_MANAGER_JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,address=$INFRA_MANAGER_DEBUG_PORT,server=y,suspend=$INFRA_MANAGER_DEBUG_SUSPEND " + fi + shift + ;; + *) + if [ "${1:0:2}" == "-D" ]; then + # pass thru any opts that begin with -D (java system props) + INFRA_MANAGER_JAVA_OPTS+=("$1") + echo "$INFRA_MANAGER_JAVA_OPTS" + shift + else + if [ "$1" != "" ]; then + print_usage + exit 1 + else + break + fi + fi + ;; + esac + done + fi + + if [ $FG == "true" ]; then + echo "Starting Infra Manager... (foreground) pid_file=$INFRA_MANAGER_PID_FILE" + echo "Run command $JVM -cp '$INFRA_MANAGER_CONF_DIR:$INFRA_MANAGER_LIBS_DIR/*' $INFRA_MANAGER_GC_OPTS $INFRA_MANAGER_JAVA_OPTS $INFRA_MANAGER_JAVA_MEM org.apache.ambari.infra.InfraManager" + $JVM -cp "$INFRA_MANAGER_CONF_DIR:$INFRA_MANAGER_LIBS_DIR/*" $INFRA_MANAGER_GC_OPTS $INFRA_MANAGER_JAVA_OPTS $INFRA_MANAGER_JAVA_MEM org.apache.ambari.infra.InfraManager + else + echo "Starting Infra Manager... Output file=$LOG_FILE pid_file=$INFRA_MANAGER_PID_FILE" + echo "Run command nohup $JVM -cp '$INFRA_MANAGER_CONF_DIR:$INFRA_MANAGER_LIBS_DIR/*' $INFRA_MANAGER_GC_OPTS $INFRA_MANAGER_JAVA_OPTS $INFRA_MANAGER_JAVA_MEM org.apache.ambari.infra.InfraManager" + nohup $JVM -cp "$INFRA_MANAGER_CONF_DIR:$INFRA_MANAGER_LIBS_DIR/*" $INFRA_MANAGER_GC_OPTS $INFRA_MANAGER_JAVA_OPTS $INFRA_MANAGER_JAVA_MEM org.apache.ambari.infra.InfraManager > $LOG_FILE 2>&1 & + fi +} + +function stop() { + INFRA_MANAGER_STOP_WAIT=3 + if [ -f "$INFRA_MANAGER_PID_FILE" ]; then + INFRA_MANAGER_PID=`cat "$INFRA_MANAGER_PID_FILE"` + fi + + if [ "$INFRA_MANAGER_PID" != "" ]; then + echo -e "Sending stop command to Infra Manager... Checking PID: $INFRA_MANAGER_PID." + kill $INFRA_MANAGER_PID + (loops=0 + while true + do + CHECK_PID=`ps auxww | awk '{print $2}' | grep -w $INFRA_MANAGER_PID | sort -r | tr -d ' '` + if [ "$CHECK_PID" != "" ]; then + slept=$((loops * 2)) + if [ $slept -lt $INFRA_MANAGER_STOP_WAIT ]; then + sleep 2 + loops=$[$loops+1] + else + exit # subshell! + fi + else + exit # subshell! + fi + done) & + spinner $! + rm -f "$INFRA_MANAGER_PID_FILE" + else + echo -e "No Infra Manager process found to stop." + exit 0 + fi + + CHECK_PID=`ps auxww | awk '{print $2}' | grep -w $INFRA_MANAGER_PID | sort -r | tr -d ' '` + if [ "$CHECK_PID" != "" ]; then + echo -e "Infra Manager process $INFRA_MANAGER_PID is still running; forcefully killing it now." + kill -9 $INFRA_MANAGER_PID + echo "Killed process $INFRA_MANAGER_PID" + rm -f "$INFRA_MANAGER_PID_FILE" + sleep 1 + else + echo "Infra Manager is stopped." + fi + + CHECK_PID=`ps auxww | awk '{print $2}' | grep -w $INFRA_MANAGER_PID | sort -r | tr -d ' '` + if [ "$CHECK_PID" != "" ]; then + echo "ERROR: Failed to kill Infra Manager Java process $INFRA_MANAGER_PID ... script fails." + exit 1 + fi +} + +if [ $# -gt 0 ]; then + SCRIPT_CMD="$1" + shift +else + print_usage + exit 1 fi -PATH=$JAVA_HOME/bin:$PATH nohup $JVM -classpath "/etc/ambari-infra-manager/conf:$DIR:$DIR/libs/*" $INFRA_MANAGER_OPTS org.apache.ambari.infra.InfraManager ${1+"$@"} & \ No newline at end of file +case $SCRIPT_CMD in + start) + start ${1+"$@"} + ;; + stop) + stop + ;; + status) + status + ;; + help) + print_usage + exit 0 + ;; + *) + print_usage + exit 1 + ;; + +esac \ No newline at end of file diff --git a/ambari-logsearch/ambari-logsearch-assembly/src/main/package/rpm/logfeeder/postinstall.sh b/ambari-logsearch/ambari-logsearch-assembly/src/main/package/rpm/logfeeder/postinstall.sh index a4eec771f3a..057227dd7ea 100755 --- a/ambari-logsearch/ambari-logsearch-assembly/src/main/package/rpm/logfeeder/postinstall.sh +++ b/ambari-logsearch/ambari-logsearch-assembly/src/main/package/rpm/logfeeder/postinstall.sh @@ -17,9 +17,12 @@ LOGFEEDER_SCRIPT_LINK_NAME="/usr/bin/logfeeder" LOGFEEDER_SCRIPT_SOURCE="/usr/lib/ambari-logsearch-logfeeder/bin/logfeeder.sh" -LOGFEEDER_CONF_LINK="/etc/ambari-logsearch-logfeeder/conf" +LOGFEEDER_ETC_FOLDER="/etc/ambari-logsearch-logfeeder" +LOGFEEDER_CONF_LINK="$LOGFEEDER_ETC_FOLDER/conf" LOGFEEDER_CONF_SOURCE="/usr/lib/ambari-logsearch-logfeeder/conf" +mkdir -p $LOGFEEDER_ETC_FOLDER + ln -s $LOGFEEDER_SCRIPT_SOURCE $LOGFEEDER_SCRIPT_LINK_NAME ln -s $LOGFEEDER_CONF_SOURCE $LOGFEEDER_CONF_LINK diff --git a/ambari-logsearch/ambari-logsearch-assembly/src/main/package/rpm/logfeeder/postremove.sh b/ambari-logsearch/ambari-logsearch-assembly/src/main/package/rpm/logfeeder/postremove.sh index 5f1c623d65e..4583980f198 100755 --- a/ambari-logsearch/ambari-logsearch-assembly/src/main/package/rpm/logfeeder/postremove.sh +++ b/ambari-logsearch/ambari-logsearch-assembly/src/main/package/rpm/logfeeder/postremove.sh @@ -15,7 +15,9 @@ # limitations under the License LOGFEEDER_SCRIPT_LINK_NAME="/usr/bin/logfeeder" -LOGFEEDER_CONF_DIR_LINK="/etc/ambari-logsearch-logfeeder/conf" +LOGFEEDER_ETC_FOLDER="/etc/ambari-logsearch-logfeeder" +LOGFEEDER_CONF_DIR_LINK="$LOGFEEDER_ETC_FOLDER/conf" rm -f $LOGFEEDER_SCRIPT_LINK_NAME -rm -f $LOGFEEDER_CONF_DIR_LINK \ No newline at end of file +rm -f $LOGFEEDER_CONF_DIR_LINK +rm -f $LOGFEEDER_ETC_FOLDER \ No newline at end of file diff --git a/ambari-logsearch/ambari-logsearch-assembly/src/main/package/rpm/portal/postinstall.sh b/ambari-logsearch/ambari-logsearch-assembly/src/main/package/rpm/portal/postinstall.sh index 91074824a25..0d0cb3104bd 100644 --- a/ambari-logsearch/ambari-logsearch-assembly/src/main/package/rpm/portal/postinstall.sh +++ b/ambari-logsearch/ambari-logsearch-assembly/src/main/package/rpm/portal/postinstall.sh @@ -17,9 +17,12 @@ LOGSEARCH_SCRIPT_LINK_NAME="/usr/bin/logsearch" LOGSEARCH_SCRIPT_SOURCE="/usr/lib/ambari-logsearch-portal/bin/logsearch.sh" -LOGSEARCH_CONF_LINK="/etc/ambari-logsearch-portal/conf" +LOGSEARCH_ETC_FOLDER="/etc/ambari-logsearch-portal" +LOGSEARCH_CONF_LINK="$LOGSEARCH_ETC_FOLDER/conf" LOGSEARCH_CONF_SOURCE="/usr/lib/ambari-logsearch-portal/conf" +mkdir -p $LOGSEARCH_ETC_FOLDER + ln -s $LOGSEARCH_SCRIPT_SOURCE $LOGSEARCH_SCRIPT_LINK_NAME ln -s $LOGSEARCH_CONF_SOURCE $LOGSEARCH_CONF_LINK diff --git a/ambari-logsearch/ambari-logsearch-assembly/src/main/package/rpm/portal/postremove.sh b/ambari-logsearch/ambari-logsearch-assembly/src/main/package/rpm/portal/postremove.sh index 8de05c12990..b07a1adc835 100644 --- a/ambari-logsearch/ambari-logsearch-assembly/src/main/package/rpm/portal/postremove.sh +++ b/ambari-logsearch/ambari-logsearch-assembly/src/main/package/rpm/portal/postremove.sh @@ -15,7 +15,9 @@ # limitations under the License LOGSEARCH_SCRIPT_LINK_NAME="/usr/bin/logsearch" -LOGSEARCH_CONF_DIR_LINK="/etc/ambari-logsearch-portal/conf" +LOGSEARCH_ETC_FOLDER="/etc/ambari-logsearch-portal" +LOGSEARCH_CONF_DIR_LINK="$LOGSEARCH_ETC_FOLDER/conf" rm -f $LOGSEARCH_SCRIPT_LINK_NAME -rm -f $LOGSEARCH_CONF_DIR_LINK \ No newline at end of file +rm -f $LOGSEARCH_CONF_DIR_LINK +rm -f $LOGSEARCH_ETC_FOLDER \ No newline at end of file diff --git a/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java b/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java index da3fc559045..03573ed1f22 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java @@ -24,6 +24,7 @@ import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; +import java.io.InputStreamReader; import java.io.Writer; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -90,6 +91,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.google.common.base.Charsets; import com.google.common.collect.Multimap; import com.google.common.collect.Sets; import com.google.gson.Gson; @@ -2891,7 +2893,7 @@ private static Properties readConfigFile() { // load the properties try { - properties.load(inputStream); + properties.load(new InputStreamReader(inputStream, Charsets.UTF_8)); inputStream.close(); } catch (FileNotFoundException fnf) { LOG.info("No configuration file " + CONFIG_FILE + " found in classpath.", fnf); diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/services/MetricsRetrievalService.java b/ambari-server/src/main/java/org/apache/ambari/server/state/services/MetricsRetrievalService.java index 7e5aad1d80f..29757c5f88c 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/state/services/MetricsRetrievalService.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/services/MetricsRetrievalService.java @@ -59,7 +59,7 @@ * The {@link MetricsRetrievalService} is used as a headless, autonomous service * which encapsulates: *
    - *
  • An {@link ExecutorService} for fullfilling remote metric URL requests + *
  • An {@link ExecutorService} for fulfilling remote metric URL requests *
  • A cache for JMX metrics *
  • A cache for REST metrics *
@@ -270,7 +270,7 @@ protected void doStop() { * {@link #getCachedRESTMetric(String)}, depending on the type of metric * requested. *

- * Callers need not worry about invoking this mulitple times for the same URL + * Callers need not worry about invoking this multiple times for the same URL * endpoint. A single endpoint will only be enqueued once regardless of how * many times this method is called until it has been fully retrieved and * parsed. If the last endpoint request was too recent, then this method will @@ -349,7 +349,7 @@ public JMXMetricHolder getCachedJMXMetric(String jmxUrl) { * Gets a cached REST metric in the form of a {@link Map}. If there is no * metric data cached for the given URL, then {@code null} is returned. *

- * The onky way this cache is populated is by requesting the data to be loaded + * The only way this cache is populated is by requesting the data to be loaded * asynchronously via * {@link #submitRequest(MetricSourceType, StreamProvider, String)} with the * {@link MetricSourceType#REST} type. @@ -363,7 +363,7 @@ public Map getCachedRESTMetric(String restUrl) { } /** - * Encapsulates the common logic for all metric {@link Runnable} instnaces. + * Encapsulates the common logic for all metric {@link Runnable} instances. */ private static abstract class MetricRunnable implements Runnable { diff --git a/ambari-server/src/main/python/ambari_server/dbConfiguration_linux.py b/ambari-server/src/main/python/ambari_server/dbConfiguration_linux.py index 2ac5325b7e0..036a542d87b 100644 --- a/ambari-server/src/main/python/ambari_server/dbConfiguration_linux.py +++ b/ambari-server/src/main/python/ambari_server/dbConfiguration_linux.py @@ -355,19 +355,27 @@ class PGConfig(LinuxDBMSConfig): PG_ERROR_BLOCKED = "is being accessed by other users" PG_STATUS_RUNNING = None PG_STATUS_STOPPED = "stopped" - SERVICE_CMD = "/usr/bin/env service" PG_SERVICE_NAME = "postgresql" PG_HBA_DIR = None - PG_ST_CMD = "%s %s status" % (SERVICE_CMD, PG_SERVICE_NAME) - if os.path.isfile("/usr/bin/postgresql-setup"): - PG_INITDB_CMD = "/usr/bin/postgresql-setup initdb" + if OSCheck.is_redhat_family() and OSCheck.get_os_major_version() in OSConst.systemd_redhat_os_major_versions: + SERVICE_CMD = "/usr/bin/env systemctl" + PG_ST_CMD = "%s status %s" % (SERVICE_CMD, PG_SERVICE_NAME) + PG_INITDB_CMD = "/usr/bin/postgresql-setup initdb" + PG_START_CMD = AMBARI_SUDO_BINARY + " %s start %s" % (SERVICE_CMD, PG_SERVICE_NAME) + PG_RESTART_CMD = AMBARI_SUDO_BINARY + " %s restart %s" % (SERVICE_CMD, PG_SERVICE_NAME) + PG_HBA_RELOAD_CMD = AMBARI_SUDO_BINARY + " %s reload %s" % (SERVICE_CMD, PG_SERVICE_NAME) else: - PG_INITDB_CMD = "%s %s initdb" % (SERVICE_CMD, PG_SERVICE_NAME) + SERVICE_CMD = "/usr/bin/env service" + PG_ST_CMD = "%s %s status" % (SERVICE_CMD, PG_SERVICE_NAME) + if os.path.isfile("/usr/bin/postgresql-setup"): + PG_INITDB_CMD = "/usr/bin/postgresql-setup initdb" + else: + PG_INITDB_CMD = "%s %s initdb" % (SERVICE_CMD, PG_SERVICE_NAME) - PG_START_CMD = AMBARI_SUDO_BINARY + " %s %s start" % (SERVICE_CMD, PG_SERVICE_NAME) - PG_RESTART_CMD = AMBARI_SUDO_BINARY + " %s %s restart" % (SERVICE_CMD, PG_SERVICE_NAME) - PG_HBA_RELOAD_CMD = AMBARI_SUDO_BINARY + " %s %s reload" % (SERVICE_CMD, PG_SERVICE_NAME) + PG_START_CMD = AMBARI_SUDO_BINARY + " %s %s start" % (SERVICE_CMD, PG_SERVICE_NAME) + PG_RESTART_CMD = AMBARI_SUDO_BINARY + " %s %s restart" % (SERVICE_CMD, PG_SERVICE_NAME) + PG_HBA_RELOAD_CMD = AMBARI_SUDO_BINARY + " %s %s reload" % (SERVICE_CMD, PG_SERVICE_NAME) PG_HBA_CONF_FILE = None PG_HBA_CONF_FILE_BACKUP = None @@ -611,7 +619,7 @@ def _get_postgre_status(): retcode, out, err = run_os_command(PGConfig.PG_ST_CMD) # on RHEL and SUSE PG_ST_COMD returns RC 0 for running and 3 for stoppped if retcode == 0: - if out.strip() == "Running clusters:": + if out.strip() == "Running clusters:" or "active: inactive" in out.lower(): pg_status = PGConfig.PG_STATUS_STOPPED else: pg_status = PGConfig.PG_STATUS_RUNNING diff --git a/ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java b/ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java index d133c2e06d6..e23e013305d 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java @@ -914,4 +914,9 @@ public void testOverridingDhtKeySize() { Assert.assertEquals(1024, new Configuration(properties).getTlsEphemeralDhKeySize()); } + @Test + public void canReadNonLatin1Properties() { + Assert.assertEquals("árvíztűrő tükörfúrógép", new Configuration().getProperty("encoding.test")); + } + } diff --git a/ambari-server/src/test/resources/ambari.properties b/ambari-server/src/test/resources/ambari.properties index f1b96c7c9f7..8ba72e00146 100644 --- a/ambari-server/src/test/resources/ambari.properties +++ b/ambari-server/src/test/resources/ambari.properties @@ -14,4 +14,6 @@ # 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. \ No newline at end of file +# limitations under the License. + +encoding.test=árvíztűrő tükörfúrógép diff --git a/ambari-web/app/assets/img/install-box.svg b/ambari-web/app/assets/img/install-box.svg new file mode 100644 index 00000000000..e914885d43a --- /dev/null +++ b/ambari-web/app/assets/img/install-box.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + diff --git a/ambari-web/app/templates/common/configs/service_config.hbs b/ambari-web/app/templates/common/configs/service_config.hbs index 34ac6029576..fe9706279ae 100644 --- a/ambari-web/app/templates/common/configs/service_config.hbs +++ b/ambari-web/app/templates/common/configs/service_config.hbs @@ -188,7 +188,7 @@ {{view App.SpinnerView}} {{/if}} -

+