Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[dualtor]: Fix loopback route removal #6555

Merged

Conversation

theasianpianist
Copy link
Contributor

Signed-off-by: Lawrence Lee lawlee@microsoft.com

Description of PR

Summary:
Fixes # (issue)

Type of change

  • Bug fix
  • Testbed and Framework(new/improvement)
  • Test case(new/improvement)

Back port request

  • 201911
  • 202012
  • 202205

Approach

What is the motivation for this PR?

Removing the peer switch loopback route with ip route commands does not persist since the route is learned over BGP

How did you do it?

Shutdown BGP sessions on the peer ToR to make sure the route is no longer advertised

How did you verify/test it?

Run the test and make sure that the route checks are passing.
Note that the test case is still expected to fail due to ongoing QOS issues

Any platform specific information?

Supported testbed topology if it's a new test case?

Documentation

Signed-off-by: Lawrence Lee <lawlee@microsoft.com>
@azure-pipelines
Copy link

The pre-commit check detected issues in the files touched by this pull request.
The detected issues may be old or new. For new issues, please try to fix them.

For old issues, it is not mandatory to fix them because they were not caused by this change. It is unfair to blame
author of this pull request. But if you can take extra effort to fix the old issues as well, that would be great!

Detailed pre-commit check results:
trim trailing whitespace.................................................Failed
- hook id: trailing-whitespace
- exit code: 1
- files were modified by this hook

Fixing tests/dualtor/test_orchagent_standby_tor_downstream.py

fix end of files.........................................................Passed
check yaml...........................................(no files to check)Skipped
check for added large files..............................................Passed
check python ast.........................................................Passed
flake8...................................................................Failed
- hook id: flake8
- exit code: 1

tests/dualtor/test_orchagent_standby_tor_downstream.py:7:1: F811 redefinition of unused 'time' from line 3
tests/dualtor/test_orchagent_standby_tor_downstream.py:10:1: F403 'from tests.common.dualtor.dual_tor_mock import *' used; unable to detect undefined names
tests/dualtor/test_orchagent_standby_tor_downstream.py:18:1: F401 'tests.common.fixtures.ptfhost_utils.copy_ptftests_directory' imported but unused
tests/dualtor/test_orchagent_standby_tor_downstream.py:19:1: F401 'tests.common.fixtures.ptfhost_utils.change_mac_addresses' imported but unused
tests/dualtor/test_orchagent_standby_tor_downstream.py:20:1: F401 'tests.common.fixtures.ptfhost_utils.run_garp_service' imported but unused
...
[truncated extra lines, please run pre-commit locally to view full check results]

To run the pre-commit checks locally, you can follow below steps:

  1. Ensure that default python is python3. In sonic-mgmt docker container, default python is python2. You can run
    the check by activating the python3 virtual environment in sonic-mgmt docker container or outside of sonic-mgmt
    docker container.
  2. Ensure that the pre-commit package is installed:
sudo pip install pre-commit
  1. Go to repository root folder
  2. Install the pre-commit hooks:
pre-commit install
  1. Use pre-commit to check staged file:
pre-commit
  1. Alternatively, you can check committed files using:
pre-commit run --from-ref <commit_id> --to-ref <commit_id>

Signed-off-by: Lawrence Lee <lawlee@microsoft.com>
@azure-pipelines
Copy link

The pre-commit check detected issues in the files touched by this pull request.
The detected issues may be old or new. For new issues, please try to fix them.

For old issues, it is not mandatory to fix them because they were not caused by this change. It is unfair to blame
author of this pull request. But if you can take extra effort to fix the old issues as well, that would be great!

Detailed pre-commit check results:
trim trailing whitespace.................................................Passed
fix end of files.........................................................Passed
check yaml...........................................(no files to check)Skipped
check for added large files..............................................Passed
check python ast.........................................................Passed
flake8...................................................................Failed
- hook id: flake8
- exit code: 1

tests/dualtor/test_orchagent_standby_tor_downstream.py:9:1: F403 'from tests.common.dualtor.dual_tor_mock import ' used; unable to detect undefined names
tests/dualtor/test_orchagent_standby_tor_downstream.py:9:1: F401 'tests.common.dualtor.dual_tor_mock.
' imported but unused
tests/dualtor/test_orchagent_standby_tor_downstream.py:301:121: E501 line too long (141 > 120 characters)
tests/dualtor/test_orchagent_standby_tor_downstream.py:357:121: E501 line too long (122 > 120 characters)

To run the pre-commit checks locally, you can follow below steps:

  1. Ensure that default python is python3. In sonic-mgmt docker container, default python is python2. You can run
    the check by activating the python3 virtual environment in sonic-mgmt docker container or outside of sonic-mgmt
    docker container.
  2. Ensure that the pre-commit package is installed:
sudo pip install pre-commit
  1. Go to repository root folder
  2. Install the pre-commit hooks:
pre-commit install
  1. Use pre-commit to check staged file:
pre-commit
  1. Alternatively, you can check committed files using:
pre-commit run --from-ref <commit_id> --to-ref <commit_id>

@@ -191,28 +194,67 @@ def test_standby_tor_downstream_bgp_recovered(
check_tunnel_balance(**params)


def test_standby_tor_downstream_loopback_route_readded(rand_selected_dut, get_testbed_params, tbinfo):
def route_matches_expected_state(duthost, route_ip, expect_route):
get_route_cmd = "ip route | grep {}".format(route_ip)
Copy link
Collaborator

Choose a reason for hiding this comment

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

Please grep with -w to do a full word match.

bingwang-ms
bingwang-ms previously approved these changes Oct 22, 2022
Copy link
Collaborator

@bingwang-ms bingwang-ms left a comment

Choose a reason for hiding this comment

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

Approved with a minor suggestion.

@azure-pipelines
Copy link

The pre-commit check detected issues in the files touched by this pull request.
The detected issues may be old or new. For new issues, please try to fix them.

For old issues, it is not mandatory to fix them because they were not caused by this change. It is unfair to blame
author of this pull request. But if you can take extra effort to fix the old issues as well, that would be great!

Detailed pre-commit check results:
trim trailing whitespace.................................................Passed
fix end of files.........................................................Passed
check yaml...........................................(no files to check)Skipped
check for added large files..............................................Passed
check python ast.........................................................Passed
flake8...................................................................Failed
- hook id: flake8
- exit code: 1

tests/dualtor/test_orchagent_standby_tor_downstream.py:9:1: F403 'from tests.common.dualtor.dual_tor_mock import ' used; unable to detect undefined names
tests/dualtor/test_orchagent_standby_tor_downstream.py:9:1: F401 'tests.common.dualtor.dual_tor_mock.
' imported but unused
tests/dualtor/test_orchagent_standby_tor_downstream.py:301:121: E501 line too long (141 > 120 characters)
tests/dualtor/test_orchagent_standby_tor_downstream.py:357:121: E501 line too long (122 > 120 characters)

To run the pre-commit checks locally, you can follow below steps:

  1. Ensure that default python is python3. In sonic-mgmt docker container, default python is python2. You can run
    the check by activating the python3 virtual environment in sonic-mgmt docker container or outside of sonic-mgmt
    docker container.
  2. Ensure that the pre-commit package is installed:
sudo pip install pre-commit
  1. Go to repository root folder
  2. Install the pre-commit hooks:
pre-commit install
  1. Use pre-commit to check staged file:
pre-commit
  1. Alternatively, you can check committed files using:
pre-commit run --from-ref <commit_id> --to-ref <commit_id>

@theasianpianist theasianpianist merged commit 4d755d2 into sonic-net:master Oct 27, 2022
wangxin pushed a commit that referenced this pull request Oct 31, 2022
- Shutdown BGP sessions on the peer ToR to make sure the route is no longer advertised

Signed-off-by: Lawrence Lee <lawlee@microsoft.com>
wangxin pushed a commit that referenced this pull request Oct 31, 2022
- Shutdown BGP sessions on the peer ToR to make sure the route is no longer advertised

Signed-off-by: Lawrence Lee <lawlee@microsoft.com>
@Blueve
Copy link
Contributor

Blueve commented Nov 1, 2022

There is an import missing issue introduced to 202012 after this PR merged. Need revert 202012 backport.
@theasianpianist could you manually cherry-pick to 202012 and test it?

wangxin added a commit to wangxin/sonic-mgmt that referenced this pull request Nov 1, 2022
@theasianpianist
Copy link
Contributor Author

There is an import missing issue introduced to 202012 after this PR merged. Need revert 202012 backport.
@theasianpianist could you manually cherry-pick to 202012 and test it?

Sure, can you share what the missing import is or what test case is affected?

@Blueve
Copy link
Contributor

Blueve commented Nov 1, 2022

Thank you @theasianpianist
I got following errors during test collection stage (202012 branch):

==================================== ERRORS ====================================
___ ERROR collecting tests/dualtor/test_orchagent_standby_tor_downstream.py ____
ImportError while importing test module '/azp/agent/_work/16/s/sonic-mgmt-int/tests/dualtor/test_orchagent_standby_tor_downstream.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
dualtor/test_orchagent_standby_tor_downstream.py:27: in <module>
    from tests.common.dualtor.tor_failure_utils import shutdown_bgp_sessions  # noqa: F401
E   ImportError: cannot import name shutdown_bgp_sessions

wangxin added a commit that referenced this pull request Nov 1, 2022
What is the motivation for this PR?
This reverts commit c79569b.

This commit was cherry-picked to 202012 branch. On 202012 branch, this branch has importing issue in this line:
tests/dualtor/test_orchagent_standby_tor_downstream.py:
```
from tests.common.dualtor.tor_failure_utils import shutdown_bgp_sessions  # noqa: F401
```

How did you do it?
Revert commit c79569b
theasianpianist added a commit to theasianpianist/sonic-mgmt that referenced this pull request Nov 1, 2022
- Shutdown BGP sessions on the peer ToR to make sure the route is no longer advertised

Signed-off-by: Lawrence Lee <lawlee@microsoft.com>
lolyu pushed a commit to lolyu/sonic-mgmt that referenced this pull request Dec 19, 2022
…Azure/sonic-mgmt into internal

Fix merge conflicts.
Commit history:

- Modified args for some of the calls (sonic-net#6605)
- Run telemetry tests on all DUT types in a multi-dut setup (sonic-net#6098)
- [dualtor]: Fix loopback route removal (sonic-net#6555)
- Added support for one portChannel and one routed interface if two por… (sonic-net#5331)
- Use config_reload when recovering from internal interfaces that are in down state (sonic-net#6076)
- Added python fixture for resetting config changes to fix nightly backend snmp test failures (sonic-net#6607)
- Fix Python3 RuntimeError - dictionary changed size during iteration (sonic-net#6646)
- [mx] Add docs for mx topo (sonic-net#6634)
- [topo_mx] Add new topo for BMC Mgmt ToR Router (sonic-net#6636)
- [mx] Enhance announce routes to support MX topo (sonic-net#6635)
- Merge branch 'azure-master' into dev/yaqiangzhu/internal_merge
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants