updates to python based logging to use module named loggers, updated logging config file to align with these changes

This commit is contained in:
Blake Harnden 2021-04-21 21:09:35 -07:00
parent 55d5bb3859
commit 69652ac577
63 changed files with 717 additions and 606 deletions

View file

@ -34,6 +34,8 @@ from core.nodes.base import CoreNetworkBase, CoreNode, CoreNodeBase, NodeBase
from core.nodes.interface import CoreInterface, TunTap
from core.xml import emanexml
logger = logging.getLogger(__name__)
if TYPE_CHECKING:
from core.emulator.session import Session
@ -51,7 +53,7 @@ except ImportError:
LocationEvent = None
PathlossEvent = None
EventServiceException = None
logging.debug("compatible emane python bindings not installed")
logger.debug("compatible emane python bindings not installed")
EMANE_MODELS = [
EmaneRfPipeModel,
@ -174,11 +176,11 @@ class EmaneManager(ModelManager):
# check for emane
path = utils.which("emane", required=False)
if not path:
logging.info("emane is not installed")
logger.info("emane is not installed")
return
# get version
emane_version = utils.cmd("emane --version")
logging.info("using emane: %s", emane_version)
logger.info("using emane: %s", emane_version)
# load default emane models
self.load_models(EMANE_MODELS)
# load custom models
@ -214,7 +216,7 @@ class EmaneManager(ModelManager):
self.event_device = self.get_config("eventservicedevice")
eventnetidx = self.session.get_control_net_index(self.event_device)
if eventnetidx < 0:
logging.error(
logger.error(
"invalid emane event service device provided: %s", self.event_device
)
return
@ -230,18 +232,18 @@ class EmaneManager(ModelManager):
# disabled otachannel for event service
# only needed for e.g. antennaprofile events xmit by models
logging.info("using %s for event service traffic", self.event_device)
logger.info("using %s for event service traffic", self.event_device)
try:
self.service = EventService(eventchannel=self.eventchannel, otachannel=None)
except EventServiceException:
logging.exception("error instantiating emane EventService")
logger.exception("error instantiating emane EventService")
def load_models(self, emane_models: List[Type[EmaneModel]]) -> None:
"""
Load EMANE models and make them available.
"""
for emane_model in emane_models:
logging.debug("loading emane model: %s", emane_model.__name__)
logger.debug("loading emane model: %s", emane_model.__name__)
emane_prefix = self.session.options.get_config(
"emane_prefix", default=DEFAULT_EMANE_PREFIX
)
@ -281,17 +283,17 @@ class EmaneManager(ModelManager):
:return: SUCCESS, NOT_NEEDED, NOT_READY in order to delay session
instantiation
"""
logging.debug("emane setup")
logger.debug("emane setup")
with self.session.nodes_lock:
for node_id in self.session.nodes:
node = self.session.nodes[node_id]
if isinstance(node, EmaneNet):
logging.debug(
logger.debug(
"adding emane node: id(%s) name(%s)", node.id, node.name
)
self.add_node(node)
if not self._emane_nets:
logging.debug("no emane nodes in session")
logger.debug("no emane nodes in session")
return EmaneState.NOT_NEEDED
# check if bindings were installed
@ -302,9 +304,9 @@ class EmaneManager(ModelManager):
# - needs to exist when eventservice binds to it (initeventservice)
otadev = self.get_config("otamanagerdevice")
netidx = self.session.get_control_net_index(otadev)
logging.debug("emane ota manager device: index(%s) otadev(%s)", netidx, otadev)
logger.debug("emane ota manager device: index(%s) otadev(%s)", netidx, otadev)
if netidx < 0:
logging.error(
logger.error(
"EMANE cannot start, check core config. invalid OTA device provided: %s",
otadev,
)
@ -314,12 +316,12 @@ class EmaneManager(ModelManager):
net_index=netidx, remove=False, conf_required=False
)
eventdev = self.get_config("eventservicedevice")
logging.debug("emane event service device: eventdev(%s)", eventdev)
logger.debug("emane event service device: eventdev(%s)", eventdev)
if eventdev != otadev:
netidx = self.session.get_control_net_index(eventdev)
logging.debug("emane event service device index: %s", netidx)
logger.debug("emane event service device index: %s", netidx)
if netidx < 0:
logging.error(
logger.error(
"emane cannot start due to invalid event service device: %s",
eventdev,
)
@ -346,7 +348,7 @@ class EmaneManager(ModelManager):
self.starteventmonitor()
self.buildeventservicexml()
with self._emane_node_lock:
logging.info("emane building xmls...")
logger.info("emane building xmls...")
start_data = self.get_start_data()
for data in start_data:
self.start_node(data)
@ -359,11 +361,11 @@ class EmaneManager(ModelManager):
for node_id in sorted(self._emane_nets):
emane_net = self._emane_nets[node_id]
if not emane_net.model:
logging.error("emane net(%s) has no model", emane_net.name)
logger.error("emane net(%s) has no model", emane_net.name)
continue
for iface in emane_net.get_ifaces():
if not iface.node:
logging.error(
logger.error(
"emane net(%s) connected interface(%s) missing node",
emane_net.name,
iface.name,
@ -403,7 +405,7 @@ class EmaneManager(ModelManager):
with path.open("a") as f:
f.write(f"{iface.node.name} {iface.name} {nem_id}\n")
except IOError:
logging.exception("error writing to emane nem file")
logger.exception("error writing to emane nem file")
def links_enabled(self) -> bool:
return self.get_config("link_enabled") == "1"
@ -417,7 +419,7 @@ class EmaneManager(ModelManager):
with self._emane_node_lock:
for node_id in sorted(self._emane_nets):
emane_net = self._emane_nets[node_id]
logging.debug(
logger.debug(
"post startup for emane node: %s - %s", emane_net.id, emane_net.name
)
emane_net.model.post_startup()
@ -441,7 +443,7 @@ class EmaneManager(ModelManager):
with self._emane_node_lock:
if not self._emane_nets:
return
logging.info("stopping EMANE daemons")
logger.info("stopping EMANE daemons")
if self.links_enabled():
self.link_monitor.stop()
# shutdown interfaces and stop daemons
@ -467,11 +469,11 @@ class EmaneManager(ModelManager):
"""
for node_id in self._emane_nets:
emane_net = self._emane_nets[node_id]
logging.debug("checking emane model for node: %s", node_id)
logger.debug("checking emane model for node: %s", node_id)
# skip nodes that already have a model set
if emane_net.model:
logging.debug(
logger.debug(
"node(%s) already has model(%s)", emane_net.id, emane_net.model.name
)
continue
@ -480,11 +482,11 @@ class EmaneManager(ModelManager):
# before nodes exist
model_name = self.node_models.get(node_id)
if not model_name:
logging.error("emane node(%s) has no node model", node_id)
logger.error("emane node(%s) has no node model", node_id)
raise ValueError("emane node has no model set")
config = self.get_model_config(node_id=node_id, model_name=model_name)
logging.debug("setting emane model(%s) config(%s)", model_name, config)
logger.debug("setting emane model(%s) config(%s)", model_name, config)
model_class = self.models[model_name]
emane_net.setmodel(model_class, config)
@ -493,12 +495,12 @@ class EmaneManager(ModelManager):
) -> Optional[LinkData]:
iface1 = self.get_iface(nem1)
if not iface1:
logging.error("invalid nem: %s", nem1)
logger.error("invalid nem: %s", nem1)
return None
node1 = iface1.node
iface2 = self.get_iface(nem2)
if not iface2:
logging.error("invalid nem: %s", nem2)
logger.error("invalid nem: %s", nem2)
return None
node2 = iface2.node
if iface1.net != iface2.net:
@ -535,7 +537,7 @@ class EmaneManager(ModelManager):
try:
group, port = self.get_config("eventservicegroup").split(":")
except ValueError:
logging.exception("invalid eventservicegroup in EMANE config")
logger.exception("invalid eventservicegroup in EMANE config")
return
dev = self.get_config("eventservicedevice")
@ -551,12 +553,12 @@ class EmaneManager(ModelManager):
Start one EMANE daemon per node having a radio.
Add a control network even if the user has not configured one.
"""
logging.info("starting emane daemons...")
logger.info("starting emane daemons...")
loglevel = str(EmaneManager.DEFAULT_LOG_LEVEL)
cfgloglevel = self.session.options.get_config_int("emane_log_level")
realtime = self.session.options.get_config_bool("emane_realtime", default=True)
if cfgloglevel:
logging.info("setting user-defined emane log level: %d", cfgloglevel)
logger.info("setting user-defined emane log level: %d", cfgloglevel)
loglevel = str(cfgloglevel)
emanecmd = f"emane -d -l {loglevel}"
if realtime:
@ -574,17 +576,17 @@ class EmaneManager(ModelManager):
node, 0, remove=False, conf_required=False
)
if otanetidx > 0:
logging.info("adding ota device ctrl%d", otanetidx)
logger.info("adding ota device ctrl%d", otanetidx)
self.session.add_remove_control_iface(
node, otanetidx, remove=False, conf_required=False
)
if eventservicenetidx >= 0:
logging.info("adding event service device ctrl%d", eventservicenetidx)
logger.info("adding event service device ctrl%d", eventservicenetidx)
self.session.add_remove_control_iface(
node, eventservicenetidx, remove=False, conf_required=False
)
# multicast route is needed for OTA data
logging.info("OTA GROUP(%s) OTA DEV(%s)", otagroup, otadev)
logger.info("OTA GROUP(%s) OTA DEV(%s)", otagroup, otadev)
node.node_net_client.create_route(otagroup, otadev)
# multicast route is also needed for event data if on control network
if eventservicenetidx >= 0 and eventgroup != otagroup:
@ -594,13 +596,13 @@ class EmaneManager(ModelManager):
platform_xml = node.directory / f"{node.name}-platform.xml"
args = f"{emanecmd} -f {log_file} {platform_xml}"
node.cmd(args)
logging.info("node(%s) emane daemon running: %s", node.name, args)
logger.info("node(%s) emane daemon running: %s", node.name, args)
else:
log_file = self.session.directory / f"{node.name}-emane.log"
platform_xml = self.session.directory / f"{node.name}-platform.xml"
args = f"{emanecmd} -f {log_file} {platform_xml}"
node.host_cmd(args, cwd=self.session.directory)
logging.info("node(%s) host emane daemon running: %s", node.name, args)
logger.info("node(%s) host emane daemon running: %s", node.name, args)
def install_iface(self, iface: CoreInterface) -> None:
emane_net = iface.net
@ -641,11 +643,11 @@ class EmaneManager(ModelManager):
"""
Start monitoring EMANE location events if configured to do so.
"""
logging.info("emane start event monitor")
logger.info("emane start event monitor")
if not self.doeventmonitor():
return
if self.service is None:
logging.error(
logger.error(
"Warning: EMANE events will not be generated "
"because the emaneeventservice\n binding was "
"unable to load "
@ -678,7 +680,7 @@ class EmaneManager(ModelManager):
"""
if self.service is None:
return
logging.info(
logger.info(
"subscribing to EMANE location events. (%s)",
threading.currentThread().getName(),
)
@ -694,7 +696,7 @@ class EmaneManager(ModelManager):
if eid == LocationEvent.IDENTIFIER:
self.handlelocationevent(nem, eid, data)
logging.info(
logger.info(
"unsubscribing from EMANE location events. (%s)",
threading.currentThread().getName(),
)
@ -712,14 +714,14 @@ class EmaneManager(ModelManager):
or "longitude" not in attrs
or "altitude" not in attrs
):
logging.warning("dropped invalid location event")
logger.warning("dropped invalid location event")
continue
# yaw,pitch,roll,azimuth,elevation,velocity are unhandled
lat = attrs["latitude"]
lon = attrs["longitude"]
alt = attrs["altitude"]
logging.debug("emane location event: %s,%s,%s", lat, lon, alt)
logger.debug("emane location event: %s,%s,%s", lat, lon, alt)
self.handlelocationeventtoxyz(txnemid, lat, lon, alt)
def handlelocationeventtoxyz(
@ -733,7 +735,7 @@ class EmaneManager(ModelManager):
# convert nemid to node number
iface = self.get_iface(nemid)
if iface is None:
logging.info("location event for unknown NEM %s", nemid)
logger.info("location event for unknown NEM %s", nemid)
return False
n = iface.node.id
@ -742,7 +744,7 @@ class EmaneManager(ModelManager):
x = int(x)
y = int(y)
z = int(z)
logging.debug(
logger.debug(
"location event NEM %s (%s, %s, %s) -> (%s, %s, %s)",
nemid,
lat,
@ -756,7 +758,7 @@ class EmaneManager(ModelManager):
ybit_check = y.bit_length() > 16 or y < 0
zbit_check = z.bit_length() > 16 or z < 0
if any([xbit_check, ybit_check, zbit_check]):
logging.error(
logger.error(
"Unable to build node location message, received lat/long/alt "
"exceeds coordinate space: NEM %s (%d, %d, %d)",
nemid,
@ -770,7 +772,7 @@ class EmaneManager(ModelManager):
try:
node = self.session.get_node(n, NodeBase)
except CoreError:
logging.exception(
logger.exception(
"location event NEM %s has no corresponding node %s", nemid, n
)
return False