Code

apcups plugin: Implement the "ReportSeconds" option.
authorFlorian Forster <octo@collectd.org>
Fri, 14 Dec 2012 10:40:12 +0000 (11:40 +0100)
committerFlorian Forster <octo@collectd.org>
Fri, 14 Dec 2012 10:40:12 +0000 (11:40 +0100)
src/apcups.c
src/collectd.conf.in
src/collectd.conf.pod

index 4fbbde63aad113dcbefdbc2db47e545ca3b5c241..dd535b15f966c0e17ebc29281f80723f068d80c1 100644 (file)
@@ -70,6 +70,8 @@ struct apc_detail_s
 /* Default values for contacting daemon */
 static char *conf_host = NULL;
 static int   conf_port = NISPORT;
+/* Defaults to false for backwards compatibility. */
+static _Bool conf_report_seconds = 0;
 
 static int global_sockfd = -1;
 
@@ -81,9 +83,9 @@ static const char *config_keys[] =
 {
        "Host",
        "Port",
-       NULL
+       "ReportSeconds"
 };
-static int config_keys_num = 2;
+static int config_keys_num = STATIC_ARRAY_SIZE (config_keys);
 
 static int net_shutdown (int *fd)
 {
@@ -360,7 +362,13 @@ static int apc_query_server (char *host, int port,
                        else if (strcmp ("LINEFREQ", key) == 0)
                                apcups_detail->linefreq = value;
                        else if (strcmp ("TIMELEFT", key) == 0)
+                       {
+                               /* Convert minutes to seconds if requested by
+                                * the user. */
+                               if (conf_report_seconds)
+                                       value *= 60.0;
                                apcups_detail->timeleft = value;
+                       }
 
                        tokptr = strtok_r (NULL, ":", &toksaveptr);
                } /* while (tokptr != NULL) */
@@ -403,6 +411,13 @@ static int apcups_config (const char *key, const char *value)
                }
                conf_port = port_tmp;
        }
+       else if (strcasecmp (key, "ReportSeconds") == 0)
+       {
+               if (IS_TRUE (value))
+                       conf_report_seconds = 1;
+               else
+                       conf_report_seconds = 0;
+       }
        else
        {
                return (-1);
index 87af1c96c390b53ba79a51356c14f46678ece771..a565a57948ec1c010bc39050435aa4b8466c484f 100644 (file)
 #<Plugin apcups>
 #      Host "localhost"
 #      Port "3551"
+#      ReportSeconds true
 #</Plugin>
 
 #<Plugin ascent>
index f011dbcd0005934199d8ca7cc82928a37986b81c..b9f9549d223c1a0548609db6fd3dbac2a1067985 100644 (file)
@@ -641,6 +641,12 @@ B<apcupsd> can handle it.
 
 TCP-Port to connect to. Defaults to B<3551>.
 
+=item B<ReportSeconds> B<true|false>
+
+If set to B<true>, the time reported in the C<timeleft> metric will be
+converted to seconds. This is the recommended setting. If set to B<false>, the
+default for backwards compatibility, the time will be reported in minutes.
+
 =back
 
 =head2 Plugin C<ascent>