From patchwork Tue May 17 16:02:02 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: gerrit-no-reply@lists.osmocom.org X-Patchwork-Id: 623197 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.osmocom.org (lists.osmocom.org [IPv6:2a01:4f8:191:444b::2:7]) by ozlabs.org (Postfix) with ESMTP id 3r8MXY0WXxz9t49 for ; Wed, 18 May 2016 02:02:05 +1000 (AEST) Received: from lists.osmocom.org (lists.osmocom.org [144.76.43.76]) by lists.osmocom.org (Postfix) with ESMTP id 8FADE22BD3; Tue, 17 May 2016 16:02:03 +0000 (UTC) X-Original-To: openbsc@lists.osmocom.org Delivered-To: openbsc@lists.osmocom.org Received: from 127.0.1.12 (unknown [127.0.1.12]) by lists.osmocom.org (Postfix) with ESMTPA id AA8AD22BCD; Tue, 17 May 2016 16:02:02 +0000 (UTC) Date: Tue, 17 May 2016 16:02:02 +0000 From: gerrit-no-reply@lists.osmocom.org Message-ID: X-Gerrit-MessageType: newchange Subject: Change in libosmocore[master]: add vty call show asciidoc: generate a documentation for cou... X-Gerrit-Change-Id: Ia8af883167e5ee631059299b107ea83c8bbffdfb X-Gerrit-ChangeURL: X-Gerrit-Commit: 888260c631f7ffb256b65213c0e63ab59201d6f5 MIME-Version: 1.0 Content-Disposition: inline User-Agent: Gerrit/2.12.2-31-gb331dbd-dirty X-BeenThere: openbsc@lists.osmocom.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Development of OpenBSC, OsmoBSC, OsmoNITB, OsmoCSCN" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: lynxis@fe80.eu Errors-To: openbsc-bounces@lists.osmocom.org Sender: "OpenBSC" From lynxis lazus : lynxis lazus has uploaded a new change for review. https://gerrit.osmocom.org/70 Change subject: add vty call show asciidoc: generate a documentation for counters ...................................................................... add vty call show asciidoc: generate a documentation for counters For each counter group a ascii doc table is generated containing all single counter with a reference to a section to add additional information to the counter Change-Id: Ia8af883167e5ee631059299b107ea83c8bbffdfb --- M src/vty/stats_vty.c 1 file changed, 111 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/70/70/1 diff --git a/src/vty/stats_vty.c b/src/vty/stats_vty.c index e0239bf..2193e70 100644 --- a/src/vty/stats_vty.c +++ b/src/vty/stats_vty.c @@ -33,6 +33,8 @@ #include #include +#include +#include #define CFG_STATS_STR "Configure stats sub-system\n" #define CFG_REPORTER_STR "Configure a stats reporter\n" @@ -355,6 +357,113 @@ return CMD_SUCCESS; } +static int ascii_handle_counter(struct osmo_counter *counter, void *sctx_) +{ + struct vty *vty = sctx_; + const char *description = counter->description ? counter->description : ""; + + /* | name | This document & | description | */ + vty_out(vty, "| %s | <> | %s%s", + counter->name, + counter->name, + description, + VTY_NEWLINE); + + return 0; +} + +static void ascii_counter_generate(struct vty *vty) +{ + vty_out(vty, "// ungrouped osmo_counters%s", VTY_NEWLINE); + vty_out(vty, ".ungrouped osmo counters%s", VTY_NEWLINE); + vty_out(vty, "|===%s", VTY_NEWLINE); + vty_out(vty, "| name | This document & | description%s", VTY_NEWLINE); + osmo_counters_for_each(ascii_handle_counter, vty); + vty_out(vty, "|===%s", VTY_NEWLINE); +} + +static int asciidoc_rate_ctr_handler( + struct rate_ctr_group *ctrg, struct rate_ctr *ctr, + const struct rate_ctr_desc *desc, void *sctx_) +{ + struct vty *vty = sctx_; + const char *description = desc->description ? desc->description : ""; + + /* | name | This document & | description | */ + vty_out(vty, "| %s | <<%s_%s>> | %s%s", + desc->name, + ctrg->desc->group_name_prefix, + desc->name, + description, + VTY_NEWLINE); + return 0; +} + +static int asciidoc_rate_ctr_group_handler(struct rate_ctr_group *ctrg, void *sctx_) +{ + struct vty *vty = sctx_; + vty_out(vty, "// rate_ctr_group table %s%s", ctrg->desc->group_description, VTY_NEWLINE); + vty_out(vty, ".%s - %s %s", ctrg->desc->group_name_prefix, ctrg->desc->group_description, VTY_NEWLINE); + vty_out(vty, "|===%s", VTY_NEWLINE); + vty_out(vty, "| name | This document & | description%s", VTY_NEWLINE); + rate_ctr_for_each_counter(ctrg, asciidoc_rate_ctr_handler, sctx_); + vty_out(vty, "|===%s", VTY_NEWLINE); + + return 0; +} + +static int asciidoc_osmo_stat_item_handler( + struct osmo_stat_item_group *statg, struct osmo_stat_item *item, void *sctx_) +{ + struct vty *vty = sctx_; + + const char *description = item->desc->description ? item->desc->description : ""; + const char *unit = item->desc->unit ? item->desc->unit : ""; + + /* | name | This document & | description | unit | */ + vty_out(vty, "| %s | <<%s_%s>> | %s | %s%s", + item->desc->name, + statg->desc->group_name_prefix, + item->desc->name, + description, + unit, + VTY_NEWLINE); + + return 0; +} + +static int asciidoc_osmo_stat_item_group_handler(struct osmo_stat_item_group *statg, void *sctx_) +{ + struct vty *vty = sctx_; + vty_out(vty, "%s%s", statg->desc->group_description, VTY_NEWLINE); + + vty_out(vty, "// osmo_stat_item_group table %s%s", statg->desc->group_description, VTY_NEWLINE); + vty_out(vty, ".%s - %s %s", statg->desc->group_name_prefix, statg->desc->group_description, VTY_NEWLINE); + vty_out(vty, "|===%s", VTY_NEWLINE); + vty_out(vty, "| name | This document & | description | unit%s", VTY_NEWLINE); + osmo_stat_item_for_each_item(statg, asciidoc_osmo_stat_item_handler, sctx_); + vty_out(vty, "|===%s", VTY_NEWLINE); + + + return 0; +} + +DEFUN(show_stats_asciidoc_table, + show_stats_asciidoc_table_cmd, + "show asciidoc", + "Generate an ascii doc table of all registered counters.\n") +{ + vty_out(vty, "// generating tables for rate_ctr_group%s", VTY_NEWLINE); + rate_ctr_for_each_group(asciidoc_rate_ctr_group_handler, vty); + + vty_out(vty, "// generating tables for osmo_stat_items%s", VTY_NEWLINE); + osmo_stat_item_for_each_group(asciidoc_osmo_stat_item_group_handler, vty); + + vty_out(vty, "// generating tables for osmo_counters%s", VTY_NEWLINE); + ascii_counter_generate(vty); + return CMD_SUCCESS; +} + static int config_write_stats_reporter(struct vty *vty, struct osmo_stats_reporter *srep) { if (srep == NULL) @@ -443,4 +552,6 @@ install_element(CFG_STATS_NODE, &cfg_stats_reporter_level_cmd); install_element(CFG_STATS_NODE, &cfg_stats_reporter_enable_cmd); install_element(CFG_STATS_NODE, &cfg_stats_reporter_disable_cmd); + + install_element_ve(&show_stats_asciidoc_table_cmd); }