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

###########################################################################
#
# This file is used to define all the operation signatures supported by
# clmgr, where an "operation" is defined as the unique combination of a
# specific action on a particular class. The file/function that needs to
# be invoked for a given operation is defined, along with the options
# that are allowed for that operation. All required options must have a
# plus sign appended to them.
#
# These signatures are used to not only know how to invoke an operation,
# but also how to validate its input (i.e. the signatures are used to
# allow/disallow customer inputs). Further, when the customer requests
# syntax help, these definitions are consulted for how to provide it.
#
# ============================
#    !!! IMPORTANT NOTE !!!
# ============================
# The clvt/clmgr binary directly parses this file in order to validate
# ACTION<==>CLASS mappings. It is critical that the formatting of this
# file be consistently maintained. All action sections must be denoted
# with a conditional that looks like one of these:
#
#       if [[ $CLMGR_ACTION == "add" ]]; then
#       elif [[ $CLMGR_ACTION == "delete" ]]; then
#
# Ideally, nothing else should be on the line, to avoid any parsing
# confusion, and not other conditionals that contain the variable
# "$CLMGR_ACTION" should be included in the file.
#
# Last, for any entry added to the "else" section, below, make sure
# the key uses the format of "<ACTION>_<CLASS>". If you must deviate
# from this, then it is likely that you'll need to add special
# handling code to "clvt.c", as well.
#
# Any time a new entry is made to this file, in addition to normal
# functional testing, be sure to also verify that the new entry shows
# up correctly in help and error output.
#
###########################################################################

. $HALIBROOT/log_entry class_processors "$CL" max

typeset -l CLMGR_ACTION=$1
typeset -A _CLASS_PROCESSORS

######################
##
## ADD
##
######################
if [[ $CLMGR_ACTION == "add" ]]; then
    _CLASS_PROCESSORS=(
        [cluster]="add_cluster properties RESOURCE_NAME FC_SYNC_INTERVAL \
                         NODES HEARTBEAT_TYPE REPOSITORIES CLUSTER_IP \
                         RG_SETTLING_TIME RG_DIST_POLICY MAX_EVENT_TIME \
                         MAX_RG_PROCESSING_TIME SITE_POLICY_FAILURE_ACTION \
                         SITE_POLICY_NOTIFY_METHOD \
                         DAILY_VERIFICATION VERIFICATION_NODE \
                         VERIFICATION_HOUR VERIFICATION_DEBUGGING \
                         HEARTBEAT_FREQUENCY GRACE_PERIOD \
                         SITE_HEARTBEAT_CYCLE SITE_GRACE_PERIOD TYPE \
                         TEMP_HOSTNAME \
                         LPM_POLICY HEARTBEAT_FREQUENCY_DURING_LPM \
                         NETWORK_FAILURE_DETECTION_TIME CAA_AUTO_START_DR \
                         CAA_REPOS_MODE CAA_CONFIG_TIMEOUT \
                         LVM_PREFERRED_READ CRIT_DAEMON_RESTART_GRACE_PERIOD \
                         SKIP_EVENT_PROCESSING_MANAGE_MODE"
        [repository]="add_repository properties RESOURCE_NAME+ SITE \
                         NODE DISABLE_VALIDATION"
        [site]="add_site properties RESOURCE_NAME+ NODES SITE_IP \
                         RECOVERY_PRIORITY REPOSITORIES"
        [node]="add_node properties RESOURCE_NAME+ COMMPATH RUN_DISCOVERY \
                         PERSISTENT_IP NETWORK PREFIX NETMASK START_ON_BOOT \
                         BROADCAST_ON_START CLINFO_ON_START \
                         SITE CRIT_DAEMON_RESTART_GRACE_PERIOD"
        [network]="add_network properties RESOURCE_NAME+ TYPE NETMASK PREFIX PUBLIC UNSTABLE_THRESHOLD UNSTABLE_PERIOD"
        [interface]="add_interface properties RESOURCE_NAME+ NETWORK+ TYPE \
                         NODE INTERFACE"
        [file_collection]="add_file_collection properties RESOURCE_NAME+ \
                         DESCRIPTION FILES+ SYNC_WITH_CLUSTER \
                         SYNC_WHEN_CHANGED"
        [snapshot]="add_snapshot properties RESOURCE_NAME+ DESCRIPTION METHODS MISC_INFO"

        [resource_group]="add_resource_group properties RESOURCE_NAME+ NODES \
                         FALLOVER FALLBACK STARTUP \
                         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 \
                         SITE_POLICY SECONDARYNODES MIRROR_GROUP"
        [application_controller]="add_appserver properties RESOURCE_NAME+ \
                         STARTSCRIPT+ STOPSCRIPT+ MONITORS STARTUP_MODE \
                         CPU_USAGE_MONITOR PROCESS_TO_MONITOR_CPU_USAGE \
                         CPU_USAGE_MONITOR_INTERVAL"
        [application_monitor]="add_appmonitor properties RESOURCE_NAME+ \
                         APPLICATIONS TYPE+ MODE+ FAILUREACTION PROCESSES \
                         OWNER INSTANCECOUNT STABILIZATION RESTARTCOUNT \
                         RESTARTINTERVAL NOTIFYMETHOD MONITORMETHOD \
                         MONITORINTERVAL HUNGSIGNAL CLEANUPMETHOD \
                         RESTARTMETHOD MONITORRETRYCOUNT AMLOGGING"
        [dependency]="add_dependency TYPE+ PARENT+ CHILD+ STOP+ START+ AFTER+ \
                         SAME+ GROUPS+ HIGH+ INTERMEDIATE+ LOW+ SERIAL+ \
                         PARALLEL+"
        [fallback_timer]="add_fallback_timer properties RESOURCE_NAME+ HOUR+ \
                         MINUTE+ DAY_OF_WEEK DAY_OF_MONTH MONTH YEAR"
        [file_system]="add_file_system properties RESOURCE_NAME+ \
                         TYPE+ UNITS+ SIZE_PER_UNIT PERMISSIONS OPTIONS \
                         BLOCK_SIZE LV_FOR_LOG INLINE_LOG_SIZE \
                         EXT_ATTR_FORMAT ENABLE_QUOTA_MGMT EFS \
                         DISK_ACCOUNTING FRAGMENT_SIZE BYTES_PER_INODE \
                         ALLOC_GROUP_SIZE VOLUME_GROUP LOGICAL_VOLUME"
        [logical_volume]="add_logical_volume properties RESOURCE_NAME+ \
                         VOLUME_GROUP+ LOGICAL_PARTITIONS+ PHYSICAL_VOLUMES \
                         TYPE POSITION PV_RANGE MAX_PVS_FOR_NEW_ALLOC \
                         LPART_COPIES WRITE_CONSISTENCY LPARTS_ON_SEPARATE_PVS \
                         RELOCATE MAX_LPARTS BAD_BLOCK_RELOCATION \
                         SCHEDULING_POLICY VERIFY_WRITES ALLOCATION_MAP \
                         STRIPE_SIZE SERIALIZE_IO FIRST_BLOCK_AVAILABLE \
                         FIRST_COPY_MIRROR_POOL SECOND_COPY_MIRROR_POOL \
                         THIRD_COPY_MIRROR_POOL GROUP PERMISSIONS LABEL NODE \
                         ENABLE_LV_ENCRYPTION AUTH_METHOD METHOD_DETAILS \
                         AUTH_METHOD_NAME"
        [method]="add_method properties RESOURCE_NAME+ TYPE+ FILE+ DESCRIPTION \
                         CONTACT EVENTS NODES RETRY TIMEOUT SOURCE"
        [persistent_ip]="add_persistent_ip properties RESOURCE_NAME+ \
                         NETWORK+ NODE NETMASK PREFIX"
        [service_ip]="add_service_ip properties RESOURCE_NAME+ NETWORK+ \
                         NETMASK PREFIX HWADDR SITE"
        [tape]="add_tape properties RESOURCE_NAME+ DEVICE+ DESCRIPTION \
                         STARTSCRIPT START_SYNCHRONOUSLY \
                         STOPSCRIPT STOP_SYNCHRONOUSLY"
        [volume_group]="add_volume_group properties RESOURCE_NAME+ NODES+ \
                         PHYSICAL_VOLUMES+ TYPE RESOURCE_GROUP PPART_SIZE \
                         MAJOR_NUMBER \
                         ACTIVATE_ON_RESTART QUORUM_NEEDED LTG_SIZE \
                         MIGRATE_FAILED_DISKS \
                         MAX_PHYSICAL_PARTITIONS MAX_LOGICAL_VOLUMES \
                         MIRROR_POOL_NAME STRICT_MIRROR_POOLS \
                         CRITICAL FAILUREACTION NOTIFYMETHOD LVM_PREFERRED_READ \
                         ENABLE_LV_ENCRYPTION"
        [mirror_pool]="add_mirror_pool properties RESOURCE_NAME+ \
                         VOLUME_GROUP+ PHYSICAL_VOLUMES STORAGE_LOCATION MODE \
                         ASYNC_CACHE_LV ASYNC_CACHE_HW_MARK"

        [ldap_server]="add_ldap_server properties RESOURCE_NAME+ ADMIN_DN+ \
                         PASSWORD+ BASE_DN+ SSL_KEY+ SSL_PASSWORD+ PORT SCHEMA \
                         VERSION DB2_INSTANCE_PASSWORD ENCRYPTION_SEED"
        [ldap_client]="add_ldap_client properties SERVERS+ BIND_DN+ PASSWORD+ \
                        BASE_DN+ SSL_KEY+ SSL_PASSWORD+ PORT"
        [user]="add_user properties RESOURCE_NAME+ RESOURCE_GROUP ID PROJECTS \
                        KEYSTORE_ACCESS ADMIN_KEYSTORE_ACCESS KEYSTORE_MODE \
                        ALLOW_MODE_CHANGE KEYSTORE_ENCRYPTION FILE_ENCRYPTION \
                        REGISTRY AUTHENTICATION GROUPS PRIMARY ADMIN_GROUPS \
                        ROLES SWITCH_USER SU_GROUPS HOME SHELL INFO EXPIRATION \
                        LOCKED LOGIN REMOTE_LOGIN SCHEDULE MAX_FAILED_LOGINS \
                        ALLOWED_TTYS DAYS_TO_WARN PASSWORD_VALIDATION_METHODS \
                        PASSWORD_FILTERS MIN_PASSWORDS REUSE_TIME \
                        LOCKOUT_DELAY MAX_PASSWORD_AGE MIN_PASSWORD_AGE \
                        MIN_PASSWORD_LENGTH MIN_PASSWORD_ALPHAS \
                        MIN_PASSWORD_OTHERS MAX_PASSWORD_REPEATED_CHARS \
                        MIN_PASSWORD_DIFFERENT \
                        UMASK AUDIT_CLASSES TRUSTED_PATH PRIMARY_AUTH \
                        SECONDARY_AUTH ADMINISTRATIVE \
                        PASSWORD CHANGE_ON_NEXT_LOGIN ALLOW_PASSWORD_CHANGE"
        [group]="add_group properties RESOURCE_NAME+ RESOURCE_GROUP ID \
                        ADMINISTRATIVE USERS ADMINS PROJECTS KEYSTORE_MODE \
                        KEYSTORE_ENCRYPTION KEYSTORE_ACCESS REGISTRY"
        [efs]="add_efs properties MODE+ VOLUME_GROUP+ SERVICE_IP+ PASSWORD"

        [storage_agent]="add_storage_agent properties RESOURCE_NAME+ \
                        TYPE+ ADDRESSES+ USER PASSWORD MASTER PARTNER \
                        ATTRIBUTES"
        [storage_system]="add_storage_system properties RESOURCE_NAME+ \
                        TYPE+ SITE+ AGENTS WWNN VENDOR_ID ATTRIBUTES \
                        ROLE ADDRESSES PARTNER USER BACKUP_PROFILE" 
        [mirror_pair]="add_mirror_pair properties RESOURCE_NAME+ \
                        FIRST_DISK+ SECOND_DISK+"
        [mirror_group]="add_mirror_group properties RESOURCE_NAME+ \
                        TYPE MODE RECOVERY STORAGE_SYSTEMS MIRROR_PAIRS \
                        CONSISTENT VENDOR_ID ATTRIBUTES \
                        HORCM_INSTANCE HORCM_TIMEOUT PAIR_EVENT_TIMEOUT \
                        VOLUME_GROUPS DISKS HYPERSWAP_ENABLED \
                        HYPERSWAP_PRIORITY UNPLANNED_HS_TIMEOUT MG_TYPE \
                        NODE SITE NON_HS_DISK HS_DISK RESYNC"

        [event]="add_event properties RESOURCE_NAME+ FILE+ DESCRIPTION"
        [hmc]="add_hmc properties RESOURCE_NAME+ TIMEOUT RETRY_COUNT \
                        RETRY_DELAY NODES SITES CHECK_HMC USER_NAME PASSWORD"
        [cod]="add_cod properties RESOURCE_NAME+ USE_DESIRED \
                OPTIMAL_MEM OPTIMAL_CPU OPTIMAL_PU OPTIMAL_VP"
        [nova]="add_nova properties RESOURCE_NAME+ TIMEOUT RETRY_COUNT \
                        RETRY_DELAY USER_NAME PASSWORD"
        [backup_profile]="add_backup_profile properties RESOURCE_NAME+ ENABLE_BACKUP+ \
                         VOLUME_GROUP+ REPLICATED_RESOURCES+ STORAGE_NAME+ BUCKET_NAME+ \
                         TARGET_LOCATION BACKUP_METHOD+ CLOUD_SERVICE \
                         COMPRESSION BACKUP_FREQUENCY BACKUP_SCHEDULE INC_BACKUP_FREQ \
                         NOTIFYMETHOD ENCRYPTION"
        [backup]="add_backup properties RESOURCE_NAME+"
    )

######################
##
## DELETE
##
######################
elif [[ $CLMGR_ACTION == "delete" ]]; then
    _CLASS_PROCESSORS=(
        [cluster]="KLIB_HACMP_delete_cluster NODES"
        [repository]="delete_repository RESOURCE_NAME+ SITE NODE"
        [site]="KLIB_HACMP_delete_site RESOURCE_NAME+"
        [node]="KLIB_HACMP_delete_node RESOURCE_NAME+"
        [network]="KLIB_HACMP_delete_network RESOURCE_NAME+"
        [interface]="KLIB_HACMP_delete_interface RESOURCE_NAME+"
        [file_collection]="KLIB_HACMP_delete_filecollection RESOURCE_NAME+"
        [snapshot]="KLIB_HACMP_delete_snapshot RESOURCE_NAME+"

        [resource_group]="KLIB_HACMP_delete_resourcegroup RESOURCE_NAME+"
        [application_controller]="KLIB_HACMP_delete_appserver RESOURCE_NAME+"
        [application_monitor]="KLIB_HACMP_delete_appmonitor RESOURCE_NAME+"
        [dependency]="delete_dependency RESOURCE_NAME+ TYPE RESOURCE_GROUP"
        [fallback_timer]="KLIB_HACMP_delete_fallback_timer RESOURCE_NAME+"
        [method]="KLIB_HACMP_delete_method RESOURCE_NAME+ TYPE"
        [persistent_ip]="KLIB_HACMP_delete_persistent_ip RESOURCE_NAME+"
        [service_ip]="KLIB_HACMP_delete_service_ip RESOURCE_NAME+"
        [tape]="KLIB_HACMP_delete_tape RESOURCE_NAME+"
        [file_system]="KLIB_HACMP_delete_file_system RESOURCE_NAME+ REMOVE_MOUNT_POINT"
        [logical_volume]="KLIB_HACMP_delete_logical_volume RESOURCE_NAME+"
        [volume_group]="KLIB_HACMP_delete_volume_group RESOURCE_NAME+"
        [mirror_pool]="delete_mirror_pool RESOURCE_NAME+ VOLUME_GROUP PHYSICAL_VOLUMES"

        [ldap_server]="KLIB_HACMP_delete_ldap_server"
        [ldap_client]="KLIB_HACMP_delete_ldap_client"
        [user]="delete_user RESOURCE_NAME+ RESOURCE_GROUP REMOVE_AUTH_INFO \
                REGISTRY"
        [group]="delete_group RESOURCE_NAME+ RESOURCE_GROUP REGISTRY"
        [efs]="KLIB_HACMP_delete_efs"

        [storage_agent]="KLIB_HACMP_delete_storage_agent RESOURCE_NAME+"
        [storage_system]="KLIB_HACMP_delete_storage_system RESOURCE_NAME+ BACKUP_PROFILE"
        [mirror_pair]="KLIB_HACMP_delete_mirror_pair RESOURCE_NAME+"
        [mirror_group]="KLIB_HACMP_delete_mirror_group RESOURCE_NAME+"

        [event]="KLIB_HACMP_delete_event RESOURCE_NAME+"
        [hmc]="KLIB_HACMP_delete_hmc RESOURCE_NAME+"
        [cod]="KLIB_HACMP_delete_cod RESOURCE_NAME+"
        [nova]="KLIB_HACMP_delete_nova RESOURCE_NAME+"
        [backup_profile]="delete_backup_profile RESOURCE_NAME+ \
                  CANCEL_BACKUP"
    )

######################
##
## MODIFY
##
######################
elif [[ $CLMGR_ACTION == "modify" ]]; then
    _CLASS_PROCESSORS=(
        [cluster]="modify_cluster properties NAME FC_SYNC_INTERVAL \
                         NODES HEARTBEAT_TYPE REPOSITORIES CLUSTER_IP \
                         RG_SETTLING_TIME RG_DIST_POLICY MAX_EVENT_TIME \
                         MAX_RG_PROCESSING_TIME SITE_POLICY_FAILURE_ACTION \
                         SITE_POLICY_NOTIFY_METHOD \
                         DAILY_VERIFICATION VERIFICATION_NODE \
                         VERIFICATION_HOUR VERIFICATION_DEBUGGING \
                         HEARTBEAT_FREQUENCY GRACE_PERIOD \
                         SITE_HEARTBEAT_CYCLE SITE_GRACE_PERIOD TYPE \
                         \
                         SPLIT_POLICY MERGE_POLICY NFS_QUORUM_SERVER LOCAL_QUORUM_DIRECTORY \
                         REMOTE_QUORUM_DIRECTORY QUARANTINE_POLICY CRITICAL_RG ACTION_PLAN TIEBREAKER \
                         NOTIFYMETHOD NOTIFY_INTERVAL MAXIMUM_NOTIFICATIONS \
                         DEFAULT_SURVIVING_SITE APPLY_TO_PPRC_TAKEOVER \
                         TEMP_HOSTNAME \
                         LPM_POLICY HEARTBEAT_FREQUENCY_DURING_LPM \
                         NETWORK_FAILURE_DETECTION_TIME \
                         CAA_AUTO_START_DR \
                         CAA_REPOS_MODE CAA_CONFIG_TIMEOUT LVM_PREFERRED_READ CRIT_DAEMON_RESTART_GRACE_PERIOD \
                         SKIP_EVENT_PROCESSING_MANAGE_MODE BUCKET_NAME CLOUD_SERVICE USE_EXISTING_BUCKET"
        [site]="modify_site properties RESOURCE_NAME+ NAME NODES SITE_IP \
                         RECOVERY_PRIORITY REPOSITORIES \
                         HMCS"
        [node]="modify_node properties RESOURCE_NAME+ NAME COMMPATH \
                         PERSISTENT_IP NETWORK PREFIX NETMASK START_ON_BOOT \
                         BROADCAST_ON_START CLINFO_ON_START \
                         ENABLE_LIVE_UPDATE HMCS ENABLE_CAA_AFTER_MERGE \
                         CRIT_DAEMON_RESTART_GRACE_PERIOD"
        [network]="modify_network properties RESOURCE_NAME+ NAME TYPE \
                         NETMASK PREFIX PUBLIC RESOURCE_DIST_PREF \
                         SOURCE_IP UNSTABLE_THRESHOLD UNSTABLE_PERIOD"
        [interface]="modify_interface properties RESOURCE_NAME+ NETWORK+"
        [file_collection]="modify_file_collection properties RESOURCE_NAME+ \
                         NAME DESCRIPTION ADD DELETE REPLACE FILES \
                         SYNC_WITH_CLUSTER SYNC_WHEN_CHANGED"
        [log]="modify_log properties RESOURCE_NAME+ DIRECTORY FORMATTING \
                         TRACE_LEVEL REMOTE_FS"
        [snapshot]="modify_snapshot properties RESOURCE_NAME+ NAME \
                         DESCRIPTION "

        [resource_group]="modify_resource_group properties RESOURCE_NAME+ \
                         NAME NODES 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 \
                         STARTUP FALLOVER FALLBACK \
                         NODE_PRIORITY_POLICY NODE_PRIORITY_POLICY_SCRIPT \
                         NODE_PRIORITY_POLICY_TIMEOUT SITE_POLICY RAW_DISK \
                         SECONDARYNODES MIRROR_GROUP 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"
        [application_controller]="modify_appserver properties RESOURCE_NAME+ \
                         NAME STARTSCRIPT STOPSCRIPT MONITORS STARTUP_MODE \
                         CPU_USAGE_MONITOR PROCESS_TO_MONITOR_CPU_USAGE \
                         CPU_USAGE_MONITOR_INTERVAL"
        [application_monitor]="modify_appmonitor properties RESOURCE_NAME+ \
                         NAME APPLICATIONS TYPE MODE FAILUREACTION \
                         PROCESSES OWNER INSTANCECOUNT STABILIZATION \
                         RESTARTCOUNT RESTARTINTERVAL NOTIFYMETHOD \
                         MONITORMETHOD MONITORINTERVAL HUNGSIGNAL \
                         CLEANUPMETHOD RESTARTMETHOD MONITORRETRYCOUNT AMLOGGING"
        [dependency]="modify_dependency RESOURCE_NAME+ TYPE PARENT CHILD SAME \
                         HIGH INTERMEDIATE LOW STOP START AFTER SERIAL PARALLEL \
                         GROUPS"
        [fallback_timer]="modify_fallback_timer properties RESOURCE_NAME+ YEAR \
                         MONTH DAY_OF_MONTH DAY_OF_WEEK HOUR MINUTE REPEATS"
        [method]="modify_method properties RESOURCE_NAME+ TYPE+ NAME \
                         DESCRIPTION FILE CONTACT EVENTS NODES RETRY TIMEOUT"
        [persistent_ip]="modify_persistent_ip properties RESOURCE_NAME+ \
                         NAME NETWORK PREFIX NETMASK"
        [service_ip]="modify_service_ip properties RESOURCE_NAME+ NAME \
                         NETWORK NETMASK PREFIX HWADDR SITE"
        [tape]="modify_tape properties RESOURCE_NAME+ NAME DEVICE DESCRIPTION \
                         STARTSCRIPT START_SYNCHRONOUSLY \
                         STOPSCRIPT STOP_SYNCHRONOUSLY"
        [volume_group]="modify_volume_group properties RESOURCE_NAME+ ADD \
                         REMOVE MIRROR_POOL_NAME TYPE \
                         ACTIVATE_ON_RESTART QUORUM_NEEDED LTG_SIZE \
                         MIGRATE_FAILED_DISKS \
                         MAX_PHYSICAL_PARTITIONS MAX_LOGICAL_VOLUMES \
                         STRICT_MIRROR_POOLS CRITICAL FAILUREACTION \
                         NOTIFYMETHOD SCSIPR_ACTION LVM_PREFERRED_READ \
                         ENABLE_LV_ENCRYPTION"
        [physical_volume]="modify_physical_volume properties RESOURCE_NAME+ \
                         NAME+ SCSIPR_ACTION NODE ALL_NODES"
        [mirror_pool]="modify_mirror_pool properties RESOURCE_NAME+ \
                         VOLUME_GROUP+ NAME STORAGE_LOCATION MODE FORCE_SYNC \
                         ASYNC_CACHE_LV ASYNC_CACHE_HW_MARK ADD REMOVE"

        [temporal_dependency]="modify_temporal_dependency RESOURCE_NAME+ RESOURCEGROUPCHILDREN"
        [location_dependency]="modify_location_dependency RESOURCE_NAME+ RESOURCEGROUPLIST"

        [user]="modify_user properties RESOURCE_NAME+ RESOURCE_GROUP ID \
                        KEYSTORE_ACCESS ADMIN_KEYSTORE_ACCESS KEYSTORE_MODE \
                        ALLOW_MODE_CHANGE KEYSTORE_ENCRYPTION FILE_ENCRYPTION \
                        REGISTRY AUTHENTICATION GROUPS PRIMARY ADMIN_GROUPS \
                        ROLES SWITCH_USER SU_GROUPS HOME SHELL INFO EXPIRATION \
                        LOCKED LOGIN REMOTE_LOGIN SCHEDULE MAX_FAILED_LOGINS \
                        ALLOWED_TTYS DAYS_TO_WARN PASSWORD_VALIDATION_METHODS \
                        PASSWORD_FILTERS MIN_PASSWORDS REUSE_TIME \
                        LOCKOUT_DELAY MAX_PASSWORD_AGE MIN_PASSWORD_AGE \
                        MIN_PASSWORD_LENGTH MIN_PASSWORD_ALPHAS \
                        MIN_PASSWORD_OTHERS MAX_PASSWORD_REPEATED_CHARS \
                        MIN_PASSWORD_DIFFERENT \
                        UMASK AUDIT_CLASSES TRUSTED_PATH PRIMARY_AUTH \
                        SECONDARY_AUTH PROJECTS ADMINISTRATIVE \
                        PASSWORD CHANGE_ON_NEXT_LOGIN ALLOW_PASSWORD_CHANGE"
        [group]="modify_group properties RESOURCE_NAME+ RESOURCE_GROUP ID \
                        ADMINISTRATIVE USERS ADMINS PROJECTS KEYSTORE_MODE \
                        KEYSTORE_ENCRYPTION KEYSTORE_ACCESS REGISTRY"
        [efs]="modify_efs properties MODE VOLUME_GROUP SERVICE_IP PASSWORD"

        [storage_agent]="modify_storage_agent properties RESOURCE_NAME+ \
                        NAME ADDRESSES USER PASSWORD ATTRIBUTES"
        [storage_system]="modify_storage_system properties RESOURCE_NAME+ \
                        NAME SITE AGENTS WWNN VENDOR_ID ADDRESSES MASTER \
                        PARTNER ATTRIBUTES USER BACKUP_PROFILE"
        [mirror_pair]="modify_mirror_pair properties RESOURCE_NAME+ NAME \
                        FIRST_DISK SECOND_DISK"
        [mirror_group]="modify_mirror_group properties RESOURCE_NAME+ NAME \
                        MODE RECOVERY STORAGE_SYSTEMS MIRROR_PAIRS \
                        DEVICE_GROUPS CONSISTENT VENDOR_ID ATTRIBUTES \
                        HORCM_INSTANCE HORCM_TIMEOUT PAIR_EVENT_TIMEOUT \
                        VOLUME_GROUPS DISKS HYPERSWAP_ENABLED \
                        HYPERSWAP_PRIORITY UNPLANNED_HS_TIMEOUT \
                        NODE SITE NON_HS_DISK HS_DISK MG_TYPE RESYNC"

        [event]="modify_event properties RESOURCE_NAME+ NAME FILE DESCRIPTION \
                        NOTIFY_COMMAND PRE_EVENT_COMMAND \
                        POST_EVENT_COMMAND PREPOSTFAILS"
        [hmc]="modify_hmc properties RESOURCE_NAME+ TIMEOUT RETRY_COUNT \
                        RETRY_DELAY NODES SITES CHECK_HMC USER_NAME PASSWORD"
        [cod]="modify_cod properties RESOURCE_NAME+ USE_DESIRED \
                OPTIMAL_MEM OPTIMAL_CPU OPTIMAL_PU OPTIMAL_VP"
        [nova]="modify_nova properties RESOURCE_NAME+ TIMEOUT RETRY_COUNT \
                        RETRY_DELAY USER_NAME PASSWORD"
        [backup_profile]="modify_backup_profile properties RESOURCE_NAME+ ENABLE_BACKUP \
                         VOLUME_GROUP REPLICATED_RESOURCES STORAGE_NAME BUCKET_NAME \
                         TARGET_LOCATION CLOUD_SERVICE COMPRESSION \
                         BACKUP_FREQUENCY BACKUP_SCHEDULE INC_BACKUP_FREQ \
                         NOTIFYMETHOD ENCRYPTION"
        [logical_volume]="modify_logical_volume properties RESOURCE_NAME+ \
                         TYPE POSITION PV_RANGE MAX_PVS_FOR_NEW_ALLOC \
                         MAX_LPARTS SCHEDULING_POLICY LABEL LOGICAL_PARTITIONS \
                         ENABLE_LV_ENCRYPTION AUTH_METHOD METHOD_DETAILS \
                         AUTH_METHOD_NAME REMOVE_AUTH_METHOD"
        [file_system]="modify_file_system properties RESOURCE_NAME+ \
                         UNITS SIZE_PER_UNIT NEW_FS_NAME PERMISSIONS EFS"
    )

######################
##
## Compare 
##
######################
elif [[ $CLMGR_ACTION == "compare" ]]; then
    _CLASS_PROCESSORS=(
        [cluster]="compare_cluster RESOURCE_NAME+ DIRECTORY \
                        DISABLE_EXPECT"

        [snapshot]="compare_snapshot RESOURCE_NAME+ SNAPSHOTPATH \
                        SECTION PAGER SDIFF_OUTPUT_WIDTH SDIFF_FLAGS"
    )

######################
##
## MOVE
##
######################
elif [[ $CLMGR_ACTION == "move" ]]; then
    _CLASS_PROCESSORS=(
        [persistent_ip]="move_persistent_ip RESOURCE_NAME+ INTERFACE+"
        [resource_group]="move_resource_group RESOURCE_NAME+ NODE SITE STATE SECONDARY"
        [service_ip]="move_service_ip RESOURCE_NAME+ INTERFACE+"
    )

######################
##
## OFFLINE
##
######################
elif [[ $CLMGR_ACTION == "offline" ]]; then
    _CLASS_PROCESSORS=(
        [cluster]="stop_cluster WHEN MANAGE BROADCAST TIMEOUT STOP_CAA"
        [site]="stop_site RESOURCE_NAME+ WHEN MANAGE BROADCAST TIMEOUT STOP_CAA"
        [node]="stop_node RESOURCE_NAME WHEN MANAGE BROADCAST TIMEOUT STOP_CAA"
        [resource_group]="stop_rg RESOURCE_NAME+ NODES MODE PRIMARY SECONDARY"
    )

######################
##
## ONLINE
##
######################
elif [[ $CLMGR_ACTION == "online" ]]; then
    _CLASS_PROCESSORS=(
        [cluster]="start_cluster WHEN MANAGE BROADCAST CLINFO FORCE FIX TIMEOUT
                         START_CAA"
        [site]="start_site RESOURCE_NAME+ WHEN MANAGE BROADCAST CLINFO \
                         FORCE FIX TIMEOUT START_CAA"
        [node]="start_node RESOURCE_NAME WHEN MANAGE BROADCAST CLINFO \
                         FORCE FIX TIMEOUT START_CAA"
        [resource_group]="start_rg RESOURCE_NAME+ NODES PRIMARY SECONDARY"
    )

######################
##
## REPLACE
##
######################
elif [[ $CLMGR_ACTION == "replace" ]]; then
    _CLASS_PROCESSORS=(
        [mirror_group]="replace_mirror_group RESOURCE_NAME NODES SITES SYSTEM_GROUPS REPOSITORY_GROUP"
        [repository]="replace_repository RESOURCE_NAME SITE NODE"
    )

######################
##
## VIEW
##
######################
elif [[ $CLMGR_ACTION == "view" ]]; then
    _CLASS_PROCESSORS=(
        [log]="view_log RESOURCE_NAME+ properties CASE FILTER TAIL HEAD \
                         DELIMITER"
        [mirror_group]="view_mirror_group RESOURCE_NAME NODES SITE SYSTEM_GROUPS REPOSITORY_GROUP"
        [report]="view_report RESOURCE_NAME+ FILE TYPE BEGIN_TIME END_TIME \
                         TARGETS COMPANY_NAME COMPANY_LOGO SNAPSHOT"
        [snapshot]="view_snapshot RESOURCE_NAME+ properties CASE FILTER TAIL \
                         HEAD DELIMITER"
    )

######################
##
## RECOVER
##
######################
elif [[ $CLMGR_ACTION == "recover" ]]; then
    _CLASS_PROCESSORS=(
        [cluster]="recover_cluster CANCEL_EVENT"
        [site]="recover_site RESOURCE_NAME+ CANCEL_EVENT"
        [node]="recover_node RESOURCE_NAME+ CANCEL_EVENT"
    )

######################
##
## MANAGE
##
######################
elif [[ $CLMGR_ACTION == "manage" ]]; then
    _CLASS_PROCESSORS=(
        [collect_log]="collect_logs log DIRECTORY NODES RSCT_LOGS"
        [discover_cluster]="KLIB_HACMP_run_discovery properties properties"
        [refresh_mirror_group]="refresh_mirror_group RESOURCE_NAME NODES SITE SYSTEM_GROUPS REPOSITORY_GROUP"
        [reset_cluster]="KLIB_HACMP_reset_cluster"
        [restore_snapshot]="restore_snapshot RESOURCE_NAME+ \
                         CONFIGURE FORCE NODES REPOSITORIES CLUSTER_NAME"
        [resume_application_controller]="resume_app_monitoring RESOURCE_NAME+ \
                         RESOURCE_GROUP+"
        [unlock_cluster]="KLIB_HACMP_unlock_cluster"
        [undo_changes_node]="KLIB_HACMP_undo_cfg_changes"
        [hmc_cluster]="modify_cluster_hmc properties \
                         DEFAULT_HMC_TIMEOUT DEFAULT_HMC_RETRY_COUNT \
                         DEFAULT_HMC_RETRY_DELAY DEFAULT_HMCS_LIST \
                         CONNECTION_TYPE"
        [roha_cluster]="modify_cluster_roha properties \
                         ALWAYS_START_RG ADJUST_SPP_SIZE FORCE_SYNC_RELEASE \
                         AGREE_TO_COD_COSTS ONOFF_DAYS RESOURCE_ALLOCATION_ORDER"
        [security_cluster]="modify_cluster_security properties \
                         LEVEL ALGORITHM MECHANISM CERTIFICATE PRIVATE_KEY" 
        [suspend_application_controller]="suspend_app_monitoring \
                         RESOURCE_NAME+ RESOURCE_GROUP+"
        [mirror_volume_group]="mirror_volume_group RESOURCE_NAME+ NODE \
                         PHYSICAL_VOLUMES NODE MODE COPIES_PER_LPART \
                         CHECK_QUORUM EXACT_LV_MAPPING MP_FIRST_COPY \
                         MP_SECOND_COPY MP_THIRD_COPY"
        [respond_site]="KLIB_HACMP_respond_site RESOURCE_NAME+"
        [nova_cluster]="modify_cluster_nova properties \
                         DEFAULT_NOVA_TIMEOUT DEFAULT_NOVA_RETRY_COUNT \
                         DEFAULT_NOVA_RETRY_DELAY CONNECTION_TYPE" 
        [cloudroha_cluster]="modify_cluster_cloudroha properties \
                         ACTION+ AUTHKEY+ SERVICE+ CLOUDTYPE TIMEOUT CLOUDSITE+"
        [rehearsals_cluster]="cluster_rehearsals RESOURCE_GROUP+"
        [rbac_refresh_cluster]="KLIB_HACMP_cluster_rbac_refresh" 
    )

######################
##
## QUERY/LIST, MISC
##
######################
## NOTE: any attributes that the customer will be allowed to use in search
##       expressions must be specified here *if* they are not already
##       specified in the attribute sets for a matching "add" and "modify"
##       processors for this class, as defined above.
else
    _CLASS_PROCESSORS=(
        [query_cluster]="query_cluster properties DEFINED SECURITY SPLIT MERGE HMC ROHA ALL CORE"
        [query_repository]="KLIB_HACMP_get_repository_attributes RESOURCE_NAME \
                         properties SITE"
        [query_site]="KLIB_HACMP_get_site_attributes RESOURCE_NAME properties"
        [query_node]="KLIB_HACMP_get_node_attributes RESOURCE_NAME properties"
        [query_network]="KLIB_HACMP_get_network_attributes RESOURCE_NAME \
                         properties"
        [query_interface]="KLIB_HACMP_get_interface_attributes RESOURCE_NAME \
                         properties"
        [query_file_collection]="KLIB_HACMP_get_filecollection_attributes \
                         RESOURCE_NAME properties"
        [query_log]="KLIB_HACMP_get_log_attributes RESOURCE_NAME properties"
        [query_snapshot]="KLIB_HACMP_get_snapshot_attributes RESOURCE_NAME \
                         properties"

        [query_resource_group]="KLIB_HACMP_get_rg_attributes RESOURCE_NAME \
                         properties"
        [query_application_controller]="KLIB_HACMP_get_appserver_attributes \
                         RESOURCE_NAME properties"
        [query_application_monitor]="KLIB_HACMP_get_appmonitor_attributes \
                         RESOURCE_NAME properties"
        [query_dependency]="KLIB_HACMP_get_dependency_attributes RESOURCE_NAME \
                         properties"
        [query_fallback_timer]="KLIB_HACMP_get_fallback_timer_attributes \
                         RESOURCE_NAME properties"
        [query_file_system]="KLIB_HACMP_get_file_system_attributes \
                         RESOURCE_NAME properties"
        [query_logical_volume]="KLIB_HACMP_get_logical_volume_attributes \
                         RESOURCE_NAME properties FAST"
        [query_method]="KLIB_HACMP_get_method_attributes RESOURCE_NAME \
                         properties"
        [query_persistent_ip]="KLIB_HACMP_get_persistent_ip_attributes \
                         RESOURCE_NAME properties"
        [query_physical_volume]="query_physical_volume RESOURCE_NAME \
                         properties NODES ALL TYPE"
        [query_service_ip]="KLIB_HACMP_get_service_ip_attributes RESOURCE_NAME \
                         properties"
        [query_tape]="KLIB_HACMP_get_tape_attributes RESOURCE_NAME properties"
        [query_volume_group]="query_volume_group RESOURCE_NAME properties \
                         FAST"
        [query_mirror_pool]="KLIB_HACMP_get_mirror_pool_attributes RESOURCE_NAME \
                         properties"

        [query_host]="KLIB_HACMP_get_host_attributes properties RESOURCE_NAME"
        [query_smart_assist]="list_smart_assists TYPE NODES SAID COMPID \
                                                 INSTANCEID ENV"
        [query_temporal_dependency]="query_temporal_dependency RESOURCE_NAME \
                         properties"
        [query_location_dependency]="KLIB_HACMP_get_location_dependency_by_type\
                          RESOURCE_NAME properties"

        [query_ldap_server]="KLIB_HACMP_get_ldap_server_attributes \
                         properties"
        [query_ldap_client]="KLIB_HACMP_get_ldap_client_attributes \
                         properties"
        [query_group]="KLIB_HACMP_get_group_attributes RESOURCE_NAME \
                         properties"
        [query_user]="query_users RESOURCE_NAME properties TYPE"

        [query_storage_agent]="KLIB_HACMP_get_storage_agent_attributes \
                         RESOURCE_NAME properties"
        [query_storage_system]="query_storage_system \
                         RESOURCE_NAME properties BACKUP"
        [query_mirror_pair]="KLIB_HACMP_get_mirror_pair_attributes \
                         RESOURCE_NAME properties"
        [query_mirror_group]="KLIB_HACMP_get_mirror_group_attributes \
                         RESOURCE_NAME properties"

        [query_event]="KLIB_HACMP_get_event_attributes RESOURCE_NAME \
                         properties"
        [query_hmc]="KLIB_HACMP_get_hmc_attributes RESOURCE_NAME properties"
        [query_cod]="KLIB_HACMP_get_cod_attributes RESOURCE_NAME properties"
        [query_efs]="KLIB_HACMP_get_efs_attributes properties"
        [query_nova]="KLIB_HACMP_get_nova_attributes RESOURCE_NAME properties"
        [query_backup_profile]="KLIB_HACMP_get_backup_profile_attributes RESOURCE_NAME properties"
        [query_backup_files]="list_backup_files BUCKET_NAME RG_NAME START_TIME END_TIME"

        [list_repository]="KLIB_HACMP_list_repositories properties NODES"
        [list_site]="KLIB_HACMP_list_sites properties"
        [list_node]="KLIB_HACMP_list_nodes properties"
        [list_host]="KLIB_HACMP_list_hosts properties TYPE"
        [list_network]="KLIB_HACMP_list_networks properties"
        [list_interface]="KLIB_HACMP_list_interfaces properties"
        [list_file_collection]="KLIB_HACMP_list_filecollection properties"
        [list_log]="KLIB_HACMP_list_logs properties"
        [list_snapshot]="KLIB_HACMP_list_snapshots properties"

        [list_resource_group]="KLIB_HACMP_list_resourcegroups properties"
        [list_application_controller]="KLIB_HACMP_list_appservers properties"
        [list_application_monitor]="KLIB_HACMP_list_appmonitors properties"
        [list_dependency]="KLIB_HACMP_list_dependencies properties"
        [list_file_system]="KLIB_HACMP_list_file_systems properties"
        [list_fallback_timer]="KLIB_HACMP_list_fallback_timers properties"
        [list_logical_volume]="KLIB_HACMP_list_logical_volumes properties"
        [list_method]="KLIB_HACMP_list_methods properties TYPE"
        [list_persistent_ip]="KLIB_HACMP_list_persistent_ip properties"
        [list_physical_volume]="list_physical_volumes properties NODES ALL TYPE"
        [list_service_ip]="KLIB_HACMP_list_service_ip properties"
        [list_tape]="KLIB_HACMP_list_tapes properties"
        [list_volume_group]="KLIB_HACMP_list_volume_groups properties"
        [list_mirror_pool]="KLIB_HACMP_list_mirror_pools properties"

        [list_smart_assist]="list_smart_assists TYPE NODES SAID COMPID \
                                                INSTANCEID ENV"

        [list_ldap_server]="KLIB_HACMP_list_ldap_servers properties"
        [list_user]="list_users properties TYPE"
        [list_group]="KLIB_HACMP_list_groups properties"
        [list_efs]="KLIB_HACMP_get_efs_attributes properties"

        [list_storage_agent]="KLIB_HACMP_list_storage_agents properties"
        [list_storage_system]="list_storage_system properties BACKUP"
        [list_mirror_pair]="KLIB_HACMP_list_mirror_pairs properties"
        [list_mirror_group]="KLIB_HACMP_list_mirror_groups properties"

        [list_event]="KLIB_HACMP_list_events properties"
        [list_hmc]="KLIB_HACMP_list_hmcs properties"
        [list_cod]="KLIB_HACMP_list_cod properties"
        [list_nova]="KLIB_HACMP_list_novas properties"
        [list_backup_profile]="KLIB_HACMP_list_backup_profile properties"
        [list_backup_files]="list_backup_files BUCKET_NAME RG_NAME START_TIME END_TIME"
        [view_host]="KLIB_HACMP_get_host_info properties RESOURCE_NAME"

        [verify_method]="verify_methods RESOURCE_NAME+"
        [verify_cluster]="verify_cluster CHANGES_ONLY DEFAULT_TESTS \
                         METHODS FIX LOGGING LOGFILE MAX_ERRORS \
                         SYNC FORCE"
        [sync_cluster]="sync_cluster FORCE \
                         VERIFY CHANGES_ONLY DEFAULT_TESTS \
                         METHODS FIX LOGGING LOGFILE MAX_ERRORS"
        [sync_file_collection]="KLIB_HACMP_sync_file_collection RESOURCE_NAME+"

        [runcmd]="KLIB_HACMP_run_command"

        [local_node]="KLIB_HACMP_get_localnode"
        [list_temporal_dependency]=""
        [list_location_dependency]=""

        [discover_cluster]="KLIB_HACMP_run_discovery properties properties"
        [discover_interface]="KLIB_HACMP_run_discovery properties properties NODES"
        [discover_volume_group]="KLIB_HACMP_run_discovery properties properties NODES"
    )
fi

export _CLASS_PROCESSORS
log_return_msg 0 class_processors "$LINENO"


#==============================================================================
# The following, comment block attempts to enforce coding standards when this
# file is edited via emacs or vim. This block _must_ appear at the very end
# of the file, or the editor will not find it, and it will be ignored.
#==============================================================================
# Local Variables:
# indent-tabs-mode: nil
# tab-width: 4
# End:
#==============================================================================
# vim: tabstop=4 shiftwidth=4 expandtab
#==============================================================================
