ha/service-mgmt/sm-1.0.0/src
Bin Qian edc8a56472 Introduce failover FSM
Introduce failover FSM to handle communication failure between
controllers.
Failover FSM has 4 states:
Normal: when system running with full redundency
Fail Pending: communication failure occured
Failed: the controller is determined as failure. Its peer will
        assume service
Survived: the controller is determined as survivor. Its peer has
        failed

The controllers are in one of the below possible state pairs:
normal/normal, fail-pending/fail-pending, failed/survived

A failed controller will not resume responsbility before the
system restores its full redundency (normal/normal)

A survivor will not fail before the system restores its
full redundency (normal/normal)

Future implementation may allow an administrator to force
a failed controller become active, to manually recover
(with possiblity of losing data), should the survivor is
no longer capable to provide service.

Story: 2003577
Task: 26404

Change-Id: I51635e9e60b6fb6bad89e06c9f08d3f28e21db82
Signed-off-by: Bin Qian <bin.qian@windriver.com>
2018-09-18 08:08:40 -04:00
..
Makefile Introduce failover FSM 2018-09-18 08:08:40 -04:00
fm_api_wrapper.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
fm_api_wrapper.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
main.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
service_status StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_alarm.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_alarm.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_alarm_defs.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_alarm_thread.c sm components to use C++11 standard 2018-08-20 15:44:01 +00:00
sm_alarm_thread.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_api.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_api.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_configuration_table.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_configuration_table.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_failover.c Introduce failover FSM 2018-09-18 08:08:40 -04:00
sm_failover.h Introduce failover FSM 2018-09-18 08:08:40 -04:00
sm_failover_fail_pending_state.cpp Introduce failover FSM 2018-09-18 08:08:40 -04:00
sm_failover_fail_pending_state.h Introduce failover FSM 2018-09-18 08:08:40 -04:00
sm_failover_failed_state.cpp Introduce failover FSM 2018-09-18 08:08:40 -04:00
sm_failover_failed_state.h Introduce failover FSM 2018-09-18 08:08:40 -04:00
sm_failover_fsm.cpp Introduce failover FSM 2018-09-18 08:08:40 -04:00
sm_failover_fsm.h Introduce failover FSM 2018-09-18 08:08:40 -04:00
sm_failover_normal_state.cpp Introduce failover FSM 2018-09-18 08:08:40 -04:00
sm_failover_normal_state.h Introduce failover FSM 2018-09-18 08:08:40 -04:00
sm_failover_ss.c Introduce failover FSM 2018-09-18 08:08:40 -04:00
sm_failover_ss.h Introduce failover FSM 2018-09-18 08:08:40 -04:00
sm_failover_survived_state.cpp Introduce failover FSM 2018-09-18 08:08:40 -04:00
sm_failover_survived_state.h Introduce failover FSM 2018-09-18 08:08:40 -04:00
sm_failover_thread.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_failover_thread.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_failover_utils.c remove incorrect logging when standby controller failed 2018-08-24 14:20:08 -04:00
sm_failover_utils.h remove incorrect logging when standby controller failed 2018-08-24 14:20:08 -04:00
sm_heartbeat.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_heartbeat.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_heartbeat_msg.c Introduce failover FSM 2018-09-18 08:08:40 -04:00
sm_heartbeat_msg.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_heartbeat_thread.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_heartbeat_thread.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_log.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_log.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_log_defs.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_log_thread.c sm components to use C++11 standard 2018-08-20 15:44:01 +00:00
sm_log_thread.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_main_event_handler.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_main_event_handler.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_msg.c sm components to use C++11 standard 2018-08-20 15:44:01 +00:00
sm_msg.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_node_api.cpp Introduce failover FSM 2018-09-18 08:08:40 -04:00
sm_node_api.h Introduce failover FSM 2018-09-18 08:08:40 -04:00
sm_node_disabled_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_node_disabled_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_node_enabled_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_node_enabled_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_node_fsm.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_node_fsm.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_node_swact_monitor.cpp Cleanup internal references 2018-07-23 12:15:39 -04:00
sm_node_swact_monitor.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_node_unknown_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_node_unknown_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_notify_api.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_notify_api.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_process.c Create worker thread 2018-09-04 15:08:48 -04:00
sm_process.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_process_death.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_process_death.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_action.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_action.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_action_result_table.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_action_result_table.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_action_table.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_action_table.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_api.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_api.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_audit.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_audit.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_dependency.c Controller Services swact/failover time reduction 2018-06-28 15:43:19 -04:00
sm_service_dependency.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_dependency_table.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_dependency_table.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_disable.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_disable.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_disabled_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_disabled_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_disabling_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_disabling_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_api.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_api.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_assignment_table.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_assignment_table.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_backup_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_backup_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_filter.c remove incorrect logging when standby controller failed 2018-08-29 10:20:03 -04:00
sm_service_domain_filter.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_fsm.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_fsm.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_initial_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_initial_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_interface_api.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_interface_api.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_interface_disabled_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_interface_disabled_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_interface_enabled_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_interface_enabled_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_interface_fsm.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_interface_fsm.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_interface_not_in_use_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_interface_not_in_use_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_interface_table.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_interface_table.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_interface_unknown_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_interface_unknown_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_leader_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_leader_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_member_table.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_member_table.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_neighbor_down_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_neighbor_down_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_neighbor_exchange_start_state.c sm components to use C++11 standard 2018-08-20 15:44:01 +00:00
sm_service_domain_neighbor_exchange_start_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_neighbor_exchange_state.c sm components to use C++11 standard 2018-08-20 15:44:01 +00:00
sm_service_domain_neighbor_exchange_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_neighbor_fsm.c sm components to use C++11 standard 2018-08-20 15:44:01 +00:00
sm_service_domain_neighbor_fsm.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_neighbor_full_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_neighbor_full_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_neighbor_table.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_neighbor_table.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_other_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_other_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_scheduler.c sm components to use C++11 standard 2018-08-20 15:44:01 +00:00
sm_service_domain_scheduler.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_table.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_table.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_utils.c Controller Services swact/failover time reduction 2018-06-28 15:43:19 -04:00
sm_service_domain_utils.h Controller Services swact/failover time reduction 2018-06-28 15:43:19 -04:00
sm_service_domain_waiting_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_waiting_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_weight.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_domain_weight.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_enable.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_enable.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_enabled_active_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_enabled_active_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_enabled_go_active_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_enabled_go_active_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_enabled_go_standby_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_enabled_go_standby_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_enabled_standby_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_enabled_standby_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_enabling_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_enabling_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_enabling_throttle_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_enabling_throttle_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_engine.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_engine.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_fsm.c sm components to use C++11 standard 2018-08-20 15:44:01 +00:00
sm_service_fsm.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_go_active.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_go_active.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_go_standby.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_go_standby.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_active_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_active_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_api.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_api.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_audit.c Fix minor impact alarm in SM service group audit 2018-07-23 12:15:39 -04:00
sm_service_group_audit.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_disable.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_disable.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_disabled_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_disabled_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_disabling_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_disabling_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_enable.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_enable.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_engine.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_engine.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_fsm.c remove incorrect logging when standby controller failed 2018-08-24 14:20:08 -04:00
sm_service_group_fsm.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_go_active.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_go_active.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_go_active_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_go_active_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_go_standby.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_go_standby.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_go_standby_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_go_standby_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_health.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_health.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_initial_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_initial_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_member_table.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_member_table.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_notification.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_notification.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_shutdown_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_shutdown_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_standby_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_standby_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_table.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_group_table.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_heartbeat.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_heartbeat.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_heartbeat_api.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_heartbeat_api.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_heartbeat_thread.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_heartbeat_thread.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_initial_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_initial_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_shutdown_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_shutdown_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_table.c Controller Services swact/failover time reduction 2018-06-28 15:43:19 -04:00
sm_service_table.h Controller Services swact/failover time reduction 2018-06-28 15:43:19 -04:00
sm_service_unknown_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_service_unknown_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_swact_state.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_swact_state.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_task_affining_thread.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_task_affining_thread.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_troubleshoot.c StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_troubleshoot.h StarlingX open source release updates 2018-05-31 07:36:26 -07:00
sm_worker_thread.cpp Create worker thread 2018-09-04 15:08:48 -04:00
sm_worker_thread.h Create worker thread 2018-09-04 15:08:48 -04:00