RFE: Pure Python driven Linux network configuration

Bug #1492714 reported by Li Ma on 2015-09-06
16
This bug affects 1 person
Affects Status Importance Assigned to Milestone
neutron
Wishlist
Slawek Kaplonski

Bug Description

[Problem]
Currently, Linux network configuration in Neutron heavily relies on shell commands, like ip, brctl, ipset, iptables, etc. Shell commands makes Neutron agents inefficient and really hard to operate in high load environment. In our production deployment scaling from 50 - 500 physical machines per region, 50+ virtual instances per machine, the Neutron agents run extremely slowly and sometimes unresponsive.

There is a blueprint that switch openflow operations from shell to ryu-based pure python library, but it is not sufficient.

[Solution-1]
I'd like to introduce a pure Python netlink library: pyroute2. It supports network configuration including ip-link, ip-route, ip-netns, tc, ipset and iptables in the roadmap, and is also compatible with python3. It only requires standard library which is also awesome, because you don't need to rely on other unstable third-party libraries that makes dependency hard to maintain. Moreover, it supports transactional local DB operations for network configuration called IPDB.

Doc Link: http://docs.pyroute2.org/general.html
Pypi Link: https://pypi.python.org/pypi/pyroute2

I should first issue a rfe for discussion. Forgot it. :-)
Blueprint Link: https://blueprints.launchpad.net/neutron/+spec/pure-python-linuxnet-conf

[Solution-2]
Currently pyroute2 still doesn't support whole functionality of ipset and iptables, but they are definitely on the roadmap. I'm not sure its progress. I've forked this project and will try to involve in if possible to make sure it evolves as expected. What I suggest is that if possible, should we open a new project, pyosnetconf or networking-linuxnet-conf, whatever, that implements OpenStack's own python library for Linux network configuration. It may be much more aggressive, but still meaningful to neutron.

I'm OK with the two solutions mentioned above. I'd like to get feedback as much as possible to move forward. Anyway, I strongly suggest to make it work.

Li Ma (nick-ma-z) on 2015-09-06
description: updated
Li Ma (nick-ma-z) on 2015-09-06
Changed in neutron:
assignee: nobody → Li Ma (nick-ma-z)
Peter V. Saveliev (petea) wrote :

Just as a feedback from pyroute2 — you can assume that any OpenStack related issue will be of the high priority for the project. Not saying that any contribution is more than welcome. Do you have any issues / comments / etc, you can reach me via IRC (channel #pyroute2 on FreeNode), mail or github.

Afair, Kyle asked on the last summit, would it be possible to refactor ip lib. Probably, it's time to start.

Li Ma (nick-ma-z) wrote :

@Peter, thanks for your reviewing. Actually I started to evaluate pyroute2, it is awesome and I do like it very much.

Once I researched some other network-related projects hosted in github, some are unresponsive or dead and some have a long long time for review & merge. As a developer & operator who manages many production deployments, I'm a little scared about introducing 3rd-party python libraries that is not developing for long and also may be not stably backed, because there are many bad examples in python community. I'm so sorry for that.

I think a pure python libraries makes neutron clean and elegant.

Li Ma (nick-ma-z) wrote :

Here's comments from Ramu.

Can you provide some data using cProfile on the runtime of the fork-exec-wait for shell commands like ip ? I measured them to be roughly 0.05 seconds per command which limits the overall performance/scalability of the agent to less than 20 such operations per second. Such data would help strongly motivate this work.

Answer:
Thanks for your reviewing. Generally, the problems are got from our production environments which heavily relies on auto-orchestration and auto-scaling. I cannot touch such an environment without permission from our clients. I just reads the monitoring system and message queues. However, as far as I know, single command based on subprocess is always OK, but many many concurrent external commands with external lock mechanism is not always OK for production. It consumes much more memory, it gives kernel much more pressure to manage processes, etc. if we can improve it for sure, from subprocess to python library call, it is better.

Peter V. Saveliev (petea) wrote :

From the architecture perspective, pyroute2 is not of great performance (yet), though some optimizations are performed from time to time. The reason is that the primary requirement was to work w/o ctypes and other C hacks, thus we're limited to python strings and it leads to multiple data copying. But even with that limitation it can work a bit faster than external utilities:

$ uname -r
3.10.0-229.el7.x86_64

# the code creates an interface and adds adresses from 172.16.0.0/20 one by one with

# subprocess.Popen(['ip', ...])
$ sudo time python popen_profile.py
2.09user 5.22system 0:07.75elapsed 94%CPU (0avgtext+0avgdata 5156maxresident)k
120inputs+0outputs (0major+2320995minor)pagefaults 0swaps

# pyroute2.IPRoute()
$ sudo time python pyroute2_profile.py
2.19user 0.28system 0:02.70elapsed 92%CPU (0avgtext+0avgdata 12128maxresident)k
936inputs+360outputs (2major+5729minor)pagefaults 0swaps

on a RHEL7 VM

on kernels 4.x.x the difference is not so significant, but still exists: on massive ip addr operations the pyroute2 is faster.

But there are also other perspectives:

1. no need to parse text output, which format can be changed
2. no need to create a new process for a simple operation
3. less netlink overhead: every `ip addr add …` call actually leads to several netlink requests (load interfaces info, load addr info, apply addr info), while `pyroute2.addr()` is always one request — the state is kept by the program, no info loads for every address addition, e.g.

So anyway by working with netlink from the python process we do less overhead to the kernel, that can matter on heavy loaded system.

And the last is that with pyroute2.IPDB one can use sync states — with IPDB commits the system has a guaranteed state (if one can talk about any guarantee in the case of netlink). Though again, IPDB is not about performance, it is only about the system state.

Li Ma (nick-ma-z) wrote :

Thanks for providing the details, Peter. I'm waiting for others for review.

Kevin Benton (kevinbenton) wrote :

We can't make root privileged calls from the agent so using pyroute2 directly is a non-starter. However, take a look at the privsep work that is undergoing spec review here: https://review.openstack.org/#/c/204073

What that will allow is for us to make calls to the privsep daemon which will then leverage pyroute2 or fall back to a shell command if there is no pyroute2 path available IIRC.

For more details, ping gus (Angus Lees) on IRC or start an email thread with the [neutron] tag asking about how privsep will improve performance of the agent and he will respond.

Itsuro Oda (oda-g) wrote :

Thank you for submitting this. This is what many people (include me) think so.

Li Ma (nick-ma-z) wrote :

@Kevin Thanks a lot for reminding the privilege issue. I'll first find out how privsep works and when it will be landed.
By the way, I think we can first make this RFE confirmed :-).

Li Ma (nick-ma-z) wrote :

@Itsuro, I'm thinking of this proposal for long. I think it is the time to move forward.

Angus Lees (gus) wrote :

See https://review.openstack.org/#/c/155631 for an earlier working (at the time) prototype version of privsep, and an ip_lib rewrite that used it. That change has since bit-rotted and been auto-abandoned, the ip_lib bits should give you an idea of what a simple conversion might look like.

Fyi, I did some simple benchmarks back then and found that reading the eth0 IP address via privsep -> pyroute2 (which caches the IP address) was about 20x faster than just running "ip a show dev eth0" (without even parsing the output), which puts it something like 40x faster than running iproute via rootwrap-daemon (for read-only operations). For write operations, the speedup isn't as great - and I don't think I have benchmarks handy because there was a pyroute2 "write barrier" issue at the time that dominated the results.

I just think that most of community already agreed to use privilege separation.
In the privsep daemon then, as Kevin notes, we could incrementally remove shell invocation and make it pure-python (I'm not sure if that goal can be achieved at all, but we can incrementally move towards it)

Carl Baldwin (carl-baldwin) wrote :

Yes, let's go after the privsep daemon and work this in as we can. I'd encourage anyone interested in this to go get involved with the privsep reviews in olso and integration with Neutron.

Kyle Mestery (mestery) wrote :

Can we just approve this one then and mark it dependent on the privsep work?

Changed in neutron:
status: New → Triaged
importance: Undecided → High

Do we have an idea on who can help with reviews?

How are we tracking the privsep work?

Li Ma (nick-ma-z) wrote :

Angus provides his initial work on neutron-privsep integration [1]. I can work based upon it when oslo.privsep is released.

Right now, I'm trying to integrate privsep in [1] with neutron upstream.

[1] https://review.openstack.org/#/c/155631

Peter V. Saveliev (petea) wrote :

Any of the discussion participants on the Summit now?

Li Ma (nick-ma-z) wrote :

@Peter I'm not on the Summit. :-)

Changed in neutron:
importance: High → Wishlist
Kyle Mestery (mestery) wrote :

I know regXboi was looking at the privsep work, perhaps he can be the one tracking that dependency.

It' clear from this discussion that privsep [1] is a pre-requisite for this effort to commence. Most of privsep work has been tracked with the privsep topic [2], but I am not sure what else is missing. I advise the submitter of this RFE to get in touch with Angus Lee (irc:gus), to learn more.

I personally would like to see some evidence of the performance improvement that we would gain from moving from rootwrap daemon to privsep and direct library calls. The transition to privsep may make sense regardless of the performance gain (as privsep is more expressive), and for this reason I welcome this initiative, but purely on a best effort basis for Mitaka.

[1] http://specs.openstack.org/openstack/oslo-specs/specs/liberty/privsep.html
[2] https://review.openstack.org/#/q/topic:privsep,n,z

tags: added: rfe-approved
removed: rfe
Miguel Angel Ajo (mangelajo) wrote :

Adding @apuimedo to this RFE to read it, I know we once talked bout using cgroups for our agents, as a simpler way of permission elevation (with only networking capabilities).

Li Ma (nick-ma-z) wrote :

Hi all,

I'm in a business trip recently, sorry for late reply. I'll start to work on the performance evaluation. By the way, the privsep code review is under way. I'm waiting for the basic functionality to be finished for neutron.

Changed in neutron:
milestone: none → mitaka-1
Changed in neutron:
milestone: mitaka-1 → mitaka-2
Changed in neutron:
milestone: mitaka-2 → mitaka-3

this depends on privsep being complete. It's my understanding that privsep is not quite there yet, so I don't see how this can make Mitaka. It'll most likely need to be resubmitted when we're ready.

Changed in neutron:
assignee: Li Ma (nick-ma-z) → nobody
status: Triaged → Incomplete

Change abandoned by Li Ma (<email address hidden>) on branch: master
Review: https://review.openstack.org/251859

Launchpad Janitor (janitor) wrote :

[Expired for neutron because there has been no activity for 60 days.]

Changed in neutron:
status: Incomplete → Expired
Changed in neutron:
status: Expired → Confirmed
assignee: nobody → Angus Lees (gus)
milestone: none → newton-1
Miguel Angel Ajo (mangelajo) wrote :

yeah! ;)

Changed in neutron:
status: Confirmed → In Progress
Changed in neutron:
milestone: newton-1 → newton-2
Changed in neutron:
assignee: Angus Lees (gus) → Oleg Bondarev (obondarev)
Changed in neutron:
assignee: Oleg Bondarev (obondarev) → Angus Lees (gus)
Changed in neutron:
assignee: Angus Lees (gus) → Oleg Bondarev (obondarev)
Changed in neutron:
milestone: newton-2 → newton-3
Changed in neutron:
assignee: Oleg Bondarev (obondarev) → Kevin Benton (kevinbenton)
Changed in neutron:
assignee: Kevin Benton (kevinbenton) → Angus Lees (gus)
Changed in neutron:
milestone: newton-3 → newton-rc1
Changed in neutron:
milestone: newton-rc1 → ocata-1

Change abandoned by Armando Migliaccio (<email address hidden>) on branch: master
Review: https://review.openstack.org/155631
Reason: This review is > 4 weeks without comment, and failed Jenkins the last time it was checked. We are abandoning this for now. Feel free to reactivate the review by pressing the restore button and leaving a 'recheck' comment to get fresh test results.

Fix proposed to branch: master
Review: https://review.openstack.org/394741

Changed in neutron:
assignee: Angus Lees (gus) → Omer Anson (omer-anson)
Changed in neutron:
milestone: ocata-1 → ocata-2

Reviewed: https://review.openstack.org/394741
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=9183da7c96df506cdfa5c83a8d4d22e34609a8f4
Submitter: Jenkins
Branch: master

commit 9183da7c96df506cdfa5c83a8d4d22e34609a8f4
Author: Omer Anson <email address hidden>
Date: Mon Oct 31 08:52:43 2016 +0200

    Adopt privsep and read routing table with pyroute2

    Make use of oslo.privsep to support namespaces. This includes all
    relevant code necessary for oslo.privsep to work.

    Change ip_lib's get_routing_table method to use pyroute2, rather than
    parsing the output of 'ip route'.

    Change-Id: I89bfa3dbf1776da973cfca389b2841019a520f75
    Partial-Bug: 1492714
    Co-Authored-By: Angus Lees <email address hidden>

Reviewed: https://review.openstack.org/414098
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=605df9cb9451614ac801ffd3650f9cbe771e7ec3
Submitter: Jenkins
Branch: master

commit 605df9cb9451614ac801ffd3650f9cbe771e7ec3
Author: Ihar Hrachyshka <email address hidden>
Date: Sat Dec 17 07:38:38 2016 +0000

    Moving pyroute and oslo.privsep deps into requirements.txt

    It is true that the code using the modules is still utilized in tests
    only; but it's also true that those deps are now needed for example for
    oslo-config-generator to work, so in the end, it's not only about tests.

    Change-Id: I9e27aca32be03130057e00c727d29cb26532e860
    Related-Bug: #1492714

Changed in neutron:
milestone: ocata-2 → ocata-3

Reviewed: https://review.openstack.org/414607
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=7fc79f43dce4411291074d07dcf9eb7ae108fe04
Submitter: Jenkins
Branch: master

commit 7fc79f43dce4411291074d07dcf9eb7ae108fe04
Author: Denis Buliga <email address hidden>
Date: Tue Jan 3 02:42:32 2017 -0800

    Refactors QosAgentDriver

    QosAgentDriver has a method which uses linux specific module, which
    is trying to import pyroute2.

    Module pyroute2 tries to import a module from socket which does not
    exists on windows (socket.inet_pton[1]). This can cause neutron
    services to fail to start on windows[2].

    [1]: https://docs.python.org/2/library/socket.html#socket.inet_pton
    [2]: http://paste.openstack.org/show/593272/

    Change-Id: I706368bfcaece380e1357e0c504fd3b9553ba49c
    Related-Bug: #1492714

Changed in neutron:
milestone: ocata-3 → ocata-rc1
milestone: ocata-rc1 → pike-1
Nguyen Phuong An (annp) wrote :

Actually, pyroute2 should support netfilter conntrack for [1] and netfilter log for [2].
[1] https://review.openstack.org/#/c/437311/
[2] https://review.openstack.org/#/c/203509/

Do we have any plan to accelerate contribution to pyroute2?

This bug has had a related patch abandoned and has been automatically un-assigned due to inactivity. Please re-assign yourself if you are continuing work or adjust the state as appropriate if it is no longer valid.

Changed in neutron:
assignee: Omer Anson (omer-anson) → nobody
status: In Progress → New
tags: added: timeout-abandon

Change abandoned by Kevin Benton (<email address hidden>) on branch: master
Review: https://review.openstack.org/155631
Reason: This review is > 4 weeks without comment, and failed Jenkins the last time it was checked. We are abandoning this for now. Feel free to reactivate the review by pressing the restore button and leaving a 'recheck' comment to get fresh test results.

Changed in neutron:
milestone: pike-1 → pike-2

Reviewed: https://review.openstack.org/505701
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=4f627b4e8dfe699944a196fe90e0642cced6278f
Submitter: Jenkins
Branch: master

commit 4f627b4e8dfe699944a196fe90e0642cced6278f
Author: Brian Haley <email address hidden>
Date: Wed Sep 20 16:09:04 2017 -0400

    Change ip_lib network namespace code to use pyroute2

    Change network namespace add/delete/list code to use
    pyroute2 library instead of calling /sbin/ip.

    Also changed all in-tree callers to use the new calls.

    Closes-bug: #1717582
    Related-bug: #1492714

    Change-Id: Id802e77543177fbb95ff15c2c7361172e8824633

Changed in neutron:
assignee: nobody → Slawek Kaplonski (slaweq)

Related fix proposed to branch: master
Review: https://review.openstack.org/545355

Change abandoned by Slawek Kaplonski (<email address hidden>) on branch: master
Review: https://review.openstack.org/540892

Reviewed: https://review.openstack.org/545355
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=e0223edf88abc8c1bb8714121a0df8a9997c7a30
Submitter: Zuul
Branch: master

commit e0223edf88abc8c1bb8714121a0df8a9997c7a30
Author: Sławek Kapłoński <email address hidden>
Date: Fri Feb 16 15:27:26 2018 +0100

    Switch ip addr add/del/flush commands to use pyroute2

    This patch replaces usage of "ip addr add/del/flush" commands
    with pyroute2 library.
    This also switches from rootwrap to privsep when doing those
    actions.

    This patch adds also UT for _run_iproute_neigh/addr functions
    from privileged module.

    Change-Id: I6f4df391ec1899f8a4b10b50735dc9a79fa8483f
    Related-Bug: #1492714

tags: removed: timeout-abandon
Changed in neutron:
status: New → In Progress

Reviewed: https://review.openstack.org/548617
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=53054ad463120bf73b8b87f2887dc98f67604896
Submitter: Zuul
Branch: master

commit 53054ad463120bf73b8b87f2887dc98f67604896
Author: Sławek Kapłoński <email address hidden>
Date: Wed Feb 28 16:30:43 2018 +0100

    Switch create/delete interfaces to pyroute2

    Create and delete network interfaces in ip_lib.py module
    now uses pyroute2 library.
    Only exception is creation of veth currently as there is no
    way to create veth pair and put one end of such veth
    in another namespace in one call.

    Related-Bug: #1492714

    Change-Id: I0a658d91f173fb705b5987a1174bda6a6570468d

Reviewed: https://review.openstack.org/553809
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=aaf11f45ecf8f832301491017a8009f1897e8d43
Submitter: Zuul
Branch: master

commit aaf11f45ecf8f832301491017a8009f1897e8d43
Author: Sławek Kapłoński <email address hidden>
Date: Fri Mar 16 15:58:10 2018 +0100

    Switch IPDevice.exists() method to use pyroute2

    Check if network device exists is now done by checking
    interface index with pyroute2 interface instead of checking
    if MAC address for device is set.

    Change-Id: I2d5b95ec109fb19fc2a46c1017959f74011b9a22
    Related-Bug: #1492714

Reviewed: https://review.openstack.org/555430
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=b17aad2384ab1fa50dae9b4f39c860276fddadf8
Submitter: Zuul
Branch: master

commit b17aad2384ab1fa50dae9b4f39c860276fddadf8
Author: Sławek Kapłoński <email address hidden>
Date: Thu Mar 22 20:15:00 2018 +0100

    Handle adding ip address when it already exists

    Adding IP address on device is now done with pyroute2 lib.
    This commit handle the case when pyroute2 function raise
    exception when same IP address is already configured on
    device.
    In such case it will now raise exception which inherits from
    RuntimeError what is consistent with eariler code when it
    was done by running "ip addr" command to configue IP.

    Change-Id: I89f22310782f2f0baf0ce6b20d2ab0e1d68654a0
    Related-Bug: #1492714

Reviewed: https://review.openstack.org/548225
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=781f730eb11c64f68a8063c140e1815cebc084fe
Submitter: Zuul
Branch: master

commit 781f730eb11c64f68a8063c140e1815cebc084fe
Author: Sławek Kapłoński <email address hidden>
Date: Tue Feb 27 12:06:03 2018 +0100

    Switch ip link command to pyroute2

    This patch switches IpLinkCommand methods from ip_lib
    module to use pyroute2 library.

    This commit adds also additional link attribute "allmulticast"
    thus allowing to make easy functional test for
    set_allmulticast_on method from IpLinkCommand class.

    Related-Bug: #1492714

    Change-Id: I9ffd23c240c607ffd5f10beff5c8c8d5f01441e9

Related fix proposed to branch: master
Review: https://review.openstack.org/590353

Changed in neutron:
milestone: pike-2 → none

Reviewed: https://review.openstack.org/590353
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=99567388acfb0c0b9d3fc05430eaef3acb7ad9c5
Submitter: Zuul
Branch: master

commit 99567388acfb0c0b9d3fc05430eaef3acb7ad9c5
Author: Slawek Kaplonski <email address hidden>
Date: Thu Aug 9 16:43:13 2018 +0200

    Create veth pair devices using pyroute2

    Create of veth devices now uses pyroute2 and priv_sep.

    Change-Id: I8d0346dd1859010aba864ea908c7dcb118aa5412
    Related-Bug: #1492714

Related fix proposed to branch: master
Review: https://review.openstack.org/617364

Related fix proposed to branch: master
Review: https://review.openstack.org/617371

Related fix proposed to branch: master
Review: https://review.openstack.org/617736

Related fix proposed to branch: master
Review: https://review.openstack.org/618273

Reviewed: https://review.openstack.org/617162
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=aa19fa1c3ff8f2fad8fc53b5a2fda0a70bf8cf63
Submitter: Zuul
Branch: master

commit aa19fa1c3ff8f2fad8fc53b5a2fda0a70bf8cf63
Author: Rodolfo Alonso Hernandez <email address hidden>
Date: Sun Nov 11 20:21:58 2018 +0000

    Implement ip_lib get_devices using pyroute2

    IPWrapper.get_devices() now uses pyroute2 and priv_sep.

    Related-Bug: #1492714
    Change-Id: Idb847bf16fe8898735266d93d39430da1f5410f9

Reviewed: https://review.openstack.org/617736
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=c68ebd661b68c9da548a71521610839c38acd0c5
Submitter: Zuul
Branch: master

commit c68ebd661b68c9da548a71521610839c38acd0c5
Author: Rodolfo Alonso Hernandez <email address hidden>
Date: Tue Nov 13 16:36:06 2018 +0000

    Implement IpRuleCommand.list_rules() using pyroute2

    Change-Id: I55d5dd756940e5a92f472c9309d49f427e907928
    Related-Bug: #1492714

Reviewed: https://review.openstack.org/617364
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=87926fddc0442d70d43b2c7e9aac3073d70bc0ce
Submitter: Zuul
Branch: master

commit 87926fddc0442d70d43b2c7e9aac3073d70bc0ce
Author: Rodolfo Alonso Hernandez <email address hidden>
Date: Mon Nov 12 17:06:53 2018 +0000

    Implement IpRuleCommand.add() using pyroute2

    Change-Id: I0cc6b24a91794eeba46462fac2bfdeda2ba2ab9e
    Related-Bug: #1492714

Reviewed: https://review.openstack.org/617371
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=489dd1853082b797809de8ad7ead8b0bf3fd7364
Submitter: Zuul
Branch: master

commit 489dd1853082b797809de8ad7ead8b0bf3fd7364
Author: Rodolfo Alonso Hernandez <email address hidden>
Date: Fri Nov 23 08:43:04 2018 +0000

    Implement IpRuleCommand.delete() using pyroute2

    Related-Bug: #1492714

    Change-Id: Ia9f192541f7b9994c3dae93f3f3ae96f1a4fba0c

Reviewed: https://review.openstack.org/618273
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=05a54e800430bcfc81e36e1dad89fa47f3e8a6f0
Submitter: Zuul
Branch: master

commit 05a54e800430bcfc81e36e1dad89fa47f3e8a6f0
Author: Rodolfo Alonso Hernandez <email address hidden>
Date: Thu Dec 6 10:48:51 2018 +0000

    Implement IpAddrCommand.get_devices_with_ip using pyroute2

    Related-Bug: #1492714

    Change-Id: If7292c33dd0716a0a412bf60658123d2e688dfdb

Change abandoned by Slawek Kaplonski (<email address hidden>) on branch: master
Review: https://review.openstack.org/585177
Reason: This review is > 4 weeks without comment, and failed Jenkins the last time it was checked. We are abandoning this for now. Feel free to reactivate the review by pressing the restore button and leaving a 'recheck' comment to get fresh test results.

Related fix proposed to branch: master
Review: https://review.opendev.org/666890

Related fix proposed to branch: master
Review: https://review.opendev.org/668182

Related fix proposed to branch: master
Review: https://review.opendev.org/668189

Related fix proposed to branch: master
Review: https://review.opendev.org/668304

Related fix proposed to branch: master
Review: https://review.opendev.org/668531

Reviewed: https://review.opendev.org/668182
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=b6cbc95dcb1c46fd205103892a2744e4d13a81e4
Submitter: Zuul
Branch: master

commit b6cbc95dcb1c46fd205103892a2744e4d13a81e4
Author: Rodolfo Alonso Hernandez <email address hidden>
Date: Fri Jun 28 13:58:33 2019 +0000

    Use Pyroute2 "list_tc_qdiscs" function in l3_tc_lib

    Change-Id: Ifdccd02411e3c3bae441fc28ab8ed09ff746993c
    Related-Bug: #1492714

Reviewed: https://review.opendev.org/668189
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=fb7185bf3592a66d3945fa259a1536bfe973cdfd
Submitter: Zuul
Branch: master

commit fb7185bf3592a66d3945fa259a1536bfe973cdfd
Author: Rodolfo Alonso Hernandez <email address hidden>
Date: Fri Jun 28 14:17:55 2019 +0000

    Use Pyroute2 "add_tc_qdisc" function in l3_tc_lib

    Change-Id: I67ddf9d9a6bb2d9d2e8ff0b6345a0118ec37d837
    Related-Bug: #1492714

Reviewed: https://review.opendev.org/661981
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=06997136097152ea67611ec56b345e5867184df5
Submitter: Zuul
Branch: master

commit 06997136097152ea67611ec56b345e5867184df5
Author: Rodolfo Alonso Hernandez <email address hidden>
Date: Mon May 27 17:15:34 2019 +0000

    Implement "ip route" commands using Pyroute2

    Commands implemented:
    * Add route
    * List routes

    Related-Bug: #1492714

    Change-Id: I5e5e9f6981024317773979d9d2d77db3f5e7ec98

Reviewed: https://review.opendev.org/666890
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=429c77c574f471bdbb4dd91debef7a72c920b1e0
Submitter: Zuul
Branch: master

commit 429c77c574f471bdbb4dd91debef7a72c920b1e0
Author: Rodolfo Alonso Hernandez <email address hidden>
Date: Tue Jun 18 16:52:10 2019 +0000

    Implement "ip route delete" command using Pyroute2

    Change-Id: I960455d6a9bc1b633d485c42a26b3a254731558e
    Related-Bug: #1492714

Change abandoned by Rodolfo Alonso Hernandez (<email address hidden>) on branch: master
Review: https://review.opendev.org/668304
Reason: Once the TC commands in Pyroute2 are fixed, I'll retake this patch again.

Change abandoned by Rodolfo Alonso Hernandez (<email address hidden>) on branch: master
Review: https://review.opendev.org/668531
Reason: Once the TC commands in Pyroute2 are fixed, I'll retake this patch again.

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers