#!/usr/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2018,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/usr/sbin/cluster/sa/dns/sbin/cl_dns_query.sh 1.1 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/usr/sbin/cluster/sa/dns/sbin/cl_dns_query.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM ############################################################################ # # Name: cl_dns_query # # Description: Performs application discovery query on the local node # # Arguments: N/A # # Returns: N/A # ############################################################################# . /usr/es/lib/ksh93/func_include ############################################################################ # # Name: isPrimaryNode # # Description: Finds out the Node is primary or not # # Arguments: N/A # # Returns: 0: If named daemon active # 1: If named daemon not active # ############################################################################# function isPrimaryNode { [[ "VERBOSE_LOGGING" == "high" ]] && set -x LC_ALL=C /usr/bin/lssrc -s named | grep -iw active > /dev/null 2>&1 (( $? == 0 )) && return 0 return 1 } ############################################################################ # # Name: dns_discover # # Description: Performs DNS discovery query on the local node # # Arguments: N/A # # Returns: N/A # ############################################################################# function dns_discover { [[ "VERBOSE_LOGGING" == "high" ]] && set -x typeset -i installed=1 # : For DNS, the required fileset is : bos.net.tcp.server # /usr/bin/lslpp -l bos.net.tcp.server > /dev/null 2>&1 (( $? != 0 )) && { installed=0 } print -n $(dspmsg -s 1 dnssa.cat 1 "DNS Smart Assist") print -n ":DNS:" print -n $(dspmsg -s 1 dnssa.cat 2 "DNS") print -n ":DNS:" echo "$installed" } ############################################################################# # Global Variables: ############################################################################# FPATH=/usr/es/lib/ksh93/aix:/usr/es/lib/ksh93/hacmp/:/usr/es/lib/ksh93/util/:/usr/es/lib/ksh93/util/list PATH=$PATH:/usr/es/sbin/cluster/sa/sbin/:/usr/es/sbin/cluster/utilities/ LOCALNODENAME=$(get_local_nodename 2>/dev/null) ############################################################################# # Main: ############################################################################# typeset option nodes ACTION COMPONENT while getopts q:PDdn: option do case $option in n) # : List of input nodes # nodes=$OPTARG nodes=${nodes//:/ } nodes=${nodes//,/ } ;; q) # : Perform a query for a modify screen # application_id=$OPTARG ACTION=query ;; D) # : Run discovery # ACTION=discover ;; P) # : Check the primary node # typeset ret_val isPrimaryNode ret_val=$? exit $ret_val ;; d) # : configuration assist discovery # dns_discover exit 0 ;; *) ;; esac done [[ "$ACTION" == "discover" ]] && { echo "#primary:takeover:application_name" # : Check the primary node # typeset primary_node for node in $nodes; do if [[ "$node" == "$LOCALNODENAME" ]]; then isPrimaryNode else cl_rsh $node "/usr/es/sbin/cluster/sa/dns/sbin/cl_dns_query -P" 2>/dev/null fi [[ $? == 0 ]] && { primary_node=$node break } done echo "$primary_node::DNS_Application_High_Availability" exit 0 } [[ "$ACTION" == "query" ]] && { echo "#primary:takeover:dns_config_file:service_ip:netmask_prefix_len:network" RESOURCE_GROUP=$(clodmget -q sa_key=$application_id -f group -d "=" HACMPgroup) # : remove quotes # RESOURCE_GROUP=${RESOURCE_GROUP//\"/} [[ -z $RESOURCE_GROUP ]] && exit 1 set -a eval $(LC_ALL=C clvt query resource_group $RESOURCE_GROUP | grep SERVICE_LABEL) eval $(LC_ALL=C clquerysaapp -a $application_id | grep DNS_CONFIG_FILE) set +a [[ -n $RESOURCE_GROUP ]] && { NODES=$(clvt query resource_group $RESOURCE_GROUP | grep -w NODES | awk -F'=' '{ print $2 }') NODES=${NODES//\"/} echo $NODES | read PRIMARY TAKEOVER } PREFIX_LEN=$(cl_harvestIP_scripts -u $SERVICE_LABEL | tail -1 | cut -d ":" -f 13) NETWORK=$(cl_harvestIP_scripts -u $SERVICE_LABEL | tail -1 | cut -d ":" -f 3) echo $PRIMARY:$TAKEOVER:$DNS_CONFIG_FILE:$SERVICE_LABEL:$PREFIX_LEN:$NETWORK exit 0 }