daemon: updated core.services to avoid using deprecated type hinting, also updated string formatting to f strings

This commit is contained in:
Blake Harnden 2023-04-13 15:39:40 -07:00
parent 7f58224f43
commit 921bfdf527
11 changed files with 435 additions and 500 deletions

View file

@ -2,7 +2,7 @@
nrl.py: defines services provided by NRL protolib tools hosted here:
http://www.nrl.navy.mil/itd/ncs/products
"""
from typing import Optional, Tuple
from typing import Optional
from core import utils
from core.nodes.base import CoreNode
@ -33,29 +33,29 @@ class NrlService(CoreService):
ip4 = iface.get_ip4()
if ip4:
return f"{ip4.ip}/{prefixlen}"
return "0.0.0.0/%s" % prefixlen
return f"0.0.0.0/{prefixlen}"
class MgenSinkService(NrlService):
name: str = "MGEN_Sink"
executables: Tuple[str, ...] = ("mgen",)
configs: Tuple[str, ...] = ("sink.mgen",)
startup: Tuple[str, ...] = ("mgen input sink.mgen",)
validate: Tuple[str, ...] = ("pidof mgen",)
shutdown: Tuple[str, ...] = ("killall mgen",)
executables: tuple[str, ...] = ("mgen",)
configs: tuple[str, ...] = ("sink.mgen",)
startup: tuple[str, ...] = ("mgen input sink.mgen",)
validate: tuple[str, ...] = ("pidof mgen",)
shutdown: tuple[str, ...] = ("killall mgen",)
@classmethod
def generate_config(cls, node: CoreNode, filename: str) -> str:
cfg = "0.0 LISTEN UDP 5000\n"
for iface in node.get_ifaces():
name = utils.sysctl_devname(iface.name)
cfg += "0.0 Join 224.225.1.2 INTERFACE %s\n" % name
cfg += f"0.0 Join 224.225.1.2 INTERFACE {name}\n"
return cfg
@classmethod
def get_startup(cls, node: CoreNode) -> Tuple[str, ...]:
def get_startup(cls, node: CoreNode) -> tuple[str, ...]:
cmd = cls.startup[0]
cmd += " output /tmp/mgen_%s.log" % node.name
cmd += f" output /tmp/mgen_{node.name}.log"
return (cmd,)
@ -65,23 +65,23 @@ class NrlNhdp(NrlService):
"""
name: str = "NHDP"
executables: Tuple[str, ...] = ("nrlnhdp",)
startup: Tuple[str, ...] = ("nrlnhdp",)
shutdown: Tuple[str, ...] = ("killall nrlnhdp",)
validate: Tuple[str, ...] = ("pidof nrlnhdp",)
executables: tuple[str, ...] = ("nrlnhdp",)
startup: tuple[str, ...] = ("nrlnhdp",)
shutdown: tuple[str, ...] = ("killall nrlnhdp",)
validate: tuple[str, ...] = ("pidof nrlnhdp",)
@classmethod
def get_startup(cls, node: CoreNode) -> Tuple[str, ...]:
def get_startup(cls, node: CoreNode) -> tuple[str, ...]:
"""
Generate the appropriate command-line based on node interfaces.
"""
cmd = cls.startup[0]
cmd += " -l /var/log/nrlnhdp.log"
cmd += " -rpipe %s_nhdp" % node.name
cmd += f" -rpipe {node.name}_nhdp"
servicenames = map(lambda x: x.name, node.services)
if "SMF" in servicenames:
cmd += " -flooding ecds"
cmd += " -smfClient %s_smf" % node.name
cmd += f" -smfClient {node.name}_smf"
ifaces = node.get_ifaces(control=False)
if len(ifaces) > 0:
iface_names = map(lambda x: x.name, ifaces)
@ -96,11 +96,11 @@ class NrlSmf(NrlService):
"""
name: str = "SMF"
executables: Tuple[str, ...] = ("nrlsmf",)
startup: Tuple[str, ...] = ("bash startsmf.sh",)
shutdown: Tuple[str, ...] = ("killall nrlsmf",)
validate: Tuple[str, ...] = ("pidof nrlsmf",)
configs: Tuple[str, ...] = ("startsmf.sh",)
executables: tuple[str, ...] = ("nrlsmf",)
startup: tuple[str, ...] = ("bash startsmf.sh",)
shutdown: tuple[str, ...] = ("killall nrlsmf",)
validate: tuple[str, ...] = ("pidof nrlsmf",)
configs: tuple[str, ...] = ("startsmf.sh",)
@classmethod
def generate_config(cls, node: CoreNode, filename: str) -> str:
@ -112,7 +112,7 @@ class NrlSmf(NrlService):
cfg = "#!/bin/sh\n"
cfg += "# auto-generated by nrl.py:NrlSmf.generateconfig()\n"
comments = ""
cmd = "nrlsmf instance %s_smf" % node.name
cmd = f"nrlsmf instance {node.name}_smf"
servicenames = map(lambda x: x.name, node.services)
ifaces = node.get_ifaces(control=False)
@ -142,13 +142,13 @@ class NrlOlsr(NrlService):
"""
name: str = "OLSR"
executables: Tuple[str, ...] = ("nrlolsrd",)
startup: Tuple[str, ...] = ("nrlolsrd",)
shutdown: Tuple[str, ...] = ("killall nrlolsrd",)
validate: Tuple[str, ...] = ("pidof nrlolsrd",)
executables: tuple[str, ...] = ("nrlolsrd",)
startup: tuple[str, ...] = ("nrlolsrd",)
shutdown: tuple[str, ...] = ("killall nrlolsrd",)
validate: tuple[str, ...] = ("pidof nrlolsrd",)
@classmethod
def get_startup(cls, node: CoreNode) -> Tuple[str, ...]:
def get_startup(cls, node: CoreNode) -> tuple[str, ...]:
"""
Generate the appropriate command-line based on node interfaces.
"""
@ -157,13 +157,13 @@ class NrlOlsr(NrlService):
ifaces = node.get_ifaces()
if len(ifaces) > 0:
iface = ifaces[0]
cmd += " -i %s" % iface.name
cmd += f" -i {iface.name}"
cmd += " -l /var/log/nrlolsrd.log"
cmd += " -rpipe %s_olsr" % node.name
cmd += f" -rpipe {node.name}_olsr"
servicenames = map(lambda x: x.name, node.services)
if "SMF" in servicenames and "NHDP" not in servicenames:
cmd += " -flooding s-mpr"
cmd += " -smfClient %s_smf" % node.name
cmd += f" -smfClient {node.name}_smf"
if "zebra" in servicenames:
cmd += " -z"
return (cmd,)
@ -175,23 +175,23 @@ class NrlOlsrv2(NrlService):
"""
name: str = "OLSRv2"
executables: Tuple[str, ...] = ("nrlolsrv2",)
startup: Tuple[str, ...] = ("nrlolsrv2",)
shutdown: Tuple[str, ...] = ("killall nrlolsrv2",)
validate: Tuple[str, ...] = ("pidof nrlolsrv2",)
executables: tuple[str, ...] = ("nrlolsrv2",)
startup: tuple[str, ...] = ("nrlolsrv2",)
shutdown: tuple[str, ...] = ("killall nrlolsrv2",)
validate: tuple[str, ...] = ("pidof nrlolsrv2",)
@classmethod
def get_startup(cls, node: CoreNode) -> Tuple[str, ...]:
def get_startup(cls, node: CoreNode) -> tuple[str, ...]:
"""
Generate the appropriate command-line based on node interfaces.
"""
cmd = cls.startup[0]
cmd += " -l /var/log/nrlolsrv2.log"
cmd += " -rpipe %s_olsrv2" % node.name
cmd += f" -rpipe {node.name}_olsrv2"
servicenames = map(lambda x: x.name, node.services)
if "SMF" in servicenames:
cmd += " -flooding ecds"
cmd += " -smfClient %s_smf" % node.name
cmd += f" -smfClient {node.name}_smf"
cmd += " -p olsr"
ifaces = node.get_ifaces(control=False)
if len(ifaces) > 0:
@ -207,15 +207,15 @@ class OlsrOrg(NrlService):
"""
name: str = "OLSRORG"
executables: Tuple[str, ...] = ("olsrd",)
configs: Tuple[str, ...] = ("/etc/olsrd/olsrd.conf",)
dirs: Tuple[str, ...] = ("/etc/olsrd",)
startup: Tuple[str, ...] = ("olsrd",)
shutdown: Tuple[str, ...] = ("killall olsrd",)
validate: Tuple[str, ...] = ("pidof olsrd",)
executables: tuple[str, ...] = ("olsrd",)
configs: tuple[str, ...] = ("/etc/olsrd/olsrd.conf",)
dirs: tuple[str, ...] = ("/etc/olsrd",)
startup: tuple[str, ...] = ("olsrd",)
shutdown: tuple[str, ...] = ("killall olsrd",)
validate: tuple[str, ...] = ("pidof olsrd",)
@classmethod
def get_startup(cls, node: CoreNode) -> Tuple[str, ...]:
def get_startup(cls, node: CoreNode) -> tuple[str, ...]:
"""
Generate the appropriate command-line based on node interfaces.
"""
@ -558,11 +558,11 @@ class MgenActor(NrlService):
# a unique name is required, without spaces
name: str = "MgenActor"
group: str = "ProtoSvc"
executables: Tuple[str, ...] = ("mgen",)
configs: Tuple[str, ...] = ("start_mgen_actor.sh",)
startup: Tuple[str, ...] = ("bash start_mgen_actor.sh",)
validate: Tuple[str, ...] = ("pidof mgen",)
shutdown: Tuple[str, ...] = ("killall mgen",)
executables: tuple[str, ...] = ("mgen",)
configs: tuple[str, ...] = ("start_mgen_actor.sh",)
startup: tuple[str, ...] = ("bash start_mgen_actor.sh",)
validate: tuple[str, ...] = ("pidof mgen",)
shutdown: tuple[str, ...] = ("killall mgen",)
@classmethod
def generate_config(cls, node: CoreNode, filename: str) -> str:
@ -574,7 +574,7 @@ class MgenActor(NrlService):
cfg = "#!/bin/sh\n"
cfg += "# auto-generated by nrl.py:MgenActor.generateconfig()\n"
comments = ""
cmd = "mgenBasicActor.py -n %s -a 0.0.0.0" % node.name
cmd = f"mgenBasicActor.py -n {node.name} -a 0.0.0.0"
ifaces = node.get_ifaces(control=False)
if len(ifaces) == 0:
return ""