Skip to content
Snippets Groups Projects
Commit 93fdb69e authored by cody burkard's avatar cody burkard
Browse files

standardize on localhost for local server's name

parent 820c3be7
No related branches found
No related tags found
No related merge requests found
......@@ -112,7 +112,7 @@ class RemoteMixin( object ):
'-o', 'BatchMode=yes',
'-o', 'ForwardAgent=yes', '-tt' ]
def __init__( self, name, server=None, user=None, serverIP=None,
def __init__( self, name, server='localhost', user=None, serverIP=None,
controlPath='/tmp/mn-%r@%h:%p', splitInit=False, **kwargs):
"""Instantiate a remote node
name: name of remote node
......@@ -122,18 +122,18 @@ def __init__( self, name, server=None, user=None, serverIP=None,
splitInit: split initialization?
**kwargs: see Node()"""
# We connect to servers by IP address
if server == 'localhost':
server = None
self.server = server
self.serverIP = serverIP if serverIP else self.findServerIP( server )
self.server = server if server else 'localhost'
self.serverIP = serverIP if serverIP else self.findServerIP( self.server )
self.user = user if user else self.findUser()
if self.user and self.server:
if self.user and self.server != 'localhost':
self.dest = '%s@%s' % ( self.user, self.serverIP )
self.isRemote = True
else:
self.isRemote = False
self.dest = None
self.controlPath = controlPath
self.sshcmd = []
if self.dest:
if hasattr( self, 'server' ) and self.isRemote:
self.sshcmd = [ 'sudo', '-E', '-u', self.user ] + self.sshbase
if self.controlPath:
self.sshcmd += [ '-o', 'ControlPath=' + self.controlPath,
......@@ -160,20 +160,14 @@ def findUser():
_ipMatchRegex = re.compile( r'\d+\.\d+\.\d+\.\d+' )
@classmethod
def findServerIP( cls, server, intf='eth0' ):
def findServerIP( cls, server ):
"Return our server's IP address"
# Check for this server
if not server:
output = quietRun( 'ifconfig %s' % intf )
# Otherwise, handle remote server
else:
# First, check for an IP address
if server:
ipmatch = cls._ipMatchRegex.findall( server )
if ipmatch:
return ipmatch[ 0 ]
# Otherwise, look up remote server
output = quietRun( 'getent ahostsv4 %s' % server )
# First, check for an IP address
ipmatch = cls._ipMatchRegex.findall( server )
if ipmatch:
return ipmatch[ 0 ]
# Otherwise, look up remote server
output = quietRun( 'getent ahostsv4 %s' % server )
ips = cls._ipMatchRegex.findall( output )
ip = ips[ 0 ] if ips else None
return ip
......@@ -181,7 +175,7 @@ def findServerIP( cls, server, intf='eth0' ):
# Command support via shell process in namespace
def startShell( self, *args, **kwargs ):
"Start a shell process for running commands"
if self.dest:
if hasattr( self, 'server' ) and self.isRemote:
kwargs.update( mnopts='-c' )
super( RemoteMixin, self ).startShell( *args, **kwargs )
if self.splitInit:
......@@ -231,7 +225,7 @@ def _popen( self, cmd, sudo=True, tt=True, **params):
returns: Popen() object"""
if type( cmd ) is str:
cmd = cmd.split()
if self.dest:
if hasattr( self, 'server' ) and self.isRemote:
if sudo:
cmd = [ 'sudo', '-E' ] + cmd
if tt:
......@@ -312,9 +306,9 @@ def makeIntfPair( self, intfname1, intfname2, addr1=None, addr2=None ):
(override this method [and possibly delete()]
to change link type)"""
node1, node2 = self.node1, self.node2
server1 = getattr( node1, 'server', None )
server2 = getattr( node2, 'server', None )
if not server1 and not server2:
server1 = getattr( node1, 'server', 'localhost' )
server2 = getattr( node2, 'server', 'localhost' )
if server1 == 'localhost' and server2 == 'localhost':
# Local link
return makeIntfPair( intfname1, intfname2, addr1, addr2 )
elif server1 == server2:
......@@ -596,8 +590,8 @@ def __init__( self, *args, **kwargs ):
'link': RemoteLink,
'precheck': True }
params.update( kwargs )
servers = params.pop( 'servers', [ None ] )
servers = [ s if s != 'localhost' else None for s in servers ]
servers = params.pop( 'servers', [ 'localhost' ] )
servers = [ s if s else 'localhost' for s in servers ]
self.servers = servers
self.serverIP = params.pop( 'serverIP', {} )
if not self.serverIP:
......@@ -672,6 +666,9 @@ def placeNodes( self ):
links=self.topo.links() )
for node in nodes:
config = self.topo.node_info[ node ]
# keep local server name consistent accross nodes
if 'server' in config.keys() and config[ 'server' ] == None:
config[ 'server' ] = 'localhost'
server = config.setdefault( 'server', placer.place( node ) )
if server:
config.setdefault( 'serverIP', self.serverIP[ server ] )
......
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