Statistics
| Branch: | Tag: | Revision:

mininet / mininet / clean.py @ 8a130dea

History | View | Annotate | Download (1.85 KB)

1 8895862a Bob Lantz
"""
2
Mininet Cleanup
3
author: Bob Lantz (rlantz@cs.stanford.edu)
4 ea420ee2 Bob Lantz

5 80be5642 Bob Lantz
Unfortunately, Mininet and OpenFlow (and the Linux kernel)
6
don't always clean up properly after themselves. Until they do
7
(or until cleanup functionality is integrated into the Python
8
code), this script may be used to get rid of unwanted garbage.
9
It may also get rid of 'false positives', but hopefully
10
nothing irreplaceable!
11 ea420ee2 Bob Lantz
"""
12
13
from subprocess import Popen, PIPE
14
15 3eb5abe6 Brandon Heller
from mininet.log import info
16 ff6145c0 Bob Lantz
from mininet.term import cleanUpScreens
17 ede34b6a Brandon Heller
18 8895862a Bob Lantz
def sh( cmd ):
19 723d068c Brandon Heller
    "Print a command and send it to the shell"
20 3eb5abe6 Brandon Heller
    info( cmd + '\n' )
21 8895862a Bob Lantz
    return Popen( [ '/bin/sh', '-c', cmd ], stdout=PIPE ).communicate()[ 0 ]
22 723d068c Brandon Heller
23 ea420ee2 Bob Lantz
def cleanup():
24 723d068c Brandon Heller
    """Clean up junk which might be left over from old runs;
25
       do fast stuff before slow dp and link removal!"""
26 82b72072 Bob Lantz
27 3eb5abe6 Brandon Heller
    info("*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes"
28
         "\n")
29 723d068c Brandon Heller
    zombies = 'controller ofprotocol ofdatapath ping nox_core lt-nox_core '
30 257a2f63 Bob Lantz
    zombies += 'ovs-openflowd udpbwtest'
31 723d068c Brandon Heller
    # Note: real zombie processes can't actually be killed, since they
32 80be5642 Bob Lantz
    # are already (un)dead. Then again,
33 723d068c Brandon Heller
    # you can't connect to them either, so they're mostly harmless.
34 8895862a Bob Lantz
    sh( 'killall -9 ' + zombies + ' 2> /dev/null' )
35 723d068c Brandon Heller
36 ce67093a Bob Lantz
    info( "*** Removing junk from /tmp\n" )
37 8895862a Bob Lantz
    sh( 'rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log' )
38 723d068c Brandon Heller
39 ce67093a Bob Lantz
    info( "*** Removing old screen sessions\n" )
40 723d068c Brandon Heller
    cleanUpScreens()
41
42 ce67093a Bob Lantz
    info( "*** Removing excess kernel datapaths\n" )
43 8895862a Bob Lantz
    dps = sh( "ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'" ).split( '\n' )
44 723d068c Brandon Heller
    for dp in dps:
45
        if dp != '':
46 8895862a Bob Lantz
            sh( 'dpctl deldp ' + dp )
47 723d068c Brandon Heller
48 ce67093a Bob Lantz
    info( "*** Removing all links of the pattern foo-ethX\n" )
49 8895862a Bob Lantz
    links = sh( "ip link show | egrep -o '(\w+-eth\w+)'" ).split( '\n' )
50 723d068c Brandon Heller
    for link in links:
51
        if link != '':
52 8895862a Bob Lantz
            sh( "ip link del " + link )
53 723d068c Brandon Heller
54 ce67093a Bob Lantz
    info( "*** Cleanup complete.\n" )