Skip Navigation Links
Exit Print View
| Oracle Solaris Cluster Data Services Developer's Guide Oracle Solaris Cluster 4.1

Search Scope:

- This Document
- Entire Library

## `Start` Method Code Listing

The RGM runs the `Start` method on a cluster node when the resource group that contains the data service resource is brought online on that node. The RGM also does so when the resource is enabled. In the sample application, the `Start` method activates the `in.named` (DNS) daemon on that node.

Example A-2 `dns_svc_start` Method

    #!/bin/ksh
    #
    # Start Method for HA-DNS.
    #
    # This method starts the data service under the control of PMF. Before starting
    # the in.named process for DNS, it performs some sanity checks. The PMF tag for
    # the data service is $RESOURCE_NAME.named. PMF tries to start the service a
    # specified number of times (Retry_count) and if the number of attempts exceeds
    # this value within a specified interval (Retry_interval) PMF reports a failure
    # to start the service. Retry_count and Retry_interval are both properties of the
    # resource set in the RTR file.

    #pragma ident   “@(#)dns_svc_start   1.1   12/01/24”

    ###############################################################################
    # Parse program arguments.
    #
    function parse_args # [args ...]
    {
            typeset opt

            while getopts `R:G:T:' opt
            do
                    case “$opt” in
                    R)
                            # Name of the DNS resource.
                            RESOURCE_NAME=$OPTARG
                            ;;
                    G)
                            # Name of the resource group in which the resource is
                            # configured.
                            RESOURCEGROUP_NAME=$OPTARG
                            ;;
                    T)
                            # Name of the resource type.
                            RESOURCETYPE_NAME=$OPTARG
                            ;;

                    *)
                        logger -p ${SYSLOG_FACILITY}.err \
                        -t [$RESOURCETYPE_NAME,$RESOURCEGROUP_NAME,$RESOURCE_NAME] \
                        “ERROR: Option $OPTARG unknown”
                         exit 1
                         ;;

                    esac
            done

    }

    ###############################################################################
    # MAIN
    #
    ##############################################################################

    export PATH=/bin:/usr/bin:/usr/cluster/bin:/usr/sbin:/usr/proc/bin:$PATH

    # Obtain the syslog facility to use to log messages.
    SYSLOG_FACILITY=`scha_cluster_get -O SYSLOG_FACILITY`

    # Parse the arguments that have been passed to this method
    parse_args “$@”

    PMF_TAG=$RESOURCE_NAME.named
    SYSLOG_TAG=$RESOURCETYPE_NAME,$RESOURCEGROUP_NAME,$RESOURCE_NAME

    # Get the value of the Confdir property of the resource in order to start
    # DNS. Using the resource name and the resource group entered, find the value of
    # Confdir value set by the cluster administrator when adding theresource.
    config_info=scha_resource_get -O Extension -R $RESOURCE_NAME \
    -G $RESOURCEGROUP_NAME Confdir`
    # scha_resource_get returns the “type” as well as the “value” for the extension
    # properties. Get only the value of the extension property.
    CONFIG_DIR=`echo $config_info | awk `{print $2}'`

    # Check if $CONFIG_DIR is accessible.
    if [ ! -d $CONFIG_DIR ]; then
       logger -p ${SYSLOG_FACILITY}.err -t [$SYSLOG_TAG] \
           “${ARGV0} Directory $CONFIG_DIR missing or not mounted”
       exit 1
    fi

    # Change to the $CONFIG_DIR directory in case there are relative
    # path names in the data files.
    cd $CONFIG_DIR

    # Check that the named.conf file is present in the $CONFIG_DIR directory.
    if [ ! -s named.conf ]; then
       logger -p ${SYSLOG_FACILITY}.err -t [$SYSLOG_TAG] \
           “${ARGV0} File $CONFIG_DIR/named.conf is missing or empty”
       exit 1
    fi

    # Get the value for Retry_count from the RTR file.
    RETRY_CNT=`scha_resource_get -O Retry_count -R $RESOURCE_NAME \
    -G $RESOURCEGROUP_NAMÈ

    # Get the value for Retry_interval from the RTR file. Convert this value, which is in
    # seconds, to minutes for passing to pmfadm. Note that this is a conversion with
    # round-up, for example, 50 seconds rounds up to one minute.
    ((RETRY_INTRVAL = `scha_resource_get -O Retry_interval -R $RESOURCE_NAME \
    -G $RESOURCEGROUP_NAMÈ 60))

    # Start the in.named daemon under the control of PMF. Let it crash and restart
    # up to $RETRY_COUNT times in a period of $RETRY_INTRVAL; if it crashes
    # more often than that, PMF will cease trying to restart it. If there is a
    # process already registered under the tag <$PMF_TAG>, then, PMF sends out
    # an alert message that the process is already running.
    echo “Retry interval is “$RETRY_INTRVAL
    pmfadm -c $PMF_TAG.named -n $RETRY_CNT -t $RETRY_INTRVAL \
        /usr/sbin/in.named -c named.conf

    # Log a message indicating that HA-DNS has been started.
    if [ $? -eq 0 ]; then
       logger -p ${SYSLOG_FACILITY}.info -t [$SYSLOG_TAG] \
               “${ARGV0} HA-DNS successfully started”
    fi
    exit 0

Copyright © 2000, 2012, Oracle and/or its affiliates. All rights reserved. Legal Notices |