diff --git a/mtce-common/cgts-mtce-common-1.0/common/nodeClass.cpp b/mtce-common/cgts-mtce-common-1.0/common/nodeClass.cpp index 4b8e7ca9..1dfc57fc 100755 --- a/mtce-common/cgts-mtce-common-1.0/common/nodeClass.cpp +++ b/mtce-common/cgts-mtce-common-1.0/common/nodeClass.cpp @@ -2609,7 +2609,7 @@ int nodeLinkClass::add_host ( node_inv_type & inv ) node_ptr->operState = operState_str_to_enum (inv.oper.data ()); node_ptr->availStatus = availStatus_str_to_enum (inv.avail.data()); - if ( CPE_SYSTEM ) + if (( CPE_SYSTEM ) && ( is_controller(node_ptr) == true )) { node_ptr->operState_subf = operState_str_to_enum (inv.oper_subf.data()); node_ptr->availStatus_subf = availStatus_str_to_enum (inv.avail_subf.data()); @@ -2720,7 +2720,7 @@ int nodeLinkClass::add_host ( node_inv_type & inv ) node_ptr->operState = operState_str_to_enum (inv.oper.data ()); node_ptr->availStatus = availStatus_str_to_enum (inv.avail.data()); - if ( CPE_SYSTEM ) + if (( CPE_SYSTEM ) && ( is_controller(node_ptr) == true )) { node_ptr->operState_subf = operState_str_to_enum (inv.oper_subf.data()); node_ptr->availStatus_subf = availStatus_str_to_enum (inv.avail_subf.data()); @@ -2736,13 +2736,13 @@ int nodeLinkClass::add_host ( node_inv_type & inv ) node_ptr->adminState = adminState_str_to_enum (inv.admin.data()); node_ptr->operState = operState_str_to_enum (inv.oper.data ()); node_ptr->availStatus = availStatus_str_to_enum (inv.avail.data()); - - if ( CPE_SYSTEM ) + + if (( CPE_SYSTEM ) && ( is_controller(node_ptr) == true )) { node_ptr->operState_subf = operState_str_to_enum (inv.oper_subf.data()); node_ptr->availStatus_subf = availStatus_str_to_enum (inv.avail_subf.data()); } - + adminActionChange ( node_ptr, MTC_ADMIN_ACTION__LOCK ); } else if ( !inv.action.compare ("force-lock") && validStates ) @@ -2754,8 +2754,8 @@ int nodeLinkClass::add_host ( node_inv_type & inv ) node_ptr->adminState = adminState_str_to_enum (inv.admin.data()); node_ptr->operState = operState_str_to_enum (inv.oper.data ()); node_ptr->availStatus = availStatus_str_to_enum (inv.avail.data()); - - if ( CPE_SYSTEM ) + + if (( CPE_SYSTEM ) && ( is_controller(node_ptr) == true )) { node_ptr->operState_subf = operState_str_to_enum (inv.oper_subf.data()); node_ptr->availStatus_subf = availStatus_str_to_enum (inv.avail_subf.data()); @@ -2766,58 +2766,58 @@ int nodeLinkClass::add_host ( node_inv_type & inv ) else if ( !inv.action.compare ("reboot") && validStates ) { ilog ("%s Added with 'reboot' in 'locked' state\n", node_ptr->hostname.c_str()); - + print_inv ( inv ); node_ptr->adminState = adminState_str_to_enum (inv.admin.data()); node_ptr->operState = operState_str_to_enum (inv.oper.data ()); node_ptr->availStatus = availStatus_str_to_enum (inv.avail.data()); - - if ( CPE_SYSTEM ) + + if (( CPE_SYSTEM ) && ( is_controller(node_ptr) == true )) { node_ptr->operState_subf = operState_str_to_enum (inv.oper_subf.data()); node_ptr->availStatus_subf = availStatus_str_to_enum (inv.avail_subf.data()); } -; + adminActionChange ( node_ptr, MTC_ADMIN_ACTION__REBOOT ); } else if ( !inv.action.compare ("reset") && validStates ) { ilog ("%s Added with 'reset' in 'locked' state\n", node_ptr->hostname.c_str()); - + print_inv ( inv ); node_ptr->adminState = adminState_str_to_enum (inv.admin.data()); node_ptr->operState = operState_str_to_enum (inv.oper.data ()); node_ptr->availStatus = availStatus_str_to_enum (inv.avail.data()); - - if ( CPE_SYSTEM ) + + if (( CPE_SYSTEM ) && ( is_controller(node_ptr) == true )) { node_ptr->operState_subf = operState_str_to_enum (inv.oper_subf.data()); node_ptr->availStatus_subf = availStatus_str_to_enum (inv.avail_subf.data()); } adminActionChange ( node_ptr, MTC_ADMIN_ACTION__RESET ); - } + } else if ( !inv.action.compare ("power-off") && validStates ) { ilog ("%s Added in a 'locked' and 'power-off' state\n", node_ptr->hostname.c_str()); - + print_inv ( inv ); node_ptr->adminState = MTC_ADMIN_STATE__LOCKED ; node_ptr->operState = MTC_OPER_STATE__DISABLED; node_ptr->availStatus = MTC_AVAIL_STATUS__POWERED_OFF ; - + node_ptr->operState_subf = MTC_OPER_STATE__DISABLED ; node_ptr->availStatus_subf = MTC_AVAIL_STATUS__POWERED_OFF ; - + adminActionChange ( node_ptr, MTC_ADMIN_ACTION__POWEROFF ); } else if ( !inv.action.compare ("power-on") && validStates ) { ilog ("%s Added with 'power-on' in 'locked' state\n", node_ptr->hostname.c_str()); - + print_inv ( inv ); node_ptr->adminState = MTC_ADMIN_STATE__LOCKED ; @@ -2832,9 +2832,9 @@ int nodeLinkClass::add_host ( node_inv_type & inv ) } else { - wlog ("%s Need add Action support for '%s' action\n", node_ptr->hostname.c_str(), + wlog ("%s Need add Action support for '%s' action\n", node_ptr->hostname.c_str(), inv.action.c_str()); - + print_inv ( inv ); /* Load in maintenance states */ @@ -2842,7 +2842,7 @@ int nodeLinkClass::add_host ( node_inv_type & inv ) node_ptr->operState = MTC_OPER_STATE__DISABLED ; node_ptr->availStatus = MTC_AVAIL_STATUS__OFFLINE ; - if ( CPE_SYSTEM ) + if (( CPE_SYSTEM ) && ( is_controller(node_ptr) == true )) { node_ptr->operState_subf = MTC_OPER_STATE__DISABLED ; node_ptr->availStatus_subf = MTC_AVAIL_STATUS__OFFLINE ; @@ -2859,8 +2859,8 @@ int nodeLinkClass::add_host ( node_inv_type & inv ) node_ptr->adminState = adminState_str_to_enum (inv.admin.data()); node_ptr->operState = operState_str_to_enum (inv.oper.data ()); node_ptr->availStatus = availStatus_str_to_enum (inv.avail.data()); - - if ( CPE_SYSTEM ) + + if (( CPE_SYSTEM ) && ( is_controller(node_ptr) == true )) { node_ptr->operState_subf = operState_str_to_enum (inv.oper_subf.data()); node_ptr->availStatus_subf = availStatus_str_to_enum (inv.avail_subf.data()); @@ -3678,8 +3678,8 @@ void nodeLinkClass::set_mtce_flags ( string hostname, int flags ) } - /* Deal with sub-function if combo host */ - if ( CPE_SYSTEM ) + /* Deal with sub-function if AIO controller host */ + if (( CPE_SYSTEM ) && ( is_controller(node_ptr) == true )) { if ( flags & MTC_FLAG__SUBF_GOENABLED ) { @@ -5426,7 +5426,7 @@ int nodeLinkClass::degrade_resource_raise ( string & hostname, * This utility handles critical process failure event notifications. * Typically this interface will force a host re-enable through reset. * - * For CPE Simplex this failure sets the auto recovery bool + * For AIO Simplex this failure sets the auto recovery bool * so that the main enable FSM can handle it through a thresholded * self reboot. * @@ -5768,32 +5768,48 @@ string nodeLinkClass::get_node_subfunction_str ( string hostname ) bool nodeLinkClass::is_controller ( string & hostname ) { nodeLinkClass::node * node_ptr = getNode ( hostname ); - return is_controller(node_ptr); + if ( node_ptr ) + { + return is_controller(node_ptr); + } + return false ; } /** Check if a node is a compute */ bool nodeLinkClass::is_compute ( string & hostname ) { nodeLinkClass::node * node_ptr = getNode ( hostname ); - return is_compute(node_ptr); + if ( node_ptr ) + { + return is_compute(node_ptr); + } + return false ; } /** Check if a node is a compute */ bool nodeLinkClass::is_compute_subfunction ( string & hostname ) { nodeLinkClass::node * node_ptr = getNode ( hostname ); - return is_compute_subfunction(node_ptr); + if ( node_ptr ) + { + return is_compute_subfunction(node_ptr); + } + return false ; } /** Check if a node is a storage */ bool nodeLinkClass::is_storage ( string & hostname ) { nodeLinkClass::node * node_ptr = getNode ( hostname ); - return is_storage(node_ptr); + if ( node_ptr ) + { + return is_storage(node_ptr); + } + return false ; } /** Maintenance FSM Test Case Setup procedure */ -int nodeLinkClass::set_enableStage ( string & hostname, +int nodeLinkClass::set_enableStage ( string & hostname, mtc_enableStages_enum stage ) { nodeLinkClass::node * node_ptr = getNode ( hostname ) ; @@ -8306,10 +8322,10 @@ void nodeLinkClass::mem_log_bm ( struct nodeLinkClass::node * node_ptr ) void nodeLinkClass::mem_log_identity ( struct nodeLinkClass::node * node_ptr ) { char str[MAX_MEM_LOG_DATA] ; - snprintf (&str[0], MAX_MEM_LOG_DATA, "%s\t%s %s (%u)\n", - node_ptr->hostname.c_str(), + snprintf (&str[0], MAX_MEM_LOG_DATA, "%s\t%s %s (%u)\n", + node_ptr->hostname.c_str(), node_ptr->uuid.c_str(), - node_ptr->type.c_str(), + node_ptr->type.c_str(), node_ptr->nodetype); mem_log (str); } @@ -8321,32 +8337,23 @@ void nodeLinkClass::mem_log_state1 ( struct nodeLinkClass::node * node_ptr ) string op = operState_enum_to_str(node_ptr->operState) ; string av = availStatus_enum_to_str(node_ptr->availStatus); - snprintf (&str[0], MAX_MEM_LOG_DATA, "%s\t%s-%s-%s degrade_mask:%08x\n", - node_ptr->hostname.c_str(), + snprintf (&str[0], MAX_MEM_LOG_DATA, "%s\t%s-%s-%s degrade_mask:%08x\n", + node_ptr->hostname.c_str(), ad.c_str(), - op.c_str(), + op.c_str(), av.c_str(), node_ptr->degrade_mask); mem_log (str); op = operState_enum_to_str(node_ptr->operState_subf) ; av = availStatus_enum_to_str(node_ptr->availStatus_subf); - if ( node_ptr->subfunction_str.empty() ) + if ( ! node_ptr->subfunction_str.empty() ) { - snprintf (&str[0], MAX_MEM_LOG_DATA, "%s\tFunction: %s %s-%s-%s\n", - node_ptr->hostname.c_str(), - node_ptr->function_str.c_str(), - ad.c_str(), - op.c_str(), - av.c_str()); - } - else - { - snprintf (&str[0], MAX_MEM_LOG_DATA, "%s\tFunctions %s-%s %s-%s-%s\n", + snprintf (&str[0], MAX_MEM_LOG_DATA, "%s\tSub-Functions: %s-%s %s-%s-%s\n", node_ptr->hostname.c_str(), node_ptr->function_str.c_str(), node_ptr->subfunction_str.c_str(), ad.c_str(), - op.c_str(), + op.c_str(), av.c_str()); } mem_log (str); @@ -8357,10 +8364,10 @@ void nodeLinkClass::mem_log_state2 ( struct nodeLinkClass::node * node_ptr ) char str[MAX_MEM_LOG_DATA] ; string aa = adminAction_enum_to_str(node_ptr->adminAction) ; - snprintf (&str[0], MAX_MEM_LOG_DATA, "%s\tmtcAction:%s invAction:%s Task:%s\n", - node_ptr->hostname.c_str(), + snprintf (&str[0], MAX_MEM_LOG_DATA, "%s\tmtcAction:%s invAction:%s Task:%s\n", + node_ptr->hostname.c_str(), aa.c_str(), - node_ptr->action.c_str(), + node_ptr->action.c_str(), node_ptr->task.c_str()); mem_log (str); } @@ -8518,7 +8525,7 @@ void nodeLinkClass::mem_log_type_info ( struct nodeLinkClass::node * node_ptr ) node_ptr->function); mem_log (str); - if ( CPE_SYSTEM ) + if (( CPE_SYSTEM ) && ( is_controller(node_ptr) == true )) { snprintf (&str[0], MAX_MEM_LOG_DATA, "%s\tSub-Function: %s (%u) (SubFunc Enabled:%c)\n", node_ptr->hostname.c_str(), diff --git a/mtce-common/cgts-mtce-common-1.0/heartbeat/hbsClient.cpp b/mtce-common/cgts-mtce-common-1.0/heartbeat/hbsClient.cpp index 67a5b7ee..2a41d224 100755 --- a/mtce-common/cgts-mtce-common-1.0/heartbeat/hbsClient.cpp +++ b/mtce-common/cgts-mtce-common-1.0/heartbeat/hbsClient.cpp @@ -1007,12 +1007,12 @@ int daemon_init ( string iface, string nodeType_str ) if ( is_combo_system ( my_nodetype ) == true ) { daemon_wait_for_file ( GOENABLED_SUBF_PASS , 0); - ilog ("GOENABLE (small system)\n"); + ilog ("GOENABLE (AIO Host)\n"); } else { daemon_wait_for_file ( GOENABLED_MAIN_PASS , 0); - ilog ("GOENABLE (large system)\n"); + ilog ("GOENABLE\n"); } /* Configure the client */ diff --git a/mtce-common/cgts-mtce-common-1.0/maintenance/mtcInvApi.cpp b/mtce-common/cgts-mtce-common-1.0/maintenance/mtcInvApi.cpp index 1842eff9..b90c6521 100755 --- a/mtce-common/cgts-mtce-common-1.0/maintenance/mtcInvApi.cpp +++ b/mtce-common/cgts-mtce-common-1.0/maintenance/mtcInvApi.cpp @@ -940,7 +940,7 @@ int nodeLinkClass::mtcInvApi_update_states_now ( struct nodeLinkClass::node * no else avail = " " ; - if ( CPE_SYSTEM ) + if (( CPE_SYSTEM ) && ( is_controller(node_ptr) == true )) { if ( ! oper_subf.empty() ) { @@ -982,7 +982,7 @@ int nodeLinkClass::mtcInvApi_update_states_now ( struct nodeLinkClass::node * no this->sysinvEvent.payload.erase(len-1,1); this->sysinvEvent.payload.append ( "]"); - if ( CPE_SYSTEM ) + if (( CPE_SYSTEM ) && ( is_controller(node_ptr) == true )) { ilog ("%s %s-%s-%s %s-%s\n", node_ptr->hostname.c_str(), diff --git a/mtce-common/cgts-mtce-common-1.0/maintenance/mtcNodeComp.cpp b/mtce-common/cgts-mtce-common-1.0/maintenance/mtcNodeComp.cpp index 54ce30a0..6e240226 100755 --- a/mtce-common/cgts-mtce-common-1.0/maintenance/mtcNodeComp.cpp +++ b/mtce-common/cgts-mtce-common-1.0/maintenance/mtcNodeComp.cpp @@ -1629,29 +1629,43 @@ int run_hostservices_scripts ( unsigned int cmd ) * one for controller and 1 for compute */ if ( ctrl.system_type != SYSTEM_TYPE__NORMAL ) { + string dir = "" ; if ( action == "stop" ) { std::list more_scripts ; if ( cmd == MTC_CMD_STOP_COMPUTE_SVCS ) { - dir = SERVICES_DIR ; - dir.append("/controller"); + /* only add the controller if we get a compute stop + * and this host has a controller nodetype function */ + if (ctrl.nodetype & CONTROLLER_TYPE) + { + dir = SERVICES_DIR ; + dir.append("/controller"); + } } - else + else if ( cmd == MTC_CMD_STOP_CONTROL_SVCS ) { - dir = SERVICES_DIR ; - dir.append("/compute"); + /* add the compute stop if we get a controller stop + * and this host has a compute nodetype function */ + if (ctrl.nodetype & COMPUTE_TYPE) + { + dir = SERVICES_DIR ; + dir.append("/compute"); + } } - if ( load_filenames_in_dir ( dir.data(), more_scripts ) != PASS ) + if ( ! dir.empty() ) { - ctrl.active_script_set = NO_SCRIPTS ; - return (FAIL_READ_FILES) ; - } + if ( load_filenames_in_dir ( dir.data(), more_scripts ) != PASS ) + { + ctrl.active_script_set = NO_SCRIPTS ; + return (FAIL_READ_FILES) ; + } - if ( ! more_scripts.empty() ) - { - scripts.merge(more_scripts); + if ( ! more_scripts.empty() ) + { + scripts.merge(more_scripts); + } } } } diff --git a/mtce-common/cgts-mtce-common-1.0/maintenance/mtcNodeHdlrs.cpp b/mtce-common/cgts-mtce-common-1.0/maintenance/mtcNodeHdlrs.cpp index 33904671..fc13c5c1 100755 --- a/mtce-common/cgts-mtce-common-1.0/maintenance/mtcNodeHdlrs.cpp +++ b/mtce-common/cgts-mtce-common-1.0/maintenance/mtcNodeHdlrs.cpp @@ -600,7 +600,7 @@ int nodeLinkClass::enable_handler ( struct nodeLinkClass::node * node_ptr ) this->autorecovery_disabled = true ; } - if ( CPE_SYSTEM ) + if (( CPE_SYSTEM ) && ( is_controller(node_ptr) == true )) { /* Raise Critical Compute Function Alarm */ alarm_compute_failure ( node_ptr , FM_ALARM_SEVERITY_CRITICAL ); @@ -613,7 +613,7 @@ int nodeLinkClass::enable_handler ( struct nodeLinkClass::node * node_ptr ) node_ptr->graceful_recovery_counter = 0 ; node_ptr->health_threshold_counter = 0 ; - if ( CPE_SYSTEM ) + if (( CPE_SYSTEM ) && ( is_controller(node_ptr) == true )) { node_ptr->inservice_failed_subf = true ; subfStateChange ( node_ptr, MTC_OPER_STATE__DISABLED, @@ -1262,8 +1262,16 @@ int nodeLinkClass::enable_handler ( struct nodeLinkClass::node * node_ptr ) } else /* success path */ { - /* heartbeat is only started now in a normal system. */ - if (( LARGE_SYSTEM ) && ( NOT_THIS_HOST )) + /* Don't start the self heartbeat for the active controller. + * Also, in AIO , hosts that have a controller function also + * have a compute function and the heartbeat for those hosts + * are started at the end of the subfunction handler. */ + if (( THIS_HOST ) || + (( CPE_SYSTEM ) && ( is_controller(node_ptr)) )) + { + enableStageChange ( node_ptr, MTC_ENABLE__STATE_CHANGE ); + } + else { /* allow the fsm to wait for up to 1 minute for the * hbsClient's ready event before starting heartbeat @@ -1271,12 +1279,6 @@ int nodeLinkClass::enable_handler ( struct nodeLinkClass::node * node_ptr ) mtcTimer_start ( node_ptr->mtcTimer, mtcTimer_handler, MTC_MINS_1 ); enableStageChange ( node_ptr, MTC_ENABLE__HEARTBEAT_WAIT ); } - else - { - /* The heartbeat soak will be started in the enable - * subfunction handler in the combined system. */ - enableStageChange ( node_ptr, MTC_ENABLE__STATE_CHANGE ); - } } break ; } @@ -1446,7 +1448,7 @@ int nodeLinkClass::enable_handler ( struct nodeLinkClass::node * node_ptr ) enableStageChange ( node_ptr, MTC_ENABLE__START ); - if ( CPE_SYSTEM ) + if (( CPE_SYSTEM ) && ( is_controller(node_ptr))) { ilog ("%s running compute sub-function enable handler\n", node_ptr->hostname.c_str()); mtcInvApi_update_task ( node_ptr, MTC_TASK_ENABLING_SUBF ); @@ -1749,7 +1751,7 @@ int nodeLinkClass::recovery_handler ( struct nodeLinkClass::node * node_ptr ) MTC_OPER_STATE__DISABLED, MTC_AVAIL_STATUS__FAILED ); - if ( CPE_SYSTEM ) + if (( CPE_SYSTEM ) && ( is_controller(node_ptr) == true )) { subfStateChange ( node_ptr, MTC_OPER_STATE__DISABLED, MTC_AVAIL_STATUS__FAILED ); @@ -2140,7 +2142,7 @@ int nodeLinkClass::recovery_handler ( struct nodeLinkClass::node * node_ptr ) { /* The active controller would never get/be here but * if it did then just fall through to change state. */ - if ( CPE_SYSTEM ) + if (( CPE_SYSTEM ) && ( is_controller(node_ptr) == true )) { /* Here we need to run the sub-fnction goenable and start * host services if this is the other controller in a AIO @@ -2368,7 +2370,7 @@ int nodeLinkClass::recovery_handler ( struct nodeLinkClass::node * node_ptr ) } case MTC_RECOVERY__STATE_CHANGE: { - if ( CPE_SYSTEM ) + if (( CPE_SYSTEM ) && ( is_controller(node_ptr) == true )) { /* Set node as unlocked-enabled */ subfStateChange ( node_ptr, MTC_OPER_STATE__ENABLED, @@ -2646,7 +2648,7 @@ int nodeLinkClass::disable_handler ( struct nodeLinkClass::node * node_ptr ) MTC_OPER_STATE__DISABLED, locked_status ); - if ( CPE_SYSTEM ) + if (( CPE_SYSTEM ) && ( is_controller(node_ptr) == true )) { subfStateChange ( node_ptr, MTC_OPER_STATE__DISABLED, locked_status ); @@ -3290,7 +3292,7 @@ int nodeLinkClass::online_handler ( struct nodeLinkClass::node * node_ptr ) /* otherwise change state */ mtcInvApi_update_state(node_ptr, MTC_JSON_INV_AVAIL,"offline" ); - if ( CPE_SYSTEM ) + if (( CPE_SYSTEM ) && ( is_controller(node_ptr) == true )) { mtcInvApi_update_state(node_ptr, MTC_JSON_INV_AVAIL_SUBF,"offline" ); } @@ -3331,7 +3333,7 @@ int nodeLinkClass::online_handler ( struct nodeLinkClass::node * node_ptr ) node_ptr->hostname.c_str()); mtcInvApi_update_state ( node_ptr, MTC_JSON_INV_AVAIL, "online" ); - if ( CPE_SYSTEM ) + if (( CPE_SYSTEM ) && ( is_controller(node_ptr) == true )) { mtcInvApi_update_state ( node_ptr, MTC_JSON_INV_AVAIL_SUBF, "online" ); } @@ -5318,7 +5320,7 @@ int nodeLinkClass::add_handler ( struct nodeLinkClass::node * node_ptr ) node_ptr->uuid.length() ? node_ptr->uuid.c_str() : "" ); - if ( CPE_SYSTEM ) + if (( CPE_SYSTEM ) && ( is_controller(node_ptr) == true )) { if ( daemon_is_file_present ( CONFIG_COMPLETE_COMPUTE ) == false ) { @@ -5578,12 +5580,17 @@ int nodeLinkClass::add_handler ( struct nodeLinkClass::node * node_ptr ) if (( node_ptr->adminState == MTC_ADMIN_STATE__UNLOCKED ) && ( node_ptr->operState == MTC_OPER_STATE__ENABLED )) { - if (( NOT_THIS_HOST ) && ( LARGE_SYSTEM )) + /* start the heartbeat service in all cases except for + * THIS host and CPE controller hosts */ + if ( NOT_THIS_HOST ) { - send_hbs_command ( node_ptr->hostname, MTC_CMD_START_HOST ); + if (( LARGE_SYSTEM ) || + (( CPE_SYSTEM ) && ( is_controller(node_ptr) == false ))) + { + send_hbs_command ( node_ptr->hostname, MTC_CMD_START_HOST ); + } } } - /* Only run hardware monitor if the bm ip is provisioned */ if (( hostUtil_is_valid_bm_type ( node_ptr->bm_type )) && ( hostUtil_is_valid_ip_addr ( node_ptr->bm_ip ))) @@ -5627,19 +5634,11 @@ int nodeLinkClass::add_handler ( struct nodeLinkClass::node * node_ptr ) } /* Special Add handling for the AIO system */ - if ( CPE_SYSTEM ) + if (( CPE_SYSTEM ) && ( is_controller(node_ptr) == true )) { if (( node_ptr->adminState == MTC_ADMIN_STATE__UNLOCKED ) && ( node_ptr->operState == MTC_OPER_STATE__ENABLED )) { - /* If AIO and unlocked-enabled and not this host then - * start the heartbeat service - * (inactive controller case) */ - if ( NOT_THIS_HOST ) - { - send_hbs_command ( node_ptr->hostname, MTC_CMD_START_HOST ); - } - /* In AIO if in DOR mode and the host is unlocked enabled * we need to run the subfunction handler and request * to start host services. */ @@ -6353,7 +6352,7 @@ int nodeLinkClass::insv_test_handler ( struct nodeLinkClass::node * node_ptr ) * and we have only a single enabled controller (which must be this one) * and the alarm is not already raised. **/ - if ( CPE_SYSTEM ) + if (( CPE_SYSTEM ) && ( is_controller(node_ptr) == true )) { if (( node_ptr->adminState == MTC_ADMIN_STATE__UNLOCKED ) && ( node_ptr->operState == MTC_OPER_STATE__ENABLED ) &&