From 877f31cbad9f6928e81a4737e2df5dc6f72f6d96 Mon Sep 17 00:00:00 2001 From: nicolargo Date: Sun, 18 Apr 2021 18:24:15 +0200 Subject: Add update stats time --- glances/__init__.py | 7 ++++++- glances/outputs/glances_stdout_issue.py | 36 ++++++++++++++++++++++++++------- glances/standalone.py | 12 +++++++++-- 3 files changed, 45 insertions(+), 10 deletions(-) diff --git a/glances/__init__.py b/glances/__init__.py index c48b434e..8b640606 100644 --- a/glances/__init__.py +++ b/glances/__init__.py @@ -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() diff --git a/glances/outputs/glances_stdout_issue.py b/glances/outputs/glances_stdout_issue.py index c041207a..ca0ddc8d 100644 --- a/glances/outputs/glances_stdout_issue.py +++ b/glances/outputs/glances_stdout_issue.py @@ -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) diff --git a/glances/standalone.py b/glances/standalone.py index 351bfd95..1ab1facb 100644 --- a/glances/standalone.py +++ b/glances/standalone.py @@ -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): -- cgit v1.2.3