[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