catching grpc error on setup, displaying error dialog and exiting app
This commit is contained in:
parent
c36a72bc16
commit
088a69d9d9
2 changed files with 32 additions and 19 deletions
|
@ -98,6 +98,9 @@ class Application(tk.Frame):
|
||||||
def save_config(self):
|
def save_config(self):
|
||||||
appconfig.save(self.guiconfig)
|
appconfig.save(self.guiconfig)
|
||||||
|
|
||||||
|
def close(self):
|
||||||
|
self.master.destroy()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
log_format = "%(asctime)s - %(levelname)s - %(module)s:%(funcName)s - %(message)s"
|
log_format = "%(asctime)s - %(levelname)s - %(module)s:%(funcName)s - %(message)s"
|
||||||
|
|
|
@ -6,6 +6,9 @@ import logging
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
from tkinter import messagebox
|
||||||
|
|
||||||
|
import grpc
|
||||||
|
|
||||||
from core.api.grpc import client, core_pb2
|
from core.api.grpc import client, core_pb2
|
||||||
from coretk import appconfig
|
from coretk import appconfig
|
||||||
|
@ -386,28 +389,35 @@ class CoreClient:
|
||||||
|
|
||||||
:return: existing sessions
|
:return: existing sessions
|
||||||
"""
|
"""
|
||||||
self.client.connect()
|
try:
|
||||||
|
self.client.connect()
|
||||||
|
|
||||||
# get service information
|
# get service information
|
||||||
response = self.client.get_services()
|
response = self.client.get_services()
|
||||||
for service in response.services:
|
for service in response.services:
|
||||||
group_services = self.services.setdefault(service.group, set())
|
group_services = self.services.setdefault(service.group, set())
|
||||||
group_services.add(service.name)
|
group_services.add(service.name)
|
||||||
|
|
||||||
# if there are no sessions, create a new session, else join a session
|
# if there are no sessions, create a new session, else join a session
|
||||||
response = self.client.get_sessions()
|
response = self.client.get_sessions()
|
||||||
logging.info("current sessions: %s", response)
|
logging.info("current sessions: %s", response)
|
||||||
sessions = response.sessions
|
sessions = response.sessions
|
||||||
if len(sessions) == 0:
|
if len(sessions) == 0:
|
||||||
self.create_new_session()
|
self.create_new_session()
|
||||||
else:
|
else:
|
||||||
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)
|
response = self.client.get_service_defaults(self.session_id)
|
||||||
self.default_services = {
|
self.default_services = {
|
||||||
x.node_type: set(x.services) for x in response.defaults
|
x.node_type: set(x.services) for x in response.defaults
|
||||||
}
|
}
|
||||||
|
except grpc.RpcError as e:
|
||||||
|
if e.code() == grpc.StatusCode.UNAVAILABLE:
|
||||||
|
messagebox.showerror("Server Error", e.details())
|
||||||
|
else:
|
||||||
|
messagebox.showerror("GRPC Error", e.details())
|
||||||
|
self.app.close()
|
||||||
|
|
||||||
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)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue