123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- #!/bin/bash
- ################################################################################
- # HPCC SYSTEMS software Copyright (C) 2012 HPCC Systems®.
- #
- # Licensed 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.
- ################################################################################
- #
- #
- #########################################################################
- # #
- # System Flow #
- # #
- #########################################################################
- # #
- # 1. Parse Passed In arguments #
- # 2. Get the component and specific information #
- # 3. Generate component related config files (runtime directory) #
- # 4. CD to the runtime Directory #
- # 5. Start the component #
- # #
- #########################################################################
- ##-----------------------------------------------------------------------------
- # chkconfig Parameters
- ##-----------------------------------------------------------------------------
- ### BEGIN INIT INFO
- # chkconfig: 235 30 80
- # Description: Starts the HPCC dafilesrv processes
- # Short-Description: Controls HPCC dafilesrv
- # Provides: dafilesrv
- # Required-Start:
- # Required-Stop:
- # Default-Start:
- # Default-Stop:
- ### END INIT INFO
- ##-----------------------------------------------------------------------------
- # General Purpose Functions
- ##-----------------------------------------------------------------------------
- ###<REPLACE>###
- function print_usage {
- echo >&2 "Usage: $0 {start|stop|restart|status|setup}
- $0 [-h] [--help]"
- exit 0
- }
- cfggenpre=()
- source ${INSTALL_DIR}/etc/init.d/lock.sh
- source ${INSTALL_DIR}/etc/init.d/pid.sh
- source ${INSTALL_DIR}/etc/init.d/hpcc_common
- source ${INSTALL_DIR}/etc/init.d/init-functions
- source ${INSTALL_DIR}/etc/init.d/export-path
- ## Debug variable allowing verbose debug output
- ##
- DEBUG=${DEBUG:-NO_DEBUG}
- TRACE=${TRACE:-0}
- VERBOSE=${VERBOSE:-0}
- configgen_path=${INSTALL_DIR}/sbin
- basepath=`pwd`
- set_environmentvars
- envfile=$configs/$environment
- bin_path=${INSTALL_DIR}/bin
- component=""
- runSetupOnly=0
- source ${configgen_path}/hpcc_setenv
- createDir ${LOG_DIR}
- which_service
- #Check for existance of user
- check_user ${user}
- if [ $? -ne 1 ];then
- echo "User ${user} does not exist on the system. Exiting ..."
- exit 3
- fi
- check_group ${group}
- if [ $? -ne 1 ];then
- echo "Group ${group} does not exist on the system or not able to chgrp (sudo?). Exiting ..."
- exit 3
- fi
- check_getopt
- COMPS=$(${configgen_path}/configgen -env ${envfile} -ip "127.0.0.1" -list)
- rc=$?
- if [[ $rc -ne 0 ]]; then
- log "hpcc-init: failure to build COMPS from configgen call"
- echo -e "\033[31merror\033[0m: hpcc-init -> failure to build COMPS from configgen call"
- exit 1
- fi
- comp.parser ${COMPS}
- for i in ${compArray[@]}; do
- compName=${i#*_}
- comp.getByName ${compName}
- compType=`echo $comp_return | cut -d ' ' -f 1 | cut -d '=' -f 2 `
- if strstr ${compType} "dafilesrv" ;
- then
- component=${compName}
- break
- fi
- done
- ##################################################################################
- # Beginning of the Option Parsing #
- ##################################################################################
- if [ -z "${component}" ] ; then
- log_failure_msg "dafilesrv is not configured to run on this node"
- exit 3
- fi
- TEMP=`getopt -o h --long help -n 'dafilesrv' -- "$@"`
- if [ $? != 0 ] ; then echo "Failure to parse commandline." >&2 ; exit 1 ; fi
- eval set -- $TEMP
- while true ; do
- case "$1" in
- -h|--help) print_usage
- shift ;;
- --) shift ; break ;;
- *) print_usage ;;
- esac
- done
- for arg do arg=$arg; done
- if [ -z "$arg" ] || [ $# -ne 1 ]; then
- print_usage
- fi
- # for starting hpcc components concurrently, as
- # configgen -validateonly does not create unique tempdirs
- thisos=$(uname -s)
- if [[ "$thisos" = "Linux" && -f "${envfile}" && -n "${component}" && \
- "${DEBUG}" = "NO_DEBUG" && -z "$HPCC_NO_FLOCK" ]] ; then
- cfggenpre=(flock ${envfile})
- fi
- case "$arg" in
- status|start|restart|stop|setup)
- cmd=$arg
- ;;
- *) print_usage
- ;;
- esac
- if [ "${cmd}" = "start" ] || [ "${cmd}" = "restart" ]; then
- validate_configuration
- fi
- unset IFS
- DAFS_LOCK="/tmp/dafs_lock"
- trap "rm -f $DAFS_LOCK" SIGINT SIGTERM SIGQUIT
- STATUS=0
- for C in ${component} ; do
- set_componentvars ${C}
- if [ "${cmd}" == "start" ];then
- xcmd="${cmd}_dafilesrv ${C}"
- else
- xcmd="${cmd}_component ${C}"
- fi
- if [ ${DEBUG} != "NO_DEBUG" ]; then
- echo $xcmd
- fi
- if [[ "${cmd}" == "start" && "${thisos}" == "Linux" ]]; then
- (
- flock 99
- eval $xcmd
- STATUS=$?
- rm -f $DAFS_LOCK
- ) 99>$DAFS_LOCK
- else
- eval $xcmd
- STATUS=$?
- fi
- done
- exit ${STATUS}
|