#!/bin/ksh93
# IBM_PROLOG_BEGIN_TAG 
# This is an automatically generated prolog. 
#  
# 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_discover_nodes.sh 1.5 
#  
# Licensed Materials - Property of IBM 
#  
# Restricted Materials of IBM 
#  
# COPYRIGHT International Business Machines Corp. 2005,2012 
# 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 
# @(#)98	1.5 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_discover_nodes.sh, hacmp.assist, 61haes_r714 6/10/12 15:11:45

# Start of POD-formatted documentation. Viewing suggestions:
#      perldoc <FILENAME>
#      pod2text -c <FILENAME>
#      pod2text -c --code <FILENAME>
#      pod2html <FILENAME>
function devDoc {
    : <<'=cut' >/dev/null 2>&1

=head1 NAME

KLIB_HACMP_discover_nodes

=head1 VERSION

 Version Number:  1.5
 Last Extracted:  1/31/14 04:40:14
 Last Changed:    6/10/12 15:11:45

 Path, Component, Release(, Level):
 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_discover_nodes.sh, hacmp.assist, 61haes_r714

=head1 SYNOPSIS

KLIB_HACMP_discover_nodes

=head1 DESCRIPTION

Using communication paths add nodes to the cluster
definition.  This routine will also define the cluster
if no cluster definition is available.  If the name
of the cluster passed in does not match the actual
configuration cluster name, then this function uses
the existing cluster name

=head1 ARGUMENTS

 1. cluster_name [OPTIONAL] [string]
    The name to use for the cluster if no cluster is defined.

 2. NODES [REQUIRED] [string ref]
    A list containing the nodes to add to the cluster.

=head1 RETURN

 0: no errors were detected; the operation appears to have been successful
 1: a general error has occurred
 2: a specified resource does not exist, or could not be found
 3: some required input was missing
 4: some detected input was incorrect in some way
 5: a required dependency does not exist
 6: a specified search failed to match any data

=head1 COPYRIGHT

COPYRIGHT International Business Machines Corp. 2005,2010
All Rights Reserved

=cut
} # End of POD-formatted documentation.


function KLIB_HACMP_discover_nodes {
    LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL"
    : version=1.5, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_discover_nodes.sh, hacmp.assist, 61haes_r714
    : INPUTS: $*

    cluster_name=${1//\"/}
    typeset -n NODES=$2

    [[ $CLMGR_LOGGING == 'med' ]] && set +x  # Only trace param values

    #===================================
    : Declare and initialize variables
    #===================================
    typeset -i found=0
    typeset -i rc=$RC_UNKNOWN
    typeset cluster_name= node= addnode=

    #==============================================
    : Check to see if the cluster name is already
    : defined. If so, use that name.
    #==============================================
    existing_cluster_name=$(CL=$LINENO KLIB_HACMP_get_cluster_name)
    if [[ -n $existing_cluster_name ]]; then
        cluster_name=$existing_cluster_name
    fi

    for node in $NODES; do
        CL=$LINENO KLIB_HACMP_is_known_node $node >/dev/null 2>&1
        (( $? != RC_SUCCESS )) && addnode="$addnode $node"
    done

    if [[ -n $addnode ]]; then
        print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clmodclstr -n \"$cluster_name\" -p \"$addnode\"" >>$CLMGR_TMPLOG  # Always log commands
        $HAUTILS/clmodclstr -n "$cluster_name" -p "$addnode" >/dev/null 2>>$CLMGR_TMPLOG
        rc=$?
        print "clmodclstr RC: $rc" >>$CLMGR_TMPLOG  # Always log command result
    fi

    for node in $NODES; do
        if [[ $(CL=$LINENO KLIB_HACMP_is_known_node $node) ]]; then
            AVAILABLE_NODES="$AVAILABLE_NODES $node"
        fi
    done

    print -- $AVAILABLE_NODES

    log_return_msg "$rc" "$0()" "$LINENO"
    return $?
} # End of "KLIB_HACMP_discover_nodes()"
