From d91fa43fd261f0b6de9a6a6a664ad06ab9c05886 Mon Sep 17 00:00:00 2001 From: Daniil Baturin Date: Wed, 19 Jun 2024 18:24:06 +0100 Subject: [PATCH] op mode: T6498: move uptime helpers to vyos.utils.system to be able to call them from the new tech-support script --- python/vyos/utils/system.py | 32 +++++++++++++++++++++++++++++++- src/op_mode/uptime.py | 33 ++++----------------------------- 2 files changed, 35 insertions(+), 30 deletions(-) diff --git a/python/vyos/utils/system.py b/python/vyos/utils/system.py index 55813a5f74..f427032a4f 100644 --- a/python/vyos/utils/system.py +++ b/python/vyos/utils/system.py @@ -1,4 +1,4 @@ -# Copyright 2023 VyOS maintainers and contributors +# Copyright 2023-2024 VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -98,3 +98,33 @@ def load_as_module(name: str, path: str): mod = importlib.util.module_from_spec(spec) spec.loader.exec_module(mod) return mod + +def get_uptime_seconds(): + """ Returns system uptime in seconds """ + from re import search + from vyos.utils.file import read_file + + data = read_file("/proc/uptime") + seconds = search(r"([0-9\.]+)\s", data).group(1) + res = int(float(seconds)) + + return res + +def get_load_averages(): + """ Returns load averages for 1, 5, and 15 minutes as a dict """ + from re import search + from vyos.utils.file import read_file + from vyos.utils.cpu import get_core_count + + data = read_file("/proc/loadavg") + matches = search(r"\s*(?P[0-9\.]+)\s+(?P[0-9\.]+)\s+(?P[0-9\.]+)\s*", data) + + core_count = get_core_count() + + res = {} + res[1] = float(matches["one"]) / core_count + res[5] = float(matches["five"]) / core_count + res[15] = float(matches["fifteen"]) / core_count + + return res + diff --git a/src/op_mode/uptime.py b/src/op_mode/uptime.py index 559eed24c8..1c1a149ece 100755 --- a/src/op_mode/uptime.py +++ b/src/op_mode/uptime.py @@ -18,39 +18,14 @@ import vyos.opmode -def _get_uptime_seconds(): - from re import search - from vyos.utils.file import read_file - - data = read_file("/proc/uptime") - seconds = search("([0-9\.]+)\s", data).group(1) - - return int(float(seconds)) - -def _get_load_averages(): - from re import search - from vyos.utils.cpu import get_core_count - from vyos.utils.process import cmd - - data = cmd("uptime") - matches = search(r"load average:\s*(?P[0-9\.]+)\s*,\s*(?P[0-9\.]+)\s*,\s*(?P[0-9\.]+)\s*", data) - - core_count = get_core_count() - - res = {} - res[1] = float(matches["one"]) / core_count - res[5] = float(matches["five"]) / core_count - res[15] = float(matches["fifteen"]) / core_count - - return res - def _get_raw_data(): + from vyos.utils.system import get_uptime_seconds, get_load_averages from vyos.utils.convert import seconds_to_human res = {} - res["uptime_seconds"] = _get_uptime_seconds() - res["uptime"] = seconds_to_human(_get_uptime_seconds(), separator=' ') - res["load_average"] = _get_load_averages() + uptime_seconds = get_uptime_seconds() + res["uptime"] = seconds_to_human(uptime_seconds, separator=' ') + res["load_average"] = get_load_averages() return res