Skip to content

Commit

Permalink
Move warm_restart enable/disable config to stateDB WARM_RESTART_ENABL…
Browse files Browse the repository at this point in the history
…E_TABLE (#260)

Signed-off-by: Jipan Yang <[email protected]>
  • Loading branch information
jipanyang authored and yxieca committed Feb 12, 2019
1 parent 88de725 commit 414de0f
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 16 deletions.
23 changes: 12 additions & 11 deletions common/schema.h
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ namespace swss {
#define PFC_WD_STATE_TABLE "PFC_WD_STATE_TABLE"
#define PFC_WD_PORT_COUNTER_ID_LIST "PORT_COUNTER_ID_LIST"
#define PFC_WD_QUEUE_COUNTER_ID_LIST "QUEUE_COUNTER_ID_LIST"
#define PFC_WD_QUEUE_ATTR_ID_LIST "QUEUE_ATTR_ID_LIST"
#define PFC_WD_QUEUE_ATTR_ID_LIST "QUEUE_ATTR_ID_LIST"
#define PG_COUNTER_ID_LIST "PG_COUNTER_ID_LIST"
#define PG_ATTR_ID_LIST "PG_ATTR_ID_LIST"
#define RIF_COUNTER_ID_LIST "RIF_COUNTER_ID_LIST"
Expand Down Expand Up @@ -172,16 +172,17 @@ namespace swss {

/***** STATE DATABASE *****/

#define STATE_PORT_TABLE_NAME "PORT_TABLE"
#define STATE_LAG_TABLE_NAME "LAG_TABLE"
#define STATE_VLAN_TABLE_NAME "VLAN_TABLE"
#define STATE_VLAN_MEMBER_TABLE_NAME "VLAN_MEMBER_TABLE"
#define STATE_INTERFACE_TABLE_NAME "INTERFACE_TABLE"
#define STATE_FDB_TABLE_NAME "FDB_TABLE"
#define STATE_WARM_RESTART_TABLE_NAME "WARM_RESTART_TABLE"
#define STATE_VRF_TABLE_NAME "VRF_TABLE"
#define STATE_MGMT_PORT_TABLE_NAME "MGMT_PORT_TABLE"
#define STATE_NEIGH_RESTORE_TABLE_NAME "NEIGH_RESTORE_TABLE"
#define STATE_PORT_TABLE_NAME "PORT_TABLE"
#define STATE_LAG_TABLE_NAME "LAG_TABLE"
#define STATE_VLAN_TABLE_NAME "VLAN_TABLE"
#define STATE_VLAN_MEMBER_TABLE_NAME "VLAN_MEMBER_TABLE"
#define STATE_INTERFACE_TABLE_NAME "INTERFACE_TABLE"
#define STATE_FDB_TABLE_NAME "FDB_TABLE"
#define STATE_WARM_RESTART_TABLE_NAME "WARM_RESTART_TABLE"
#define STATE_WARM_RESTART_ENABLE_TABLE_NAME "WARM_RESTART_ENABLE_TABLE"
#define STATE_VRF_TABLE_NAME "VRF_TABLE"
#define STATE_MGMT_PORT_TABLE_NAME "MGMT_PORT_TABLE"
#define STATE_NEIGH_RESTORE_TABLE_NAME "NEIGH_RESTORE_TABLE"

/***** MISC *****/

Expand Down
6 changes: 4 additions & 2 deletions common/warm_restart.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ void WarmStart::initialize(const std::string &app_name,
std::make_shared<swss::DBConnector>(CONFIG_DB, db_hostname, db_port, db_timeout);
}

warmStart.m_stateWarmRestartEnableTable =
std::unique_ptr<Table>(new Table(warmStart.m_stateDb.get(), STATE_WARM_RESTART_ENABLE_TABLE_NAME));
warmStart.m_stateWarmRestartTable =
std::unique_ptr<Table>(new Table(warmStart.m_stateDb.get(), STATE_WARM_RESTART_TABLE_NAME));
warmStart.m_cfgWarmRestartTable =
Expand Down Expand Up @@ -91,15 +93,15 @@ bool WarmStart::checkWarmStart(const std::string &app_name,
auto& warmStart = getInstance();

// Check system level warm-restart config first
warmStart.m_cfgWarmRestartTable->hget("system", "enable", value);
warmStart.m_stateWarmRestartEnableTable->hget("system", "enable", value);
if (value == "true")
{
warmStart.m_enabled = true;
warmStart.m_systemWarmRebootEnabled = true;
}

// Check docker level warm-restart configuration
warmStart.m_cfgWarmRestartTable->hget(docker_name, "enable", value);
warmStart.m_stateWarmRestartEnableTable->hget(docker_name, "enable", value);
if (value == "true")
{
warmStart.m_enabled = true;
Expand Down
1 change: 1 addition & 0 deletions common/warm_restart.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ class WarmStart
private:
std::shared_ptr<swss::DBConnector> m_stateDb;
std::shared_ptr<swss::DBConnector> m_cfgDb;
std::unique_ptr<Table> m_stateWarmRestartEnableTable;
std::unique_ptr<Table> m_stateWarmRestartTable;
std::unique_ptr<Table> m_cfgWarmRestartTable;
bool m_initialized;
Expand Down
7 changes: 4 additions & 3 deletions tests/warm_restart_ut.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ TEST(WarmRestart, checkWarmStart_and_State)
{
DBConnector stateDb(STATE_DB, "localhost", 6379, 0);
Table stateWarmRestartTable(&stateDb, STATE_WARM_RESTART_TABLE_NAME);
Table stateWarmRestartEnableTable(&stateDb, STATE_WARM_RESTART_ENABLE_TABLE_NAME);

DBConnector configDb(CONFIG_DB, "localhost", 6379, 0);
Table cfgWarmRestartTable(&configDb, CFG_WARM_RESTART_TABLE_NAME);
Expand Down Expand Up @@ -55,7 +56,7 @@ TEST(WarmRestart, checkWarmStart_and_State)
EXPECT_FALSE(system_enabled);

// enable system level warm restart.
cfgWarmRestartTable.hset("system", "enable", "true");
stateWarmRestartEnableTable.hset("system", "enable", "true");

// Do checkWarmStart for TestAPP running in TestDocker again.

Expand Down Expand Up @@ -108,9 +109,9 @@ TEST(WarmRestart, checkWarmStart_and_State)


// disable system level warm restart.
cfgWarmRestartTable.hset("system", "enable", "false");
stateWarmRestartEnableTable.hset("system", "enable", "false");
// Enable docker level warm restart.
cfgWarmRestartTable.hset(testDockerName, "enable", "true");
stateWarmRestartEnableTable.hset(testDockerName, "enable", "true");

// Note, this is for unit testing only. checkWarmStart() is supposed to be
// called only at the very start of a process, or when the re-initialization of
Expand Down

0 comments on commit 414de0f

Please sign in to comment.