Home | History | Annotate | Download | only in mqs
      1 #!/usr/bin/ksh
      2 #
      3 # CDDL HEADER START
      4 #
      5 # The contents of this file are subject to the terms of the
      6 # Common Development and Distribution License (the License).
      7 # You may not use this file except in compliance with the License.
      8 #
      9 # You can obtain a copy of the license at usr/src/CDDL.txt
     10 # or http://www.opensolaris.org/os/licensing.
     11 # See the License for the specific language governing permissions
     12 # and limitations under the License.
     13 #
     14 # When distributing Covered Code, include this CDDL HEADER in each
     15 # file and include the License file at usr/src/CDDL.txt.
     16 # If applicable, add the following below this CDDL HEADER, with the
     17 # fields enclosed by brackets [] replaced with your own identifying
     18 # information: Portions Copyright [yyyy] [name of copyright owner]
     19 #
     20 # CDDL HEADER END
     21 #
     22 
     23 #
     24 # Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
     25 # Use is subject to license terms.
     26 #
     27 #ident   "@(#)control_wmqs.ksh 1.5     07/08/07 SMI"
     28 # 
     29 # Usage GDS: <options> <parameter1> <parameter2>
     30 #
     31 # Usage SMF: <parameter1> <parameter2> <parameter3>
     32 # 
     33 #	<options>: -R <resource> -G <resourcegroup> etc.
     34 #	parameter1: start | stop | test 
     35 #	parameter2: chi | csv | qmgr | lsr | trm
     36 #       parameter3: <FMRI>
     37 
     38 MYNAME=`basename $0`
     39 MYDIR=`dirname $0`
     40 
     41 typeset opt
     42 
     43 while getopts 'R:G:Q:U:C:D:O:I:S:E:P:B:M:N:A:' opt
     44 do
     45         case "${opt}" in
     46 		R)      RESOURCE=${OPTARG};;
     47 		G)      RESOURCEGROUP=${OPTARG};;
     48 		Q)      QMGR=${OPTARG};;
     49 		U)      USERID=${OPTARG};;
     50 		C)      CLEANUP=${OPTARG};;
     51 		D)      DB2INSTANCE=${OPTARG};;
     52 		O)      ORACLE_HOME=${OPTARG};;
     53 		I)      if [ "${CLEANUP}" ] 
     54 			then
     55 			   ORACLE_SID=${OPTARG}
     56 			else
     57 			   INITQNAME=${OPTARG}
     58 			fi;;
     59 		S)      START_COMMAND=${OPTARG};;
     60 		E)      STOP_COMMAND=${OPTARG};;
     61 		P)      PORT=${OPTARG};;
     62 		B)      BACKLOG=${OPTARG};;
     63 		M)      TRIGGER_MONITOR=${OPTARG};;
     64 		N)      SERVICES=${OPTARG};;
     65 		A)      IPADDR=${OPTARG};;
     66 
     67 		*)      exit 1;;
     68 	esac
     69 done
     70 
     71 if [ "${OPTIND}" -gt 1 ]
     72 then
     73 	# Called by GDS
     74 	CALLER=GDS
     75 
     76 	shift $((${OPTIND} -1))
     77 else
     78 	# Called by SMF
     79 	CALLER=SMF
     80 
     81 	. /lib/svc/share/smf_include.sh
     82 
     83 	SMF_FMRI=${3}
     84 fi
     85 
     86 METHOD=${1}
     87 COMPONENT=${2}
     88 
     89 if [ "${COMPONENT}" = "qmgr" ]
     90 then
     91 	. ${MYDIR}/../mgr/etc/config
     92 else
     93 	. ${MYDIR}/../${COMPONENT}/etc/config
     94 fi
     95 
     96 [ -z "${USERID}" ] && USERID=mqm
     97 [ -z "${CLEANUP}" ] && CLEANUP=YES
     98 
     99 if [ "${CALLER}" = "GDS" ]
    100 then
    101 	. ${MYDIR}/functions
    102 	
    103 	# Perform all the scha* calls
    104 	TASK_COMMAND=""
    105 
    106 	if [ "${METHOD}" = "stop" -a "${COMPONENT}" = "qmgr" ]
    107 	then
    108 	   STOP_TIMEOUT=`/usr/cluster/bin/scha_resource_get -O Stop_timeout \
    109 	      -R ${RESOURCE} -G ${RESOURCEGROUP} `
    110 	fi
    111 
    112 	if [ "${METHOD}" = "start" ]
    113 	then
    114 	   if [ "${COMPONENT}" = "chi" -o "${COMPONENT}" = "csv" ]
    115 	   then
    116 		START_TIMEOUT=`/usr/cluster/bin/scha_resource_get -O Start_timeout \
    117 		   -R ${RESOURCE} -G ${RESOURCEGROUP} `
    118 	   fi
    119 	fi
    120 
    121 	# Determine the newtask project for start and stop
    122 
    123 	if [ "${METHOD}" != "test" ]
    124 	then
    125 	   if [ `/usr/bin/uname -r` != "5.8" ]
    126 	   then
    127 	      # Retrieve the resource project name
    128 	      RESOURCE_PROJECT_NAME=`/usr/cluster/bin/scha_resource_get \
    129 		-R ${RESOURCE} -G ${RESOURCEGROUP} -O RESOURCE_PROJECT_NAME`
    130 		
    131 	      if [ -z "${RESOURCE_PROJECT_NAME}" -o "${RESOURCE_PROJECT_NAME}" = "default" ]
    132 	      then
    133 		# Retrieve the resource group project name 
    134 		RESOURCE_PROJECT_NAME=`/usr/cluster/bin/scha_resourcegroup_get \
    135 		   -G ${RESOURCEGROUP} -O RG_PROJECT_NAME`
    136 	      fi	
    137 	   fi
    138 
    139 	   # Validate that ${USERID} belongs to the ${RESOURCE_PROJECT_NAME}
    140 	   if [ "${RESOURCE_PROJECT_NAME}" ]
    141 	   then
    142 	      PROJ_MEMBER=`/usr/bin/projects ${USERID} | /usr/bin/egrep "^${RESOURCE_PROJECT_NAME} | ${RESOURCE_PROJECT_NAME} | ${RESOURCE_PROJECT_NAME}$|^${RESOURCE_PROJECT_NAME}$"`
    143 
    144 	      if [ -z "${PROJ_MEMBER}" ]
    145 	      then
    146 		scds_syslog -p daemon.notice -t $(syslog_tag) -m \
    147 		   "%s - The user %s does not belongs to project %s" \
    148 		   "${MYNAME}" "${USERID}" "${RESOURCE_PROJECT_NAME}"
    149 	      else
    150 		TASK_COMMAND="/usr/bin/newtask -p ${RESOURCE_PROJECT_NAME}"
    151 	      fi
    152 	   fi
    153 	fi
    154 else
    155 	case "${COMPONENT}" in
    156 	   chi) for i in RESOURCE RESOURCEGROUP QMGR INITQNAME
    157 		do
    158 		   export $i=`/usr/bin/svcprop -p parameters/$i ${SMF_FMRI}`
    159 		done
    160 		;;
    161 	   csv) for i in RESOURCE RESOURCEGROUP QMGR
    162 		do
    163 		   export $i=`/usr/bin/svcprop -p parameters/$i ${SMF_FMRI}`
    164 		done
    165 		;;
    166 	   lsr) for i in RESOURCE RESOURCEGROUP QMGR PORT IPADDR BACKLOG
    167 		do
    168 		   export $i=`/usr/bin/svcprop -p parameters/$i ${SMF_FMRI}`
    169 		done
    170 		;;
    171 	  qmgr) for i in RESOURCE RESOURCEGROUP QMGR SERVICES CLEANUP DB2INSTANCE \
    172 		   ORACLE_HOME ORACLE_SID START_COMMAND STOP_COMMAND STOP_TIMEOUT
    173 		do
    174 		   export $i=`/usr/bin/svcprop -p parameters/$i ${SMF_FMRI}`
    175 		done
    176 		;;
    177 	   trm) for i in RESOURCE RESOURCEGROUP QMGR TRIGGER_MONITOR
    178 		do
    179 		   export $i=`/usr/bin/svcprop -p parameters/$i ${SMF_FMRI}`
    180 		done
    181 		;;
    182 	esac
    183 
    184 	START_TIMEOUT=`/usr/bin/svcprop -p start/timeout_seconds ${SMF_FMRI}`
    185 	USERID=`/usr/bin/svcprop -p start/user ${SMF_FMRI}`
    186 	PROJECT=`/usr/bin/svcprop -p start/project ${SMF_FMRI}`
    187 
    188 	. ${MYDIR}/functions
    189 fi
    190 
    191 debug_message "Method: ${MYNAME} - Begin"
    192 ${SET_DEBUG}
    193 
    194 if [ -x /opt/mqm/bin/dspmqver ] 
    195 then
    196    CHECKMQ=/opt/mqm/bin/dspmqver
    197 else
    198    CHECKMQ=/opt/mqm/bin/mqver
    199 fi
    200 	
    201 mqver=`${CHECKMQ} | /usr/bin/grep Version | /usr/bin/awk '{print $2}' | \
    202    /usr/bin/awk -F. '{print $1}' | /usr/bin/cut -c1`
    203 
    204 [ -x /sbin/zonename ] && ZONENAME=`/sbin/zonename`
    205 
    206 set_redirection
    207 
    208 case "${METHOD}" in
    209 	start)
    210 	   case "${COMPONENT}" in
    211 		chi)    start_chi
    212 			rc=$?
    213 			;;
    214 		csv)    start_csv
    215 			rc=$?
    216 			;;
    217 		lsr)    start_lsr
    218 			rc=$?
    219 			;;
    220 		qmgr)	validate
    221 			rc=$?
    222 			[ "${rc}" -ne 0 ] && return ${rc}
    223 			start_qmgr
    224 			rc=$?
    225 			;;
    226 		trm)    start_trm
    227 			rc=$?
    228 			;;
    229 	esac
    230 	;;
    231 
    232 	stop)
    233 	   case "${COMPONENT}" in
    234 		chi)    stop_chi
    235 			rc=$?
    236 			;;
    237 		csv)    stop_csv
    238 			rc=$?
    239 			;;
    240 		lsr)    stop_lsr
    241 			rc=$?
    242 			;;
    243 		qmgr)	stop_qmgr
    244 			cleanup_ipc
    245 			rc=$?
    246 			;;
    247 		trm)    stop_trm
    248 			rc=$?
    249 			;;
    250 	esac
    251 	;;
    252 
    253 	test)
    254 	   case "${COMPONENT}" in
    255 		chi)    check_chi
    256 			rc=$?
    257 			;;
    258 		csv)    check_csv
    259 			rc=$?
    260 			;;
    261 		lsr)	check_start "start-lsr stop-lsr"
    262 			rc=$?
    263 			[ "${rc}" -eq 100 ] && return ${rc}
    264 			check_lsr
    265 			rc=$?
    266 			;;
    267 		qmgr) 	check_start "start-qmgr stop-qmgr"
    268 			rc=$?
    269 			[ "${rc}" -eq 100 ] && return ${rc}
    270 			check_qmgr
    271 			rc=$?
    272 			;;
    273 		trm)	check_start "start-trm stop-trm"
    274 			rc=$?
    275 			[ "${rc}" -eq 100 ] && return ${rc}
    276 			check_trm
    277 			rc=$?
    278 			;;
    279 	esac
    280 	;;
    281 esac
    282 
    283 debug_message "Method: ${MYNAME} - End"
    284 exit $rc
    285