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