#!/bin/ksh93
# IBM_PROLOG_BEGIN_TAG 
# This is an automatically generated prolog. 
#  
# 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_ldap_client_attributes.sh 1.3 
#  
# Licensed Materials - Property of IBM 
#  
# COPYRIGHT International Business Machines Corp. 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 
# @(#)95	1.3  src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_ldap_client_attributes.sh, hacmp.assist, 61haes_r714 6/25/12 14:03:40

# 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_get_ldap_client_attributes

=head1 VERSION

 Version Number:  1.3
 Last Extracted:  1/31/14 04:41:21
 Last Changed:    6/25/12 14:03:40

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

=head1 SYNOPSIS

 clmgr query ldap_client

 NOTE: the alias for "ldap_client" is "lc".

=head1 DESCRIPTION

Retrieves the configuration data for one or more SystemMirror LDAP clients.

=head1 ARGUMENTS

 1. properties [REQUIRED] [hash ref]
    An associative array within which data about the
    queried objects can be returned to the caller.

=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_get_ldap_client_attributes {
    LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL"
    : version=1.3, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_ldap_client_attributes.sh, hacmp.assist, 61haes_r714
    : INPUTS: $*

    typeset -n properties=$1

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

    #===================================
    : Declare and initialize variables
    #===================================
    for k in ${!properties[*]}; do unset properties[$k]; done
    typeset key= LINE=
    typeset -A list
    typeset -i rc=$RC_SUCCESS matches=0 i=0
    typeset -u attr= uc_key=

    typeset LINE= ATTR= VALUE=
    typeset group= type= value=
    typeset -u name=

    typeset -A TRANS
    TRANS=(
        [SERVERLIST]="SERVERS"
        [AUTHTYPE]="AUTH_TYPE"
        [BINDDN]="ADMIN_DN"
        [SSLPORTNUMBER]="PORT"
        [CLIENTKDBPATH]="SSL_KEY"
    )

    #================================================================
    : Populate the return hash with the retrieved attributes/values
    #================================================================
    /usr/bin/odmget -q "group=LDAPClient" HACMPLDAP |\
    while read LINE; do
        [[ $LINE == HACMPLDAP: ]] && continue
        if [[ $LINE != "" && $LINE == *=* ]]; then
            ATTR=${LINE%% =*}
            VALUE=${LINE#*= }
            VALUE=${VALUE//\"}
            case $ATTR in
                group) group="$VALUE" ;;
                 type) type="$VALUE"  ;;
                 name) name="$VALUE"  ;;
                value) value="$VALUE" ;;
            esac
        else
            [[ -z $name ]] && continue
            [[ -n ${TRANS[$name]} ]] && name=${TRANS[$name]}

            if [[ ${properties[$name]} == *([[:space:]]) ]]; then
                properties[$name]="$value"
            elif [[ ${properties[$name]} != *$value* ]]; then
                properties[$name]="${properties[$name]};$value"
            fi

            group= type= name= value=  # Reset these variables
        fi
    done
    # Make sure the last stanza gets processed
    if [[ -n name && -n $value ]]; then
        [[ -z $name ]] && continue
        [[ -n ${TRANS[$name]} ]] && name=${TRANS[$name]}

        if [[ ${properties[$name]} == *([[:space:]]) ]]; then
            properties[$name]="$value"
        elif [[ ${properties[$name]} != *$value* ]]; then
            properties[$name]="${properties[$name]};$value"
        fi
    fi

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