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_wmqi.ksh 1.6 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: broker | uns 36 37 MYNAME=`basename $0` 38 MYDIR=`dirname $0` 39 40 typeset opt 41 42 while getopts 'R:G:Q:I:O:U:B:D:S:E:' opt 43 do 44 case "${opt}" in 45 R) RESOURCE=${OPTARG};; 46 G) RESOURCEGROUP=${OPTARG};; 47 Q) QMGR=${OPTARG};; 48 I) IN_QUEUE=${OPTARG};; 49 O) OUT_QUEUE=${OPTARG};; 50 U) MQSIUSER=${OPTARG};; 51 B) BROKER=${OPTARG};; 52 D) DBUSER=${OPTARG};; 53 S) START_COMMAND=${OPTARG};; 54 E) STOP_COMMAND=${OPTARG};; 55 *) exit 1;; 56 esac 57 done 58 59 if [ "${OPTIND}" -gt 1 ] 60 then 61 # Called by GDS 62 CALLER=GDS 63 64 shift $((${OPTIND} -1)) 65 else 66 # Called by SMF 67 exit 1 68 fi 69 70 METHOD=${1} 71 [ "${2}" = "broker" ] && COMPONENT=sib 72 [ "${2}" = "uns" ] && COMPONENT=siu 73 74 . ${MYDIR}/../${COMPONENT}/etc/config 75 76 [ -z "${MQSIUSER}" ] && MQSIUSER=mqm 77 [ -z "${BROKER}" ] && BROKER=UserNameServer 78 79 if [ "${CALLER}" = "GDS" ] 80 then 81 . ${MYDIR}/functions 82 83 # Perform all the scha* calls 84 TASK_COMMAND="" 85 86 if [ "${METHOD}" = "stop" ] 87 then 88 STOP_TIMEOUT=`/usr/cluster/bin/scha_resource_get -O Stop_timeout \ 89 -R ${RESOURCE} -G ${RESOURCEGROUP} ` 90 fi 91 92 # Determine the newtask project for start and stop 93 94 if [ "${METHOD}" != "test" ] 95 then 96 if [ `/usr/bin/uname -r` != "5.8" ] 97 then 98 # Retrieve the resource project name 99 RESOURCE_PROJECT_NAME=`/usr/cluster/bin/scha_resource_get \ 100 -R ${RESOURCE} -G ${RESOURCEGROUP} -O RESOURCE_PROJECT_NAME` 101 102 if [ -z "${RESOURCE_PROJECT_NAME}" -o "${RESOURCE_PROJECT_NAME}" = "default" ] 103 then 104 # Retrieve the resource group project name 105 RESOURCE_PROJECT_NAME=`/usr/cluster/bin/scha_resourcegroup_get \ 106 -G ${RESOURCEGROUP} -O RG_PROJECT_NAME` 107 fi 108 fi 109 110 # Validate that ${MQSIUSER} belongs to the ${RESOURCE_PROJECT_NAME} 111 if [ "${RESOURCE_PROJECT_NAME}" ] 112 then 113 PROJ_MEMBER=`/usr/bin/projects ${MQSIUSER} | /usr/bin/egrep "^${RESOURCE_PROJECT_NAME} | ${RESOURCE_PROJECT_NAME} | ${RESOURCE_PROJECT_NAME}$|^${RESOURCE_PROJECT_NAME}$"` 114 115 if [ -z "${PROJ_MEMBER}" ] 116 then 117 scds_syslog -p daemon.notice -t $(syslog_tag) -m \ 118 "%s - The user %s does not belongs to project %s" \ 119 "${MYNAME}" "${MQSIUSER}" "${RESOURCE_PROJECT_NAME}" 120 else 121 TASK_COMMAND="/usr/bin/newtask -p ${RESOURCE_PROJECT_NAME}" 122 fi 123 fi 124 fi 125 else 126 exit 1 127 fi 128 129 debug_message "Method: ${MYNAME} - Begin" 130 ${SET_DEBUG} 131 132 [ -x /sbin/zonename ] && ZONENAME=`/sbin/zonename` 133 134 set_redirection 135 136 case "${METHOD}" in 137 start) validate 138 rc=$? 139 [ "${rc}" -ne 0 ] && return ${rc} 140 start_broker 141 rc=$? 142 ;; 143 144 stop) stop_broker 145 rc=$? 146 ;; 147 148 test) 149 case "${COMPONENT}" in 150 sib) check_start "start-broker stop-broker" 151 rc=$? 152 [ "${rc}" -eq 100 ] && return ${rc} 153 154 # There are some dependencies that need to be observed in the event 155 # of either the Broker, Broker Queue Manager or Broker RDBMS being 156 # restarted, which are. 157 # 158 # Failure Intended Action Actual Action 159 # ------- --------------- ------------- 160 # Broker Broker Start SC Broker Resource Restarted 161 # 162 # Broker QMGR Broker Stop SC QMGR Resource Restarted 163 # Broker QMGR Start SC Broker Resource Restarted 164 # Broker Start 165 # 166 # Broker RDBMS Broker Stop SC RDBMS Resource Restarted 167 # Broker QMGR Stop SC QMGR Resource Restarted 168 # Broker RDBMS Start SC Broker Resource Restarted 169 # Broker QMGR Start 170 # Broker Start 171 # 172 # The above is achieved using Resource_dependencies_restart, i.e. 173 # 174 # scrgadm -c -j <BROKER resource> -y Resource_dependencies_restart=<QMGR resource> 175 # scrgadm -c -j <QMGR resource> -y Resource_dependencies_restart=<RDBMS resource> 176 177 check_broker 178 rc=$? 179 [ "${rc}" -ne 0 ] && rc=100 180 ;; 181 siu) check_start "start-uns stop-uns" 182 rc=$? 183 [ "${rc}" -eq 100 ] && return ${rc} 184 185 query_pids "bipservice" 186 rc=$? 187 [ "${rc}" -ne 0 ] && rc=100 188 ;; 189 esac 190 ;; 191 esac 192 193 debug_message "Method: ${MYNAME} - End" 194 exit $rc 195