#!/bin/ksh93
#  ALTRAN_PROLOG_BEGIN_TAG                                                    
#  This is an automatically generated prolog.                                  
#                                                                              
#  Copyright (C) Altran ACT S.A.S. 2017,2019,2021,2022.  All rights reserved.  
#                                                                              
#  ALTRAN_PROLOG_END_TAG                                                      
#                                                                              
# @(#)  5881272 43haes/usr/sbin/cluster/events/resource_manage.sh, 61aha_r726, 2205A_aha726, May 16 2022 12:15 PM

#########################################################################
#
#   COMPONENT: CLMGR
#
#   FUNCTIONS:
#
#       collect_logs
#       cluster_rehearsals
#       modify_cluster_security
#       modify_cluster_hmc
#       modify_cluster_nova
#       modify_cluster_cloudroha
#       modify_cluster_roha
#       refresh_mirror_group
#       restore_snapshot
#       resume_app_monitoring
#       suspend_app_monitoring
#       mirror_volume_group
#
#########################################################################

#=============================================================================
#
# Name:        collect_logs
#
# Description:
#
# Inputs:
#
# Outputs:
#
# Returns:
#
#=============================================================================
function collect_logs {
    LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" max

    CL=$LINENO KLIB_HACMP_collect_logs "${_ENV_ARGS[DIRECTORY]}" \
                            "${_ENV_ARGS[NODES]}" \
                            "${_ENV_ARGS[RSCT_LOGS]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "collect_logs"


#=============================================================================
#
# Name:        cluster_reahersals
#
# Description: Retrieves the Failover Rehearsals for resource group
#
# Inputs:      resource_group
#
# Outputs: Failover Rehearsals of the resource group
#
# Returns: 0 SUCCESS
#          >0 FAIL
#
#=============================================================================
function cluster_rehearsals {
    LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" max

    CL=$LINENO KLIB_HACMP_cluster_rehearsals "${_ENV_ARGS[RESOURCE_GROUP]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "cluster_rehearsals()"

#=============================================================================
#
# Name:        modify_cluster_security
#
# Description:
#
# Inputs:
#
# Outputs:
#
# Returns:
#
#=============================================================================
function modify_cluster_security {
    LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" max

    # Get the associative array reference, and initialize it
    typeset -n list=$1

    CL=$LINENO KLIB_HACMP_modify_cluster_security list \
                                      "${_ENV_ARGS[LEVEL]}" \
                                      "${_ENV_ARGS[ALGORITHM]}" \
                                      "${_ENV_ARGS[MECHANISM]}" \
                                      "${_ENV_ARGS[CERTIFICATE]}" \
                                      "${_ENV_ARGS[PRIVATE_KEY]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_cluster_security()"


#=============================================================================
#
# Name:        modify_cluster_hmc
#
# Description:
#
# Inputs:
#
# Outputs:
#
# Returns:
#
#=============================================================================
function modify_cluster_hmc {
    LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" max

    # Get the associative array reference, and initialize it
    typeset -n list=$1

    CL=$LINENO KLIB_HACMP_modify_cluster_hmc list \
                                      "${_ENV_ARGS[DEFAULT_HMC_TIMEOUT]}" \
                                      "${_ENV_ARGS[DEFAULT_HMC_RETRY_COUNT]}" \
                                      "${_ENV_ARGS[DEFAULT_HMC_RETRY_DELAY]}" \
                                      "${_ENV_ARGS[DEFAULT_HMCS_LIST]}" \
                                      "${_ENV_ARGS[CONNECTION_TYPE]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_cluster_hmc()"

#=============================================================================
#
# Name:        modify_cluster_nova
#
# Description: manages the novalink cluster tunables as per the user input
#
# Inputs:     DEFAULT_NOVA_TIMEOUT
#             DEFAULT_NOVA_RETRY_COUNT
#             DEFAULT_NOVA_RETRY_DELAY
#             CONNECTION_TYPE
#
# Outputs: nothing
#
# Returns: 0 SUCESS
#          1 FAIL 
#
#=============================================================================
function modify_cluster_nova {
    LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" max

    # Get the associative array reference, and initialize it
    typeset -n list=$1

    CL=$LINENO KLIB_HACMP_modify_cluster_nova list \
                                      "${_ENV_ARGS[DEFAULT_NOVA_TIMEOUT]}" \
                                      "${_ENV_ARGS[DEFAULT_NOVA_RETRY_COUNT]}" \
                                      "${_ENV_ARGS[DEFAULT_NOVA_RETRY_DELAY]}" \
                                      "${_ENV_ARGS[CONNECTION_TYPE]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_cluster_nova()"

#=============================================================================
#
# Name:        modify_cluster_cloudroha
#
# Description: manages the cloud roha configuration as per the user input
#
# Inputs:     ACTION
#             CLOUDSITE 
#             CLOUDTYPE 
#             AUTHKEY 
#             SERVICE 
#             TIMEOUT 
#
# Outputs: nothing
#
# Returns: 0 SUCESS
#          1 FAIL
#
#=============================================================================
function modify_cluster_cloudroha {
    LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" max

    # Get the associative array reference, and initialize it
    typeset -n list=$1

    CL=$LINENO KLIB_HACMP_modify_cluster_cloudroha list \
                                      "${_ENV_ARGS[ACTION]}" \
                                      "${_ENV_ARGS[AUTHKEY]}" \
                                      "${_ENV_ARGS[SERVICE]}" \
                                      "${_ENV_ARGS[CLOUDTYPE]}" \
                                      "${_ENV_ARGS[TIMEOUT]}" \
                                      "${_ENV_ARGS[CLOUDSITE]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_cluster_cloudroha()"


#=============================================================================
#
# Name:        modify_cluster_roha
#
# Description:
#
# Inputs:
#
# Outputs:
#
# Returns:
#
#=============================================================================
function modify_cluster_roha {
    LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" max

    # Get the associative array reference, and initialize it
    typeset -n list=$1

    CL=$LINENO KLIB_HACMP_modify_cluster_roha list \
                                      "${_ENV_ARGS[ALWAYS_START_RG]}" \
                                      "${_ENV_ARGS[ADJUST_SPP_SIZE]}" \
                                      "${_ENV_ARGS[FORCE_SYNC_RELEASE]}" \
                                      "${_ENV_ARGS[AGREE_TO_COD_COSTS]}" \
                                      "${_ENV_ARGS[ONOFF_DAYS]}" \
                                      "${_ENV_ARGS[RESOURCE_ALLOCATION_ORDER]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_cluster_cod()"

#
# Name:  refresh_mirror_group
#
function refresh_mirror_group {
    LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset mirror_group=$1

    CL=$LINENO KLIB_HACMP_refresh_mirror_group "$mirror_group"               \
                                               "${_ENV_ARGS[NODES]}"         \
                                               "${_ENV_ARGS[SITE]}"          \
                                               "${_ENV_ARGS[SYSTEM_GROUPS]}" \
                                               "${_ENV_ARGS[REPOSITORY_GROUP]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "refresh_mirror_group()"


#=============================================================================
#
# Name:        restore_snapshot
#
# Description:
#
# Inputs:
#
# Outputs:
#
# Returns:
#
#=============================================================================
function restore_snapshot {
    LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset snapshot=$1

    CL=$LINENO KLIB_HACMP_restore_snapshot "$snapshot" \
                                "${_ENV_ARGS[CONFIGURE]}" \
                                "${_ENV_ARGS[FORCE]}" \
                                "${_ENV_ARGS[NODES]}" \
                                "${_ENV_ARGS[REPOSITORIES]}" \
                                "${_ENV_ARGS[CLUSTER_NAME]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "restore_snapshot"


#=============================================================================
#
# Name:        resume_app_monitoring
#
# Description:
#
# Inputs:
#
# Outputs:
#
# Returns:
#
#=============================================================================
function resume_app_monitoring {
    LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset application=$1

    CL=$LINENO KLIB_HACMP_resume_app_monitoring "$application" \
                                     "${_ENV_ARGS[RESOURCE_GROUP]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "resume_app_monitoring"


#=============================================================================
#
# Name:        suspend_app_monitoring
#
# Description:
#
# Inputs:
#
# Outputs:
#
# Returns:
#
#=============================================================================
function suspend_app_monitoring {
    LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset application=$1

    CL=$LINENO KLIB_HACMP_suspend_app_monitoring "$application" \
                                      "${_ENV_ARGS[RESOURCE_GROUP]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "suspend_app_monitoring"


#=============================================================================
#
# Name:        mirror_volume_group
#
# Description:
#
# Inputs:
#
# Outputs:
#
# Returns:
#
#=============================================================================
function mirror_volume_group {
    LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset volume_group=$1

    CL=$LINENO KLIB_HACMP_mirror_volume_group "$volume_group" \
                                   "${_ENV_ARGS[DISKS]}" \
                                   "${_ENV_ARGS[NODE]}" \
                                   "${_ENV_ARGS[MODE]}" \
                                   "${_ENV_ARGS[COPIES_PER_LPART]}" \
                                   "${_ENV_ARGS[CHECK_QUORUM]}" \
                                   "${_ENV_ARGS[EXACT_LV_MAPPING]}" \
                                   "${_ENV_ARGS[MP_FIRST_COPY]}" \
                                   "${_ENV_ARGS[MP_SECOND_COPY]}" \
                                   "${_ENV_ARGS[MP_THIRD_COPY]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "mirror_volume_group"



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

LINENO=2 . $HALIBROOT/log_entry resource_manage "$CL" max
: version=@(#)  5881272 43haes/usr/sbin/cluster/events/resource_manage.sh, 61aha_r726, 2205A_aha726, May 16 2022 12:15 PM

#===================================================
# Source the file with common definitions, the run
# the action/class-appropriate class processor.
#===================================================
CL=$LINENO . $HAEVENTS/resource_common "$@"
if [[ -n $_SUB_ACTION ]]; then
    CL=$LINENO runClassProcessor "${_SUB_ACTION}_$RESOURCE_CLASS" _VAR_SUBSTITUTIONS _ENV_ARGS
else
    CL=$LINENO runClassProcessor "$RESOURCE_CLASS" _VAR_SUBSTITUTIONS _ENV_ARGS
fi
log_return_msg "$?" resource_manage "$LINENO"
exit $?
