mininet / mininet / moduledeps.py @ b47cdfea
History | View | Annotate | Download (2.18 KB)
1 |
"Module dependency utility functions for Mininet."
|
---|---|
2 |
|
3 |
from mininet.util import quietRun |
4 |
from mininet.log import info, error, debug |
5 |
from os import environ |
6 |
|
7 |
def lsmod(): |
8 |
"Return output of lsmod."
|
9 |
return quietRun( 'lsmod' ) |
10 |
|
11 |
def rmmod( mod ): |
12 |
"""Return output of lsmod.
|
13 |
mod: module string"""
|
14 |
return quietRun( [ 'rmmod', mod ] ) |
15 |
|
16 |
def modprobe( mod ): |
17 |
"""Return output of modprobe
|
18 |
mod: module string"""
|
19 |
return quietRun( [ 'modprobe', mod ] ) |
20 |
|
21 |
OF_KMOD = 'ofdatapath'
|
22 |
OVS_KMOD = 'openvswitch_mod'
|
23 |
TUN = 'tun'
|
24 |
|
25 |
def moduleDeps( subtract=None, add=None ): |
26 |
"""Handle module dependencies.
|
27 |
subtract: string or list of module names to remove, if already loaded
|
28 |
add: string or list of module names to add, if not already loaded"""
|
29 |
subtract = subtract if subtract is not None else [] |
30 |
add = add if add is not None else [] |
31 |
if type( subtract ) is str: |
32 |
subtract = [ subtract ] |
33 |
if type( add ) is str: |
34 |
add = [ add ] |
35 |
for mod in subtract: |
36 |
if mod in lsmod(): |
37 |
info( '*** Removing ' + mod + '\n' ) |
38 |
rmmodOutput = rmmod( mod ) |
39 |
if rmmodOutput:
|
40 |
error( 'Error removing ' + mod + '\n%s' % rmmodOutput ) |
41 |
exit( 1 ) |
42 |
if mod in lsmod(): |
43 |
error( 'Failed to remove ' + mod + '; still there!\n' ) |
44 |
exit( 1 ) |
45 |
for mod in add: |
46 |
if mod not in lsmod(): |
47 |
info( '*** Loading ' + mod + '\n' ) |
48 |
modprobeOutput = modprobe( mod ) |
49 |
if modprobeOutput:
|
50 |
error( 'Error inserting ' + mod + ';\n See INSTALL.\n%s' % |
51 |
modprobeOutput ) |
52 |
exit( 1 ) |
53 |
if mod not in lsmod(): |
54 |
error( 'Failed to insert ' + mod + '\n' ) |
55 |
exit( 1 ) |
56 |
else:
|
57 |
debug( '*** ' + mod + ' already loaded\n' ) |
58 |
|
59 |
def pathCheck( *args ): |
60 |
"Make sure each program in *args can be found in $PATH."
|
61 |
for arg in args: |
62 |
if not quietRun( 'which ' + arg ): |
63 |
error( 'Cannot find required executable %s -'
|
64 |
' is it installed somewhere in your $PATH?\n(%s)\n' %
|
65 |
( arg, environ[ 'PATH' ] ) )
|
66 |
exit( 1 ) |