Merge branch 'develop' into enhancement/poetry-invoke

This commit is contained in:
Blake Harnden 2020-07-10 16:02:51 -07:00
commit 9c13803e52
4 changed files with 70 additions and 16 deletions

View file

@ -510,6 +510,10 @@ class CoreClient:
except grpc.RpcError as e:
self.app.show_grpc_exception("Edit Node Error", e)
def send_servers(self) -> None:
for server in self.servers.values():
self.client.add_session_server(self.session_id, server.name, server.address)
def start_session(self) -> StartSessionResponse:
self.ifaces_manager.reset_mac()
nodes = [x.core_node for x in self.canvas_nodes.values()]
@ -538,6 +542,7 @@ class CoreClient:
emane_config = None
response = StartSessionResponse(result=False)
try:
self.send_servers()
response = self.client.start_session(
self.session_id,
nodes,
@ -749,6 +754,7 @@ class CoreClient:
"""
Send to daemon all session info, but don't start the session
"""
self.send_servers()
self.create_nodes_and_links()
for config_proto in self.get_wlan_configs_proto():
self.client.set_wlan_config(

View file

@ -42,10 +42,11 @@ class CanvasNode:
x, y, anchor=tk.CENTER, image=self.image, tags=tags.NODE
)
label_y = self._get_label_y()
label = self.get_label()
self.text_id: int = self.canvas.create_text(
x,
label_y,
text=self.core_node.name,
text=label,
tags=tags.NODE_LABEL,
font=self.app.icon_text_font,
fill="#0000CD",
@ -123,9 +124,16 @@ class CanvasNode:
self.antennas.clear()
self.antenna_images.clear()
def get_label(self) -> str:
label = self.core_node.name
if self.core_node.server:
label = f"{self.core_node.name}({self.core_node.server})"
return label
def redraw(self) -> None:
self.canvas.itemconfig(self.id, image=self.image)
self.canvas.itemconfig(self.text_id, text=self.core_node.name)
label = self.get_label()
self.canvas.itemconfig(self.text_id, text=label)
for edge in self.edges:
edge.redraw()

View file

@ -284,6 +284,7 @@ class CoreXmlWriter:
self.write_service_configs()
self.write_configservice_configs()
self.write_session_origin()
self.write_servers()
self.write_session_hooks()
self.write_session_options()
self.write_session_metadata()
@ -318,6 +319,15 @@ class CoreXmlWriter:
add_attribute(origin, "y", y)
add_attribute(origin, "z", z)
def write_servers(self) -> None:
servers = etree.Element("servers")
for server in self.session.distributed.servers.values():
server_element = etree.SubElement(servers, "server")
add_attribute(server_element, "name", server.name)
add_attribute(server_element, "address", server.host)
if servers.getchildren():
self.scenario.append(servers)
def write_session_hooks(self) -> None:
# hook scripts
hooks = etree.Element("session_hooks")
@ -572,6 +582,7 @@ class CoreXmlReader:
self.read_session_metadata()
self.read_session_options()
self.read_session_hooks()
self.read_servers()
self.read_session_origin()
self.read_service_configs()
self.read_mobility_configs()
@ -635,6 +646,16 @@ class CoreXmlReader:
logging.info("reading hook: state(%s) name(%s)", state, name)
self.session.add_hook(state, name, data)
def read_servers(self) -> None:
servers = self.scenario.find("servers")
if servers is None:
return
for server in servers.iterchildren():
name = server.get("name")
address = server.get("address")
logging.info("reading server: name(%s) address(%s)", name, address)
self.session.distributed.add_server(name, address)
def read_session_origin(self) -> None:
session_origin = self.scenario.find("session_origin")
if session_origin is None: