Merge remote-tracking branch 'github/pr/1082'
authorFlorian Forster <octo@collectd.org>
Thu, 25 Jun 2015 19:40:27 +0000 (21:40 +0200)
committerFlorian Forster <octo@collectd.org>
Thu, 25 Jun 2015 19:40:27 +0000 (21:40 +0200)
1  2 
src/collectd.conf.pod
src/write_redis.c

diff --combined src/collectd.conf.pod
@@@ -1565,7 -1565,7 +1565,7 @@@ setting accordingly to prevent this fro
  =head2 Plugin C<curl_json>
  
  The B<curl_json plugin> collects values from JSON data to be parsed by
 -B<libyajl> (L<http://www.lloydforge.org/projects/yajl/>) retrieved via
 +B<libyajl> (L<https://lloyd.github.io/yajl/>) retrieved via
  either B<libcurl> (L<http://curl.haxx.se/>) or read directly from a
  unix socket. The former can be used, for example, to collect values
  from CouchDB documents (which are stored JSON notation), and the
@@@ -4513,16 -4513,6 +4513,16 @@@ The following options are accepted with
  Sets the URL to use to connect to the I<OpenLDAP> server. This option is
  I<mandatory>.
  
 +=item B<BindDN> I<BindDN>
 +
 +Name in the form of an LDAP distinguished name intended to be used for 
 +authentication. Defaults to empty string to establish an anonymous authorization.
 +
 +=item B<Password> I<Password>
 +
 +Password for simple bind authentication. If this option is not set, 
 +unauthenticated bind operation is used.
 +
  =item B<StartTLS> B<true|false>
  
  Defines whether TLS must be used when connecting to the I<OpenLDAP> server.
@@@ -7494,13 -7484,14 +7494,14 @@@ Synopsis
          Host "localhost"
          Port "6379"
          Timeout 1000
+         Prefix "examplePrefix"
      </Node>
    </Plugin>
  
  Values are submitted to I<Sorted Sets>, using the metric name as the key, and
  the timestamp as the score. Retrieving a date range can then be done using the
  C<ZRANGEBYSCORE> I<Redis> command. Additionnally, all the identifiers of these
- I<Sorted Sets> are kept in a I<Set> called C<collectd/values> and can be
+ I<Sorted Sets> are kept in a I<Set> called C<collectd/values> or C<Prefix/values> if a Prefix was specified and can be
  retrieved using the C<SMEMBERS> I<Redis> command. See
  L<http://redis.io/commands#sorted_set> and L<http://redis.io/commands#set> for
  details.
diff --combined src/write_redis.c
@@@ -40,6 -40,7 +40,7 @@@ struct wr_node_
    char *host;
    int port;
    struct timeval timeout;
+   char *prefix;
  
    redisContext *conn;
    pthread_mutex_t lock;
@@@ -67,7 -68,12 +68,12 @@@ static int wr_write (const data_set_t *
    status = FORMAT_VL (ident, sizeof (ident), vl);
    if (status != 0)
      return (status);
-   ssnprintf (key, sizeof (key), "collectd/%s", ident);
+   if (node->prefix == NULL) {
+     ssnprintf (key, sizeof (key), "collectd/%s", ident);
+   }
+   else {
+     ssnprintf (key, sizeof (key), "%s/%s", node->prefix, ident);
+   }
    ssnprintf (time, sizeof (time), "%.9f", CDTIME_T_TO_DOUBLE(vl->time));
  
    memset (value, 0, sizeof (value));
  
  #undef APPEND
  
 +  status = format_values (value_ptr, value_size, ds, vl, /* store rates = */ 0);
    pthread_mutex_lock (&node->lock);
 +  if (status != 0)
 +    return (status);
  
    if (node->conn == NULL)
    {
@@@ -179,6 -182,7 +185,7 @@@ static int wr_config_node (oconfig_item
    node->timeout.tv_sec = 0;
    node->timeout.tv_usec = 1000;
    node->conn = NULL;
+   node->prefix = NULL;
    pthread_mutex_init (&node->lock, /* attr = */ NULL);
  
    status = cf_util_get_string_buffer (ci, node->name, sizeof (node->name));
        status = cf_util_get_int (child, &timeout);
        if (status == 0) node->timeout.tv_usec = timeout;
      }
+     else if (strcasecmp ("Prefix", child->key) == 0) {
+       status = cf_util_get_string (child, &node->prefix);
+     }
      else
        WARNING ("write_redis plugin: Ignoring unknown config option \"%s\".",
            child->key);