pygui: adjust service configuration to not use grpc calls, data is saved and provided in start session call
This commit is contained in:
parent
4830538053
commit
3d356272f1
4 changed files with 43 additions and 66 deletions
|
@ -269,6 +269,12 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
|
||||||
for config in request.service_configs:
|
for config in request.service_configs:
|
||||||
grpcutils.service_configuration(session, config)
|
grpcutils.service_configuration(session, config)
|
||||||
|
|
||||||
|
# service file configs
|
||||||
|
for config in request.service_file_configs:
|
||||||
|
session.services.set_service_file(
|
||||||
|
config.node_id, config.service, config.file, config.data
|
||||||
|
)
|
||||||
|
|
||||||
# config service configs
|
# config service configs
|
||||||
for config in request.config_service_configs:
|
for config in request.config_service_configs:
|
||||||
node = self.get_node(session, config.node_id, context, CoreNode)
|
node = self.get_node(session, config.node_id, context, CoreNode)
|
||||||
|
@ -278,12 +284,6 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
|
||||||
for name, template in config.templates.items():
|
for name, template in config.templates.items():
|
||||||
service.set_template(name, template)
|
service.set_template(name, template)
|
||||||
|
|
||||||
# service file configs
|
|
||||||
for config in request.service_file_configs:
|
|
||||||
session.services.set_service_file(
|
|
||||||
config.node_id, config.service, config.file, config.data
|
|
||||||
)
|
|
||||||
|
|
||||||
# create links
|
# create links
|
||||||
_, exceptions = grpcutils.create_links(session, request.links)
|
_, exceptions = grpcutils.create_links(session, request.links)
|
||||||
if exceptions:
|
if exceptions:
|
||||||
|
|
|
@ -206,16 +206,16 @@ class ServiceDefault:
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class NodeServiceData:
|
class NodeServiceData:
|
||||||
executables: List[str]
|
executables: List[str] = field(default_factory=list)
|
||||||
dependencies: List[str]
|
dependencies: List[str] = field(default_factory=list)
|
||||||
dirs: List[str]
|
dirs: List[str] = field(default_factory=list)
|
||||||
configs: List[str]
|
configs: List[str] = field(default_factory=list)
|
||||||
startup: List[str]
|
startup: List[str] = field(default_factory=list)
|
||||||
validate: List[str]
|
validate: List[str] = field(default_factory=list)
|
||||||
validation_mode: ServiceValidationMode
|
validation_mode: ServiceValidationMode = ServiceValidationMode.NON_BLOCKING
|
||||||
validation_timer: int
|
validation_timer: int = 5
|
||||||
shutdown: List[str]
|
shutdown: List[str] = field(default_factory=list)
|
||||||
meta: str
|
meta: str = None
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_proto(cls, proto: services_pb2.NodeServiceData) -> "NodeServiceData":
|
def from_proto(cls, proto: services_pb2.NodeServiceData) -> "NodeServiceData":
|
||||||
|
|
|
@ -580,11 +580,6 @@ class CoreClient:
|
||||||
)
|
)
|
||||||
return node_service
|
return node_service
|
||||||
|
|
||||||
def set_node_service(self, node_id: int, config: ServiceConfig) -> NodeServiceData:
|
|
||||||
result = self.client.set_node_service(self.session.id, config)
|
|
||||||
logger.info("set node service result(%s): %s", result, config)
|
|
||||||
return self.client.get_node_service(self.session.id, node_id, config.service)
|
|
||||||
|
|
||||||
def get_node_service_file(
|
def get_node_service_file(
|
||||||
self, node_id: int, service_name: str, file_name: str
|
self, node_id: int, service_name: str, file_name: str
|
||||||
) -> str:
|
) -> str:
|
||||||
|
@ -600,13 +595,6 @@ class CoreClient:
|
||||||
)
|
)
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def set_node_service_file(
|
|
||||||
self, node_id: int, service_name: str, file_name: str, data: str
|
|
||||||
) -> None:
|
|
||||||
config = ServiceFileConfig(node_id, service_name, file_name, data)
|
|
||||||
result = self.client.set_node_service_file(self.session.id, config)
|
|
||||||
logger.info("set service file config %s: %s", config, result)
|
|
||||||
|
|
||||||
def create_nodes_and_links(self) -> None:
|
def create_nodes_and_links(self) -> None:
|
||||||
"""
|
"""
|
||||||
create nodes and links that have not been created yet
|
create nodes and links that have not been created yet
|
||||||
|
|
|
@ -7,12 +7,7 @@ from typing import TYPE_CHECKING, Dict, List, Optional, Set, Tuple
|
||||||
import grpc
|
import grpc
|
||||||
from PIL.ImageTk import PhotoImage
|
from PIL.ImageTk import PhotoImage
|
||||||
|
|
||||||
from core.api.grpc.wrappers import (
|
from core.api.grpc.wrappers import Node, NodeServiceData, ServiceValidationMode
|
||||||
Node,
|
|
||||||
NodeServiceData,
|
|
||||||
ServiceConfig,
|
|
||||||
ServiceValidationMode,
|
|
||||||
)
|
|
||||||
from core.gui import images
|
from core.gui import images
|
||||||
from core.gui.dialogs.copyserviceconfig import CopyServiceConfigDialog
|
from core.gui.dialogs.copyserviceconfig import CopyServiceConfigDialog
|
||||||
from core.gui.dialogs.dialog import Dialog
|
from core.gui.dialogs.dialog import Dialog
|
||||||
|
@ -454,37 +449,31 @@ class ServiceConfigDialog(Dialog):
|
||||||
self.current_service_color("")
|
self.current_service_color("")
|
||||||
self.destroy()
|
self.destroy()
|
||||||
return
|
return
|
||||||
|
files = set(self.filenames)
|
||||||
try:
|
if (
|
||||||
if (
|
self.is_custom_command()
|
||||||
self.is_custom_command()
|
or self.has_new_files()
|
||||||
or self.has_new_files()
|
or self.is_custom_directory()
|
||||||
or self.is_custom_directory()
|
):
|
||||||
):
|
startup, validate, shutdown = self.get_commands()
|
||||||
startup, validate, shutdown = self.get_commands()
|
files = set(self.filename_combobox["values"])
|
||||||
config = ServiceConfig(
|
service_data = NodeServiceData(
|
||||||
node_id=self.node.id,
|
configs=list(files),
|
||||||
service=self.service_name,
|
dirs=self.temp_directories,
|
||||||
files=list(self.filename_combobox["values"]),
|
startup=startup,
|
||||||
directories=self.temp_directories,
|
validate=validate,
|
||||||
startup=startup,
|
shutdown=shutdown,
|
||||||
validate=validate,
|
)
|
||||||
shutdown=shutdown,
|
logger.info("setting service data: %s", service_data)
|
||||||
)
|
self.node.service_configs[self.service_name] = service_data
|
||||||
service_data = self.core.set_node_service(self.node.id, config)
|
for file in self.modified_files:
|
||||||
self.node.service_configs[self.service_name] = service_data
|
if file not in files:
|
||||||
for file in self.modified_files:
|
continue
|
||||||
file_configs = self.node.service_file_configs.setdefault(
|
file_configs = self.node.service_file_configs.setdefault(
|
||||||
self.service_name, {}
|
self.service_name, {}
|
||||||
)
|
)
|
||||||
file_configs[file] = self.temp_service_files[file]
|
file_configs[file] = self.temp_service_files[file]
|
||||||
# TODO: check if this is really needed
|
self.current_service_color("green")
|
||||||
self.app.core.set_node_service_file(
|
|
||||||
self.node.id, self.service_name, file, self.temp_service_files[file]
|
|
||||||
)
|
|
||||||
self.current_service_color("green")
|
|
||||||
except grpc.RpcError as e:
|
|
||||||
self.app.show_grpc_exception("Save Service Config Error", e)
|
|
||||||
self.destroy()
|
self.destroy()
|
||||||
|
|
||||||
def display_service_file_data(self, event: tk.Event) -> None:
|
def display_service_file_data(self, event: tk.Event) -> None:
|
||||||
|
@ -592,7 +581,7 @@ class ServiceConfigDialog(Dialog):
|
||||||
if directory.is_dir():
|
if directory.is_dir():
|
||||||
if str(directory) not in self.temp_directories:
|
if str(directory) not in self.temp_directories:
|
||||||
self.dir_list.listbox.insert("end", directory)
|
self.dir_list.listbox.insert("end", directory)
|
||||||
self.temp_directories.append(directory)
|
self.temp_directories.append(str(directory))
|
||||||
|
|
||||||
def remove_directory(self) -> None:
|
def remove_directory(self) -> None:
|
||||||
d = self.directory_entry.get()
|
d = self.directory_entry.get()
|
||||||
|
|
Loading…
Add table
Reference in a new issue