From: Mytnyk, VolodymyrX Date: Tue, 14 Feb 2017 12:15:28 +0000 (+0000) Subject: ovs_events: Make dispatch link status configurable X-Git-Tag: collectd-5.8.0~228^2 X-Git-Url: https://git.octo.it/?p=collectd.git;a=commitdiff_plain;h=5fdcd6c27eebf1455cb662cd52e90838bdf16960 ovs_events: Make dispatch link status configurable Change-Id: Ib1853ff8caf57c6e33171e9d419af84c2ce69cae Signed-off-by: Mytnyk, VolodymyrX ovs_events: Revert changing SendNotification default Change-Id: I5e318e132937301aac355dcedaf3474a623f3853 Signed-off-by: Mytnyk, VolodymyrX --- diff --git a/src/collectd.conf.in b/src/collectd.conf.in index ed2d5497..e5567793 100644 --- a/src/collectd.conf.in +++ b/src/collectd.conf.in @@ -1004,6 +1004,7 @@ # Socket "/var/run/openvswitch/db.sock" # Interfaces "br0" "veth0" # SendNotification false +# DispatchValues true # # diff --git a/src/collectd.conf.pod b/src/collectd.conf.pod index 29b79799..730696a3 100644 --- a/src/collectd.conf.pod +++ b/src/collectd.conf.pod @@ -5516,6 +5516,7 @@ B Socket "/var/run/openvswitch/db.sock" Interfaces "br0" "veth0" SendNotification false + DispatchValues true The plugin provides the following configuration options: @@ -5555,6 +5556,12 @@ Default: empty (all interfaces on all bridges are monitored) If set to true, OVS link notifications (interface status and OVS DB connection terminate) are sent to collectd. Default value is false. +=item B I + +Dispatch the OVS DB interface link status value with configured plugin interval. +Defaults to true. Please note, if B and B +options are false, no OVS information will be provided by the plugin. + =back B By default, the global interval setting is used within which to diff --git a/src/ovs_events.c b/src/ovs_events.c index c77bde4a..8c2cd12c 100644 --- a/src/ovs_events.c +++ b/src/ovs_events.c @@ -90,6 +90,9 @@ static ovs_events_ctx_t ovs_events_ctx = { .ovs_db_serv = "6640"} /* use default OVS DB service */ }; +/* Forward declaration */ +static int ovs_events_plugin_read(user_data_t *u); + /* This function is used only by "OVS_EVENTS_CTX_LOCK" define (see above). * It always returns 1 when context is locked. */ @@ -224,6 +227,7 @@ static int ovs_events_config_get_interfaces(const oconfig_item_t *ci) { * in allocated memory. Returns negative value in case of error. */ static int ovs_events_plugin_config(oconfig_item_t *ci) { + _Bool dispatch_values = 1; for (int i = 0; i < ci->children_num; i++) { oconfig_item_t *child = ci->children + i; if (strcasecmp("SendNotification", child->key) == 0) { @@ -260,12 +264,28 @@ static int ovs_events_plugin_config(oconfig_item_t *ci) { ovs_events_config_free(); return (-1); } + } else if (strcasecmp("DispatchValues", child->key) == 0) { + if (cf_util_get_boolean(child, &dispatch_values) != 0) { + ovs_events_config_free(); + return (-1); + } } else { ERROR(OVS_EVENTS_PLUGIN ": option '%s' is not allowed here", child->key); ovs_events_config_free(); return (-1); } } + /* Check and warn about invalid configuration */ + if (!ovs_events_ctx.config.send_notification && !dispatch_values) { + WARNING(OVS_EVENTS_PLUGIN ": send notification and dispatch values " + "options are disabled. No information will be dispatched by the " + "plugin. Please check your configuration"); + } + /* Dispatch link status values if configured */ + if (dispatch_values) + return plugin_register_complex_read(NULL, OVS_EVENTS_PLUGIN, + ovs_events_plugin_read, 0, NULL); + return (0); } @@ -633,7 +653,5 @@ static int ovs_events_plugin_shutdown(void) { void module_register(void) { plugin_register_complex_config(OVS_EVENTS_PLUGIN, ovs_events_plugin_config); plugin_register_init(OVS_EVENTS_PLUGIN, ovs_events_plugin_init); - plugin_register_complex_read(NULL, OVS_EVENTS_PLUGIN, ovs_events_plugin_read, - 0, NULL); plugin_register_shutdown(OVS_EVENTS_PLUGIN, ovs_events_plugin_shutdown); }