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

@ -55,6 +55,8 @@ from core.nodes.network import WlanNode
from core.nodes.physical import Rj45Node
from core.services.coreservices import ServiceManager, ServiceShim
logger = logging.getLogger(__name__)
class CoreHandler(socketserver.BaseRequestHandler):
"""
@ -104,7 +106,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
:return: nothing
"""
logging.debug("new TCP connection: %s", self.client_address)
logger.debug("new TCP connection: %s", self.client_address)
def finish(self):
"""
@ -113,40 +115,40 @@ class CoreHandler(socketserver.BaseRequestHandler):
:return: nothing
"""
logging.debug("finishing request handler")
logging.debug("remaining message queue size: %s", self.message_queue.qsize())
logger.debug("finishing request handler")
logger.debug("remaining message queue size: %s", self.message_queue.qsize())
# give some time for message queue to deplete
timeout = 10
wait = 0
while not self.message_queue.empty():
logging.debug("waiting for message queue to empty: %s seconds", wait)
logger.debug("waiting for message queue to empty: %s seconds", wait)
time.sleep(1)
wait += 1
if wait == timeout:
logging.warning("queue failed to be empty, finishing request handler")
logger.warning("queue failed to be empty, finishing request handler")
break
logging.info("client disconnected: notifying threads")
logger.info("client disconnected: notifying threads")
self.done = True
for thread in self.handler_threads:
logging.info("waiting for thread: %s", thread.getName())
logger.info("waiting for thread: %s", thread.getName())
thread.join(timeout)
if thread.is_alive():
logging.warning(
logger.warning(
"joining %s failed: still alive after %s sec",
thread.getName(),
timeout,
)
logging.info("connection closed: %s", self.client_address)
logger.info("connection closed: %s", self.client_address)
if self.session:
# remove client from session broker and shutdown if there are no clients
self.remove_session_handlers()
clients = self.session_clients[self.session.id]
clients.remove(self)
if not clients and not self.session.is_active():
logging.info(
logger.info(
"no session clients left and not active, initiating shutdown"
)
self.coreemu.delete_session(self.session.id)
@ -218,7 +220,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
:param core.emulator.data.EventData event_data: event data to handle
:return: nothing
"""
logging.debug("handling broadcast event: %s", event_data)
logger.debug("handling broadcast event: %s", event_data)
tlv_data = structutils.pack_values(
coreapi.CoreEventTlv,
@ -236,7 +238,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
try:
self.sendall(message)
except IOError:
logging.exception("error sending event message")
logger.exception("error sending event message")
def handle_broadcast_file(self, file_data):
"""
@ -245,7 +247,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
:param core.emulator.data.FileData file_data: file data to handle
:return: nothing
"""
logging.debug("handling broadcast file: %s", file_data)
logger.debug("handling broadcast file: %s", file_data)
tlv_data = structutils.pack_values(
coreapi.CoreFileTlv,
@ -266,7 +268,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
try:
self.sendall(message)
except IOError:
logging.exception("error sending file message")
logger.exception("error sending file message")
def handle_broadcast_config(self, config_data):
"""
@ -275,12 +277,12 @@ class CoreHandler(socketserver.BaseRequestHandler):
:param core.emulator.data.ConfigData config_data: config data to handle
:return: nothing
"""
logging.debug("handling broadcast config: %s", config_data)
logger.debug("handling broadcast config: %s", config_data)
message = dataconversion.convert_config(config_data)
try:
self.sendall(message)
except IOError:
logging.exception("error sending config message")
logger.exception("error sending config message")
def handle_broadcast_exception(self, exception_data):
"""
@ -289,7 +291,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
:param core.emulator.data.ExceptionData exception_data: exception data to handle
:return: nothing
"""
logging.debug("handling broadcast exception: %s", exception_data)
logger.debug("handling broadcast exception: %s", exception_data)
tlv_data = structutils.pack_values(
coreapi.CoreExceptionTlv,
[
@ -306,7 +308,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
try:
self.sendall(message)
except IOError:
logging.exception("error sending exception message")
logger.exception("error sending exception message")
def handle_broadcast_node(self, node_data):
"""
@ -315,12 +317,12 @@ class CoreHandler(socketserver.BaseRequestHandler):
:param core.emulator.data.NodeData node_data: node data to handle
:return: nothing
"""
logging.debug("handling broadcast node: %s", node_data)
logger.debug("handling broadcast node: %s", node_data)
message = dataconversion.convert_node(node_data)
try:
self.sendall(message)
except IOError:
logging.exception("error sending node message")
logger.exception("error sending node message")
def handle_broadcast_link(self, link_data):
"""
@ -329,7 +331,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
:param core.emulator.data.LinkData link_data: link data to handle
:return: nothing
"""
logging.debug("handling broadcast link: %s", link_data)
logger.debug("handling broadcast link: %s", link_data)
options_data = link_data.options
loss = ""
if options_data.loss is not None:
@ -381,7 +383,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
try:
self.sendall(message)
except IOError:
logging.exception("error sending Event Message")
logger.exception("error sending Event Message")
def register(self):
"""
@ -389,7 +391,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
:return: register message data
"""
logging.info(
logger.info(
"GUI has connected to session %d at %s", self.session.id, time.ctime()
)
tlv_data = b""
@ -461,14 +463,14 @@ class CoreHandler(socketserver.BaseRequestHandler):
header
)
if message_len == 0:
logging.warning("received message with no data")
logger.warning("received message with no data")
data = b""
while len(data) < message_len:
data += self.request.recv(message_len - len(data))
if len(data) > message_len:
error_message = f"received message length does not match received data ({len(data)} != {message_len})"
logging.error(error_message)
logger.error(error_message)
raise IOError(error_message)
try:
@ -477,7 +479,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
except KeyError:
message = coreapi.CoreMessage(message_flags, header, data)
message.message_type = message_type
logging.exception("unimplemented core message type: %s", message.type_str())
logger.exception("unimplemented core message type: %s", message.type_str())
return message
@ -488,7 +490,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
:param message: message to queue
:return: nothing
"""
logging.debug(
logger.debug(
"queueing msg (queuedtimes = %s): type %s",
message.queuedtimes,
MessageTypes(message.message_type),
@ -518,11 +520,11 @@ class CoreHandler(socketserver.BaseRequestHandler):
:param message: message to handle
:return: nothing
"""
logging.debug(
logger.debug(
"%s handling message:\n%s", threading.currentThread().getName(), message
)
if message.message_type not in self.message_handlers:
logging.error("no handler for message type: %s", message.type_str())
logger.error("no handler for message type: %s", message.type_str())
return
message_handler = self.message_handlers[message.message_type]
@ -532,7 +534,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
self.dispatch_replies(replies, message)
except Exception as e:
self.send_exception(ExceptionLevels.ERROR, "corehandler", str(e))
logging.exception(
logger.exception(
"%s: exception while handling message: %s",
threading.currentThread().getName(),
message,
@ -560,12 +562,12 @@ class CoreHandler(socketserver.BaseRequestHandler):
# multiple TLVs of same type cause KeyError exception
reply_message = f"CoreMessage (type {message_type} flags {message_flags} length {message_length})"
logging.debug("sending reply:\n%s", reply_message)
logger.debug("sending reply:\n%s", reply_message)
try:
self.sendall(reply)
except IOError:
logging.exception("error dispatching reply")
logger.exception("error dispatching reply")
def handle(self):
"""
@ -580,7 +582,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
# TODO: add shutdown handler for session
self.session = self.coreemu.create_session(port)
logging.debug("created new session for client: %s", self.session.id)
logger.debug("created new session for client: %s", self.session.id)
clients = self.session_clients.setdefault(self.session.id, [])
clients.append(self)
@ -594,10 +596,10 @@ class CoreHandler(socketserver.BaseRequestHandler):
try:
message = self.receive_message()
except EOFError:
logging.info("client disconnected")
logger.info("client disconnected")
break
except IOError:
logging.exception("error receiving message")
logger.exception("error receiving message")
break
message.queuedtimes = 0
@ -619,7 +621,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
if client == self:
continue
logging.debug("BROADCAST TO OTHER CLIENT: %s", client)
logger.debug("BROADCAST TO OTHER CLIENT: %s", client)
client.sendall(message.raw_message)
def send_exception(self, level, source, text, node=None):
@ -643,7 +645,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
self.handle_broadcast_exception(exception_data)
def add_session_handlers(self):
logging.debug("adding session broadcast handlers")
logger.debug("adding session broadcast handlers")
self.session.event_handlers.append(self.handle_broadcast_event)
self.session.exception_handlers.append(self.handle_broadcast_exception)
self.session.node_handlers.append(self.handle_broadcast_node)
@ -652,7 +654,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
self.session.config_handlers.append(self.handle_broadcast_config)
def remove_session_handlers(self):
logging.debug("removing session broadcast handlers")
logger.debug("removing session broadcast handlers")
self.session.event_handlers.remove(self.handle_broadcast_event)
self.session.exception_handlers.remove(self.handle_broadcast_exception)
self.session.node_handlers.remove(self.handle_broadcast_node)
@ -672,7 +674,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
message.flags & MessageFlags.ADD.value
and message.flags & MessageFlags.DELETE.value
):
logging.warning("ignoring invalid message: add and delete flag both set")
logger.warning("ignoring invalid message: add and delete flag both set")
return ()
_class = CoreNode
@ -898,7 +900,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
else:
node.cmd(command, wait=False)
except CoreError:
logging.exception("error getting object: %s", node_id)
logger.exception("error getting object: %s", node_id)
# XXX wait and queue this message to try again later
# XXX maybe this should be done differently
if not message.flags & MessageFlags.LOCAL.value:
@ -920,7 +922,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
execute_server = message.get_tlv(RegisterTlvs.EXECUTE_SERVER.value)
if execute_server:
try:
logging.info("executing: %s", execute_server)
logger.info("executing: %s", execute_server)
if message.flags & MessageFlags.STRING.value:
old_session_ids = set(self.coreemu.sessions.keys())
sys.argv = shlex.split(execute_server)
@ -946,26 +948,26 @@ class CoreHandler(socketserver.BaseRequestHandler):
new_sid = new_session_ids.difference(old_session_ids)
try:
sid = new_sid.pop()
logging.info("executed: %s as session %d", execute_server, sid)
logger.info("executed: %s as session %d", execute_server, sid)
except KeyError:
logging.info(
logger.info(
"executed %s with unknown session ID", execute_server
)
return replies
logging.debug("checking session %d for RUNTIME state", sid)
logger.debug("checking session %d for RUNTIME state", sid)
session = self.coreemu.sessions.get(sid)
retries = 10
# wait for session to enter RUNTIME state, to prevent GUI from
# connecting while nodes are still being instantiated
while session.state != EventTypes.RUNTIME_STATE:
logging.debug(
logger.debug(
"waiting for session %d to enter RUNTIME state", sid
)
time.sleep(1)
retries -= 1
if retries <= 0:
logging.debug("session %d did not enter RUNTIME state", sid)
logger.debug("session %d did not enter RUNTIME state", sid)
return replies
tlv_data = coreapi.CoreRegisterTlv.pack(
@ -977,7 +979,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
message = coreapi.CoreRegMessage.pack(0, tlv_data)
replies.append(message)
except Exception as e:
logging.exception("error executing: %s", execute_server)
logger.exception("error executing: %s", execute_server)
tlv_data = coreapi.CoreExceptionTlv.pack(ExceptionTlvs.LEVEL.value, 2)
tlv_data += coreapi.CoreExceptionTlv.pack(
ExceptionTlvs.TEXT.value, str(e)
@ -989,7 +991,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
gui = message.get_tlv(RegisterTlvs.GUI.value)
if gui is None:
logging.debug("ignoring Register message")
logger.debug("ignoring Register message")
else:
# register capabilities with the GUI
replies.append(self.register())
@ -1020,7 +1022,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
network_id=message.get_tlv(ConfigTlvs.NETWORK_ID.value),
opaque=message.get_tlv(ConfigTlvs.OPAQUE.value),
)
logging.debug(
logger.debug(
"configuration message for %s node %s", config_data.object, config_data.node
)
message_type = ConfigFlags(config_data.type)
@ -1095,7 +1097,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
self.session.location.reset()
else:
if not config_data.data_values:
logging.warning("location data missing")
logger.warning("location data missing")
else:
values = [float(x) for x in config_data.data_values.split("|")]
@ -1108,7 +1110,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
# geographic reference point
self.session.location.setrefgeo(lat, lon, alt)
self.session.location.refscale = values[5]
logging.info(
logger.info(
"location configured: %s = %s scale=%s",
self.session.location.refxyz,
self.session.location.refgeo,
@ -1145,7 +1147,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
def handle_config_broker(self, message_type, config_data):
if message_type not in [ConfigFlags.REQUEST, ConfigFlags.RESET]:
if not config_data.data_values:
logging.info("emulation server data missing")
logger.info("emulation server data missing")
else:
values = config_data.data_values.split("|")
@ -1169,7 +1171,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
session_id = config_data.session
opaque = config_data.opaque
logging.debug(
logger.debug(
"configuration request: node(%s) session(%s) opaque(%s)",
node_id,
session_id,
@ -1199,10 +1201,10 @@ class CoreHandler(socketserver.BaseRequestHandler):
values = []
group_strings = []
start_index = 1
logging.debug("sorted groups: %s", groups)
logger.debug("sorted groups: %s", groups)
for group in groups:
services = sorted(group_map[group], key=lambda x: x.name.lower())
logging.debug("sorted services for group(%s): %s", group, services)
logger.debug("sorted services for group(%s): %s", group, services)
end_index = start_index + len(services) - 1
group_strings.append(f"{group}:{start_index}-{end_index}")
start_index += len(services)
@ -1226,7 +1228,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
node = self.session.get_node(node_id, CoreNodeBase)
if node is None:
logging.warning(
logger.warning(
"request to configure service for unknown node %s", node_id
)
return replies
@ -1285,7 +1287,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
error_message = "services config message that I don't know how to handle"
if values is None:
logging.error(error_message)
logger.error(error_message)
else:
if opaque is None:
values = values.split("|")
@ -1294,11 +1296,11 @@ class CoreHandler(socketserver.BaseRequestHandler):
data_types is None
or data_types[0] != ConfigDataTypes.STRING.value
):
logging.info(error_message)
logger.info(error_message)
return None
key = values.pop(0)
self.session.services.default_services[key] = values
logging.debug("default services for type %s set to %s", key, values)
logger.debug("default services for type %s set to %s", key, values)
elif node_id:
services = ServiceShim.servicesfromopaque(opaque)
if services:
@ -1337,16 +1339,16 @@ class CoreHandler(socketserver.BaseRequestHandler):
values_str = config_data.data_values
node_id = utils.iface_config_id(node_id, iface_id)
logging.debug(
logger.debug(
"received configure message for %s nodenum: %s", object_name, node_id
)
if message_type == ConfigFlags.REQUEST:
logging.info("replying to configure request for model: %s", object_name)
logger.info("replying to configure request for model: %s", object_name)
typeflags = ConfigFlags.NONE.value
model_class = self.session.mobility.models.get(object_name)
if not model_class:
logging.warning("model class does not exist: %s", object_name)
logger.warning("model class does not exist: %s", object_name)
return []
config = self.session.mobility.get_model_config(node_id, object_name)
@ -1357,7 +1359,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
elif message_type != ConfigFlags.RESET:
# store the configuration values for later use, when the node
if not object_name:
logging.warning("no configuration object for node: %s", node_id)
logger.warning("no configuration object for node: %s", node_id)
return []
parsed_config = {}
@ -1371,7 +1373,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
if object_name == BasicRangeModel.name:
node.updatemodel(parsed_config)
except CoreError:
logging.error(
logger.error(
"skipping mobility configuration for unknown node: %s", node_id
)
@ -1385,11 +1387,11 @@ class CoreHandler(socketserver.BaseRequestHandler):
values_str = config_data.data_values
node_id = utils.iface_config_id(node_id, iface_id)
logging.debug(
logger.debug(
"received configure message for %s nodenum: %s", object_name, node_id
)
if message_type == ConfigFlags.REQUEST:
logging.info("replying to configure request for %s model", object_name)
logger.info("replying to configure request for %s model", object_name)
typeflags = ConfigFlags.NONE.value
config = self.session.emane.get_configs()
config_response = ConfigShim.config_data(
@ -1398,7 +1400,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
replies.append(config_response)
elif message_type != ConfigFlags.RESET:
if not object_name:
logging.info("no configuration object for node %s", node_id)
logger.info("no configuration object for node %s", node_id)
return []
if values_str:
@ -1415,16 +1417,16 @@ class CoreHandler(socketserver.BaseRequestHandler):
values_str = config_data.data_values
node_id = utils.iface_config_id(node_id, iface_id)
logging.debug(
logger.debug(
"received configure message for %s nodenum: %s", object_name, node_id
)
if message_type == ConfigFlags.REQUEST:
logging.info("replying to configure request for model: %s", object_name)
logger.info("replying to configure request for model: %s", object_name)
typeflags = ConfigFlags.NONE.value
model_class = self.session.emane.models.get(object_name)
if not model_class:
logging.warning("model class does not exist: %s", object_name)
logger.warning("model class does not exist: %s", object_name)
return []
config = self.session.emane.get_model_config(node_id, object_name)
@ -1435,7 +1437,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
elif message_type != ConfigFlags.RESET:
# store the configuration values for later use, when the node
if not object_name:
logging.warning("no configuration object for node: %s", node_id)
logger.warning("no configuration object for node: %s", node_id)
return []
parsed_config = {}
@ -1464,13 +1466,11 @@ class CoreHandler(socketserver.BaseRequestHandler):
compressed_data = message.get_tlv(FileTlvs.COMPRESSED_DATA.value)
if compressed_data:
logging.warning(
"Compressed file data not implemented for File message."
)
logger.warning("Compressed file data not implemented for File message.")
return ()
if src_path and data:
logging.warning(
logger.warning(
"ignoring invalid File message: source and data TLVs are both present"
)
return ()
@ -1487,7 +1487,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
elif file_type.startswith("hook:"):
_, state = file_type.split(":")[:2]
if not state.isdigit():
logging.error("error setting hook having state '%s'", state)
logger.error("error setting hook having state '%s'", state)
return ()
state = int(state)
state = EventTypes(state)
@ -1517,7 +1517,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
:param message: interface message to handle
:return: reply messages
"""
logging.info("ignoring Interface message")
logger.info("ignoring Interface message")
return ()
def handle_event_message(self, message):
@ -1543,7 +1543,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
raise NotImplementedError("Event message missing event type")
node_id = event_data.node
logging.debug("handling event %s at %s", event_type.name, time.ctime())
logger.debug("handling event %s at %s", event_type.name, time.ctime())
if event_type.value <= EventTypes.SHUTDOWN_STATE.value:
if node_id is not None:
node = self.session.get_node(node_id, NodeBase)
@ -1555,7 +1555,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
self.session.start_mobility(node_ids=[node.id])
return ()
logging.warning(
logger.warning(
"dropping unhandled event message for node: %s", node.name
)
return ()
@ -1580,12 +1580,12 @@ class CoreHandler(socketserver.BaseRequestHandler):
self.send_node_emulation_id(_id)
elif event_type == EventTypes.RUNTIME_STATE:
self.session.set_state(event_type)
logging.warning("Unexpected event message: RUNTIME state received")
logger.warning("Unexpected event message: RUNTIME state received")
elif event_type == EventTypes.DATACOLLECT_STATE:
self.session.data_collect()
elif event_type == EventTypes.SHUTDOWN_STATE:
self.session.set_state(event_type)
logging.warning("Unexpected event message: SHUTDOWN state received")
logger.warning("Unexpected event message: SHUTDOWN state received")
elif event_type in {
EventTypes.START,
EventTypes.STOP,
@ -1605,7 +1605,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
self.session.mobility_event(event_data)
handled = True
if not handled:
logging.warning(
logger.warning(
"unhandled event message: event type %s, name %s ",
event_type.name,
name,
@ -1624,7 +1624,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
name = event_data.name
data = event_data.data
if etime is None:
logging.warning("Event message scheduled event missing start time")
logger.warning("Event message scheduled event missing start time")
return ()
if message.flags & MessageFlags.ADD.value:
self.session.add_event(
@ -1650,7 +1650,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
try:
node = self.session.get_node(node_id, CoreNodeBase)
except CoreError:
logging.warning(
logger.warning(
"ignoring event for service '%s', unknown node '%s'", name, node_id
)
return
@ -1692,7 +1692,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
if num > 1:
unknown_data += ", "
num -= 1
logging.warning("Event requested for unknown service(s): %s", unknown_data)
logger.warning("Event requested for unknown service(s): %s", unknown_data)
unknown_data = f"Unknown:{unknown_data}"
event_data = EventData(
@ -1720,7 +1720,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
files = coreapi.str_to_list(file_str)
thumb = message.get_tlv(SessionTlvs.THUMB.value)
user = message.get_tlv(SessionTlvs.USER.value)
logging.debug(
logger.debug(
"SESSION message flags=0x%x sessions=%s", message.flags, session_id_str
)
@ -1732,7 +1732,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
else:
session = self.coreemu.sessions.get(session_id)
if session is None:
logging.warning("session %s not found", session_id)
logger.warning("session %s not found", session_id)
continue
if names is not None:
session.name = names[index]
@ -1756,14 +1756,14 @@ class CoreHandler(socketserver.BaseRequestHandler):
session = self.coreemu.sessions.get(session_id)
if session is None:
logging.info(
logger.info(
"session %s not found (flags=0x%x)", session_id, message.flags
)
continue
if message.flags & MessageFlags.ADD.value:
# connect to the first session that exists
logging.info("request to connect to session %s", session_id)
logger.info("request to connect to session %s", session_id)
# remove client from session broker and shutdown if needed
self.remove_session_handlers()
@ -1780,7 +1780,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
clients.append(self)
# add broadcast handlers
logging.info("adding session broadcast handlers")
logger.info("adding session broadcast handlers")
self.add_session_handlers()
if user:
@ -1790,12 +1790,10 @@ class CoreHandler(socketserver.BaseRequestHandler):
self.send_objects()
elif message.flags & MessageFlags.DELETE.value:
# shut down the specified session(s)
logging.info("request to terminate session %s", session_id)
logger.info("request to terminate session %s", session_id)
self.coreemu.delete_session(session_id)
else:
logging.warning(
"unhandled session flags for session %s", session_id
)
logger.warning("unhandled session flags for session %s", session_id)
return ()
@ -1817,9 +1815,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
try:
self.sendall(reply)
except IOError:
logging.exception(
"error sending node emulation id message: %s", node_id
)
logger.exception("error sending node emulation id message: %s", node_id)
del self.node_status_request[node_id]
@ -1845,7 +1841,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
for model_name in mobility_configs:
config = mobility_configs[model_name]
model_class = self.session.mobility.models[model_name]
logging.debug(
logger.debug(
"mobility config: node(%s) class(%s) values(%s)",
node_id,
model_class,
@ -1858,7 +1854,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
# send global emane config
config = self.session.emane.get_configs()
logging.debug("global emane config: values(%s)", config)
logger.debug("global emane config: values(%s)", config)
config_data = ConfigShim.config_data(
0, None, ConfigFlags.UPDATE.value, self.session.emane.emane_config, config
)
@ -1870,7 +1866,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
for model_name in emane_configs:
config = emane_configs[model_name]
model_class = self.session.emane.models[model_name]
logging.debug(
logger.debug(
"emane config: node(%s) class(%s) values(%s)",
node_id,
model_class,
@ -1951,7 +1947,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
self.session.broadcast_config(config_data)
node_count = self.session.get_node_count()
logging.info(
logger.info(
"informed GUI about %d nodes and %d links", node_count, len(all_links)
)
@ -1991,11 +1987,11 @@ class CoreUdpHandler(CoreHandler):
header
)
if message_len == 0:
logging.warning("received message with no data")
logger.warning("received message with no data")
return
if len(data) != coreapi.CoreMessage.header_len + message_len:
logging.error(
logger.error(
"received message length does not match received data (%s != %s)",
len(data),
coreapi.CoreMessage.header_len + message_len,
@ -2013,7 +2009,7 @@ class CoreUdpHandler(CoreHandler):
message_flags, header, data[coreapi.CoreMessage.header_len :]
)
message.msgtype = message_type
logging.exception("unimplemented core message type: %s", message.type_str())
logger.exception("unimplemented core message type: %s", message.type_str())
def handle(self):
message = self.receive_message()
@ -2023,12 +2019,12 @@ class CoreUdpHandler(CoreHandler):
for session_id in sessions:
session = self.server.mainserver.coreemu.sessions.get(session_id)
if session:
logging.debug("session handling message: %s", session.id)
logger.debug("session handling message: %s", session.id)
self.session = session
self.handle_message(message)
self.broadcast(message)
else:
logging.error(
logger.error(
"session %d in %s message not found.",
session_id,
message.type_str(),
@ -2052,7 +2048,7 @@ class CoreUdpHandler(CoreHandler):
self.handle_message(message)
self.broadcast(message)
else:
logging.error(
logger.error(
"no active session, dropping %s message.", message.type_str()
)
@ -2065,7 +2061,7 @@ class CoreUdpHandler(CoreHandler):
try:
client.sendall(message.raw_message)
except IOError:
logging.error("error broadcasting")
logger.error("error broadcasting")
def finish(self):
return socketserver.BaseRequestHandler.finish(self)

View file

@ -10,6 +10,8 @@ from core.api.tlv.enumerations import ConfigTlvs, NodeTlvs
from core.config import ConfigGroup, ConfigurableOptions
from core.emulator.data import ConfigData, NodeData
logger = logging.getLogger(__name__)
def convert_node(node_data: NodeData):
"""
@ -139,9 +141,9 @@ class ConfigShim:
captions = None
data_types = []
possible_values = []
logging.debug("configurable: %s", configurable_options)
logging.debug("configuration options: %s", configurable_options.configurations)
logging.debug("configuration data: %s", config)
logger.debug("configurable: %s", configurable_options)
logger.debug("configuration options: %s", configurable_options.configurations)
logger.debug("configuration data: %s", config)
for configuration in configurable_options.configurations():
if not captions:
captions = configuration.label

View file

@ -4,6 +4,8 @@ Utilities for working with python struct data.
import logging
logger = logging.getLogger(__name__)
def pack_values(clazz, packers):
"""
@ -15,7 +17,7 @@ def pack_values(clazz, packers):
"""
# iterate through tuples of values to pack
logging.debug("packing: %s", packers)
logger.debug("packing: %s", packers)
data = b""
for packer in packers:
# check if a transformer was provided for valid values
@ -37,7 +39,7 @@ def pack_values(clazz, packers):
value = transformer(value)
# pack and add to existing data
logging.debug("packing: %s - %s type(%s)", tlv_type, value, type(value))
logger.debug("packing: %s - %s type(%s)", tlv_type, value, type(value))
data += clazz.pack(tlv_type.value, value)
return data