removed toolbarhelper, moved logic into coreclient, updated start session click
This commit is contained in:
parent
173747fd13
commit
c4d2ae599b
4 changed files with 66 additions and 145 deletions
|
@ -305,23 +305,19 @@ class CoreClient:
|
||||||
)
|
)
|
||||||
logging.info("delete links %s", response)
|
logging.info("delete links %s", response)
|
||||||
|
|
||||||
# TODO add location, hooks, emane_config, etc...
|
def start_session(self):
|
||||||
def start_session(
|
nodes = self.get_nodes_proto()
|
||||||
self,
|
links = self.get_links_proto()
|
||||||
nodes,
|
wlan_configs = self.get_wlan_configs_proto()
|
||||||
links,
|
mobility_configs = self.get_mobility_configs_proto()
|
||||||
location=None,
|
emane_model_configs = self.get_emane_model_configs_proto()
|
||||||
hooks=None,
|
hooks = list(self.hooks.values())
|
||||||
emane_config=None,
|
emane_config = {x: self.emane_config[x].value for x in self.emane_config}
|
||||||
emane_model_configs=None,
|
|
||||||
wlan_configs=None,
|
|
||||||
mobility_configs=None,
|
|
||||||
):
|
|
||||||
response = self.client.start_session(
|
response = self.client.start_session(
|
||||||
self.session_id,
|
self.session_id,
|
||||||
nodes,
|
nodes,
|
||||||
links,
|
links,
|
||||||
hooks=list(self.hooks.values()),
|
hooks=hooks,
|
||||||
wlan_configs=wlan_configs,
|
wlan_configs=wlan_configs,
|
||||||
emane_config=emane_config,
|
emane_config=emane_config,
|
||||||
emane_model_configs=emane_model_configs,
|
emane_model_configs=emane_model_configs,
|
||||||
|
@ -675,3 +671,59 @@ class CoreClient:
|
||||||
|
|
||||||
else:
|
else:
|
||||||
logging.error("grpcmanagement.py INVALID CANVAS NODE ID")
|
logging.error("grpcmanagement.py INVALID CANVAS NODE ID")
|
||||||
|
|
||||||
|
def get_nodes_proto(self):
|
||||||
|
nodes = []
|
||||||
|
for node in self.nodes.values():
|
||||||
|
pos = core_pb2.Position(x=int(node.x), y=int(node.y))
|
||||||
|
proto_node = core_pb2.Node(
|
||||||
|
id=node.node_id, type=node.type, position=pos, model=node.model
|
||||||
|
)
|
||||||
|
nodes.append(proto_node)
|
||||||
|
return nodes
|
||||||
|
|
||||||
|
def get_links_proto(self):
|
||||||
|
links = []
|
||||||
|
for edge in self.edges.values():
|
||||||
|
interface_one = self.create_interface(edge.type1, edge.interface_1)
|
||||||
|
interface_two = self.create_interface(edge.type2, edge.interface_2)
|
||||||
|
link = core_pb2.Link(
|
||||||
|
node_one_id=edge.id1,
|
||||||
|
node_two_id=edge.id2,
|
||||||
|
type=core_pb2.LinkType.WIRED,
|
||||||
|
interface_one=interface_one,
|
||||||
|
interface_two=interface_two,
|
||||||
|
)
|
||||||
|
links.append(link)
|
||||||
|
return links
|
||||||
|
|
||||||
|
def get_wlan_configs_proto(self):
|
||||||
|
configs = []
|
||||||
|
wlan_configs = self.wlanconfig_management.configurations
|
||||||
|
for node_id in wlan_configs:
|
||||||
|
config = wlan_configs[node_id]
|
||||||
|
config_proto = core_pb2.WlanConfig(node_id=node_id, config=config)
|
||||||
|
configs.append(config_proto)
|
||||||
|
return configs
|
||||||
|
|
||||||
|
def get_mobility_configs_proto(self):
|
||||||
|
configs = []
|
||||||
|
mobility_configs = self.mobilityconfig_management.configurations
|
||||||
|
for node_id in mobility_configs:
|
||||||
|
config = mobility_configs[node_id]
|
||||||
|
config_proto = core_pb2.MobilityConfig(node_id=node_id, config=config)
|
||||||
|
configs.append(config_proto)
|
||||||
|
return configs
|
||||||
|
|
||||||
|
def get_emane_model_configs_proto(self):
|
||||||
|
configs = []
|
||||||
|
emane_configs = self.emaneconfig_management.configurations
|
||||||
|
for key, value in emane_configs.items():
|
||||||
|
node_id, interface_id = key
|
||||||
|
model, options = value
|
||||||
|
config = {x: options[x].value for x in options}
|
||||||
|
config_proto = core_pb2.EmaneModelConfig(
|
||||||
|
node_id=node_id, interface_id=interface_id, model=model, config=config
|
||||||
|
)
|
||||||
|
configs.append(config_proto)
|
||||||
|
return configs
|
||||||
|
|
|
@ -5,7 +5,6 @@ from functools import partial
|
||||||
from coretk.dialogs.customnodes import CustomNodesDialog
|
from coretk.dialogs.customnodes import CustomNodesDialog
|
||||||
from coretk.graph import GraphMode
|
from coretk.graph import GraphMode
|
||||||
from coretk.images import ImageEnum, Images
|
from coretk.images import ImageEnum, Images
|
||||||
from coretk.toolbarhelper import ToolbarHelper
|
|
||||||
from coretk.tooltip import CreateToolTip
|
from coretk.tooltip import CreateToolTip
|
||||||
|
|
||||||
|
|
||||||
|
@ -216,8 +215,7 @@ class Toolbar(tk.Frame):
|
||||||
"""
|
"""
|
||||||
logging.debug("clicked start button")
|
logging.debug("clicked start button")
|
||||||
self.canvas.mode = GraphMode.SELECT
|
self.canvas.mode = GraphMode.SELECT
|
||||||
helper = ToolbarHelper(self.app)
|
self.app.core.start_session()
|
||||||
helper.gui_start_session()
|
|
||||||
self.runtime_frame.tkraise()
|
self.runtime_frame.tkraise()
|
||||||
|
|
||||||
def click_link_tool(self):
|
def click_link_tool(self):
|
||||||
|
|
|
@ -1,17 +0,0 @@
|
||||||
"""
|
|
||||||
Python file that store button actions
|
|
||||||
"""
|
|
||||||
|
|
||||||
import logging
|
|
||||||
|
|
||||||
|
|
||||||
def click_selection_tool():
|
|
||||||
logging.debug("Click SELECTION TOOL")
|
|
||||||
|
|
||||||
|
|
||||||
def click_start_stop_session_tool():
|
|
||||||
logging.debug("Click START STOP SELECTION TOOL")
|
|
||||||
|
|
||||||
|
|
||||||
def click_link_tool():
|
|
||||||
logging.debug("Click LINK TOOL")
|
|
|
@ -1,112 +0,0 @@
|
||||||
"""
|
|
||||||
CoreToolbar help to draw on canvas, and make grpc client call
|
|
||||||
"""
|
|
||||||
from core.api.grpc.client import core_pb2
|
|
||||||
|
|
||||||
|
|
||||||
class ToolbarHelper:
|
|
||||||
def __init__(self, app):
|
|
||||||
self.app = app
|
|
||||||
|
|
||||||
def get_node_list(self):
|
|
||||||
"""
|
|
||||||
form a list node protobuf nodes to pass in start_session in grpc
|
|
||||||
|
|
||||||
:return: nothing
|
|
||||||
"""
|
|
||||||
nodes = []
|
|
||||||
for node in self.app.core.nodes.values():
|
|
||||||
pos = core_pb2.Position(x=int(node.x), y=int(node.y))
|
|
||||||
n = core_pb2.Node(
|
|
||||||
id=node.node_id, type=node.type, position=pos, model=node.model
|
|
||||||
)
|
|
||||||
nodes.append(n)
|
|
||||||
return nodes
|
|
||||||
|
|
||||||
def get_link_list(self):
|
|
||||||
"""
|
|
||||||
form a list of links to pass into grpc start session
|
|
||||||
|
|
||||||
:rtype: list(core_pb2.Link)
|
|
||||||
:return: list of protobuf links
|
|
||||||
"""
|
|
||||||
links = []
|
|
||||||
for edge in self.app.core.edges.values():
|
|
||||||
interface_one = self.app.core.create_interface(edge.type1, edge.interface_1)
|
|
||||||
interface_two = self.app.core.create_interface(edge.type2, edge.interface_2)
|
|
||||||
link = core_pb2.Link(
|
|
||||||
node_one_id=edge.id1,
|
|
||||||
node_two_id=edge.id2,
|
|
||||||
type=core_pb2.LinkType.WIRED,
|
|
||||||
interface_one=interface_one,
|
|
||||||
interface_two=interface_two,
|
|
||||||
)
|
|
||||||
links.append(link)
|
|
||||||
|
|
||||||
return links
|
|
||||||
|
|
||||||
def get_wlan_configuration_list(self):
|
|
||||||
"""
|
|
||||||
form a list of wlan configuration to pass to start_session
|
|
||||||
|
|
||||||
:return: nothing
|
|
||||||
"""
|
|
||||||
configs = []
|
|
||||||
manager_configs = self.app.core.wlanconfig_management.configurations
|
|
||||||
for key in manager_configs:
|
|
||||||
cnf = core_pb2.WlanConfig(node_id=key, config=manager_configs[key])
|
|
||||||
configs.append(cnf)
|
|
||||||
return configs
|
|
||||||
|
|
||||||
def get_mobility_configuration_list(self):
|
|
||||||
"""
|
|
||||||
form a list of mobility configuration to pass to start_session
|
|
||||||
|
|
||||||
:return: nothing
|
|
||||||
"""
|
|
||||||
configs = []
|
|
||||||
core = self.app.canvas.core
|
|
||||||
manager_configs = core.mobilityconfig_management.configurations
|
|
||||||
for key in manager_configs:
|
|
||||||
cnf = core_pb2.MobilityConfig(node_id=key, config=manager_configs[key])
|
|
||||||
configs.append(cnf)
|
|
||||||
return configs
|
|
||||||
|
|
||||||
def get_emane_configuration_list(self):
|
|
||||||
"""
|
|
||||||
form a list of emane configuration for the nodes
|
|
||||||
|
|
||||||
:return: nothing
|
|
||||||
"""
|
|
||||||
configs = []
|
|
||||||
manager_configs = self.app.core.emaneconfig_management.configurations
|
|
||||||
for key, value in manager_configs.items():
|
|
||||||
config = {x: value[1][x].value for x in value[1]}
|
|
||||||
configs.append(
|
|
||||||
core_pb2.EmaneModelConfig(
|
|
||||||
node_id=key[0], interface_id=key[1], model=value[0], config=config
|
|
||||||
)
|
|
||||||
)
|
|
||||||
return configs
|
|
||||||
|
|
||||||
def gui_start_session(self):
|
|
||||||
nodes = self.get_node_list()
|
|
||||||
links = self.get_link_list()
|
|
||||||
wlan_configs = self.get_wlan_configuration_list()
|
|
||||||
mobility_configs = self.get_mobility_configuration_list()
|
|
||||||
|
|
||||||
# get emane config (global configuration)
|
|
||||||
pb_emane_config = self.app.core.emane_config
|
|
||||||
emane_config = {x: pb_emane_config[x].value for x in pb_emane_config}
|
|
||||||
|
|
||||||
# get emane configuration list
|
|
||||||
emane_model_configs = self.get_emane_configuration_list()
|
|
||||||
|
|
||||||
self.app.core.start_session(
|
|
||||||
nodes,
|
|
||||||
links,
|
|
||||||
wlan_configs=wlan_configs,
|
|
||||||
mobility_configs=mobility_configs,
|
|
||||||
emane_config=emane_config,
|
|
||||||
emane_model_configs=emane_model_configs,
|
|
||||||
)
|
|
Loading…
Reference in a new issue