Skip to content

Commit 41fb26c

Browse files
authored
[Mux orch] Handle setting unknown mux state (#1984)
* Mux handle 'unknown' state
1 parent ac09bde commit 41fb26c

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

orchagent/muxorch.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ const map <string, MuxState> muxStateStringToVal =
7676
{
7777
{ "active", MuxState::MUX_STATE_ACTIVE },
7878
{ "standby", MuxState::MUX_STATE_STANDBY },
79+
{ "unknown", MuxState::MUX_STATE_STANDBY },
7980
{ "init", MuxState::MUX_STATE_INIT },
8081
{ "failed", MuxState::MUX_STATE_FAILED },
8182
{ "pending", MuxState::MUX_STATE_PENDING },
@@ -396,6 +397,9 @@ void MuxCable::setState(string new_state)
396397

397398
MuxState ns = muxStateStringToVal.at(new_state);
398399

400+
/* Update new_state to handle unknown state */
401+
new_state = muxStateValToString.at(ns);
402+
399403
auto it = muxStateTransition.find(make_pair(state_, ns));
400404

401405
if (it == muxStateTransition.end())

tests/test_mux.py

+24
Original file line numberDiff line numberDiff line change
@@ -433,6 +433,30 @@ def create_and_test_acl(self, appdb, asicdb, dvs, dvs_acl):
433433
self.set_mux_state(appdb, "Ethernet4", "active")
434434
dvs_acl.verify_no_acl_rules()
435435

436+
# Set unknown state and verify the behavior as standby
437+
self.set_mux_state(appdb, "Ethernet0", "unknown")
438+
sai_qualifier = self.get_expected_sai_qualifiers(["Ethernet0"], dvs_acl)
439+
dvs_acl.verify_acl_rule(sai_qualifier, action="DROP", priority=self.ACL_PRIORITY)
440+
441+
# Verify change while setting unknown from active
442+
self.set_mux_state(appdb, "Ethernet4", "unknown")
443+
sai_qualifier = self.get_expected_sai_qualifiers(["Ethernet0","Ethernet4"], dvs_acl)
444+
dvs_acl.verify_acl_rule(sai_qualifier, action="DROP", priority=self.ACL_PRIORITY)
445+
446+
self.set_mux_state(appdb, "Ethernet0", "active")
447+
sai_qualifier = self.get_expected_sai_qualifiers(["Ethernet4"], dvs_acl)
448+
dvs_acl.verify_acl_rule(sai_qualifier, action="DROP", priority=self.ACL_PRIORITY)
449+
450+
self.set_mux_state(appdb, "Ethernet0", "standby")
451+
sai_qualifier = self.get_expected_sai_qualifiers(["Ethernet0","Ethernet4"], dvs_acl)
452+
dvs_acl.verify_acl_rule(sai_qualifier, action="DROP", priority=self.ACL_PRIORITY)
453+
454+
# Verify no change while setting unknown from standby
455+
self.set_mux_state(appdb, "Ethernet0", "unknown")
456+
sai_qualifier = self.get_expected_sai_qualifiers(["Ethernet0","Ethernet4"], dvs_acl)
457+
dvs_acl.verify_acl_rule(sai_qualifier, action="DROP", priority=self.ACL_PRIORITY)
458+
459+
436460
def create_and_test_metrics(self, appdb, statedb, dvs):
437461

438462
# Set to active and test attributes for start and end time

0 commit comments

Comments
 (0)