[collectd] [PATCH] hddtemp plugin, collectd.conf(5): Added "TranslateDevicename" config option.

Sebastian Harl sh at tokkee.org
Sun Feb 17 20:22:49 CET 2008


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 at tokkee.org>
---
 src/collectd.conf.in  |    5 +++--
 src/collectd.conf.pod |    7 +++++++
 src/hddtemp.c         |   27 +++++++++++++++++++--------
 3 files changed, 29 insertions(+), 10 deletions(-)

diff --git a/src/collectd.conf.in b/src/collectd.conf.in
index 93b97be..2554d60 100644
--- a/src/collectd.conf.in
+++ b/src/collectd.conf.in
@@ -102,10 +102,11 @@ FQDNLookup   true
 #	Exec "user:group" "/path/to/exec"
 #</Plugin>
 
-#<Plugin hddtemp>
+ at BUILD_PLUGIN_HDDTEMP_TRUE@<Plugin hddtemp>
 #	Host "127.0.0.1"
 #	Port "7634"
-#</Plugin>
+ at BUILD_PLUGIN_HDDTEMP_TRUE@	TranslateDevicename false
+ at BUILD_PLUGIN_HDDTEMP_TRUE@</Plugin>
 
 #<Plugin interface>
 #	Interface "eth0"
diff --git a/src/collectd.conf.pod b/src/collectd.conf.pod
index 7e05bdb..ac85e47 100644
--- a/src/collectd.conf.pod
+++ b/src/collectd.conf.pod
@@ -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>
diff --git a/src/hddtemp.c b/src/hddtemp.c
index 0a93920..8c4bc4a 100644
--- a/src/hddtemp.c
+++ b/src/hddtemp.c
@@ -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
 		{
-- 
1.5.4.23.gef5b9

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://mailman.verplant.org/pipermail/collectd/attachments/20080217/83e214bb/attachment.pgp 


More information about the collectd mailing list