Browse code

worlddump: collect networking stack info from namespaces

Neutron hugely relies on namespaces, so we should try to dump
internal IP stack state for non-root network namespaces.

Change-Id: Ib980d22fbf3c6b680473754fa2b1684c2ef91b72

Ihar Hrachyshka authored on 2016/01/31 00:18:01
Showing 1 changed files
... ...
@@ -100,14 +100,24 @@ def iptables_dump():
100 100
         _dump_cmd("sudo iptables --line-numbers -L -nv -t %s" % table)
101 101
 
102 102
 
103
+def _netns_list():
104
+    process = subprocess.Popen(['ip', 'netns'], stdout=subprocess.PIPE)
105
+    stdout, _ = process.communicate()
106
+    return stdout.split()
107
+
108
+
103 109
 def network_dump():
104 110
     _header("Network Dump")
105 111
 
106 112
     _dump_cmd("brctl show")
107 113
     _dump_cmd("arp -n")
108
-    _dump_cmd("ip addr")
109
-    _dump_cmd("ip link")
110
-    _dump_cmd("ip route")
114
+    ip_cmds = ["addr", "link", "route"]
115
+    for cmd in ip_cmds + ['netns']:
116
+        _dump_cmd("ip %s" % cmd)
117
+    for netns_ in _netns_list():
118
+        for cmd in ip_cmds:
119
+            args = {'netns': netns_, 'cmd': cmd}
120
+            _dump_cmd('sudo ip netns exec %(netns)s ip %(cmd)s' % args)
111 121
 
112 122
 
113 123
 def process_list():