New control_ids.ksh
  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 # Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
 23 # Use is subject to license terms.
 24 #
 25 #ident   "@(#)control_ids.ksh 1.3     08/05/27 SMI"
 26 #
 27 # Usage GDS: <options> <parameter1> <parameter2>
 28 #
 29 #       <options>: -R <resource> -G <resourcegroup> etc.
 30 #       parameter1: start | stop | probe | validate
 31 #       parameter2: ids
 32 
 33 MYNAME=$(/usr/bin/basename $0)
 34 MYDIR=$(/usr/bin/dirname $0)
 35 
 36 . ${MYDIR}/../etc/config
 37 
 38 typeset opt
 39 
 40 while getopts 'R:G:U:D:C:S:H:' opt
 41 do
 42         case "${opt}" in
 43                 R)      RESOURCE=${OPTARG};;
 44                 G)      RESOURCEGROUP=${OPTARG};;
 45                 U)      USERID=${OPTARG};;
 46                 D)      INFORMIXDIR=${OPTARG};;
 47                 C)      ONCONFIG=${OPTARG};;
 48                 S)      INFORMIXSERVER=${OPTARG};;
 49                 H)      INFORMIXSQLHOSTS=${OPTARG};;
 50                 *)      exit 1;;
 51         esac
 52 done
 53 
 54 shift $((${OPTIND} -1))
 55 
 56 METHOD=${1}
 57 COMPONENT=${2}
 58 
 59 . ${MYDIR}/functions
 60         
 61 # Perform all the scha* calls
 62 
 63 TASK_COMMAND=""
 64 
 65 if [ "${METHOD}" = "start" ]
 66 then
 67    START_TIMEOUT=$(/usr/cluster/bin/scha_resource_get -O START_TIMEOUT \
 68       -R ${RESOURCE} -G ${RESOURCEGROUP} )
 69 fi
 70 
 71 if [ "${METHOD}" = "stop" ]
 72 then
 73    STOP_TIMEOUT=$(/usr/cluster/bin/scha_resource_get -O STOP_TIMEOUT \
 74       -R ${RESOURCE} -G ${RESOURCEGROUP} )
 75 fi
 76 
 77 # Retrieve the resource project name so that we can run any 
 78 # Informix commands under the specified user's project.
 79 
 80 RESOURCE_PROJECT_NAME=$(/usr/cluster/bin/scha_resource_get \
 81    -R ${RESOURCE} -G ${RESOURCEGROUP} -O RESOURCE_PROJECT_NAME)
 82                 
 83 if [ -z "${RESOURCE_PROJECT_NAME}" -o "${RESOURCE_PROJECT_NAME}" = "default" ]
 84 then
 85    # Retrieve the resource group project name 
 86 
 87    RESOURCE_PROJECT_NAME=$(/usr/cluster/bin/scha_resourcegroup_get \
 88         -G ${RESOURCEGROUP} -O RG_PROJECT_NAME)
 89 fi      
 90 
 91 # Validate that ${USERID} belongs to the ${RESOURCE_PROJECT_NAME}
 92 
 93 if [ -n "${RESOURCE_PROJECT_NAME}" ]
 94 then
 95    PROJ_MEMBER=$(/usr/bin/projects ${USERID} | /usr/bin/egrep "^${RESOURCE_PROJECT_NAME} | \
 96         ${RESOURCE_PROJECT_NAME} | ${RESOURCE_PROJECT_NAME}$|^${RESOURCE_PROJECT_NAME}$")
 97 fi
 98 
 99 if [ -z "${PROJ_MEMBER}" ]
100 then
101    # SCMSGS
102    # @explanation
103    # The userid does not belong to the specified project.
104    # @user_action
105    # Ensure the userid exists within the project. Check that 
106    # you have the correct userid and project name.
107    scds_syslog -p daemon.notice -t $(syslog_tag) -m \
108         "%s - The user %s does not belong to project %s" \
109         "${MYNAME}" "${USERID}" "${RESOURCE_PROJECT_NAME}"
110    return 1
111 else
112    TASK_COMMAND="/usr/bin/newtask -p ${RESOURCE_PROJECT_NAME}"
113 fi
114 
115 debug_message "Method: ${MYNAME} - Begin"
116 ${SET_DEBUG}
117 
118 [ -x /sbin/zonename ] && ZONENAME=$(/sbin/zonename)
119 
120 set_redirection
121 
122 case "${METHOD}" in
123         start)
124                 cleanup_ipc
125                 start_ids
126                 rc=$?
127                 ;;
128                 
129         stop)
130                 stop_ids
131                 rc=0
132                 ;;
133 
134         probe)
135                 get_state
136                 check_ids
137                 rc=$?
138                 ;;
139         validate)
140                 validate
141                 rc=$?
142                 ;;
143 esac
144 
145 debug_message "Method: ${MYNAME} - End"
146 exit ${rc}