topotests: backward compatibility fix

Allow old topologies to use default parameters from `pytest.ini`.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
This commit is contained in:
Rafael Zalamena 2019-06-11 13:53:13 -03:00
parent 6aba4eeaec
commit 04ce2b970e

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