Code

hddtemp plugin, collectd.conf(5): Added "TranslateDevicename" config option.
authorSebastian Harl <sh@tokkee.org>
Sun, 17 Feb 2008 19:22:49 +0000 (20:22 +0100)
committerFlorian Forster <octo@huhu.verplant.org>
Mon, 18 Feb 2008 19:49:42 +0000 (20:49 +0100)
If enabled, translate the disk names to major/minor device numbers. For
backwards compatibility this defaults to true but it it recommended to disable
it as it will probably be removed in the next major version. Any other parts
of collectd have changed in a similar way with version 4.0, so hddtemp should
do so as well.

This option is disabled in new versions of the config file.

Signed-off-by: Sebastian Harl <sh@tokkee.org>
Signed-off-by: Florian Forster <octo@huhu.verplant.org>
src/collectd.conf.in
src/collectd.conf.pod
src/hddtemp.c

index 93b97be3591141efb114a99d1f18d5204351a014..2554d60a6f75a4ce4eba5e6bd012c056e6571b4e 100644 (file)
@@ -102,10 +102,11 @@ FQDNLookup   true
 #      Exec "user:group" "/path/to/exec"
 #</Plugin>
 
-#<Plugin hddtemp>
+@BUILD_PLUGIN_HDDTEMP_TRUE@<Plugin hddtemp>
 #      Host "127.0.0.1"
 #      Port "7634"
-#</Plugin>
+@BUILD_PLUGIN_HDDTEMP_TRUE@    TranslateDevicename false
+@BUILD_PLUGIN_HDDTEMP_TRUE@</Plugin>
 
 #<Plugin interface>
 #      Interface "eth0"
index 7e05bdbe9a36f6d0832859b69e623acee5be4c35..ac85e47782bbdda1f0fae290a19d1d21bbc74ceb 100644 (file)
@@ -342,6 +342,13 @@ Hostname to connect to. Defaults to B<127.0.0.1>.
 
 TCP-Port to connect to. Defaults to B<7634>.
 
+=item B<TranslateDevicename> I<true>|I<false>
+
+If enabled, translate the disk names to major/minor device numbers
+(e.E<nbsp>g. "8-0" for /dev/sda). For backwards compatibility this defaults to
+I<true> but it's recommended to disable it as it will probably be removed in
+the next major version.
+
 =back
 
 =head2 Plugin C<interface>
index 0a93920b99e4ce7e42c3d8a0b06c6fc91373c8e8..8c4bc4aa9c36a4b1a5597ce0720ba73ede55f237 100644 (file)
@@ -48,9 +48,9 @@ static const char *config_keys[] =
 {
        "Host",
        "Port",
-       NULL
+       "TranslateDevicename"
 };
-static int config_keys_num = 2;
+static int config_keys_num = STATIC_ARRAY_SIZE (config_keys);
 
 typedef struct hddname
 {
@@ -63,6 +63,7 @@ typedef struct hddname
 static hddname_t *first_hddname = NULL;
 static char *hddtemp_host = NULL;
 static char hddtemp_port[16];
+static int translate_devicename = 1;
 
 /*
  * NAME
@@ -223,6 +224,15 @@ static int hddtemp_config (const char *key, const char *value)
                        strncpy (hddtemp_port, value, sizeof (hddtemp_port));
                hddtemp_port[sizeof (hddtemp_port) - 1] = '\0';
        }
+       else if (strcasecmp (key, "TranslateDevicename") == 0)
+       {
+               if ((strcasecmp ("true", value) == 0)
+                               || (strcasecmp ("yes", value) == 0)
+                               || (strcasecmp ("on", value) == 0))
+                       translate_devicename = 1;
+               else
+                       translate_devicename = 0;
+       }
        else
        {
                return (-1);
@@ -388,14 +398,14 @@ static int hddtemp_init (void)
 } /* int hddtemp_init */
 
 /*
- * hddtemp_get_name
+ * hddtemp_get_major_minor
  *
  * Description:
  *   Try to "cook" a bit the drive name as returned
  *   by the hddtemp daemon. The intend is to transform disk
  *   names into <major>-<minor> when possible.
  */
-static char *hddtemp_get_name (char *drive)
+static char *hddtemp_get_major_minor (char *drive)
 {
        hddname_t *list;
        char *ret;
@@ -470,7 +480,7 @@ static int hddtemp_read (void)
 
        for (i = 0; i < num_disks; i++)
        {
-               char *name, *submit_name;
+               char *name, *major_minor;
                double temperature;
                char *mode;
 
@@ -487,10 +497,11 @@ static int hddtemp_read (void)
                if (mode[0] == 'F')
                        temperature = (temperature - 32.0) * 5.0 / 9.0;
 
-               if ((submit_name = hddtemp_get_name (name)) != NULL)
+               if (translate_devicename
+                               && (major_minor = hddtemp_get_major_minor (name)) != NULL)
                {
-                       hddtemp_submit (submit_name, temperature);
-                       free (submit_name);
+                       hddtemp_submit (major_minor, temperature);
+                       free (major_minor);
                }
                else
                {