From dafcc65d5ce85e850c7fdc3e90f357cc0f9b13b0 Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Wed, 3 Dec 2014 23:16:34 +0100 Subject: [PATCH] Log if Zeroconf < 0.16 is detected --- conf/glances-test.conf | 4 ++-- glances/core/glances_autodiscover.py | 17 +++++++++++++---- glances/core/glances_client_browser.py | 18 +++++++++++------- glances/outputs/glances_curses.py | 2 +- 4 files changed, 27 insertions(+), 14 deletions(-) diff --git a/conf/glances-test.conf b/conf/glances-test.conf index 719ac78f..a88cb7ea 100644 --- a/conf/glances-test.conf +++ b/conf/glances-test.conf @@ -134,12 +134,12 @@ list_2_countmin=1 [serverlist] # Define the static server list server_1_name=localhost -server_1_alias=MonXPS +server_1_alias=My local PC server_1_port=61209 server_2_name=localhost server_2_port=61235 server_3_name=192.168.0.17 -server_3_alias=VMWin7 +server_3_alias=Another PC on my network server_3_port=61209 server_4_name=pasbon server_4_port=61237 diff --git a/glances/core/glances_autodiscover.py b/glances/core/glances_autodiscover.py index f5c263ea..8bb544b2 100644 --- a/glances/core/glances_autodiscover.py +++ b/glances/core/glances_autodiscover.py @@ -35,6 +35,15 @@ except ImportError: # Import Glances libs from glances.core.glances_globals import appname, logger +# Need Zeroconf 0.16 or higher +try: + from zeroconf import __version__ as __zeroconf_version__ + zeroconf_version_t = tuple([int(i) for i in __zeroconf_version__.split('.')]) + logger.debug("Zeroconf Python lib %s detected" % __zeroconf_version__) + if (zeroconf_version_t[0] == 0) and (zeroconf_version_t[1] < 16): + logger.warning("Please install Zeroconf Python lib 0.16 or higher") +except ImportError: + pass # Global var zeroconf_type = "_%s._tcp." % appname @@ -63,10 +72,10 @@ class AutoDiscovered(object): 'name': name.split(':')[0], # Short name 'ip': ip, # IP address seen by the client 'port': port, # TCP port - 'username': 'glances', # Default username - 'password': '', # Default password - 'status': 'UNKNOWN', # Server status: 'UNKNOWN', 'OFFLINE', 'ONLINE', 'PROTECTED' - 'type': 'DYNAMIC', # Server type: 'STATIC' or 'DYNAMIC' + 'username': 'glances', # Default username + 'password': '', # Default password + 'status': 'UNKNOWN', # Server status: 'UNKNOWN', 'OFFLINE', 'ONLINE', 'PROTECTED' + 'type': 'DYNAMIC', # Server type: 'STATIC' or 'DYNAMIC' } self._server_list.append(new_server) logger.debug("Updated servers list (%s servers): %s" % diff --git a/glances/core/glances_client_browser.py b/glances/core/glances_client_browser.py index 19e6f0a5..c6edf74b 100644 --- a/glances/core/glances_client_browser.py +++ b/glances/core/glances_client_browser.py @@ -193,14 +193,18 @@ class GlancesClientBrowser(object): # Return connection type: 'glances' or 'snmp' connection_type = client.serve_forever(return_to_browser=True) - logger.debug("Disconnect Glances client from the %s server" % - self.get_servers_list()[self.screen.get_active()]['key']) - - # Set the ONLINE status for the selected server - if connection_type == 'snmp': - self.set_in_selected('status', 'SNMP') + try: + logger.debug("Disconnect Glances client from the %s server" % + self.get_servers_list()[self.screen.get_active()]['key']) + except IndexError: + # Server did not exist anymore + pass else: - self.set_in_selected('status', 'ONLINE') + # Set the ONLINE status for the selected server + if connection_type == 'snmp': + self.set_in_selected('status', 'SNMP') + else: + self.set_in_selected('status', 'ONLINE') # Return to the browser (no server selected) self.screen.set_active(None) diff --git a/glances/outputs/glances_curses.py b/glances/outputs/glances_curses.py index 72b89eac..46c5d056 100644 --- a/glances/outputs/glances_curses.py +++ b/glances/outputs/glances_curses.py @@ -1079,7 +1079,7 @@ class GlancesCursesBrowser(_GlancesCurses): # Display server stats self.term_window.addnstr(y, xc, "%s" % server_stat[c[0]], - screen_x - xc, + c[2], self.colors_list[v['status']]) xc += c[2] + self.space_between_column cpt += 1