mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-15 09:20:25 +00:00
Merge pull request #13594 from LabNConsulting/chopps/uniconfig
tests: cleanup unified config and config arg
This commit is contained in:
commit
91ac217356
@ -798,23 +798,23 @@ class TopoRouter(TopoGear):
|
|||||||
Start the daemons in the list
|
Start the daemons in the list
|
||||||
If daemons is None, try to infer daemons from the config file
|
If daemons is None, try to infer daemons from the config file
|
||||||
"""
|
"""
|
||||||
self.load_config(self.RD_FRR, source)
|
source_path = self.load_config(self.RD_FRR, source)
|
||||||
if not daemons:
|
if not daemons:
|
||||||
# Always add zebra
|
# Always add zebra
|
||||||
self.load_config(self.RD_ZEBRA)
|
self.load_config(self.RD_ZEBRA, "")
|
||||||
for daemon in self.RD:
|
for daemon in self.RD:
|
||||||
# This will not work for all daemons
|
# This will not work for all daemons
|
||||||
daemonstr = self.RD.get(daemon).rstrip("d")
|
daemonstr = self.RD.get(daemon).rstrip("d")
|
||||||
if daemonstr == "pim":
|
if daemonstr == "pim":
|
||||||
grep_cmd = "grep 'ip {}' {}".format(daemonstr, source)
|
grep_cmd = "grep 'ip {}' {}".format(daemonstr, source_path)
|
||||||
else:
|
else:
|
||||||
grep_cmd = "grep 'router {}' {}".format(daemonstr, source)
|
grep_cmd = "grep 'router {}' {}".format(daemonstr, source_path)
|
||||||
result = self.run(grep_cmd, warn=False).strip()
|
result = self.run(grep_cmd, warn=False).strip()
|
||||||
if result:
|
if result:
|
||||||
self.load_config(daemon)
|
self.load_config(daemon, "")
|
||||||
else:
|
else:
|
||||||
for daemon in daemons:
|
for daemon in daemons:
|
||||||
self.load_config(daemon)
|
self.load_config(daemon, "")
|
||||||
|
|
||||||
def load_config(self, daemon, source=None, param=None):
|
def load_config(self, daemon, source=None, param=None):
|
||||||
"""Loads daemon configuration from the specified source
|
"""Loads daemon configuration from the specified source
|
||||||
@ -833,7 +833,7 @@ class TopoRouter(TopoGear):
|
|||||||
"""
|
"""
|
||||||
daemonstr = self.RD.get(daemon)
|
daemonstr = self.RD.get(daemon)
|
||||||
self.logger.debug('loading "{}" configuration: {}'.format(daemonstr, source))
|
self.logger.debug('loading "{}" configuration: {}'.format(daemonstr, source))
|
||||||
self.net.loadConf(daemonstr, source, param)
|
return self.net.loadConf(daemonstr, source, param)
|
||||||
|
|
||||||
def check_router_running(self):
|
def check_router_running(self):
|
||||||
"""
|
"""
|
||||||
|
@ -1527,9 +1527,11 @@ class Router(Node):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
# Unfortunately this API allowsfor source to not exist for any and all routers.
|
# Unfortunately this API allowsfor source to not exist for any and all routers.
|
||||||
if source is None:
|
source_was_none = source is None
|
||||||
|
if source_was_none:
|
||||||
source = f"{daemon}.conf"
|
source = f"{daemon}.conf"
|
||||||
|
|
||||||
|
# "" to avoid loading a default config which is present in router dir
|
||||||
if source:
|
if source:
|
||||||
head, tail = os.path.split(source)
|
head, tail = os.path.split(source)
|
||||||
if not head and not self.path_exists(tail):
|
if not head and not self.path_exists(tail):
|
||||||
@ -1550,18 +1552,40 @@ class Router(Node):
|
|||||||
if param is not None:
|
if param is not None:
|
||||||
self.daemons_options[daemon] = param
|
self.daemons_options[daemon] = param
|
||||||
conf_file = "/etc/{}/{}.conf".format(self.routertype, daemon)
|
conf_file = "/etc/{}/{}.conf".format(self.routertype, daemon)
|
||||||
if source is None or not os.path.exists(source):
|
if source and not os.path.exists(source):
|
||||||
|
logger.warn(
|
||||||
|
"missing config '%s' for '%s' creating empty file '%s'",
|
||||||
|
self.name,
|
||||||
|
source,
|
||||||
|
conf_file,
|
||||||
|
)
|
||||||
if daemon == "frr" or not self.unified_config:
|
if daemon == "frr" or not self.unified_config:
|
||||||
self.cmd_raises("rm -f " + conf_file)
|
self.cmd_raises("rm -f " + conf_file)
|
||||||
self.cmd_raises("touch " + conf_file)
|
self.cmd_raises("touch " + conf_file)
|
||||||
else:
|
self.cmd_raises(
|
||||||
|
"chown {0}:{0} {1}".format(self.routertype, conf_file)
|
||||||
|
)
|
||||||
|
self.cmd_raises("chmod 664 {}".format(conf_file))
|
||||||
|
elif source:
|
||||||
# copy zebra.conf to mgmtd folder, which can be used during startup
|
# copy zebra.conf to mgmtd folder, which can be used during startup
|
||||||
if daemon == "zebra":
|
if daemon == "zebra" and not self.unified_config:
|
||||||
conf_file_mgmt = "/etc/{}/{}.conf".format(self.routertype, "mgmtd")
|
conf_file_mgmt = "/etc/{}/{}.conf".format(self.routertype, "mgmtd")
|
||||||
|
logger.debug(
|
||||||
|
"copying '%s' as '%s' on '%s'",
|
||||||
|
source,
|
||||||
|
conf_file_mgmt,
|
||||||
|
self.name,
|
||||||
|
)
|
||||||
self.cmd_raises("cp {} {}".format(source, conf_file_mgmt))
|
self.cmd_raises("cp {} {}".format(source, conf_file_mgmt))
|
||||||
self.cmd_raises("cp {} {}".format(source, conf_file))
|
self.cmd_raises(
|
||||||
|
"chown {0}:{0} {1}".format(self.routertype, conf_file_mgmt)
|
||||||
|
)
|
||||||
|
self.cmd_raises("chmod 664 {}".format(conf_file_mgmt))
|
||||||
|
|
||||||
if not (self.unified_config or daemon == "frr"):
|
logger.debug(
|
||||||
|
"copying '%s' as '%s' on '%s'", source, conf_file, self.name
|
||||||
|
)
|
||||||
|
self.cmd_raises("cp {} {}".format(source, conf_file))
|
||||||
self.cmd_raises("chown {0}:{0} {1}".format(self.routertype, conf_file))
|
self.cmd_raises("chown {0}:{0} {1}".format(self.routertype, conf_file))
|
||||||
self.cmd_raises("chmod 664 {}".format(conf_file))
|
self.cmd_raises("chmod 664 {}".format(conf_file))
|
||||||
|
|
||||||
@ -1588,7 +1612,8 @@ class Router(Node):
|
|||||||
|
|
||||||
else:
|
else:
|
||||||
logger.warning("No daemon {} known".format(daemon))
|
logger.warning("No daemon {} known".format(daemon))
|
||||||
# print "Daemons after:", self.daemons
|
|
||||||
|
return source if os.path.exists(source) else ""
|
||||||
|
|
||||||
def runInWindow(self, cmd, title=None):
|
def runInWindow(self, cmd, title=None):
|
||||||
return self.run_in_window(cmd, title)
|
return self.run_in_window(cmd, title)
|
||||||
|
Loading…
Reference in New Issue
Block a user