[prev in list] [next in list] [prev in thread] [next in thread] 

List:       lnst-developers
Subject:    Re: [PATCH] update pyrout2 use
From:       Jan Tluka <jtluka () redhat ! com>
Date:       2013-10-14 13:34:09
Message-ID: 20131014133409.GB1430 () localhost ! localdomain
[Download RAW message or body]

Mon, Oct 14, 2013 at 03:18:42PM CEST, olichtne@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@redhat.com wrote:
>> >From: Ondrej Lichtner <olichtne@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@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@lists.fedorahosted.org
>> >https://lists.fedorahosted.org/mailman/listinfo/lnst-developers
_______________________________________________
LNST-developers mailing list
LNST-developers@lists.fedorahosted.org
https://lists.fedorahosted.org/mailman/listinfo/lnst-developers

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic