diff --git a/Ccs/ccs_function_lib.py b/Ccs/ccs_function_lib.py index 1f15ec8f9e7548e147754128ce6906232c5ccd3b..e2f1c0b735a85468cf4853632cc416ed0d75e60f 100644 --- a/Ccs/ccs_function_lib.py +++ b/Ccs/ccs_function_lib.py @@ -416,7 +416,7 @@ def dbus_connection(name, instance=1): return dbuscon except: # print('Please start ' + str(name) + ' if it is not running') - logger.info('Connection to ' + str(name) + ' is not possible.') + logger.warning('Connection to ' + str(name) + ' is not possible.') return False @@ -2364,8 +2364,15 @@ def get_module_handle(module_name, instance=1, timeout=5): if module: return module else: - logger.error('No running {} instance found'.format(module_name.upper())) - return False + try: + # try one last time with fixed instance + module = dbus_connection(module_name, instance=1) + if not module: + raise ValueError + return module + except Exception as err: + logger.error('No running {} instance found'.format(module_name.upper())) + return False def _get_ccs_dbus_names(exclude=None): diff --git a/Ccs/poolview_sql.py b/Ccs/poolview_sql.py index 065750264e1f82b13f77b88ec263d8a1622df03f..3a966f4a707bdcc8eacec525d67d6d6d8dd02f8f 100644 --- a/Ccs/poolview_sql.py +++ b/Ccs/poolview_sql.py @@ -1594,18 +1594,23 @@ class TMPoolView(Gtk.Window): # # self.change_cursor(self.scrolled_treelist.get_window(),'progress') def clear_pool(self, widget): - poolmgr = cfl.dbus_connection('poolmanager', cfl.communication['poolmanager']) # don't clear static pools if self.active_pool_info.filename.count('/'): return - widget.set_sensitive(False) pool_name = self.get_active_pool_name() if pool_name is None: return + widget.set_sensitive(False) + poolmgr = cfl.get_module_handle('poolmanager', timeout=2) + + if not poolmgr: + widget.set_sensitive(True) + return + poolmgr.Functions('_clear_pool', pool_name) # self.active_pool_info = poolmgr.Dictionaries('loaded_pools', pool_name) self.Active_Pool_Info_append(poolmgr.Dictionaries('loaded_pools', pool_name)) diff --git a/Ccs/pus_datapool.py b/Ccs/pus_datapool.py index e9c1ef799255aef7f6ce4d6d2b633d32baef6d74..dffa48e55e97abb159325f96f967c77938e5325c 100644 --- a/Ccs/pus_datapool.py +++ b/Ccs/pus_datapool.py @@ -60,6 +60,8 @@ PLM_PKT_SUFFIX = packet_config.PLM_PKT_SUFFIX SOCK_TO_LIMIT = 900 # number of tm_recv socket timeouts before SQL session reconnect +PROTOCOLS = ['PUS', 'PLMSIM', 'SPW'] + communication = {} for name in cfg['ccs-dbus_names']: communication[name] = 0 @@ -369,6 +371,9 @@ class DatapoolManager: # options = override.get('options', options) protocol = protocol.upper() + if protocol not in PROTOCOLS: + self.logger.error('"{}" is not a supported protocol, aborting.'.format(protocol)) + return # check if recording connection with pool_name already exists and return if it does if pool_name in self.connections: @@ -477,6 +482,11 @@ class DatapoolManager: use_socket = override.get('use_socket', use_socket) # options = override.get('options', options) + protocol = protocol.upper() + if protocol not in PROTOCOLS: + self.logger.error('"{}" is not a supported protocol, aborting.'.format(protocol)) + return + if use_socket is not None: if isinstance(use_socket, socket.socket): sockfd = use_socket