Import NetNS from pyroute2

Since [1] (pyroute2>0.8.1), the class NetNS should be imported
from pyroute2 module.
Also remove usage of pyroute2.ipdb which also got removed.

[1]8b81ddffe6

Closes-Bug: #2092403
Change-Id: I92bf48cc616c0b2dadec4b74175338b3e9a3a6fe
This commit is contained in:
Rodolfo Alonso Hernandez
2024-12-23 14:20:09 +00:00
committed by yatinkarel
parent 4c84bba12d
commit a230c6fe77
4 changed files with 16 additions and 16 deletions

View File

@@ -17,13 +17,13 @@ import socket
import netaddr import netaddr
from neutron_lib import constants from neutron_lib import constants
from oslo_log import log as logging from oslo_log import log as logging
import pyroute2
from pyroute2 import iproute from pyroute2 import iproute
from pyroute2.netlink import exceptions as netlink_exceptions from pyroute2.netlink import exceptions as netlink_exceptions
from pyroute2.netlink import rtnl from pyroute2.netlink import rtnl
from pyroute2.netlink.rtnl import ifinfmsg from pyroute2.netlink.rtnl import ifinfmsg
from pyroute2.netlink.rtnl import ndmsg from pyroute2.netlink.rtnl import ndmsg
from pyroute2 import netns from pyroute2 import netns
from pyroute2.nslink import nslink
import tenacity import tenacity
from neutron._i18n import _ from neutron._i18n import _
@@ -146,14 +146,14 @@ def get_iproute(namespace):
# `NetNS` -- RTNL API to another network namespace # `NetNS` -- RTNL API to another network namespace
if namespace: if namespace:
# do not try and create the namespace # do not try and create the namespace
return nslink.NetNS(namespace, flags=0, libc=priv_linux.get_cdll()) return pyroute2.NetNS(namespace, flags=0, libc=priv_linux.get_cdll())
return iproute.IPRoute() return iproute.IPRoute()
@privileged.default.entrypoint @privileged.default.entrypoint
def open_namespace(namespace): def open_namespace(namespace):
"""Open namespace to test if the namespace is ready to be manipulated""" """Open namespace to test if the namespace is ready to be manipulated"""
with nslink.NetNS(namespace, flags=0): with pyroute2.NetNS(namespace, flags=0):
pass pass

View File

@@ -20,7 +20,6 @@ from unittest import mock
import netaddr import netaddr
from neutron_lib import constants as n_cons from neutron_lib import constants as n_cons
from oslo_utils import uuidutils from oslo_utils import uuidutils
from pyroute2.ipdb import routes as ipdb_routes
from pyroute2.iproute import linux as iproute_linux from pyroute2.iproute import linux as iproute_linux
from pyroute2.netlink import exceptions as netlink_exc from pyroute2.netlink import exceptions as netlink_exc
from pyroute2.netlink import rtnl from pyroute2.netlink import rtnl
@@ -551,7 +550,7 @@ class RouteTestCase(functional_base.BaseSudoTestCase):
for cidr in cidrs: for cidr in cidrs:
ip_version = common_utils.get_ip_version(cidr) ip_version = common_utils.get_ip_version(cidr)
if ip_version == n_cons.IP_VERSION_6 and not metric: if ip_version == n_cons.IP_VERSION_6 and not metric:
metric = ipdb_routes.IP6_RT_PRIO_USER metric = rtnl.rtmsg.IP6_RT_PRIO_USER
if ip_version == n_cons.IP_VERSION_6: if ip_version == n_cons.IP_VERSION_6:
scope = 0 scope = 0
routes = priv_ip_lib.list_ip_routes(self.namespace, ip_version) routes = priv_ip_lib.list_ip_routes(self.namespace, ip_version)
@@ -578,7 +577,7 @@ class RouteTestCase(functional_base.BaseSudoTestCase):
table = table or iproute_linux.DEFAULT_TABLE table = table or iproute_linux.DEFAULT_TABLE
ip_version = common_utils.get_ip_version(gateway) ip_version = common_utils.get_ip_version(gateway)
if ip_version == n_cons.IP_VERSION_6 and not metric: if ip_version == n_cons.IP_VERSION_6 and not metric:
metric = ipdb_routes.IP6_RT_PRIO_USER metric = rtnl.rtmsg.IP6_RT_PRIO_USER
scope = 0 scope = 0
routes = priv_ip_lib.list_ip_routes(self.namespace, ip_version) routes = priv_ip_lib.list_ip_routes(self.namespace, ip_version)
for route in routes: for route in routes:

View File

@@ -23,11 +23,11 @@ from neutron_lib import constants
from neutron_lib import exceptions from neutron_lib import exceptions
from oslo_utils import netutils from oslo_utils import netutils
from oslo_utils import uuidutils from oslo_utils import uuidutils
import pyroute2
from pyroute2.netlink import exceptions as netlink_exceptions from pyroute2.netlink import exceptions as netlink_exceptions
from pyroute2.netlink.rtnl import ifinfmsg from pyroute2.netlink.rtnl import ifinfmsg
from pyroute2.netlink.rtnl import ndmsg from pyroute2.netlink.rtnl import ndmsg
from pyroute2 import netns from pyroute2 import netns
from pyroute2.nslink import nslink
import testtools import testtools
from neutron.agent.common import utils # noqa from neutron.agent.common import utils # noqa
@@ -37,6 +37,7 @@ from neutron import privileged
from neutron.privileged.agent.linux import ip_lib as priv_lib from neutron.privileged.agent.linux import ip_lib as priv_lib
from neutron.tests import base from neutron.tests import base
NETNS_SAMPLE = [ NETNS_SAMPLE = [
'12345678-1234-5678-abcd-1234567890ab', '12345678-1234-5678-abcd-1234567890ab',
'bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', 'bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb',
@@ -1003,7 +1004,7 @@ class TestIpNeighCommand(TestIPCmdBase):
self.addCleanup(privileged.default.set_client_mode, True) self.addCleanup(privileged.default.set_client_mode, True)
privileged.default.set_client_mode(False) privileged.default.set_client_mode(False)
@mock.patch.object(nslink, 'NetNS') @mock.patch.object(pyroute2, 'NetNS')
def test_add_entry(self, mock_netns): def test_add_entry(self, mock_netns):
mock_netns_instance = mock_netns.return_value mock_netns_instance = mock_netns.return_value
mock_netns_enter = mock_netns_instance.__enter__.return_value mock_netns_enter = mock_netns_instance.__enter__.return_value
@@ -1018,20 +1019,20 @@ class TestIpNeighCommand(TestIPCmdBase):
ifindex=1, ifindex=1,
state=ndmsg.states['permanent']) state=ndmsg.states['permanent'])
@mock.patch.object(nslink, 'NetNS') @mock.patch.object(pyroute2, 'NetNS')
def test_add_entry_nonexistent_namespace(self, mock_netns): def test_add_entry_nonexistent_namespace(self, mock_netns):
mock_netns.side_effect = OSError(errno.ENOENT, None) mock_netns.side_effect = OSError(errno.ENOENT, None)
with testtools.ExpectedException(ip_lib.NetworkNamespaceNotFound): with testtools.ExpectedException(ip_lib.NetworkNamespaceNotFound):
self.neigh_cmd.add('192.168.45.100', 'cc:dd:ee:ff:ab:cd') self.neigh_cmd.add('192.168.45.100', 'cc:dd:ee:ff:ab:cd')
@mock.patch.object(nslink, 'NetNS') @mock.patch.object(pyroute2, 'NetNS')
def test_add_entry_other_error(self, mock_netns): def test_add_entry_other_error(self, mock_netns):
expected_exception = OSError(errno.EACCES, None) expected_exception = OSError(errno.EACCES, None)
mock_netns.side_effect = expected_exception mock_netns.side_effect = expected_exception
with testtools.ExpectedException(expected_exception.__class__): with testtools.ExpectedException(expected_exception.__class__):
self.neigh_cmd.add('192.168.45.100', 'cc:dd:ee:ff:ab:cd') self.neigh_cmd.add('192.168.45.100', 'cc:dd:ee:ff:ab:cd')
@mock.patch.object(nslink, 'NetNS') @mock.patch.object(pyroute2, 'NetNS')
def test_delete_entry(self, mock_netns): def test_delete_entry(self, mock_netns):
mock_netns_instance = mock_netns.return_value mock_netns_instance = mock_netns.return_value
mock_netns_enter = mock_netns_instance.__enter__.return_value mock_netns_enter = mock_netns_instance.__enter__.return_value
@@ -1052,7 +1053,7 @@ class TestIpNeighCommand(TestIPCmdBase):
errno.ENOENT, None) errno.ENOENT, None)
self.neigh_cmd.delete('192.168.45.100', 'cc:dd:ee:ff:ab:cd') self.neigh_cmd.delete('192.168.45.100', 'cc:dd:ee:ff:ab:cd')
@mock.patch.object(nslink, 'NetNS') @mock.patch.object(pyroute2, 'NetNS')
def test_dump_entries(self, mock_netns): def test_dump_entries(self, mock_netns):
mock_netns_instance = mock_netns.return_value mock_netns_instance = mock_netns.return_value
mock_netns_enter = mock_netns_instance.__enter__.return_value mock_netns_enter = mock_netns_instance.__enter__.return_value

View File

@@ -15,10 +15,10 @@
import errno import errno
from unittest import mock from unittest import mock
import pyroute2
from pyroute2 import iproute from pyroute2 import iproute
from pyroute2 import netlink from pyroute2 import netlink
from pyroute2.netlink import exceptions as netlink_exceptions from pyroute2.netlink import exceptions as netlink_exceptions
from pyroute2.nslink import nslink
from neutron.privileged.agent.linux import ip_lib as priv_lib from neutron.privileged.agent.linux import ip_lib as priv_lib
from neutron.tests import base from neutron.tests import base
@@ -28,7 +28,7 @@ class IpLibTestCase(base.BaseTestCase):
def _test_run_iproute_link(self, namespace=None): def _test_run_iproute_link(self, namespace=None):
ip_obj = "NetNS" if namespace else "IPRoute" ip_obj = "NetNS" if namespace else "IPRoute"
_mod = nslink if namespace else iproute _mod = pyroute2 if namespace else iproute
with mock.patch.object(_mod, ip_obj) as ip_mock_cls: with mock.patch.object(_mod, ip_obj) as ip_mock_cls:
ip_mock = ip_mock_cls() ip_mock = ip_mock_cls()
ip_mock.__enter__().link_lookup.return_value = [2] ip_mock.__enter__().link_lookup.return_value = [2]
@@ -112,7 +112,7 @@ class IpLibTestCase(base.BaseTestCase):
def _test_run_iproute_neigh(self, namespace=None): def _test_run_iproute_neigh(self, namespace=None):
ip_obj = "NetNS" if namespace else "IPRoute" ip_obj = "NetNS" if namespace else "IPRoute"
_mod = nslink if namespace else iproute _mod = pyroute2 if namespace else iproute
with mock.patch.object(_mod, ip_obj) as ip_mock_cls: with mock.patch.object(_mod, ip_obj) as ip_mock_cls:
ip_mock = ip_mock_cls() ip_mock = ip_mock_cls()
ip_mock.__enter__().link_lookup.return_value = [2] ip_mock.__enter__().link_lookup.return_value = [2]
@@ -183,7 +183,7 @@ class IpLibTestCase(base.BaseTestCase):
def _test_run_iproute_addr(self, namespace=None): def _test_run_iproute_addr(self, namespace=None):
ip_obj = "NetNS" if namespace else "IPRoute" ip_obj = "NetNS" if namespace else "IPRoute"
_mod = nslink if namespace else iproute _mod = pyroute2 if namespace else iproute
with mock.patch.object(_mod, ip_obj) as ip_mock_cls: with mock.patch.object(_mod, ip_obj) as ip_mock_cls:
ip_mock = ip_mock_cls() ip_mock = ip_mock_cls()
ip_mock.__enter__().link_lookup.return_value = [2] ip_mock.__enter__().link_lookup.return_value = [2]