<p>daniel <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-sysmon/+/16001">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  pespin: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Cleaner output if sections are empty<br><br>Even with a completely empty config we still get the following output:<br><br>root<br>  sysinfo<br>    load: 0.87/0.92/0.98<br>    ram: 243/168/0<br>    uptime: 1d 22:18:19<br>  netdev<br>  ping<br>  file<br>  shellcmd<br><br>With this patch the sections are skipped if there are no entries and the<br>command no sysinfo can be used to skip displaying the system<br>information.<br><br>Change-Id: I429fe7626b43aef74ff7458f5c2864888fa9a562<br>---<br>M src/osysmon_file.c<br>M src/osysmon_ping.c<br>M src/osysmon_rtnl.c<br>M src/osysmon_shellcmd.c<br>M src/osysmon_sysinfo.c<br>5 files changed, 59 insertions(+), 14 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/osysmon_file.c b/src/osysmon_file.c</span><br><span>index 1dec3db..8e52497 100644</span><br><span>--- a/src/osysmon_file.c</span><br><span>+++ b/src/osysmon_file.c</span><br><span>@@ -153,6 +153,9 @@</span><br><span>     struct value_node *vn_file;</span><br><span>  struct osysmon_file *of;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+  if (llist_empty(&g_oss->files))</span><br><span style="color: hsl(120, 100%, 40%);">+                return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  vn_file = value_node_add(parent, "file", NULL);</span><br><span> </span><br><span>        llist_for_each_entry(of, &g_oss->files, list)</span><br><span>diff --git a/src/osysmon_ping.c b/src/osysmon_ping.c</span><br><span>index f736798..3484374 100644</span><br><span>--- a/src/osysmon_ping.c</span><br><span>+++ b/src/osysmon_ping.c</span><br><span>@@ -229,6 +229,10 @@</span><br><span>     struct value_node *vn_host;</span><br><span>  int num_host = iterator_count(g_oss->pings->ping_handle);</span><br><span>      pingobj_iter_t *iter;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       if (!num_host)</span><br><span style="color: hsl(120, 100%, 40%);">+                return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  struct value_node *vn_ping = value_node_add(parent, "ping", NULL);</span><br><span>         if (!vn_ping)</span><br><span>                return -ENOMEM;</span><br><span>@@ -257,8 +261,5 @@</span><br><span>                add_ttl(iter, vn_host);</span><br><span>      }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   if (num_host)</span><br><span style="color: hsl(0, 100%, 40%);">-           return ping_send(g_oss->pings->ping_handle);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-      return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+     return ping_send(g_oss->pings->ping_handle);</span><br><span> }</span><br><span>diff --git a/src/osysmon_rtnl.c b/src/osysmon_rtnl.c</span><br><span>index 9fd4251..f1e5a0e 100644</span><br><span>--- a/src/osysmon_rtnl.c</span><br><span>+++ b/src/osysmon_rtnl.c</span><br><span>@@ -401,6 +401,9 @@</span><br><span> {</span><br><span>      struct value_node *vn_net;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+        if (llist_empty(&g_oss->netdevs))</span><br><span style="color: hsl(120, 100%, 40%);">+              return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  if (!g_oss->rcs)</span><br><span>          g_oss->rcs = rtnl_init(NULL);</span><br><span> </span><br><span>diff --git a/src/osysmon_shellcmd.c b/src/osysmon_shellcmd.c</span><br><span>index 347b982..83dc0c9 100644</span><br><span>--- a/src/osysmon_shellcmd.c</span><br><span>+++ b/src/osysmon_shellcmd.c</span><br><span>@@ -165,6 +165,9 @@</span><br><span>      struct value_node *vn_file;</span><br><span>  struct osysmon_shellcmd *oc;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+      if (llist_empty(&g_oss->shellcmds))</span><br><span style="color: hsl(120, 100%, 40%);">+            return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  vn_file = value_node_add(parent, "shellcmd", NULL);</span><br><span> </span><br><span>    llist_for_each_entry(oc, &g_oss->shellcmds, list)</span><br><span>diff --git a/src/osysmon_sysinfo.c b/src/osysmon_sysinfo.c</span><br><span>index 85d9ee9..9cb434c 100644</span><br><span>--- a/src/osysmon_sysinfo.c</span><br><span>+++ b/src/osysmon_sysinfo.c</span><br><span>@@ -30,16 +30,6 @@</span><br><span> #include "osysmon.h"</span><br><span> #include "value_node.h"</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/***********************************************************************</span><br><span style="color: hsl(0, 100%, 40%);">- * Runtime Code</span><br><span style="color: hsl(0, 100%, 40%);">- ***********************************************************************/</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* called once on startup before config file parsing */</span><br><span style="color: hsl(0, 100%, 40%);">-int osysmon_sysinfo_init()</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-     return 0;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> static float loadfac(unsigned long in) {</span><br><span>       return in/65536.0;</span><br><span> }</span><br><span>@@ -55,6 +45,48 @@</span><br><span> #define to_minutes(in)  (((in)/(SECS_PER_MIN))%MINS_PER_HOUR)</span><br><span> #define to_seconds(in) ((in)%SECS_PER_MIN)</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+static bool sysinfo_enabled = true;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/***********************************************************************</span><br><span style="color: hsl(120, 100%, 40%);">+ * VTY</span><br><span style="color: hsl(120, 100%, 40%);">+ ***********************************************************************/</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#define CMD_STR "Display sysinfo\n"</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN(cfg_sysinfo, cfg_sysinfo_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+     "sysinfo",</span><br><span style="color: hsl(120, 100%, 40%);">+  CMD_STR)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+   sysinfo_enabled = true;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     return CMD_SUCCESS;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN(cfg_no_sysinfo, cfg_no_sysinfo_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+   "no sysinfo",</span><br><span style="color: hsl(120, 100%, 40%);">+       NO_STR CMD_STR)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+    sysinfo_enabled = false;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    return CMD_SUCCESS;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static void osysmon_sysinfo_vty_init(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+       install_element(CONFIG_NODE, &cfg_sysinfo_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+   install_element(CONFIG_NODE, &cfg_no_sysinfo_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/***********************************************************************</span><br><span style="color: hsl(120, 100%, 40%);">+ * Runtime Code</span><br><span style="color: hsl(120, 100%, 40%);">+ ***********************************************************************/</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* called once on startup before config file parsing */</span><br><span style="color: hsl(120, 100%, 40%);">+int osysmon_sysinfo_init()</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+   osysmon_sysinfo_vty_init();</span><br><span style="color: hsl(120, 100%, 40%);">+   return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* called periodically */</span><br><span> int osysmon_sysinfo_poll(struct value_node *parent)</span><br><span> {</span><br><span>@@ -63,6 +95,9 @@</span><br><span>  char buf[32];</span><br><span>        int rc;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+   if (!sysinfo_enabled)</span><br><span style="color: hsl(120, 100%, 40%);">+         return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  vn_sysinfo = value_node_add(parent, "sysinfo", NULL);</span><br><span> </span><br><span>  rc = sysinfo(&si);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-sysmon/+/16001">change 16001</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-sysmon/+/16001"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-sysmon </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I429fe7626b43aef74ff7458f5c2864888fa9a562 </div>
<div style="display:none"> Gerrit-Change-Number: 16001 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: daniel <dwillmann@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: daniel <dwillmann@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>