提交 877f31cb 编写于 作者: N nicolargo

Add update stats time

上级 6f8bfd31
......@@ -111,7 +111,12 @@ def start(config, args):
# Start the main loop
logger.debug("Glances started in {} seconds".format(start_duration.get()))
mode.serve_forever()
if args.stdout_issue:
# Serve once for issue/test mode
mode.serve_issue()
else:
# Serve forever
mode.serve_forever()
# Shutdown
mode.end()
......
......@@ -25,12 +25,14 @@ import shutil
from glances.logger import logger
from glances.compat import printandflush
from glances.timer import Counter
try:
TERMINAL_WIDTH = shutil.get_terminal_size(fallback=(79, 24)).columns
except:
TERMINAL_WIDTH = 79
class colors:
RED = '\033[91m'
GREEN = '\033[92m'
......@@ -45,6 +47,7 @@ class colors:
self.ORANGE = ''
self.NO = ''
class GlancesStdoutIssue(object):
"""
......@@ -60,7 +63,8 @@ class GlancesStdoutIssue(object):
pass
def print_issue(self, plugin, result, message):
sys.stdout.write('{}{}{}'.format(colors.BLUE + plugin, result, message))
sys.stdout.write('{}{}{}'.format(
colors.BLUE + plugin, result, message))
sys.stdout.write(colors.NO + '\n')
sys.stdout.flush()
......@@ -69,20 +73,38 @@ class GlancesStdoutIssue(object):
duration=3):
"""Display issue
"""
# printandflush(sorted(stats.getPluginsList()))
for plugin in sorted(stats.getPluginsList()):
for plugin in stats._plugins:
if stats._plugins[plugin].is_disable():
# If current plugin is disable
# then continue to next plugin
result = colors.ORANGE + '[N/A]'.rjust(19 - len(plugin))
message = colors.NO
self.print_issue(plugin, result, message)
continue
# Start the counter
counter = Counter()
counter.reset()
stat = None
stat_error = None
try:
# Update the stats
stats._plugins[plugin].update()
# Get the stats
stat = stats.get_plugin(plugin).get_export()
except Exception as e:
stat_error = e
if stat_error is None:
result = colors.GREEN + '[OK] '.rjust(25 - len(plugin))
message = colors.NO + str(stat)[0:TERMINAL_WIDTH-25]
result = (colors.GREEN +
'[OK] ' +
colors.BLUE +
' {:.4f}s '.format(counter.get())).rjust(40 - len(plugin))
message = colors.NO + str(stat)[0:TERMINAL_WIDTH-40]
else:
result = colors.RED + '[ERROR] '.rjust(25 - len(plugin))
message = colors.NO + str(stat_error)[0:TERMINAL_WIDTH-25]
result = (colors.RED +
'[ERROR]' +
colors.BLUE +
' {:.4f}s '.format(counter.get())).rjust(40 - len(plugin))
message = colors.NO + str(stat_error)[0:TERMINAL_WIDTH-40]
self.print_issue(plugin, result, message)
# Return True to exit directly (no refresh)
......
......@@ -116,7 +116,15 @@ class GlancesStandalone(object):
print("Exporters list: {}".format(
', '.join(sorted(self.stats.getExportsList(enable=False)))))
def __serve_forever(self):
def serve_issue(self):
"""Special mode for the --issue option
Update is done in the sceen.update function
"""
ret = not self.screen.update(self.stats)
self.end()
return ret
def __serve_once(self):
"""Main loop for the CLI.
return True if we should continue (no exit key has been pressed)
......@@ -156,7 +164,7 @@ class GlancesStandalone(object):
"""Wrapper to the serve_forever function."""
loop = True
while loop:
loop = self.__serve_forever()
loop = self.__serve_once()
self.end()
def end(self):
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册