Code

redis plugin: Add default configuration.
authorFlorian Forster <octo@leeloo.lan.home.verplant.org>
Tue, 17 Aug 2010 13:50:26 +0000 (15:50 +0200)
committerFlorian Forster <octo@leeloo.lan.home.verplant.org>
Tue, 17 Aug 2010 13:50:26 +0000 (15:50 +0200)
src/collectd.conf.pod
src/redis.c

index f16ebb1e46280a0f3e854936fac68d4bcc0729b8..a95f56bce96870129bfad39c029160985c7e4a7d 100644 (file)
@@ -3765,6 +3765,9 @@ which configures the connection parameters for this node.
     </Node>
   </Plugin>
 
+The information shown in the synopsis above is the I<default configuration>
+which is used by the plugin if no configuration is present.
+
 =over 4
 
 =item B<Node> I<Nodename>
index 1c01c3c4f77bf6b4cc404b0e071fc31b89b7784b..30bd8da34761f62bfd7448aa48db3581d858c072 100644 (file)
@@ -220,30 +220,44 @@ static void redis_submit_c (char *plugin_instance,
   plugin_dispatch_values (&vl);
 } /* }}} */
 
-static int redis_read (void) /* {{{ */
+static int redis_init (void) /* {{{ */
 {
-  REDIS rh;
-  REDIS_INFO info;
+  redis_node_t rn = { "default", REDIS_DEF_HOST, REDIS_DEF_PORT,
+    REDIS_DEF_TIMEOUT, /* next = */ NULL };
 
-  int status;
+  if (nodes_head == NULL)
+    redis_node_add (&rn);
+
+  return (0);
+} /* }}} int redis_init */
+
+static int redis_read (void) /* {{{ */
+{
   redis_node_t *rn;
 
   for (rn = nodes_head; rn != NULL; rn = rn->next)
   {
+    REDIS rh;
+    REDIS_INFO info;
+
+    int status;
+
     DEBUG ("redis plugin: querying info from node `%s' (%s:%d).", rn->name, rn->host, rn->port);
 
-    if ( (rh = credis_connect (rn->host, rn->port, rn->timeout)) == NULL )
+    rh = credis_connect (rn->host, rn->port, rn->timeout);
+    if (rh == NULL)
     {
       ERROR ("redis plugin: unable to connect to node `%s' (%s:%d).", rn->name, rn->host, rn->port);
-      status = -1;
-      break;
+      continue;
     }
 
-    if ( (status = credis_info (rh, &info)) == -1 )
+    memset (&info, 0, sizeof (info));
+    status = credis_info (rh, &info);
+    if (status != 0)
     {
       WARNING ("redis plugin: unable to get info from node `%s'.", rn->name);
       credis_close (rh);
-      break;
+      continue;
     }
 
     /* typedef struct _cr_info {
@@ -287,6 +301,7 @@ static int redis_read (void) /* {{{ */
 void module_register (void) /* {{{ */
 {
   plugin_register_complex_config ("redis", redis_config);
+  plugin_register_init ("redis", redis_init);
   plugin_register_read ("redis", redis_read);
   /* TODO: plugin_register_write: one redis list per value id with
    * X elements */