diff --git a/mininet/moduledeps.py b/mininet/moduledeps.py index 9592928..b72bac3 100644 --- a/mininet/moduledeps.py +++ b/mininet/moduledeps.py @@ -47,19 +47,21 @@ def moduleDeps( subtract=None, add=None ): info( '*** Loading ' + mod + '\n' ) modprobeOutput = modprobe( mod ) if modprobeOutput: - error( 'Error inserting ' + mod + '- is it installed?\n' + - 'Error was: "%s"\n' % modprobeOutput ) + error( 'Error inserting ' + mod + + ' - is it installed and available via modprobe?\n' + + 'Error was: "%s"\n' % modprobeOutput ) if mod not in lsmod(): - error( 'Failed to insert ' + mod + '\n' ) + error( 'Failed to insert ' + mod + ' - quitting.\n' ) exit( 1 ) else: debug( '*** ' + mod + ' already loaded\n' ) -def pathCheck( *args ): +def pathCheck( *args, **kwargs ): "Make sure each program in *args can be found in $PATH." + moduleName = kwargs.get( 'moduleName', 'it' ) for arg in args: if not quietRun( 'which ' + arg ): - error( 'Cannot find required executable %s -' - ' is it installed somewhere in your $PATH?\n(%s)\n' % - ( arg, environ[ 'PATH' ] ) ) + error( 'Cannot find required executable %s.\n' % arg + + 'Please make sure that %s is installed ' % moduleName + + 'and available in your $PATH:\n(%s)\n' % environ[ 'PATH' ] ) exit( 1 ) diff --git a/mininet/node.py b/mininet/node.py index 10111b1..3c2521c 100644 --- a/mininet/node.py +++ b/mininet/node.py @@ -465,7 +465,8 @@ class UserSwitch( Switch ): """Init. name: name for the switch""" Switch.__init__( self, name, **kwargs ) - pathCheck( 'ofdatapath', 'ofprotocol' ) + pathCheck( 'ofdatapath', 'ofprotocol', + moduleName='the OpenFlow reference user switch (openflow.org)' ) @staticmethod def setup(): @@ -521,8 +522,10 @@ class KernelSwitch( Switch ): @staticmethod def setup(): "Ensure any dependencies are loaded; if not, try to load them." + pathCheck( 'ofprotocol', + moduleName='the OpenFlow reference kernel switch' + ' (openflow.org) (NOTE: not available in OpenFlow 1.0!)' ) moduleDeps( subtract=OVS_KMOD, add=OF_KMOD ) - pathCheck( 'ofprotocol' ) def start( self, controllers ): "Start up reference kernel datapath." @@ -575,8 +578,9 @@ class OVSKernelSwitch( Switch ): @staticmethod def setup(): "Ensure any dependencies are loaded; if not, try to load them." - moduleDeps( subtract = OF_KMOD, add = OVS_KMOD ) - pathCheck( 'ovs-dpctl', 'ovs-openflowd' ) + pathCheck( 'ovs-dpctl', 'ovs-openflowd', + moduleName='Open vSwitch (openvswitch.org)') + moduleDeps( subtract=OF_KMOD, add=OVS_KMOD ) def start( self, controllers ): "Start up kernel datapath."