Mon, Oct 14, 2013 at 03:18:42PM CEST, olichtne(a)redhat.com wrote:
On Mon, Oct 14, 2013 at 02:59:58PM +0200, Jan Tluka wrote:
> Mon, Oct 14, 2013 at 02:34:19PM CEST, olichtne(a)redhat.com wrote:
> >From: Ondrej Lichtner <olichtne(a)redhat.com>
> >
> >The new version of pyroute2 has a new feature that was added partially
> >on my request- the IPRSocket. This commit updates the code where we use
> >pyroute2 to use this feature.
> >
> >This feature is available from pyroute2 version 0.1.11 which already is
> >available as a package in Fedora 19.
> >
>
> And how about RHEL6? Just curious if we're expecting workarounds. Does
> easy_install cover this? If so I'm ok with it.
Both easy_install and pip (the newer way of accessing pypi) cover this.
The pyroute2 package available there is of version 0.1.12 so 1 ahead of
Fedora.
Perfect!
>
> >Signed-off-by: Ondrej Lichtner <olichtne(a)redhat.com>
> >---
> > lnst/Common/ConnectionHandler.py | 11 ++++-------
> > lnst/Common/NetUtils.py | 11 +++--------
> > lnst/Slave/NetTestSlave.py | 25 +++----------------------
> > 3 files changed, 10 insertions(+), 37 deletions(-)
> >
> >diff --git a/lnst/Common/ConnectionHandler.py b/lnst/Common/ConnectionHandler.py
> >index b44f159..c0a43fa 100644
> >--- a/lnst/Common/ConnectionHandler.py
> >+++ b/lnst/Common/ConnectionHandler.py
> >@@ -15,8 +15,7 @@ import select
> > import cPickle
> > import socket
> > from _multiprocessing import Connection
> >-from pyroute2.netlink import NetlinkSocket
> >-from pyroute2.netlink.iproute import MarshalRtnl
> >+from pyroute2 import IPRSocket
> >
> > def send_data(s, data):
> > try:
> >@@ -35,11 +34,9 @@ def send_data(s, data):
> > return True
> >
> > def recv_data(s):
> >- if isinstance(s, NetlinkSocket):
> >- marshaller = MarshalRtnl()
> >- msg = s.recv(16384)
> >- decoded_msg = marshaller.parse(msg)
> >- data = {"type": "netlink", "data":
decoded_msg}
> >+ if isinstance(s, IPRSocket):
> >+ msg = s.get()
> >+ data = {"type": "netlink", "data": msg}
> > elif isinstance(s, socket.SocketType):
> > length = ""
> > while True:
> >diff --git a/lnst/Common/NetUtils.py b/lnst/Common/NetUtils.py
> >index efa14f5..b649483 100644
> >--- a/lnst/Common/NetUtils.py
> >+++ b/lnst/Common/NetUtils.py
> >@@ -15,14 +15,11 @@ import os
> > import re
> > import socket
> > import subprocess
> >-from resource import getpagesize
> >-from pyroute2.netlink import NetlinkSocket
> >+from pyroute2 import IPRSocket
> > from pyroute2.netlink import NLM_F_REQUEST
> > from pyroute2.netlink import NLM_F_DUMP
> > from pyroute2.netlink import NLMSG_DONE
> > from pyroute2.netlink import NLMSG_ERROR
> >-from pyroute2.netlink.generic import NETLINK_ROUTE
> >-from pyroute2.netlink.iproute import MarshalRtnl
> > from pyroute2.netlink.iproute import RTM_GETLINK
> > from pyroute2.netlink.iproute import RTM_NEWLINK
> > from pyroute2.netlink.rtnl.ifinfmsg import ifinfmsg
> >@@ -32,7 +29,7 @@ def normalize_hwaddr(hwaddr):
> >
> > def scan_netdevs():
> > scan = []
> >- nl_socket = NetlinkSocket(family=NETLINK_ROUTE)
> >+ nl_socket = IPRSocket()
> > msg = ifinfmsg()
> > msg["family"] = socket.AF_UNSPEC
> > msg["header"]["type"] = RTM_GETLINK
> >@@ -44,10 +41,8 @@ def scan_netdevs():
> > nl_socket.sendto(msg.buf.getvalue(), (0,0))
> >
> > finished = False
> >- marshal = MarshalRtnl()
> > while not finished:
> >- response = nl_socket.recv(getpagesize())
> >- parts = marshal.parse(response)
> >+ parts = nl_socket.get()
> > for part in parts:
> > if part["header"]["type"] in [NLMSG_DONE,
NLMSG_ERROR]:
> > finished = True
> >diff --git a/lnst/Slave/NetTestSlave.py b/lnst/Slave/NetTestSlave.py
> >index 76359d5..f8dad2b 100644
> >--- a/lnst/Slave/NetTestSlave.py
> >+++ b/lnst/Slave/NetTestSlave.py
> >@@ -37,26 +37,7 @@ from lnst.Common.ConnectionHandler import recv_data,
send_data
> > from lnst.Common.ConnectionHandler import ConnectionHandler
> > from lnst.Common.Config import lnst_config
> > from lnst.Common.NetTestCommand import NetTestCommandConfig
> >-
> >-#TODO this is temporary, until python-pyroute2 package is updated
> >-from pyroute2.netlink import NetlinkSocket
> >-from pyroute2.netlink.generic import NETLINK_ROUTE
> >-
> >-RTNLGRP_LINK = 0x1
> >-RTNLGRP_NEIGH = 0x4
> >-RTNLGRP_TC = 0x8
> >-RTNLGRP_IPV4_IFADDR = 0x10
> >-RTNLGRP_IPV4_ROUTE = 0x40
> >-RTNLGRP_IPV6_IFADDR = 0x100
> >-RTNLGRP_IPV6_ROUTE = 0x400
> >-
> >-RTNL_GROUPS = RTNLGRP_IPV4_IFADDR |\
> >- RTNLGRP_IPV6_IFADDR |\
> >- RTNLGRP_IPV4_ROUTE |\
> >- RTNLGRP_IPV6_ROUTE |\
> >- RTNLGRP_NEIGH |\
> >- RTNLGRP_LINK |\
> >- RTNLGRP_TC
> >+from pyroute2 import IPRSocket
> >
> > DefaultRPCPort = 9999
> >
> >@@ -455,8 +436,8 @@ class NetTestSlave:
> >
> > self._log_ctl = log_ctl
> >
> >- self._nl_socket = NetlinkSocket(family=NETLINK_ROUTE)
> >- self._nl_socket.bind(RTNL_GROUPS)
> >+ self._nl_socket = IPRSocket()
> >+ self._nl_socket.bind()
> > self._server_handler.add_connection('netlink', self._nl_socket)
> >
> > def run(self):
> >--
> >1.8.3.1
> >
> >_______________________________________________
> >LNST-developers mailing list
> >LNST-developers(a)lists.fedorahosted.org
> >https://lists.fedorahosted.org/mailman/listinfo/lnst-developers