Display a specific message during the first scan

This commit is contained in:
Nicolargo 2014-11-23 11:31:13 +01:00
parent 8a20b5d98c
commit 7044f27935
6 changed files with 50 additions and 21 deletions

View File

@ -121,7 +121,7 @@ def main():
standalone.serve_forever()
elif core.is_client():
if core.is_client_autodiscover():
if core.is_client_browser():
logger.info("Start client mode (browser)")
# Import the Glances client browser module

View File

@ -20,6 +20,7 @@
"""Manage autodiscover Glances server (thk to the ZeroConf protocol)."""
# Import system libs
import sys
import socket
try:
import netifaces
@ -136,13 +137,18 @@ class GlancesAutoDiscoverServer(object):
def __init__(self, args=None):
if zeroconf_tag:
logger.info("Init autodiscover mode (Zeroconf protocol)")
self.zeroconf = Zeroconf()
try:
self.zeroconf = Zeroconf()
except socker.error as e:
logger.critical("Can not start Zeroconf (%s)" % e)
sys.exit(2)
self.listener = GlancesAutoDiscoverListener()
self.browser = ServiceBrowser(
self.zeroconf, zeroconf_type, self.listener)
else:
logger.error(
logger.critical(
"Can not start autodiscover mode (Zeroconf lib is not installed)")
sys.exit(2)
def get_servers_list(self):
"""Return the current server list (dict of dict)"""

View File

@ -45,16 +45,21 @@ class GlancesClientBrowser(object):
self.config = config
# Start the autodiscover mode (Zeroconf listener)
if self.args.autodiscover:
if not self.args.disable_autodiscover:
self.autodiscover_server = GlancesAutoDiscoverServer()
else:
self.autodiscover_server = None
# Init screen
self.screen = GlancesCursesBrowser(args=self.args)
def get_servers_list(self):
"""Return the current server list (list of dict)"""
if self.args.autodiscover:
return self.autodiscover_server.get_servers_list()
if self.args.browser:
if self.autodiscover_server is not None:
return self.autodiscover_server.get_servers_list()
else:
return {}
else:
return {}

View File

@ -72,7 +72,8 @@ class Config(object):
self.parser.read(config_file)
logger.info(_("Read configuration file %s") % config_file)
except UnicodeDecodeError as e:
logger.error(_("Cannot decode configuration file '{0}': {1}").format(config_file, e))
logger.error(
_("Cannot decode configuration file '{0}': {1}").format(config_file, e))
sys.exit(1)
# Save the loaded configuration file path (issue #374)
self._loaded_config_file = config_file
@ -100,7 +101,8 @@ class Config(object):
* {/usr/local,}/etc directory (system-wide settings)
"""
paths = []
conf_path = os.path.realpath(os.path.join(work_path, '..', '..', 'conf'))
conf_path = os.path.realpath(
os.path.join(work_path, '..', '..', 'conf'))
if self.location is not None:
paths.append(self.location)
@ -110,12 +112,15 @@ class Config(object):
if is_linux or is_bsd:
paths.append(os.path.join(
os.environ.get('XDG_CONFIG_HOME') or os.path.expanduser('~/.config'),
os.environ.get('XDG_CONFIG_HOME') or os.path.expanduser(
'~/.config'),
appname, self.config_filename))
if hasattr(sys, 'real_prefix') or is_bsd:
paths.append(os.path.join(sys.prefix, 'etc', appname, self.config_filename))
paths.append(
os.path.join(sys.prefix, 'etc', appname, self.config_filename))
else:
paths.append(os.path.join('/etc', appname, self.config_filename))
paths.append(
os.path.join('/etc', appname, self.config_filename))
elif is_mac:
paths.append(os.path.join(
os.path.expanduser('~/Library/Application Support/'),

View File

@ -96,10 +96,10 @@ class GlancesMain(object):
help=_('connect to a Glances server by IPv4/IPv6 address or hostname'))
parser.add_argument('-s', '--server', action='store_true', default=False,
dest='server', help=_('run Glances in server mode'))
parser.add_argument('--autodiscover', action='store_true', default=False,
dest='autodiscover', help=_('autodetect all Glances servers on your local area network'))
parser.add_argument('--browser', action='store_true', default=False,
dest='browser', help=_('start the client browser (list of servers)'))
parser.add_argument('--disable-autodiscover', action='store_true', default=False,
dest='disable_autodiscover', help=_('disable server announcement on the local area network'))
dest='disable_autodiscover', help=_('disable autodiscover feature'))
parser.add_argument('-p', '--port', default=None, type=int, dest='port',
help=_('define the client/server TCP port [default: {0}]').format(self.server_port))
parser.add_argument('-B', '--bind', default='0.0.0.0', dest='bind_address',
@ -164,6 +164,10 @@ class GlancesMain(object):
else:
args.port = self.server_port
# Autodiscover
if args.disable_autodiscover:
logger.info("Auto discover mode is disabled")
# In web server mode, defaul refresh time: 5 sec
if args.webserver:
args.time = 5
@ -240,15 +244,15 @@ class GlancesMain(object):
def is_standalone(self):
"""Return True if Glances is running in standalone mode."""
return not self.args.client and not self.args.autodiscover and not self.args.server and not self.args.webserver
return not self.args.client and not self.args.browser and not self.args.server and not self.args.webserver
def is_client(self):
"""Return True if Glances is running in client mode."""
return (self.args.client or self.args.autodiscover) and not self.args.server
return (self.args.client or self.args.browser) and not self.args.server
def is_client_autodiscover(self):
"""Return True if Glances is running in client mode with autodiscover."""
return self.args.autodiscover and not self.args.server
def is_client_browser(self):
"""Return True if Glances is running in client browser mode."""
return self.args.browser and not self.args.server
def is_server(self):
"""Return True if Glances is running in server mode."""

View File

@ -836,6 +836,10 @@ class GlancesCursesBrowser(_GlancesCurses):
# Init the father class
_GlancesCurses.__init__(self, args=args)
# First time scan tag
# Used to display a specific message when the browser is started
self.first_scan = True
# Init refresh time
self.__refresh_time = args.time
@ -956,12 +960,17 @@ class GlancesCursesBrowser(_GlancesCurses):
# Display top header
if len(servers_list) == 0:
msg = _("No Glances server detected on your network")
if self.first_scan:
msg = _("Glances is scanning your network (please wait)...")
else:
msg = _("No Glances server detected on your network")
elif len(servers_list) == 1:
msg = _("One Glances server detected on your network")
else:
msg = _("%d Glances servers detected on your network" %
len(servers_list))
if self.args.disable_autodiscover:
msg += ' ' + _("(autodiscover is disabled)")
self.term_window.addnstr(y, x,
msg,
screen_x - x,