Merge pull request #4502 from opensourcerouting/topotest-backward-compat

topotests: backward compatibility fix
This commit is contained in:
Donald Sharp 2019-06-13 09:19:02 -04:00 committed by GitHub
commit 6a81b60a94
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -38,6 +38,11 @@ import time
from lib.topolog import logger from lib.topolog import logger
if sys.version_info[0] > 2:
import configparser
else:
import ConfigParser as configparser
from mininet.topo import Topo from mininet.topo import Topo
from mininet.net import Mininet from mininet.net import Mininet
from mininet.node import Node, OVSSwitch, Host from mininet.node import Node, OVSSwitch, Host
@ -624,6 +629,20 @@ class Router(Node):
super(Router, self).__init__(name, **params) super(Router, self).__init__(name, **params)
self.logdir = params.get('logdir') self.logdir = params.get('logdir')
# Backward compatibility:
# Load configuration defaults like topogen.
self.config_defaults = configparser.ConfigParser({
'verbosity': 'info',
'frrdir': '/usr/lib/frr',
'quaggadir': '/usr/lib/quagga',
'routertype': 'frr',
'memleak_path': None,
})
self.config_defaults.read(
os.path.join(os.path.dirname(os.path.realpath(__file__)),
'../pytest.ini')
)
# If this topology is using old API and doesn't have logdir # If this topology is using old API and doesn't have logdir
# specified, then attempt to generate an unique logdir. # specified, then attempt to generate an unique logdir.
if self.logdir is None: if self.logdir is None:
@ -652,7 +671,7 @@ class Router(Node):
"Configure FRR binaries" "Configure FRR binaries"
self.daemondir = params.get('frrdir') self.daemondir = params.get('frrdir')
if self.daemondir is None: if self.daemondir is None:
self.daemondir = '/usr/lib/frr' self.daemondir = self.config_defaults.get('topogen', 'frrdir')
zebra_path = os.path.join(self.daemondir, 'zebra') zebra_path = os.path.join(self.daemondir, 'zebra')
if not os.path.isfile(zebra_path): if not os.path.isfile(zebra_path):
@ -662,7 +681,7 @@ class Router(Node):
"Configure Quagga binaries" "Configure Quagga binaries"
self.daemondir = params.get('quaggadir') self.daemondir = params.get('quaggadir')
if self.daemondir is None: if self.daemondir is None:
self.daemondir = '/usr/lib/quagga' self.daemondir = self.config_defaults.get('topogen', 'quaggadir')
zebra_path = os.path.join(self.daemondir, 'zebra') zebra_path = os.path.join(self.daemondir, 'zebra')
if not os.path.isfile(zebra_path): if not os.path.isfile(zebra_path):
@ -676,7 +695,10 @@ class Router(Node):
# User did not specify the daemons directory, try to autodetect it. # User did not specify the daemons directory, try to autodetect it.
self.daemondir = params.get('daemondir') self.daemondir = params.get('daemondir')
if self.daemondir is None: if self.daemondir is None:
self.routertype = params.get('routertype', 'frr') self.routertype = params.get('routertype',
self.config_defaults.get(
'topogen',
'routertype'))
if self.routertype == 'quagga': if self.routertype == 'quagga':
self._config_quagga(**params) self._config_quagga(**params)
else: else:
@ -688,7 +710,7 @@ class Router(Node):
raise Exception('No zebra binary found in {}'.format(zpath)) raise Exception('No zebra binary found in {}'.format(zpath))
# Allow user to specify routertype when the path was specified. # Allow user to specify routertype when the path was specified.
if params.get('routertype') is not None: if params.get('routertype') is not None:
self.routertype = self.params.get('routertype') self.routertype = params.get('routertype')
self.cmd('ulimit -c unlimited') self.cmd('ulimit -c unlimited')
# Set ownership of config files # Set ownership of config files