Skip to content
Snippets Groups Projects
Commit de901ef0 authored by Bob Lantz's avatar Bob Lantz
Browse files

Modified to allow execed nodes to work, if we ever reinstate them.

parent b1affce8
No related branches found
No related tags found
No related merge requests found
...@@ -12,35 +12,46 @@ ...@@ -12,35 +12,46 @@
from mininet.log import error from mininet.log import error
from mininet.util import quietRun from mininet.util import quietRun
def joinCmd( args ):
"Join args into a string, single-quoting items with spaces."
result = ''
for arg in args:
if ' ' in item:
result += " '%s'" % arg
else:
result += " %s" % arg
return result
def makeTerm( node, title = '', term = 'xterm' ): def makeTerm( node, title = '', term = 'xterm' ):
"""Run screen on a node, and hook up an xterm. """Run screen on a node, and hook up a terminal.
node: Node object node: Node object
title: base title title: base title
term: 'xterm' or 'gterm'
returns: process created""" returns: process created"""
title += ': ' + node.name title += ': ' + node.name
if not node.inNamespace: if not node.inNamespace:
title += ' (root)' title += ' (root)'
cmd = '' cmds = {
if term == 'xterm': 'xterm': [ 'xterm', '-title', title, '-e' ],
cmd = [ 'xterm', '-title', title, '-e' ] 'gterm': [ 'gnome-terminal', '--title', title, '-e' ]
elif term == 'gnome': }
cmd = [ 'gnome-terminal', '--title', title, '-e' ] if term not in cmds:
else:
error( 'invalid terminal type: %s' % term ) error( 'invalid terminal type: %s' % term )
return return
if not node.execed: if not node.execed:
node.cmd( 'screen -dmS ' + node.name) node.cmd( 'screen -dmS ' + node.name)
#cmd += [ 'screen', '-D', '-RR', '-S', node.name ] args = [ 'screen', '-D', '-RR', '-S', 'mininet.' + node.name ]
else:
args = [ 'sh', '-c', 'exec tail -f /tmp/' + node.name + '*.log' ]
if term == 'gterm':
# Compress these for gnome-terminal, which expects one token to follow # Compress these for gnome-terminal, which expects one token to follow
# the -e option . # the -e option .
cmd += [ 'screen -D -RR -S ' + node.name ] args = joinCmd( args )
else: return Popen( cmds[ term ] + args )
cmd += [ 'sh', '-c', 'exec tail -f /tmp/' + node.name + '*.log' ]
return Popen( cmd )
def cleanUpScreens(): def cleanUpScreens():
"Remove moldy old screen sessions." "Remove moldy old screen sessions."
r = r'(\d+.[hsc]\d+)' r = r'(\d+which .[hsc]\d+)'
output = quietRun( 'screen -ls' ).split( '\n' ) output = quietRun( 'screen -ls' ).split( '\n' )
for line in output: for line in output:
m = re.search( r, line ) m = re.search( r, line )
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment