#!/bin/ksh93
#  ALTRAN_PROLOG_BEGIN_TAG                                                    
#  This is an automatically generated prolog.                                  
#                                                                              
#  Copyright (C) Altran ACT S.A.S. 2017,2018,2019,2020,2021.  All rights reserved.  
#                                                                              
#  ALTRAN_PROLOG_END_TAG                                                      
#                                                                              
# @(#)  213961c 43haes/usr/sbin/cluster/events/resource_modify.sh, 726, 2147A_aha726, May 19 2021 02:19 PM


#================================================
# The following, commented line enforces coding
# standards when this file is edited via vim.
#================================================
# vim:tabstop=4:shiftwidth=4:expandtab:smarttab
#================================================

#======================================================================
#If signature of properties for modify cluster need to be changed,make
#sure that same changes are done in KLIB_HACMP_modify_cluster,
#KLIB_HACMP_add_cluster.
#======================================================================

#
# Name:  modify_cluster
#
function modify_cluster {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1

    CL=$LINENO KLIB_HACMP_modify_cluster properties \
                              "${_ENV_ARGS[NAME]}" \
                              "${_ENV_ARGS[FC_SYNC_INTERVAL]}" \
                              "${_ENV_ARGS[RG_SETTLING_TIME]}" \
                              "${_ENV_ARGS[RG_DIST_POLICY]}" \
                              "${_ENV_ARGS[MAX_EVENT_TIME]}" \
                              "${_ENV_ARGS[MAX_RG_PROCESSING_TIME]}" \
                              "${_ENV_ARGS[SITE_POLICY_FAILURE_ACTION]}" \
                              "${_ENV_ARGS[SITE_POLICY_NOTIFY_METHOD]}" \
                              "${_ENV_ARGS[DAILY_VERIFICATION]}" \
                              "${_ENV_ARGS[VERIFICATION_NODE]}" \
                              "${_ENV_ARGS[VERIFICATION_HOUR]}" \
                              "${_ENV_ARGS[VERIFICATION_DEBUGGING]}" \
                              "${_ENV_ARGS[REPOSITORIES]}" \
                              "${_ENV_ARGS[CLUSTER_IP]}" \
                              "${_ENV_ARGS[HEARTBEAT_FREQUENCY]}" \
                              "${_ENV_ARGS[GRACE_PERIOD]}" \
                              "${_ENV_ARGS[SITE_HEARTBEAT_CYCLE]}" \
                              "${_ENV_ARGS[SITE_GRACE_PERIOD]}" \
                              "${_ENV_ARGS[TYPE]}" \
                              "${_ENV_ARGS[HEARTBEAT_TYPE]}" \
                              "${_ENV_ARGS[TEMP_HOSTNAME]}" \
                              "${_ENV_ARGS[SPLIT_POLICY]}" \
                              "${_ENV_ARGS[MERGE_POLICY]}" \
                              "${_ENV_ARGS[NFS_QUORUM_SERVER]}" \
                              "${_ENV_ARGS[LOCAL_QUORUM_DIRECTORY]}" \
                              "${_ENV_ARGS[REMOTE_QUORUM_DIRECTORY]}" \
                              "${_ENV_ARGS[QUARANTINE_POLICY]}" \
                              "${_ENV_ARGS[CRITICAL_RG]}" \
                              "${_ENV_ARGS[ACTION_PLAN]}" \
                              "${_ENV_ARGS[TIEBREAKER]}" \
                              "${_ENV_ARGS[NOTIFYMETHOD]}" \
                              "${_ENV_ARGS[NOTIFY_INTERVAL]}" \
                              "${_ENV_ARGS[MAXIMUM_NOTIFICATIONS]}" \
                              "${_ENV_ARGS[DEFAULT_SURVIVING_SITE]}" \
                              "${_ENV_ARGS[APPLY_TO_PPRC_TAKEOVER]}" \
                              "${_ENV_ARGS[NODES]}" \
                              "${_ENV_ARGS[LPM_POLICY]}" \
                              "${_ENV_ARGS[HEARTBEAT_FREQUENCY_DURING_LPM]}" \
                              "${_ENV_ARGS[NETWORK_FAILURE_DETECTION_TIME]}" \
                              "${_ENV_ARGS[CAA_AUTO_START_DR]}" \
                              "${_ENV_ARGS[CAA_REPOS_MODE]}" \
                              "${_ENV_ARGS[CAA_CONFIG_TIMEOUT]}" \
                              "${_ENV_ARGS[LVM_PREFERRED_READ]}" \
                              "${_ENV_ARGS[CRIT_DAEMON_RESTART_GRACE_PERIOD]}" \
                              "${_ENV_ARGS[SKIP_EVENT_PROCESSING_MANAGE_MODE]}" \
                              "${_ENV_ARGS[BUCKET_NAME]}" \
                              "${_ENV_ARGS[CLOUD_SERVICE]}" \
                              "${_ENV_ARGS[USE_EXISTING_BUCKET]}"
 
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_cluster()"


#
# Name:  modify_site
#
function modify_site {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1
    typeset site=$2

    CL=$LINENO KLIB_HACMP_modify_site properties \
                           "$site" \
                           "${_ENV_ARGS[NAME]}" \
                           "${_ENV_ARGS[NODES]}" \
                           "${_ENV_ARGS[SITE_IP]}" \
                           "${_ENV_ARGS[RECOVERY_PRIORITY]}" \
                           "${_ENV_ARGS[REPOSITORIES]}" \
                           "${_ENV_ARGS[HMCS]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_site()"


#
# Name:  modify_node
#
function modify_node {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1
    typeset name=$2

    CL=$LINENO KLIB_HACMP_modify_node properties \
                           "$name" \
                           "${_ENV_ARGS[NAME]}"  \
                           "${_ENV_ARGS[COMMPATH]}" \
                           "${_ENV_ARGS[PERSISTENT_IP]}" \
                           "${_ENV_ARGS[NETWORK]}" \
                           "${_ENV_ARGS[PREFIX]}" \
                           "${_ENV_ARGS[NETMASK]}" \
                           "${_ENV_ARGS[START_ON_BOOT]}" \
                           "${_ENV_ARGS[BROADCAST_ON_START]}" \
                           "${_ENV_ARGS[CLINFO_ON_START]}" \
                           "${_ENV_ARGS[HMCS]}" \
                           "${_ENV_ARGS[ENABLE_LIVE_UPDATE]}" \
                           "${_ENV_ARGS[ENABLE_CAA_AFTER_MERGE]}" \
                           "${_ENV_ARGS[CRIT_DAEMON_RESTART_GRACE_PERIOD]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_node()"


#
# Name:  modify_network
#
function modify_network {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1
    typeset name=$2

    CL=$LINENO KLIB_HACMP_modify_network properties \
                              "$name" \
                              "${_ENV_ARGS[NAME]}"  \
                              "${_ENV_ARGS[TYPE]}" \
                              "${_ENV_ARGS[NETMASK]}" \
                              "${_ENV_ARGS[PREFIX]}" \
                              "${_ENV_ARGS[PUBLIC]}" \
                              "${_ENV_ARGS[RESOURCE_DIST_PREF]}" \
                              "${_ENV_ARGS[SOURCE_IP]}" \
                              "${_ENV_ARGS[UNSTABLE_THRESHOLD]}" \
                              "${_ENV_ARGS[UNSTABLE_PERIOD]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_network()"


#
# Name:  modify_interface
#
function modify_interface {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1
    typeset name=$2

    CL=$LINENO KLIB_HACMP_modify_interface properties \
                                "$name" \
                                "${_ENV_ARGS[NETWORK]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_interface()"


#
# Name:  modify_persistent_ip
#
function modify_persistent_ip {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1
    typeset name=$2

    CL=$LINENO KLIB_HACMP_modify_persistent_ip properties   \
                                    "$name"                 \
                                    "${_ENV_ARGS[NAME]}"    \
                                    "${_ENV_ARGS[NETWORK]}" \
                                    "${_ENV_ARGS[PREFIX]}"  \
                                    "${_ENV_ARGS[NETMASK]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_persistent_ip()"


#
# Name:  modify_resource_group
#
function modify_resource_group {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1
    typeset rgname=$2

    typeset resource_env="FALLBACK_AT SERVICE_LABEL APPLICATIONS \
VOLUME_GROUP FORCED_VARYON VG_AUTO_IMPORT FILESYSTEM FSCHECK_TOOL \
RECOVERY_METHOD FS_BEFORE_IPADDR EXPORT_FILESYSTEM EXPORT_FILESYSTEM_V4 \
MOUNT_FILESYSTEM STABLE_STORAGE_PATH WPAR_NAME \
NFS_NETWORK SHARED_TAPE_RESOURCES DISK AIX_FAST_CONNECT_SERVICES \
COMMUNICATION_LINKS WLM_PRIMARY WLM_SECONDARY MISC_DATA \
NODE_PRIORITY_POLICY NODE_PRIORITY_POLICY_SCRIPT \
NODE_PRIORITY_POLICY_TIMEOUT CONCURRENT_VOLUME_GROUP RAW_DISK \
USERDEFINED_RESOURCES MANAGE_RDISK SVCPPRC_REP_RESOURCE SR_REP_RESOURCE \
GENXD_REP_RESOURCE TC_REP_RESOURCE DATA_DIVERGENCE_RECOVERY VARYON_WITH_MISSING_UPDATES \
PPRC_REP_RESOURCE"
    typeset attr
    typeset -A attributes
    typeset -A policies

    for attr1 in ${!_ENV_ARGS[@]} ; do
        for attr2 in $resource_env; do
            [[ $attr1 == $attr2 ]] &&
                attributes[$attr1]="${_ENV_ARGS[$attr1]}"
        done
    done

    for attr1 in ${!_ENV_ARGS[@]} ; do
        for attr2 in $policy_env; do
            [[ $attr1 == $attr2 ]] &&
                policies[$attr1]=${_ENV_ARGS[$attr1]}
        done
    done

    CL=$LINENO KLIB_HACMP_modify_resourcegroup properties \
                                    "$rgname" \
                                    attributes \
                                    "${_ENV_ARGS[MIRROR_GROUP]}" \
                                    "${_ENV_ARGS[NAME]}" \
                                    "${_ENV_ARGS[NODES]}" \
                                    "${_ENV_ARGS[PRIMARYNODES]}" \
                                    "${_ENV_ARGS[SECONDARYNODES]}" \
                                    "${_ENV_ARGS[SITE_POLICY]}" \
                                    "${_ENV_ARGS[STARTUP]}" \
                                    "${_ENV_ARGS[FALLOVER]}" \
                                    "${_ENV_ARGS[FALLBACK]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_resource_group()"


#
# Name:  modify_appserver
#
function modify_appserver {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1
    typeset name=$2

    CL=$LINENO KLIB_HACMP_modify_appserver properties \
                                "$name" \
                                "${_ENV_ARGS[NAME]}" \
                                "${_ENV_ARGS[STARTSCRIPT]}" \
                                "${_ENV_ARGS[STOPSCRIPT]}" \
                                "${_ENV_ARGS[MONITORS]}" \
                                "${_ENV_ARGS[STARTUP_MODE]}" \
                                "${_ENV_ARGS[CPU_USAGE_MONITOR]}" \
                                "${_ENV_ARGS[PROCESS_TO_MONITOR_CPU_USAGE]}" \
                                "${_ENV_ARGS[CPU_USAGE_MONITOR_INTERVAL]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_appserver()"


#
# Name:  modify_appmonitor
#
function modify_appmonitor {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1
    typeset name=$2

    typeset -A args
    for i in ${!_ENV_ARGS[*]}
    do
        args[$i]=${_ENV_ARGS[$i]}
    done

    CL=$LINENO KLIB_HACMP_modify_appmonitor properties \
                                 "$name" \
                                 "${_ENV_ARGS[NAME]}" \
                                 args
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_appmonitor()"


#
# Name:  modify_service_ip
#
function modify_service_ip {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1
    typeset service_ip=$2

    CL=$LINENO KLIB_HACMP_modify_service_ip properties \
                                 "$service_ip" \
                                 "${_ENV_ARGS[NAME]}" \
                                 "${_ENV_ARGS[NETWORK]}" \
                                 "${_ENV_ARGS[NETMASK]}" \
                                 "${_ENV_ARGS[PREFIX]}" \
                                 "${_ENV_ARGS[HWADDR]}" \
                                 "${_ENV_ARGS[SITE]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_service_ip()"


#
# Name:  modify_tape
#
function modify_tape {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1
    typeset tape=$2

    CL=$LINENO KLIB_HACMP_modify_tape properties               \
                           "$tape"                             \
                           "${_ENV_ARGS[NAME]}"                \
                           "${_ENV_ARGS[DEVICE]}"              \
                           "${_ENV_ARGS[DESCRIPTION]}"         \
                           "${_ENV_ARGS[STARTSCRIPT]}"         \
                           "${_ENV_ARGS[START_SYNCHRONOUSLY]}" \
                           "${_ENV_ARGS[STOPSCRIPT]}"          \
                           "${_ENV_ARGS[STOP_SYNCHRONOUSLY]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_tape()"


#
# Name:  modify_physical_volume
#
function modify_physical_volume {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1
    typeset pv=$2

    CL=$LINENO KLIB_HACMP_modify_physical_volume properties        \
                                   "$pv"                \
                                   "${_ENV_ARGS[NAME]}" \
                                   "${_ENV_ARGS[SCSIPR_ACTION]}" \
                                   "${_ENV_ARGS[NODE]}" \
                                   "${_ENV_ARGS[ALL_NODES]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_physical_volume()"


#
# Name:  modify_volume_group
#
function modify_volume_group {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1
    typeset volume_group=$2

    CL=$LINENO KLIB_HACMP_modify_volume_group properties                    \
                                   "$volume_group"                          \
                                   "${_ENV_ARGS[ADD]}"                      \
                                   "${_ENV_ARGS[REMOVE]}"                   \
                                   "${_ENV_ARGS[MIRROR_POOL_NAME]}"         \
                                   "${_ENV_ARGS[TYPE]}"                     \
                                   "${_ENV_ARGS[ACTIVATE_ON_RESTART]}"      \
                                   "${_ENV_ARGS[QUORUM_NEEDED]}"            \
                                   "${_ENV_ARGS[LTG_SIZE]}"                 \
                                   "${_ENV_ARGS[MIGRATE_FAILED_DISKS]}"     \
                                   "${_ENV_ARGS[MAX_PHYSICAL_PARTITIONS]}"  \
                                   "${_ENV_ARGS[MAX_LOGICAL_VOLUMES]}"      \
                                   "${_ENV_ARGS[STRICT_MIRROR_POOLS]}"      \
                                   "${_ENV_ARGS[CRITICAL]}"                 \
                                   "${_ENV_ARGS[FAILUREACTION]}"           \
                                   "${_ENV_ARGS[NOTIFYMETHOD]}"            \
                                   "${_ENV_ARGS[SCSIPR_ACTION]}"           \
                                   "${_ENV_ARGS[LVM_PREFERRED_READ]}"     \
                                   "${_ENV_ARGS[ENABLE_LV_ENCRYPTION]}"     
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_volume_group()"


#
# Name:  modify_mirror_pool
#
function modify_mirror_pool {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1
    typeset name=$2

    CL=$LINENO KLIB_HACMP_modify_mirror_pool properties          \
                                "$name"                          \
                                "${_ENV_ARGS[VOLUME_GROUP]}"     \
                                "${_ENV_ARGS[NAME]}"             \
                                "${_ENV_ARGS[STORAGE_LOCATION]}" \
                                "${_ENV_ARGS[MODE]}"             \
                                "${_ENV_ARGS[FORCE_SYNC]}"       \
                                "${_ENV_ARGS[ASYNC_CACHE_LV]}"   \
                                "${_ENV_ARGS[ASYNC_CACHE_HW_MARK]}" \
                                "${_ENV_ARGS[ADD]}" \
                                "${_ENV_ARGS[REMOVE]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_mirror_pool()"


#
# Name:  modify_file_collection
#
function modify_file_collection {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1
    typeset name=$2

    typeset files_to_add=${_ENV_ARGS[ADD]}
    typeset files_to_remove=${_ENV_ARGS[DELETE]}
    typeset files_to_replace=${_ENV_ARGS[REPLACE]}

    typeset -A args

    if [[ -n ${_ENV_ARGS[FILES]} ]]; then
        for file in ${_ENV_ARGS[FILES]//,/ }; do
            if [[ " ${_ENV_ARGS[REPLACE]//,/ } " != *\ $file\ * ]]; then
                _ENV_ARGS[REPLACE]="${_ENV_ARGS[REPLACE]} $file"
            fi
        done

        if [[ ${_ENV_ARGS[REPLACE]} != *([[:space:]]) ]]; then
            files_to_replace=${_ENV_ARGS[REPLACE]}
        fi
    fi
    if [[ -z $files_to_replace && " ${!_ENV_ARGS[*]} " == *\ REPLACE\ * ]]; then
        files_to_replace="ALL"
    fi

    CL=$LINENO KLIB_HACMP_modify_file_collection properties \
                                      "$name" \
                                      "${_ENV_ARGS[NAME]}" \
                                      "${_ENV_ARGS[DESCRIPTION]}" \
                                      files_to_add \
                                      files_to_remove \
                                      files_to_replace \
                                      "${_ENV_ARGS[SYNC_WITH_CLUSTER]}" \
                                      "${_ENV_ARGS[SYNC_WHEN_CHANGED]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_file_collection()"


#
# Name:  modify_snapshot
#
function modify_snapshot {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1
    typeset snapshot=$2

    CL=$LINENO KLIB_HACMP_modify_snapshot properties \
                               "$snapshot" \
                               "${_ENV_ARGS[NAME]}" \
                               "${_ENV_ARGS[DESCRIPTION]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_snapshot()"


#
# Name:  modify_method
#
function modify_method {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1
    typeset method=$2

    CL=$LINENO KLIB_HACMP_modify_method properties \
                             "$method" \
                             "${_ENV_ARGS[TYPE]}" \
                             "${_ENV_ARGS[NAME]}" \
                             "${_ENV_ARGS[DESCRIPTION]}" \
                             "${_ENV_ARGS[FILE]}" \
                             "${_ENV_ARGS[CONTACT]}" \
                             "${_ENV_ARGS[EVENTS]}" \
                             "${_ENV_ARGS[NODES]}" \
                             "${_ENV_ARGS[RETRY]}" \
                             "${_ENV_ARGS[TIMEOUT]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_method()"


#
# Name:  modify_log
#
function modify_log {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1
    typeset log=$2

    CL=$LINENO KLIB_HACMP_modify_log properties \
                          "$log" \
                          "${_ENV_ARGS[DIRECTORY]}"   \
                          "${_ENV_ARGS[FORMATTING]}"  \
                          "${_ENV_ARGS[TRACE_LEVEL]}" \
                          "${_ENV_ARGS[REMOTE_FS]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_log()"


#
# Name:  modify_dependency
#
function modify_dependency {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset dependency=$1

    CL=$LINENO KLIB_HACMP_modify_dependency \
        "$dependency" \
        "${_ENV_ARGS[TYPE]}" \
        "${_ENV_ARGS[PARENT]}" \
        "${_ENV_ARGS[CHILD]}" \
        "${_ENV_ARGS[GROUPS]}" \
        "${_ENV_ARGS[HIGH]}" \
        "${_ENV_ARGS[INTERMEDIATE]}" \
        "${_ENV_ARGS[LOW]}" \
        "${_ENV_ARGS[STOP]}" \
        "${_ENV_ARGS[START]}" \
        "${_ENV_ARGS[AFTER]}" \
        "${_ENV_ARGS[SERIAL]}" \
        "${_ENV_ARGS[PARALLEL]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_dependency()"


#
# Name:  modify_temporal_dependency
#
function modify_temporal_dependency {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset parent=$1
    typeset children=${_ENV_ARGS["RESOURCEGROUPCHILDREN"]}

    CL=$LINENO KLIB_HACMP_modify_rgdependency "$parent" children
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_temporal_dependency():


#
# Name:  modify_location_dependency
#
function modify_location_dependency {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset mode=$1

    typeset status=0
    typeset rgs=${_ENV_ARGS[RESOURCEGROUPLIST]}

    CL=$LINENO KLIB_HACMP_modify_location_dependency "$mode" rgs
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_location_dependency()"


#
# Name:  modify_fallback_timer
#
function modify_fallback_timer {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1
    typeset name=$2

    CL=$LINENO KLIB_HACMP_modify_fallback_timer properties \
                                     "$name" \
                                     "${_ENV_ARGS[YEAR]}" \
                                     "${_ENV_ARGS[MONTH]}" \
                                     "${_ENV_ARGS[DAY_OF_MONTH]}" \
                                     "${_ENV_ARGS[DAY_OF_WEEK]}" \
                                     "${_ENV_ARGS[HOUR]}" \
                                     "${_ENV_ARGS[MINUTE]}" \
                                     "${_ENV_ARGS[REPEATS]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_fallback_timer()"


#
# Name:  modify_user
#
function modify_user {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1
    typeset name=$2

    CL=$LINENO KLIB_HACMP_modify_user properties \
                           "$name" \
                           "${_ENV_ARGS[RESOURCE_GROUP]}" \
                           "${_ENV_ARGS[ID]}" \
                           "${_ENV_ARGS[KEYSTORE_ACCESS]}" \
                           "${_ENV_ARGS[ADMIN_KEYSTORE_ACCESS]}" \
                           "${_ENV_ARGS[KEYSTORE_MODE]}" \
                           "${_ENV_ARGS[ALLOW_MODE_CHANGE]}" \
                           "${_ENV_ARGS[KEYSTORE_ENCRYPTION]}" \
                           "${_ENV_ARGS[FILE_ENCRYPTION]}" \
                           "${_ENV_ARGS[REGISTRY]}" \
                           "${_ENV_ARGS[AUTHENTICATION]}" \
                           "${_ENV_ARGS[GROUPS]}" \
                           "${_ENV_ARGS[PRIMARY]}" \
                           "${_ENV_ARGS[ADMIN_GROUPS]}" \
                           "${_ENV_ARGS[ROLES]}" \
                           "${_ENV_ARGS[SWITCH_USER]}" \
                           "${_ENV_ARGS[SU_GROUPS]}" \
                           "${_ENV_ARGS[HOME]}" \
                           "${_ENV_ARGS[SHELL]}" \
                           "${_ENV_ARGS[INFO]}" \
                           "${_ENV_ARGS[EXPIRATION]}" \
                           "${_ENV_ARGS[LOCKED]}" \
                           "${_ENV_ARGS[LOGIN]}" \
                           "${_ENV_ARGS[REMOTE_LOGIN]}" \
                           "${_ENV_ARGS[SCHEDULE]}" \
                           "${_ENV_ARGS[MAX_FAILED_LOGINS]}" \
                           "${_ENV_ARGS[ALLOWED_TTYS]}" \
                           "${_ENV_ARGS[DAYS_TO_WARN]}" \
                           "${_ENV_ARGS[PASSWORD_VALIDATION_METHODS]}" \
                           "${_ENV_ARGS[PASSWORD_FILTERS]}" \
                           "${_ENV_ARGS[MIN_PASSWORDS]}" \
                           "${_ENV_ARGS[REUSE_TIME]}" \
                           "${_ENV_ARGS[LOCKOUT_DELAY]}" \
                           "${_ENV_ARGS[MAX_PASSWORD_AGE]}" \
                           "${_ENV_ARGS[MIN_PASSWORD_AGE]}" \
                           "${_ENV_ARGS[MIN_PASSWORD_LENGTH]}" \
                           "${_ENV_ARGS[MIN_PASSWORD_ALPHAS]}" \
                           "${_ENV_ARGS[MIN_PASSWORD_OTHERS]}" \
                           "${_ENV_ARGS[MAX_PASSWORD_REPEATED_CHARS]}" \
                           "${_ENV_ARGS[MIN_PASSWORD_DIFFERENT]}" \
                           "${_ENV_ARGS[UMASK]}" \
                           "${_ENV_ARGS[AUDIT_CLASSES]}" \
                           "${_ENV_ARGS[TRUSTED_PATH]}" \
                           "${_ENV_ARGS[PRIMARY_AUTH]}" \
                           "${_ENV_ARGS[SECONDARY_AUTH]}" \
                           "${_ENV_ARGS[PROJECTS]}" \
                           "${_ENV_ARGS[ADMINISTRATIVE]}" \
                           "${_ENV_ARGS[PASSWORD]}" \
                           "${_ENV_ARGS[CHANGE_ON_NEXT_LOGIN]}" \
                           "${_ENV_ARGS[ALLOW_PASSWORD_CHANGE]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_user()"


#
# Name:  modify_group
#
function modify_group {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1
    typeset name=$2

    CL=$LINENO KLIB_HACMP_modify_group properties \
                           "$name" \
                           "${_ENV_ARGS[RESOURCE_GROUP]}" \
                           "${_ENV_ARGS[ID]}" \
                           "${_ENV_ARGS[ADMINISTRATIVE]}" \
                           "${_ENV_ARGS[USERS]}" \
                           "${_ENV_ARGS[ADMINS]}" \
                           "${_ENV_ARGS[PROJECTS]}" \
                           "${_ENV_ARGS[KEYSTORE_MODE]}" \
                           "${_ENV_ARGS[KEYSTORE_ENCRYPTION]}" \
                           "${_ENV_ARGS[KEYSTORE_ACCESS]}" \
                           "${_ENV_ARGS[REGISTRY]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_group()"


#
# Name:  modify_efs
#
function modify_efs {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1

    CL=$LINENO KLIB_HACMP_modify_efs properties \
                          "${_ENV_ARGS[MODE]}" \
                          "${_ENV_ARGS[VOLUME_GROUP]}" \
                          "${_ENV_ARGS[SERVICE_IP]}" \
                          "${_ENV_ARGS[PASSWORD]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_efs()"


#
# Name:  modify_storage_agent
#
function modify_storage_agent {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1
    typeset name=$2

    CL=$LINENO KLIB_HACMP_modify_storage_agent properties \
                                    "$name" \
                                    "${_ENV_ARGS[NAME]}" \
                                    "${_ENV_ARGS[ADDRESSES]}" \
                                    "${_ENV_ARGS[USER]}" \
                                    "${_ENV_ARGS[PASSWORD]}" \
                                    "${_ENV_ARGS[ATTRIBUTES]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_storage_agent()"


#
# Name:  modify_storage_system
#
function modify_storage_system {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1
    typeset name=$2

    CL=$LINENO KLIB_HACMP_modify_storage_system properties \
                                     "$name" \
                                     "${_ENV_ARGS[NAME]}" \
                                     "${_ENV_ARGS[AGENTS]}" \
                                     "${_ENV_ARGS[VENDOR_ID]}" \
                                     "${_ENV_ARGS[WWNN]}" \
                                     "${_ENV_ARGS[SITE]}" \
                                     "${_ENV_ARGS[ADDRESSES]}" \
                                     "${_ENV_ARGS[MASTER]}" \
                                     "${_ENV_ARGS[PARTNER]}" \
                                     "${_ENV_ARGS[ATTRIBUTES]}" \
                                     "${_ENV_ARGS[USER]}" \
                                     "${_ENV_ARGS[BACKUP_PROFILE]}" 
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_storage_system()"


#
# Name:  modify_mirror_pair
#
function modify_mirror_pair {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1
    typeset name=$2

    CL=$LINENO KLIB_HACMP_modify_mirror_pair properties \
                                  "$name" \
                                  "${_ENV_ARGS[NAME]}" \
                                  "${_ENV_ARGS[FIRST_DISK]}" \
                                  "${_ENV_ARGS[SECOND_DISK]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_mirror_pair()"


#
# Name:  modify_mirror_group
#
function modify_mirror_group {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1
    typeset name=$2

    CL=$LINENO KLIB_HACMP_modify_mirror_group properties \
                                   "$name" \
                                   "${_ENV_ARGS[NAME]}" \
                                   "${_ENV_ARGS[MODE]}" \
                                   "${_ENV_ARGS[RECOVERY]}" \
                                   "${_ENV_ARGS[STORAGE_SYSTEMS]}" \
                                   "${_ENV_ARGS[MIRROR_PAIRS]}" \
                                   "${_ENV_ARGS[DEVICE_GROUPS]}" \
                                   "${_ENV_ARGS[CONSISTENT]}" \
                                   "${_ENV_ARGS[VENDOR_ID]}" \
                                   "${_ENV_ARGS[ATTRIBUTES]}" \
                                   "${_ENV_ARGS[HORCM_INSTANCE]}" \
                                   "${_ENV_ARGS[HORCM_TIMEOUT]}" \
                                   "${_ENV_ARGS[PAIR_EVENT_TIMEOUT]}" \
                                   "${_ENV_ARGS[VOLUME_GROUPS]}" \
                                   "${_ENV_ARGS[DISKS]}" \
                                   "${_ENV_ARGS[HYPERSWAP_ENABLED]}" \
                                   "${_ENV_ARGS[HYPERSWAP_PRIORITY]}" \
                                   "${_ENV_ARGS[UNPLANNED_HS_TIMEOUT]}" \
                                   "${_ENV_ARGS[NODE]}" \
                                   "${_ENV_ARGS[SITE]}" \
                                   "${_ENV_ARGS[NON_HS_DISK]}" \
                                   "${_ENV_ARGS[HS_DISK]}" \
                                   "${_ENV_ARGS[MG_TYPE]}" \
                                   "${_ENV_ARGS[RESYNC]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_mirror_group()"


#
# Name:  modify_event
#
function modify_event {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1
    typeset name=$2

    CL=$LINENO KLIB_HACMP_modify_event properties \
                                       "$name" \
                                       "${_ENV_ARGS[NAME]}" \
                                       "${_ENV_ARGS[FILE]}" \
                                       "${_ENV_ARGS[DESCRIPTION]}" \
                                       "${_ENV_ARGS[NOTIFY_COMMAND]}" \
                                       "${_ENV_ARGS[PRE_EVENT_COMMAND]}" \
                                       "${_ENV_ARGS[POST_EVENT_COMMAND]}" \
                                       "${_ENV_ARGS[PREPOSTFAILS]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_event()"


#
# Name:  modify_hmc
#
function modify_hmc {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1
    typeset name=$2

    CL=$LINENO KLIB_HACMP_modify_hmc properties \
        "$name" \
        "${_ENV_ARGS[TIMEOUT]}" \
        "${_ENV_ARGS[RETRY_COUNT]}" \
        "${_ENV_ARGS[RETRY_DELAY]}" \
        "${_ENV_ARGS[NODES]}" \
        "${_ENV_ARGS[SITES]}" \
        "${_ENV_ARGS[CHECK_HMC]}" \
        "${_ENV_ARGS[USER_NAME]}" \
        "${_ENV_ARGS[PASSWORD]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_hmc()"

#
# Name:  modify_nova
#
function modify_nova {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1
    typeset name=$2

    CL=$LINENO KLIB_HACMP_modify_nova properties \
        "$name" \
        "${_ENV_ARGS[TIMEOUT]}" \
        "${_ENV_ARGS[RETRY_COUNT]}" \
        "${_ENV_ARGS[RETRY_DELAY]}" \
        "${_ENV_ARGS[USER_NAME]}" \
        "${_ENV_ARGS[PASSWORD]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_nova()"


#
# Name:  modify_cod
#
function modify_cod {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1
    typeset name=$2

    CL=$LINENO KLIB_HACMP_modify_cod properties \
    "$name" \
    "${_ENV_ARGS[USE_DESIRED]}" \
    "${_ENV_ARGS[OPTIMAL_MEM]}" \
    "${_ENV_ARGS[OPTIMAL_CPU]}" \
    "${_ENV_ARGS[OPTIMAL_PU]}"  \
    "${_ENV_ARGS[OPTIMAL_VP]}"

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


#
# Name:  modify_backup_profile
#
function modify_backup_profile {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1
    typeset name=$2

    CL=$LINENO KLIB_HACMP_modify_backup_profile properties                           \
                                                   "$name"                              \
                                                   "${_ENV_ARGS[ENABLE_BACKUP]}"        \
                                                   "${_ENV_ARGS[VOLUME_GROUP]}"         \
                                                   "${_ENV_ARGS[REPLICATED_RESOURCES]}" \
                                                   "${_ENV_ARGS[STORAGE_NAME]}"      \
                                                   "${_ENV_ARGS[BUCKET_NAME]}"      \
                                                   "${_ENV_ARGS[TARGET_LOCATION]}"      \
                                                   "${_ENV_ARGS[CLOUD_SERVICE]}"        \
                                                   "${_ENV_ARGS[COMPRESSION]}"          \
                                                   "${_ENV_ARGS[BACKUP_FREQUENCY]}"     \
                                                   "${_ENV_ARGS[BACKUP_SCHEDULE]}"      \
                                                   "${_ENV_ARGS[INC_BACKUP_FREQ]}"      \
                                                   "${_ENV_ARGS[NOTIFYMETHOD]}"         \
                                                   "${_ENV_ARGS[ENCRYPTION]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_backup_profile()"

#
# Name:  KLIB_HACMP_modify_logical_volume
#
function modify_logical_volume {
    . $HALIBROOT/log_entry "$0()" "$CL" max
    
    typeset -n properties=$1
    typeset name=$2
    CL=$LINENO KLIB_HACMP_modify_logical_volume properties                                \
                                                   "${_ENV_ARGS[RESOURCE_NAME]}"          \
                                                   "${_ENV_ARGS[TYPE]}"                   \
                                                   "${_ENV_ARGS[POSITION]}"               \
                                                   "${_ENV_ARGS[PV_RANGE]}"               \
                                                   "${_ENV_ARGS[MAX_PVS_FOR_NEW_ALLOC]}"  \
                                                   "${_ENV_ARGS[MAX_LPARTS]}"             \
                                                   "${_ENV_ARGS[SCHEDULING_POLICY]}"      \
                                                   "${_ENV_ARGS[LABEL]}"                  \
                                                   "${_ENV_ARGS[LOGICAL_PARTITIONS]}"     \
                                                   "${_ENV_ARGS[ENABLE_LV_ENCRYPTION]}"      \
                                                   "${_ENV_ARGS[AUTH_METHOD]}"            \
                                                   "${_ENV_ARGS[METHOD_DETAILS]}"         \
                                                   "${_ENV_ARGS[AUTH_METHOD_NAME]}" \
                                                   "${_ENV_ARGS[REMOVE_AUTH_METHOD]}" 
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_logical_volume()"

# Name:  modify_file_system
#
function modify_file_system {
    . $HALIBROOT/log_entry "$0()" "$CL" max

    typeset -n properties=$1
    typeset name=$2

    CL=$LINENO KLIB_HACMP_modify_file_system properties             \
                                  "$name"                           \
                                  "${_ENV_ARGS[UNITS]}"             \
                                  "${_ENV_ARGS[SIZE_PER_UNIT]}"     \
                                  "${_ENV_ARGS[NEW_FS_NAME]}"       \
                                  "${_ENV_ARGS[PERMISSIONS]}"       \
                                  "${_ENV_ARGS[EFS]}"
    log_return_msg "$?" "$0()" "$LINENO"
    return $?
} # End of "modify_file_system()"

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

. $HALIBROOT/log_entry resource_modify "$CL" max
: INPUTS == $*

#===================================================
# Source the file with common definitions, the run
# the action/class-appropriate class processor.
#===================================================
typeset -A properties
CL=$LINENO . $HAEVENTS/resource_common "$@"
CL=$LINENO runClassProcessor "$RESOURCE_CLASS" _VAR_SUBSTITUTIONS _ENV_ARGS properties
typeset -i rc=$?

#======================================================================
# If output from this operation was requested, display it now, adding
# a "distinctive" divider to help separate the command(s) output from
# the attributes output in scripts.
#======================================================================
if (( rc == 0 )) && \
   [[ ${_CLASS_PROCESSORS[$RESOURCE_CLASS]} == *+([[:space:]])properties* ]]
then
    if (( CLVT_VERBOSE )) || [[ -n $CLVT_ATTRS ]]; then
        /usr/bin/dspmsg -s 2 command.cat 9 "\nProperties:\n"
        CL=$LINENO SerializeAsAssociativeArray properties "$RESOURCE_CLASS"
    fi
fi

log_return_msg "$rc" resource_modify "$LINENO"
exit $?
