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:
@@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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]
|
||||||
|
|||||||
Reference in New Issue
Block a user