Skip to content

[Nexthop][fboss2-dev] Add QoS buffermap configuration support#789

Closed
manoharan-nexthop wants to merge 1 commit into
facebook:mainfrom
nexthop-ai:fboss2-cli-prototype_part11
Closed

[Nexthop][fboss2-dev] Add QoS buffermap configuration support#789
manoharan-nexthop wants to merge 1 commit into
facebook:mainfrom
nexthop-ai:fboss2-cli-prototype_part11

Conversation

@manoharan-nexthop

Copy link
Copy Markdown
Contributor

Pre-submission checklist

  • I've ran the linters locally and fixed lint errors related to the files I modified in this PR. You can install the linters by running pip install -r requirements-dev.txt && pre-commit install
  • pre-commit run

Summary

  1. Add QoS buffer pool configuration commands
- fboss2 config qos buffer-pool <name> shared-bytes <value>
- fboss2 config qos buffer-pool <name> headroom-bytes <value>
- fboss2 config qos buffer-pool <name> reserved-bytes <value>
  1. Some of the configuration commands like QoS buffer pool modification requires an agent restart and some are hitless. Inorder to take appropriate action during the commit, track the highest impact action by storing the same in $HOME/.fboss2/conf_metadata.json at the end of each configuration change. And at the end of the commit, it will perform the agent restart. Current proposal has the wedge_agent to be restarted. Other agent restart can be added in future.

Note: this change is part of a series, the previous one is #783.

Test Plan

  1. Tests for the new commands are added in CmdConfigQosBufferPool.
Test project /var/FBOSS/tmp_bld_dir/build/fboss
    Start 25: CmdConfigQosBufferPoolTestFixture.bufferPoolNameValidation
1/8 Test #25: CmdConfigQosBufferPoolTestFixture.bufferPoolNameValidation ..........   Passed    0.01 sec
    Start 26: CmdConfigQosBufferPoolTestFixture.bufferBytesValueValidation
2/8 Test #26: CmdConfigQosBufferPoolTestFixture.bufferBytesValueValidation ........   Passed    0.01 sec
    Start 27: CmdConfigQosBufferPoolTestFixture.sharedBytesCreatesBufferPool
3/8 Test #27: CmdConfigQosBufferPoolTestFixture.sharedBytesCreatesBufferPool ......   Passed    0.02 sec
    Start 28: CmdConfigQosBufferPoolTestFixture.headroomBytesCreatesBufferPool
4/8 Test #28: CmdConfigQosBufferPoolTestFixture.headroomBytesCreatesBufferPool ....   Passed    0.02 sec
    Start 29: CmdConfigQosBufferPoolTestFixture.reservedBytesCreatesBufferPool
5/8 Test #29: CmdConfigQosBufferPoolTestFixture.reservedBytesCreatesBufferPool ....   Passed    0.02 sec
    Start 30: CmdConfigQosBufferPoolTestFixture.updateExistingBufferPool
6/8 Test #30: CmdConfigQosBufferPoolTestFixture.updateExistingBufferPool ..........   Passed    0.03 sec
    Start 31: CmdConfigQosBufferPoolTestFixture.commandsHaveColdBootActionLevel
7/8 Test #31: CmdConfigQosBufferPoolTestFixture.commandsHaveColdBootActionLevel ...   Passed    0.01 sec
    Start 32: CmdConfigQosBufferPoolTestFixture.printOutputSharedBytes
8/8 Test #32: CmdConfigQosBufferPoolTestFixture.printOutputSharedBytes ............   Passed    0.01 sec

100% tests passed, 0 tests failed out of 8

Total Test time (real) =   0.14 sec
  1. Tests for the action on commit are added to existing test ConfigSessionTestFixture.
Test project /var/FBOSS/tmp_bld_dir/build/fboss
      Start 45: ConfigSessionTestFixture.sessionInitialization
 1/18 Test #45: ConfigSessionTestFixture.sessionInitialization ...............   Passed    0.01 sec
      Start 46: ConfigSessionTestFixture.sessionConfigModified
 2/18 Test #46: ConfigSessionTestFixture.sessionConfigModified ...............   Passed    0.02 sec
      Start 47: ConfigSessionTestFixture.sessionCommit
 3/18 Test #47: ConfigSessionTestFixture.sessionCommit .......................   Passed    0.12 sec
      Start 48: ConfigSessionTestFixture.multipleChangesInOneSession
 4/18 Test #48: ConfigSessionTestFixture.multipleChangesInOneSession .........   Passed    0.02 sec
      Start 49: ConfigSessionTestFixture.sessionPersistsAcrossCommands
 5/18 Test #49: ConfigSessionTestFixture.sessionPersistsAcrossCommands .......   Passed    0.01 sec
      Start 50: ConfigSessionTestFixture.symlinkRollbackOnFailure
 6/18 Test #50: ConfigSessionTestFixture.symlinkRollbackOnFailure ............   Passed    0.04 sec
      Start 51: ConfigSessionTestFixture.atomicRevisionCreation
 7/18 Test #51: ConfigSessionTestFixture.atomicRevisionCreation ..............   Passed    0.05 sec
      Start 52: ConfigSessionTestFixture.concurrentSessionCreationSameUser
 8/18 Test #52: ConfigSessionTestFixture.concurrentSessionCreationSameUser ...   Passed    0.04 sec
      Start 53: ConfigSessionTestFixture.revisionNumberExtraction
 9/18 Test #53: ConfigSessionTestFixture.revisionNumberExtraction ............   Passed    0.01 sec
      Start 54: ConfigSessionTestFixture.rollbackCreatesNewRevision
10/18 Test #54: ConfigSessionTestFixture.rollbackCreatesNewRevision ..........   Passed    0.05 sec
      Start 55: ConfigSessionTestFixture.rollbackToPreviousRevision
11/18 Test #55: ConfigSessionTestFixture.rollbackToPreviousRevision ..........   Passed    0.04 sec
      Start 56: ConfigSessionTestFixture.actionLevelDefaultIsHitless
12/18 Test #56: ConfigSessionTestFixture.actionLevelDefaultIsHitless .........   Passed    0.01 sec
      Start 57: ConfigSessionTestFixture.actionLevelUpdateAndGet
13/18 Test #57: ConfigSessionTestFixture.actionLevelUpdateAndGet .............   Passed    0.01 sec
      Start 58: ConfigSessionTestFixture.actionLevelHigherTakesPrecedence
14/18 Test #58: ConfigSessionTestFixture.actionLevelHigherTakesPrecedence ....   Passed    0.01 sec
      Start 59: ConfigSessionTestFixture.actionLevelReset
15/18 Test #59: ConfigSessionTestFixture.actionLevelReset ....................   Passed    0.02 sec
      Start 60: ConfigSessionTestFixture.actionLevelPersistsToMetadataFile
16/18 Test #60: ConfigSessionTestFixture.actionLevelPersistsToMetadataFile ...   Passed    0.01 sec
      Start 61: ConfigSessionTestFixture.actionLevelLoadsFromMetadataFile
17/18 Test #61: ConfigSessionTestFixture.actionLevelLoadsFromMetadataFile ....   Passed    0.01 sec
      Start 62: ConfigSessionTestFixture.actionLevelPersistsAcrossSessions
18/18 Test #62: ConfigSessionTestFixture.actionLevelPersistsAcrossSessions ...   Passed    0.01 sec

100% tests passed, 0 tests failed out of 18

Total Test time (real) =   0.51 sec
@meta-cla meta-cla Bot added the CLA Signed label Jan 8, 2026
@benoit-nexthop benoit-nexthop force-pushed the fboss2-cli-prototype_part11 branch 3 times, most recently from 4aedab0 to 4daa3c0 Compare January 12, 2026 20:43
@manoharan-nexthop manoharan-nexthop force-pushed the fboss2-cli-prototype_part11 branch from 4daa3c0 to a299448 Compare January 13, 2026 13:30
@benoit-nexthop benoit-nexthop force-pushed the fboss2-cli-prototype_part11 branch 5 times, most recently from 77f6f22 to fabd6db Compare January 19, 2026 21:06
@benoit-nexthop benoit-nexthop force-pushed the fboss2-cli-prototype_part11 branch 3 times, most recently from 3418ae4 to b1ba451 Compare January 23, 2026 09:58
meta-codesync Bot pushed a commit that referenced this pull request Jan 28, 2026
Summary:
**Pre-submission checklist**
- [x] I've ran the linters locally and fixed lint errors related to the files I modified in this PR. You can install the linters by running `pip install -r requirements-dev.txt && pre-commit install`
- [x] `pre-commit run`

Add end-to-end tests to be run on an FBOSS DUT to validate CLI commands.

Note: this change is part of a series, the previous one is #761, the next one is #789.

Pull Request resolved: #783

Test Plan:
New end-to-end test coverage for `fboss2-dev config interface <name> mtu <N>` and `fboss2-dev config interface <name> description <string>`

Sample output of `run_test.py cli`:

```
Setting fboss environment variables
Running CLI end-to-end tests...

########## Running CLI test: test_config_interface_description.py
[  PASSED  ] test_config_interface_description.py (84.0s)

########## Running CLI test: test_config_interface_mtu.py
[  PASSED  ] test_config_interface_mtu.py (71.8s)

============================================================
CLI Test Summary
============================================================
  Passed: 2
  Failed: 0
  Total:  2
  Time:   155.8s
```

Detailed output of each test suite:

```
============================================================
CLI E2E Test: config interface <name> description <string>
============================================================

[Step 1] Finding an interface to test...
  Using CLI from FBOSS_CLI_PATH: /home/admin/benoit/fboss2-dev
[CLI] Running: show interface
[CLI] Completed in 18.14s: show interface
  Using interface: eth1/1/1 (VLAN: 2001)

[Step 2] Getting current description...
[CLI] Running: show interface eth1/1/1
[CLI] Completed in 17.78s: show interface eth1/1/1
  Current description: 'Test revision 2'

[Step 3] Setting description to 'CLI_E2E_TEST_DESCRIPTION'...
[CLI] Running: config interface eth1/1/1 description CLI_E2E_TEST_DESCRIPTION
[CLI] Completed in 0.06s: config interface eth1/1/1 description CLI_E2E_TEST_DESCRIPTION
[CLI] Running: config session commit
[CLI] Completed in 7.43s: config session commit
  Description set to 'CLI_E2E_TEST_DESCRIPTION'

[Step 4] Verifying description via 'show interface'...
[CLI] Running: show interface eth1/1/1
[CLI] Completed in 21.38s: show interface eth1/1/1
  Verified: Description is 'CLI_E2E_TEST_DESCRIPTION'

[Step 5] Restoring original description ('Test revision 2')...
[CLI] Running: config interface eth1/1/1 description Test revision 2
[CLI] Completed in 0.05s: config interface eth1/1/1 description Test revision 2
[CLI] Running: config session commit
[CLI] Completed in 6.34s: config session commit
  Restored description to 'Test revision 2'
[CLI] Running: show interface eth1/1/1
[CLI] Completed in 19.31s: show interface eth1/1/1

============================================================
TEST PASSED
============================================================
```
```
============================================================
CLI E2E Test: config interface <name> mtu <N>
============================================================

[Step 1] Finding an interface to test...
  Using CLI from FBOSS_CLI_PATH: /home/admin/benoit/fboss2-dev
[CLI] Running: show interface
[CLI] Completed in 21.35s: show interface
  Using interface: eth1/1/1 (VLAN: 2001)

[Step 2] Getting current MTU...
[CLI] Running: show interface eth1/1/1
[CLI] Completed in 19.47s: show interface eth1/1/1
  Current MTU: 9000

[Step 3] Setting MTU to 1500...
[CLI] Running: config interface eth1/1/1 mtu 1500
[CLI] Completed in 0.06s: config interface eth1/1/1 mtu 1500
[CLI] Running: config session commit
[CLI] Completed in 6.52s: config session commit
  MTU set to 1500

[Step 4] Verifying MTU via 'show interface'...
[CLI] Running: show interface eth1/1/1
[CLI] Completed in 19.33s: show interface eth1/1/1
  Verified: MTU is 1500

[Step 5] Verifying kernel interface MTU...
Running: ip link show fboss2001
  Verified: Kernel interface fboss2001 has MTU 1500

[Step 6] Restoring original MTU (9000)...
[CLI] Running: config interface eth1/1/1 mtu 9000
[CLI] Completed in 0.05s: config interface eth1/1/1 mtu 9000
[CLI] Running: config session commit
[CLI] Completed in 5.60s: config session commit
  Restored MTU to 9000

============================================================
TEST PASSED
============================================================
```
```

Reviewed By: KevinYakar

Differential Revision: D91234274

Pulled By: joseph5wu

fbshipit-source-id: c17fd9fa5f63b59ceb61bf82f18fc0eee2606dc2
@benoit-nexthop benoit-nexthop force-pushed the fboss2-cli-prototype_part11 branch from b1ba451 to 0f56ea6 Compare January 28, 2026 17:13
@meta-codesync

meta-codesync Bot commented Jan 28, 2026

Copy link
Copy Markdown
Contributor

@joseph5wu has imported this pull request. If you are a Meta employee, you can view this in D91714907.

@joseph5wu joseph5wu left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry about the delayed review.
There're several main improvements from this PR:

  • Make the cli_metadata.thrift less bound with agent especially we know bgp cli is also coming.
  • Check whether std::vector<utils::LocalOption> LocalOptions can support the multiple options for your qos command
  • Coldboot and Warmboot supports

Let me know if you have any questions

Comment thread fboss/cli/fboss2/cli_metadata.thrift
Comment thread fboss/cli/fboss2/cli_metadata.thrift Outdated
Comment thread fboss/cli/fboss2/cli_metadata.thrift Outdated
Comment thread fboss/cli/fboss2/commands/config/session/CmdConfigSessionCommit.cpp Outdated
Comment thread fboss/cli/fboss2/session/ConfigSession.cpp
Comment thread fboss/cli/fboss2/session/ConfigSession.h Outdated
Comment thread fboss/cli/fboss2/session/ConfigSession.h Outdated
Comment thread fboss/cli/fboss2/session/ConfigSession.h Outdated
Comment thread fboss/cli/fboss2/session/ConfigSession.h
@benoit-nexthop benoit-nexthop force-pushed the fboss2-cli-prototype_part11 branch from 0f56ea6 to 40222ab Compare February 12, 2026 03:00
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@manoharan-nexthop has updated the pull request. You must reimport the pull request before landing.

@benoit-nexthop benoit-nexthop force-pushed the fboss2-cli-prototype_part11 branch from 40222ab to e1489a2 Compare February 12, 2026 03:22
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@manoharan-nexthop has updated the pull request. You must reimport the pull request before landing.

@manoharan-nexthop manoharan-nexthop force-pushed the fboss2-cli-prototype_part11 branch from e1489a2 to 723d796 Compare February 12, 2026 09:44
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@manoharan-nexthop has updated the pull request. You must reimport the pull request before landing.

1. Some of the configuration commands like QoS buffer pool modification
requires an agent restart and some are hitless. Inorder to take
appropriate action during the commit, track the highest impact action by
storing the same in `$HOME/.fboss2/action_level` at the end of each
configuration change. The proposed change only prints a warning if the
action needs to be taken. Later this can be modified to perform the
action automatically

2. Add QoS buffer pool configuration commands
```
- fboss2 config qos buffer-pool <name> shared-bytes <value>
- fboss2 config qos buffer-pool <name> headroom-bytes <value>
- fboss2 config qos buffer-pool <name> reserved-bytes <value>
```

1. Updated existing UT for action information
2. Added new tests for QoS buffer bool configurations.

```
[admin@fboss101 ~]$ ~/benoit/fboss2-dev config qos buffer-pool testpool headroom-bytes 1024
Successfully set headroom-bytes for buffer-pool 'testpool' to 1024
[admin@fboss101 ~]$ ~/benoit/fboss2-dev config session diff
--- current live config
+++ session config
@@ -121,6 +121,12 @@
     "arpAgerInterval": 5,
     "arpRefreshSeconds": 20,
     "arpTimeoutSeconds": 60,
+    "bufferPoolConfigs": {
+      "testpool": {
+        "headroomBytes": 1024,
+        "sharedBytes": 0
+      }
+    },
     "clientIdToAdminDistance": {
       "0": 20,
       "1": 1,
[admin@fboss101 ~]$ ll ~/.fboss2
total 216
-rw-r--r-- 1 admin admin 213283 Jan 13 05:15 agent.conf
-rw-r--r-- 1 admin admin     42 Jan 13 05:15 conf_metadata.json
[admin@fboss101 ~]$ cat ~/.fboss2/conf_metadata.json
{
  "action": {
    "WEDGE_AGENT": "AGENT_RESTART"
  }
}
```
@benoit-nexthop benoit-nexthop force-pushed the fboss2-cli-prototype_part11 branch from 723d796 to de5878d Compare February 13, 2026 01:23
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@manoharan-nexthop has updated the pull request. You must reimport the pull request before landing.

@meta-codesync meta-codesync Bot closed this in d6c402e Feb 14, 2026
@meta-codesync

meta-codesync Bot commented Feb 14, 2026

Copy link
Copy Markdown
Contributor

@joseph5wu merged this pull request in d6c402e.

@benoit-nexthop benoit-nexthop deleted the fboss2-cli-prototype_part11 branch February 14, 2026 01:11
meta-codesync Bot pushed a commit that referenced this pull request Feb 17, 2026
…mand. (#791)

Summary:
**Pre-submission checklist**
- [x] I've ran the linters locally and fixed lint errors related to the files I modified in this PR. You can install the linters by running `pip install -r requirements-dev.txt && pre-commit install`
- [x] `pre-commit run`

Implements a new fboss2-dev CLI command to configure the access VLAN for an interface (switchport). This allows operators to change which VLAN a port belongs to.

The command syntax is:
```
config interface <port> switchport access vlan <vlan-id>
```

Where:
- `<port>` is the interface name (e.g., eth1/1/1)
- `<vlan-id>` is the VLAN ID (1-4094)

Note: This command doesn't yet automatically create the VLAN if it doesn't exist. The VLAN must already be configured in the system.

Since VLAN membership changes cannot be applied dynamically via `reloadConfig()`, this change requires an agent warmboot to take effect.

Note: this change is part of a series, the previous one is #789, the next one is #805.

Pull Request resolved: #791

Test Plan:
## New unit tests

```
Note: Google Test filter = *SwitchportAccessVlan*
[==========] Running 13 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 13 tests from CmdConfigInterfaceSwitchportAccessVlanTestFixture
[ RUN      ] CmdConfigInterfaceSwitchportAccessVlanTestFixture.vlanIdValidMin
[       OK ] CmdConfigInterfaceSwitchportAccessVlanTestFixture.vlanIdValidMin (3 ms)
[ RUN      ] CmdConfigInterfaceSwitchportAccessVlanTestFixture.vlanIdValidMax
[       OK ] CmdConfigInterfaceSwitchportAccessVlanTestFixture.vlanIdValidMax (1 ms)
[ RUN      ] CmdConfigInterfaceSwitchportAccessVlanTestFixture.vlanIdValidMid
[       OK ] CmdConfigInterfaceSwitchportAccessVlanTestFixture.vlanIdValidMid (1 ms)
[ RUN      ] CmdConfigInterfaceSwitchportAccessVlanTestFixture.vlanIdZeroInvalid
[       OK ] CmdConfigInterfaceSwitchportAccessVlanTestFixture.vlanIdZeroInvalid (7 ms)
[ RUN      ] CmdConfigInterfaceSwitchportAccessVlanTestFixture.vlanIdTooHighInvalid
[       OK ] CmdConfigInterfaceSwitchportAccessVlanTestFixture.vlanIdTooHighInvalid (1 ms)
[ RUN      ] CmdConfigInterfaceSwitchportAccessVlanTestFixture.vlanIdNegativeInvalid
[       OK ] CmdConfigInterfaceSwitchportAccessVlanTestFixture.vlanIdNegativeInvalid (1 ms)
[ RUN      ] CmdConfigInterfaceSwitchportAccessVlanTestFixture.vlanIdNonNumericInvalid
[       OK ] CmdConfigInterfaceSwitchportAccessVlanTestFixture.vlanIdNonNumericInvalid (1 ms)
[ RUN      ] CmdConfigInterfaceSwitchportAccessVlanTestFixture.vlanIdEmptyInvalid
[       OK ] CmdConfigInterfaceSwitchportAccessVlanTestFixture.vlanIdEmptyInvalid (1 ms)
[ RUN      ] CmdConfigInterfaceSwitchportAccessVlanTestFixture.vlanIdMultipleValuesInvalid
[       OK ] CmdConfigInterfaceSwitchportAccessVlanTestFixture.vlanIdMultipleValuesInvalid (1 ms)
[ RUN      ] CmdConfigInterfaceSwitchportAccessVlanTestFixture.vlanIdOutOfRangeErrorMessage
[       OK ] CmdConfigInterfaceSwitchportAccessVlanTestFixture.vlanIdOutOfRangeErrorMessage (1 ms)
[ RUN      ] CmdConfigInterfaceSwitchportAccessVlanTestFixture.vlanIdNonNumericErrorMessage
[       OK ] CmdConfigInterfaceSwitchportAccessVlanTestFixture.vlanIdNonNumericErrorMessage (0 ms)
[ RUN      ] CmdConfigInterfaceSwitchportAccessVlanTestFixture.queryClientSetsIngressVlanMultiplePorts
[       OK ] CmdConfigInterfaceSwitchportAccessVlanTestFixture.queryClientSetsIngressVlanMultiplePorts (21 ms)
[ RUN      ] CmdConfigInterfaceSwitchportAccessVlanTestFixture.queryClientThrowsOnEmptyInterfaceList
[       OK ] CmdConfigInterfaceSwitchportAccessVlanTestFixture.queryClientThrowsOnEmptyInterfaceList (5 ms)
[----------] 13 tests from CmdConfigInterfaceSwitchportAccessVlanTestFixture (49 ms total)

[----------] Global test environment tear-down
[==========] 13 tests from 1 test suite ran. (49 ms total)
[  PASSED  ] 13 tests.
```

## New end-to-end tests on minipack3

```
============================================================
CLI E2E Test: config interface <name> switchport access vlan <N>
============================================================

[Step 1] Finding an interface to test...
[CLI] Running: show interface
[CLI] Completed in 0.08s: show interface
  Using interface: eth1/1/1 (VLAN: 2005)

[Step 2] Getting current access VLAN...
[CLI] Running: show interface eth1/1/1
[CLI] Completed in 0.07s: show interface eth1/1/1
  Current access VLAN: 2005

[Step 3] Setting access VLAN to 2006...
[CLI] Running: config interface eth1/1/1 switchport access vlan 2006
[CLI] Completed in 0.06s: config interface eth1/1/1 switchport access vlan 2006
[CLI] Running: config session commit
[CLI] Completed in 8.49s: config session commit
[CLI] Agent is ready (waited 7.6s)
[CLI] Applied info: {"localhost": {"lastAppliedInMs": 1771036580360}}
  Access VLAN set to 2006

[Step 4] Verifying access VLAN via 'show interface'...
[CLI] Running: show interface eth1/1/1
[CLI] Completed in 0.07s: show interface eth1/1/1
  Verified: Access VLAN is 2006

[Step 5] Restoring original access VLAN (2005)...
[CLI] Running: config interface eth1/1/1 switchport access vlan 2005
[CLI] Completed in 0.06s: config interface eth1/1/1 switchport access vlan 2005
[CLI] Running: config session commit
[CLI] Completed in 9.92s: config session commit
[CLI] Agent is ready (waited 7.7s)
[CLI] Applied info: {"localhost": {"lastAppliedInMs": 1771036598267}}
  Restored access VLAN to 2005
[CLI] Running: show interface eth1/1/1
[CLI] Completed in 0.08s: show interface eth1/1/1

============================================================
TEST PASSED
============================================================
```

## Sample usage

```
[admin@fboss101 ~]$ /opt/fboss/bin/fboss2-dev config interface eth1/1/1 switchport access vlan 2007
Successfully set access VLAN for interface(s) eth1/1/1 to 2007

[admin@fboss101 ~]$ /opt/fboss/bin/fboss2-dev config session diff
 --- current live config
+++ session config
@@ -2178,7 +2178,7 @@
           "2": "eth1/5/1"
         },
         "expectedNeighborReachability": [],
-        "ingressVlan": 2005,
+        "ingressVlan": 2007,
         "logicalID": 9,
         "lookupClasses": [],
         "loopbackMode": 0,
@@ -7061,7 +7061,7 @@
         "emitTags": false,
         "logicalPort": 9,
         "spanningTreeState": 2,
-        "vlanID": 2005
+        "vlanID": 2007
       }
     ],
     "vlans": [
```

Reviewed By: shiva-menta

Differential Revision: D93503282

Pulled By: joseph5wu

fbshipit-source-id: 65cf2cbbbb3fc8cf46b71079a89701fb8e0ccad2
dzarista pushed a commit to dzarista/fboss that referenced this pull request Feb 19, 2026
Summary:
**Pre-submission checklist**
- [x] I've ran the linters locally and fixed lint errors related to the files I modified in this PR. You can install the linters by running `pip install -r requirements-dev.txt && pre-commit install`
- [x] `pre-commit run`

Add end-to-end tests to be run on an FBOSS DUT to validate CLI commands.

Note: this change is part of a series, the previous one is facebook#761, the next one is facebook#789.

Pull Request resolved: facebook#783

Test Plan:
New end-to-end test coverage for `fboss2-dev config interface <name> mtu <N>` and `fboss2-dev config interface <name> description <string>`

Sample output of `run_test.py cli`:

```
Setting fboss environment variables
Running CLI end-to-end tests...

########## Running CLI test: test_config_interface_description.py
[  PASSED  ] test_config_interface_description.py (84.0s)

########## Running CLI test: test_config_interface_mtu.py
[  PASSED  ] test_config_interface_mtu.py (71.8s)

============================================================
CLI Test Summary
============================================================
  Passed: 2
  Failed: 0
  Total:  2
  Time:   155.8s
```

Detailed output of each test suite:

```
============================================================
CLI E2E Test: config interface <name> description <string>
============================================================

[Step 1] Finding an interface to test...
  Using CLI from FBOSS_CLI_PATH: /home/admin/benoit/fboss2-dev
[CLI] Running: show interface
[CLI] Completed in 18.14s: show interface
  Using interface: eth1/1/1 (VLAN: 2001)

[Step 2] Getting current description...
[CLI] Running: show interface eth1/1/1
[CLI] Completed in 17.78s: show interface eth1/1/1
  Current description: 'Test revision 2'

[Step 3] Setting description to 'CLI_E2E_TEST_DESCRIPTION'...
[CLI] Running: config interface eth1/1/1 description CLI_E2E_TEST_DESCRIPTION
[CLI] Completed in 0.06s: config interface eth1/1/1 description CLI_E2E_TEST_DESCRIPTION
[CLI] Running: config session commit
[CLI] Completed in 7.43s: config session commit
  Description set to 'CLI_E2E_TEST_DESCRIPTION'

[Step 4] Verifying description via 'show interface'...
[CLI] Running: show interface eth1/1/1
[CLI] Completed in 21.38s: show interface eth1/1/1
  Verified: Description is 'CLI_E2E_TEST_DESCRIPTION'

[Step 5] Restoring original description ('Test revision 2')...
[CLI] Running: config interface eth1/1/1 description Test revision 2
[CLI] Completed in 0.05s: config interface eth1/1/1 description Test revision 2
[CLI] Running: config session commit
[CLI] Completed in 6.34s: config session commit
  Restored description to 'Test revision 2'
[CLI] Running: show interface eth1/1/1
[CLI] Completed in 19.31s: show interface eth1/1/1

============================================================
TEST PASSED
============================================================
```
```
============================================================
CLI E2E Test: config interface <name> mtu <N>
============================================================

[Step 1] Finding an interface to test...
  Using CLI from FBOSS_CLI_PATH: /home/admin/benoit/fboss2-dev
[CLI] Running: show interface
[CLI] Completed in 21.35s: show interface
  Using interface: eth1/1/1 (VLAN: 2001)

[Step 2] Getting current MTU...
[CLI] Running: show interface eth1/1/1
[CLI] Completed in 19.47s: show interface eth1/1/1
  Current MTU: 9000

[Step 3] Setting MTU to 1500...
[CLI] Running: config interface eth1/1/1 mtu 1500
[CLI] Completed in 0.06s: config interface eth1/1/1 mtu 1500
[CLI] Running: config session commit
[CLI] Completed in 6.52s: config session commit
  MTU set to 1500

[Step 4] Verifying MTU via 'show interface'...
[CLI] Running: show interface eth1/1/1
[CLI] Completed in 19.33s: show interface eth1/1/1
  Verified: MTU is 1500

[Step 5] Verifying kernel interface MTU...
Running: ip link show fboss2001
  Verified: Kernel interface fboss2001 has MTU 1500

[Step 6] Restoring original MTU (9000)...
[CLI] Running: config interface eth1/1/1 mtu 9000
[CLI] Completed in 0.05s: config interface eth1/1/1 mtu 9000
[CLI] Running: config session commit
[CLI] Completed in 5.60s: config session commit
  Restored MTU to 9000

============================================================
TEST PASSED
============================================================
```
```

Reviewed By: KevinYakar

Differential Revision: D91234274

Pulled By: joseph5wu

fbshipit-source-id: c17fd9fa5f63b59ceb61bf82f18fc0eee2606dc2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

4 participants