work on service config
This commit is contained in:
parent
a4055f84bd
commit
4cd42c2a20
3 changed files with 65 additions and 12 deletions
|
@ -50,6 +50,7 @@ class CoreClient:
|
||||||
self.master = app.master
|
self.master = app.master
|
||||||
self.interface_helper = None
|
self.interface_helper = None
|
||||||
self.services = {}
|
self.services = {}
|
||||||
|
self.default_services = {}
|
||||||
self.observer = None
|
self.observer = None
|
||||||
|
|
||||||
# loaded configuration data
|
# loaded configuration data
|
||||||
|
@ -77,6 +78,9 @@ class CoreClient:
|
||||||
self.created_nodes = set()
|
self.created_nodes = set()
|
||||||
self.created_links = set()
|
self.created_links = set()
|
||||||
|
|
||||||
|
self.service_configs = {}
|
||||||
|
self.file_configs = {}
|
||||||
|
|
||||||
def set_observer(self, value):
|
def set_observer(self, value):
|
||||||
self.observer = value
|
self.observer = value
|
||||||
|
|
||||||
|
@ -253,9 +257,15 @@ class CoreClient:
|
||||||
dialog = SessionsDialog(self.app, self.app)
|
dialog = SessionsDialog(self.app, self.app)
|
||||||
dialog.show()
|
dialog.show()
|
||||||
|
|
||||||
|
response = self.client.get_service_defaults(self.session_id)
|
||||||
|
logging.debug("get service defaults: %s", response)
|
||||||
|
self.default_services = {
|
||||||
|
x.node_type: set(x.services) for x in response.defaults
|
||||||
|
}
|
||||||
|
|
||||||
def get_session_state(self):
|
def get_session_state(self):
|
||||||
response = self.client.get_session(self.session_id)
|
response = self.client.get_session(self.session_id)
|
||||||
# logging.info("get session: %s", response)
|
logging.info("get session: %s", response)
|
||||||
return response.session.state
|
return response.session.state
|
||||||
|
|
||||||
def edit_node(self, node_id, x, y):
|
def edit_node(self, node_id, x, y):
|
||||||
|
@ -358,6 +368,9 @@ class CoreClient:
|
||||||
self.session_id, node_id, service_name, startups, validations, shutdowns
|
self.session_id, node_id, service_name, startups, validations, shutdowns
|
||||||
)
|
)
|
||||||
logging.debug("set node service %s", response)
|
logging.debug("set node service %s", response)
|
||||||
|
response = self.client.get_node_service(self.session_id, node_id, service_name)
|
||||||
|
logging.debug("get node service : %s", response)
|
||||||
|
return response.service
|
||||||
|
|
||||||
def get_node_service_file(self, node_id, service_name, file_name):
|
def get_node_service_file(self, node_id, service_name, file_name):
|
||||||
response = self.client.get_node_service_file(
|
response = self.client.get_node_service_file(
|
||||||
|
@ -381,7 +394,10 @@ class CoreClient:
|
||||||
|
|
||||||
node_protos = [x.core_node for x in self.canvas_nodes.values()]
|
node_protos = [x.core_node for x in self.canvas_nodes.values()]
|
||||||
link_protos = list(self.links.values())
|
link_protos = list(self.links.values())
|
||||||
self.client.set_session_state(self.session_id, core_pb2.SessionState.DEFINITION)
|
if self.get_session_state() != core_pb2.SessionState.DEFINITION:
|
||||||
|
self.client.set_session_state(
|
||||||
|
self.session_id, core_pb2.SessionState.DEFINITION
|
||||||
|
)
|
||||||
for node_proto in node_protos:
|
for node_proto in node_protos:
|
||||||
if node_proto.id not in self.created_nodes:
|
if node_proto.id not in self.created_nodes:
|
||||||
response = self.client.add_node(self.session_id, node_proto)
|
response = self.client.add_node(self.session_id, node_proto)
|
||||||
|
|
|
@ -12,6 +12,7 @@ from coretk.widgets import CheckboxList, ListboxScroll
|
||||||
class NodeService(Dialog):
|
class NodeService(Dialog):
|
||||||
def __init__(self, master, app, canvas_node, services=None):
|
def __init__(self, master, app, canvas_node, services=None):
|
||||||
super().__init__(master, app, "Node Services", modal=True)
|
super().__init__(master, app, "Node Services", modal=True)
|
||||||
|
self.app = app
|
||||||
self.canvas_node = canvas_node
|
self.canvas_node = canvas_node
|
||||||
self.node_id = canvas_node.core_node.id
|
self.node_id = canvas_node.core_node.id
|
||||||
self.groups = None
|
self.groups = None
|
||||||
|
@ -108,8 +109,15 @@ class NodeService(Dialog):
|
||||||
)
|
)
|
||||||
|
|
||||||
def click_save(self):
|
def click_save(self):
|
||||||
print("not implemented")
|
if (
|
||||||
print(self.current_services)
|
self.current_services
|
||||||
|
!= self.app.core.default_services[self.canvas_node.core_node.model]
|
||||||
|
):
|
||||||
|
self.canvas_node.core_node.services[:] = self.current_services
|
||||||
|
else:
|
||||||
|
if len(self.canvas_node.core_node.services) > 0:
|
||||||
|
self.canvas_node.core_node.services[:] = []
|
||||||
|
self.destroy()
|
||||||
|
|
||||||
def click_cancel(self):
|
def click_cancel(self):
|
||||||
self.current_services = None
|
self.current_services = None
|
||||||
|
|
|
@ -14,6 +14,7 @@ class ServiceConfiguration(Dialog):
|
||||||
def __init__(self, master, app, service_name, node_id):
|
def __init__(self, master, app, service_name, node_id):
|
||||||
super().__init__(master, app, f"{service_name} service", modal=True)
|
super().__init__(master, app, f"{service_name} service", modal=True)
|
||||||
self.app = app
|
self.app = app
|
||||||
|
self.core = app.core
|
||||||
self.service_manager = app.core.serviceconfig_manager
|
self.service_manager = app.core.serviceconfig_manager
|
||||||
self.node_id = node_id
|
self.node_id = node_id
|
||||||
self.service_name = service_name
|
self.service_name = service_name
|
||||||
|
@ -50,18 +51,32 @@ class ServiceConfiguration(Dialog):
|
||||||
def load(self):
|
def load(self):
|
||||||
# create nodes and links in definition state for getting and setting service file
|
# create nodes and links in definition state for getting and setting service file
|
||||||
self.app.core.create_nodes_and_links()
|
self.app.core.create_nodes_and_links()
|
||||||
# load data from local memory
|
|
||||||
if self.service_name in self.service_manager.configurations[self.node_id]:
|
service_configs = self.app.core.service_configs
|
||||||
service_config = self.service_manager.configurations[self.node_id][
|
if (
|
||||||
|
self.node_id in service_configs
|
||||||
|
and self.service_name in service_configs[self.node_id]
|
||||||
|
):
|
||||||
|
service_config = self.app.core.service_configs[self.node_id][
|
||||||
self.service_name
|
self.service_name
|
||||||
]
|
]
|
||||||
else:
|
else:
|
||||||
self.service_manager.node_custom_service_configuration(
|
service_config = self.app.core.get_node_service(
|
||||||
self.node_id, self.service_name
|
self.node_id, self.service_name
|
||||||
)
|
)
|
||||||
service_config = self.service_manager.configurations[self.node_id][
|
|
||||||
self.service_name
|
# # load data from local memory
|
||||||
]
|
# if self.service_name in self.service_manager.configurations[self.node_id]:
|
||||||
|
# service_config = self.service_manager.configurations[self.node_id][
|
||||||
|
# self.service_name
|
||||||
|
# ]
|
||||||
|
# else:
|
||||||
|
# self.service_manager.node_custom_service_configuration(
|
||||||
|
# self.node_id, self.service_name
|
||||||
|
# )
|
||||||
|
# service_config = self.service_manager.configurations[self.node_id][
|
||||||
|
# self.service_name
|
||||||
|
# ]
|
||||||
self.dependencies = [x for x in service_config.dependencies]
|
self.dependencies = [x for x in service_config.dependencies]
|
||||||
self.executables = [x for x in service_config.executables]
|
self.executables = [x for x in service_config.executables]
|
||||||
self.metadata = service_config.meta
|
self.metadata = service_config.meta
|
||||||
|
@ -359,16 +374,30 @@ class ServiceConfiguration(Dialog):
|
||||||
entry.delete(0, tk.END)
|
entry.delete(0, tk.END)
|
||||||
|
|
||||||
def click_apply(self):
|
def click_apply(self):
|
||||||
|
service_configs = self.app.core.service_configs
|
||||||
startup_commands = self.startup_commands_listbox.get(0, "end")
|
startup_commands = self.startup_commands_listbox.get(0, "end")
|
||||||
shutdown_commands = self.shutdown_commands_listbox.get(0, "end")
|
shutdown_commands = self.shutdown_commands_listbox.get(0, "end")
|
||||||
validate_commands = self.validate_commands_listbox.get(0, "end")
|
validate_commands = self.validate_commands_listbox.get(0, "end")
|
||||||
self.service_manager.node_service_custom_configuration(
|
config = self.core.set_node_service(
|
||||||
self.node_id,
|
self.node_id,
|
||||||
self.service_name,
|
self.service_name,
|
||||||
startup_commands,
|
startup_commands,
|
||||||
validate_commands,
|
validate_commands,
|
||||||
shutdown_commands,
|
shutdown_commands,
|
||||||
)
|
)
|
||||||
|
if self.node_id not in service_configs:
|
||||||
|
service_configs[self.node_id] = {}
|
||||||
|
if self.service_name not in service_configs[self.node_id]:
|
||||||
|
self.app.core.service_configs[self.node_id][self.service_name] = config
|
||||||
|
print(self.app.core.client.get_session(self.app.core.session_id))
|
||||||
|
|
||||||
|
# self.service_manager.node_service_custom_configuration(
|
||||||
|
# self.node_id,
|
||||||
|
# self.service_name,
|
||||||
|
# startup_commands,
|
||||||
|
# validate_commands,
|
||||||
|
# shutdown_commands,
|
||||||
|
# )
|
||||||
for file in self.modified_files:
|
for file in self.modified_files:
|
||||||
self.app.core.servicefileconfig_manager.set_custom_service_file_config(
|
self.app.core.servicefileconfig_manager.set_custom_service_file_config(
|
||||||
self.node_id, self.service_name, file, self.temp_service_files[file]
|
self.node_id, self.service_name, file, self.temp_service_files[file]
|
||||||
|
|
Loading…
Add table
Reference in a new issue