diff --git a/daemon/core/api/tlv/corehandlers.py b/daemon/core/api/tlv/corehandlers.py index 1e7be162..a6eae965 100644 --- a/daemon/core/api/tlv/corehandlers.py +++ b/daemon/core/api/tlv/corehandlers.py @@ -83,13 +83,9 @@ class CoreHandler(socketserver.BaseRequestHandler): self.handler_threads.append(thread) thread.start() - self.master = False self.session = None self.session_clients = {} - - # core emulator self.coreemu = server.coreemu - utils.close_onexec(request.fileno()) socketserver.BaseRequestHandler.__init__(self, request, client_address, server) @@ -591,12 +587,8 @@ class CoreHandler(socketserver.BaseRequestHandler): port = self.request.getpeername()[1] # TODO: add shutdown handler for session - self.session = self.coreemu.create_session(port, master=False) + self.session = self.coreemu.create_session(port) logging.debug("created new session for client: %s", self.session.id) - - if self.master: - logging.debug("session set to master") - self.session.master = True clients = self.session_clients.setdefault(self.session.id, []) clients.append(self) @@ -942,7 +934,7 @@ class CoreHandler(socketserver.BaseRequestHandler): file_name = sys.argv[0] if os.path.splitext(file_name)[1].lower() == ".xml": - session = self.coreemu.create_session(master=False) + session = self.coreemu.create_session() try: session.open_xml(file_name) except Exception: @@ -1012,17 +1004,6 @@ class CoreHandler(socketserver.BaseRequestHandler): logging.debug("ignoring Register message") else: # register capabilities with the GUI - self.master = True - - # find the session containing this client and set the session to master - for _id in self.coreemu.sessions: - clients = self.session_clients.get(_id, []) - if self in clients: - session = self.coreemu.sessions[_id] - logging.debug("setting session to master: %s", session.id) - session.master = True - break - replies.append(self.register()) replies.append(self.session_message()) @@ -1441,11 +1422,6 @@ class CoreHandler(socketserver.BaseRequestHandler): config = ConfigShim.str_to_dict(values_str) self.session.emane.set_configs(config) - # extra logic to start slave Emane object after nemid has been configured from the master - if message_type == ConfigFlags.UPDATE and self.session.master is False: - # instantiation was previously delayed by setup returning Emane.NOT_READY - self.session.instantiate() - return replies def handle_config_emane_models(self, message_type, config_data): @@ -1613,20 +1589,11 @@ class CoreHandler(socketserver.BaseRequestHandler): for _id in self.session.nodes: self.send_node_emulation_id(_id) elif event_type == EventTypes.RUNTIME_STATE: - if self.session.master: - logging.warning( - "Unexpected event message: RUNTIME state received at session master" - ) - else: - # master event queue is started in session.checkruntime() - self.session.start_events() + logging.warning("Unexpected event message: RUNTIME state received") elif event_type == EventTypes.DATACOLLECT_STATE: self.session.data_collect() elif event_type == EventTypes.SHUTDOWN_STATE: - if self.session.master: - logging.warning( - "Unexpected event message: SHUTDOWN state received at session master" - ) + logging.warning("Unexpected event message: SHUTDOWN state received") elif event_type in { EventTypes.START, EventTypes.STOP, @@ -1824,9 +1791,7 @@ class CoreHandler(socketserver.BaseRequestHandler): # set session to join self.session = session - # add client to session broker and set master if needed - if self.master: - self.session.master = True + # add client to session broker clients = self.session_clients.setdefault(self.session.id, []) clients.append(self) @@ -2022,7 +1987,6 @@ class CoreUdpHandler(CoreHandler): MessageTypes.EVENT.value: self.handle_event_message, MessageTypes.SESSION.value: self.handle_session_message, } - self.master = False self.session = None self.coreemu = server.mainserver.coreemu socketserver.BaseRequestHandler.__init__(self, request, client_address, server) diff --git a/daemon/core/emane/emanemanager.py b/daemon/core/emane/emanemanager.py index f097b7ad..dc3e2acf 100644 --- a/daemon/core/emane/emanemanager.py +++ b/daemon/core/emane/emanemanager.py @@ -269,37 +269,34 @@ class EmaneManager(ModelManager): # control network bridge required for EMANE 0.9.2 # - needs to exist when eventservice binds to it (initeventservice) - if self.session.master: - 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 + 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) + if netidx < 0: + logging.error( + "EMANE cannot start, check core config. invalid OTA device provided: %s", + otadev, ) + return EmaneManager.NOT_READY + + self.session.add_remove_control_net( + net_index=netidx, remove=False, conf_required=False + ) + eventdev = self.get_config("eventservicedevice") + logging.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) if netidx < 0: logging.error( - "EMANE cannot start, check core config. invalid OTA device provided: %s", - otadev, + "EMANE cannot start, check core config. invalid event service device: %s", + eventdev, ) return EmaneManager.NOT_READY self.session.add_remove_control_net( net_index=netidx, remove=False, conf_required=False ) - eventdev = self.get_config("eventservicedevice") - logging.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) - if netidx < 0: - logging.error( - "EMANE cannot start, check core config. invalid event service device: %s", - eventdev, - ) - return EmaneManager.NOT_READY - - self.session.add_remove_control_net( - net_index=netidx, remove=False, conf_required=False - ) self.check_node_models() return EmaneManager.SUCCESS diff --git a/daemon/core/emulator/coreemu.py b/daemon/core/emulator/coreemu.py index 754ab771..cdba4e44 100644 --- a/daemon/core/emulator/coreemu.py +++ b/daemon/core/emulator/coreemu.py @@ -86,12 +86,11 @@ class CoreEmu: session = sessions[_id] session.shutdown() - def create_session(self, _id=None, master=True, _cls=Session): + def create_session(self, _id=None, _cls=Session): """ - Create a new CORE session, set to master if running standalone. + Create a new CORE session. :param int _id: session id for new session - :param bool master: sets session to master :param class _cls: Session class to use :return: created session :rtype: EmuSession @@ -104,9 +103,6 @@ class CoreEmu: session = _cls(_id, config=self.config) logging.info("created session: %s", _id) - if master: - session.master = True - self.sessions[_id] = session return session diff --git a/daemon/core/emulator/session.py b/daemon/core/emulator/session.py index bef7f048..fcebcd9e 100644 --- a/daemon/core/emulator/session.py +++ b/daemon/core/emulator/session.py @@ -85,7 +85,6 @@ class Session: :param bool mkdir: flag to determine if a directory should be made """ self.id = _id - self.master = False # define and create session directory when desired self.session_dir = os.path.join(tempfile.gettempdir(), f"pycore.{self.id}") @@ -1694,28 +1693,19 @@ class Session: prefixes = prefix_spec.split() if len(prefixes) > 1: # a list of per-host prefixes is provided - assign_address = True - if self.master: - try: - # split first (master) entry into server and prefix - prefix = prefixes[0].split(":", 1)[1] - except IndexError: - # no server name. possibly only one server - prefix = prefixes[0] - - # len(prefixes) == 1 + try: + # split first (master) entry into server and prefix + prefix = prefixes[0].split(":", 1)[1] + except IndexError: + # no server name. possibly only one server + prefix = prefixes[0] else: - # TODO: can we get the server name from the servers.conf or from the node - # assignments?o - # with one prefix, only master gets a ctrlnet address - assign_address = self.master prefix = prefixes[0] logging.info( - "controlnet(%s) prefix(%s) assign(%s) updown(%s) serverintf(%s)", + "controlnet(%s) prefix(%s) updown(%s) serverintf(%s)", _id, prefix, - assign_address, updown_script, server_interface, ) @@ -1723,7 +1713,7 @@ class Session: cls=CtrlNet, _id=_id, prefix=prefix, - assign_address=assign_address, + assign_address=True, updown_script=updown_script, serverintf=server_interface, ) diff --git a/daemon/tests/conftest.py b/daemon/tests/conftest.py index e1f04f66..2055820c 100644 --- a/daemon/tests/conftest.py +++ b/daemon/tests/conftest.py @@ -75,7 +75,6 @@ def global_coreemu(patcher): def global_session(request, patcher, global_coreemu): mkdir = not request.config.getoption("mock") session = Session(1000, {"emane_prefix": "/usr"}, mkdir) - session.master = True yield session session.shutdown() diff --git a/daemon/tests/test_gui.py b/daemon/tests/test_gui.py index fc9d183e..b4025a0c 100644 --- a/daemon/tests/test_gui.py +++ b/daemon/tests/test_gui.py @@ -606,13 +606,9 @@ class TestGui: coretlv.handle_message(message) def test_register_gui(self, coretlv): - coretlv.master = False message = coreapi.CoreRegMessage.create(0, [(RegisterTlvs.GUI, "gui")]) - coretlv.handle_message(message) - assert coretlv.master is True - def test_register_xml(self, coretlv, tmpdir): xml_file = tmpdir.join("coretlv.session.xml") file_path = xml_file.strpath