From ca93b88a3715612dddc01eac6d9ebbbb96a19b2f Mon Sep 17 00:00:00 2001 From: "A. Wilcox" Date: Mon, 7 Dec 2020 22:30:20 -0600 Subject: ietf-system: Factor boot time calculation out to util module --- ncserver/module/system.py | 10 ++-------- ncserver/util.py | 12 ++++++++++++ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/ncserver/module/system.py b/ncserver/module/system.py index f651a7f..4509eca 100644 --- a/ncserver/module/system.py +++ b/ncserver/module/system.py @@ -15,10 +15,8 @@ import os.path import pathlib import platform import subprocess -import time from datetime import datetime -from math import floor from socket import gethostname, sethostname from lxml import etree @@ -27,7 +25,7 @@ from netconf import error, util from ncserver.base.log import HOSTNAME_CHANGED, log_config_change from ncserver.base.util import _, ensure_leaf, handle_list_operation, \ node_operation, yang_dt_for_timestamp -from ncserver.util import maybe_raise_on_invalid_node +from ncserver.util import maybe_raise_on_invalid_node, system_boot_time QName = etree.QName # pylint: disable=I1101 @@ -381,11 +379,7 @@ def operational(node): yang_dt_for_timestamp(datetime.now().timestamp()) )) - with open('/proc/uptime', 'r') as upfile: - raw = upfile.read().split(' ')[0] - boot = floor(time.time() - float(raw)) - clock.append(util.leaf_elm('sys:boot-datetime', - yang_dt_for_timestamp(boot))) + clock.append(util.leaf_elm('sys:boot-datetime', system_boot_time())) # -- Editing functions -- diff --git a/ncserver/util.py b/ncserver/util.py index bf47f56..7349baf 100644 --- a/ncserver/util.py +++ b/ncserver/util.py @@ -11,10 +11,14 @@ SPDX-License-Identifier: NCSA """ +from math import floor +import time + from lxml.etree import QName # pylint: disable=E0611 from netconf import error from ncserver.base.modman import MODMAN +from ncserver.base.util import yang_dt_for_timestamp def maybe_raise_on_invalid_node(xmlns, rpc, node): @@ -35,3 +39,11 @@ def maybe_raise_on_invalid_node(xmlns, rpc, node): # pylint: disable=W0212 if nodens not in (mod.M_PREFIX for mod in MODMAN._augments_for_ns(xmlns)): raise error.UnknownNamespaceAppError(rpc, node, None) + + +def system_boot_time() -> str: + """Return the system's boot time.""" + with open('/proc/uptime', 'r') as upfile: + raw = upfile.read().split(' ')[0] + boot = floor(time.time() - float(raw)) + return yang_dt_for_timestamp(boot) -- cgit v1.2.3-70-g09d2