]> git.ipfire.org Git - thirdparty/collectd.git/commitdiff
curl_json plugin: Renamed the “couchdb” plugin to “curl_json”.
authorFlorian Forster <octo@leeloo.lan.home.verplant.org>
Thu, 27 Aug 2009 07:06:16 +0000 (09:06 +0200)
committerFlorian Forster <octo@leeloo.lan.home.verplant.org>
Thu, 27 Aug 2009 07:06:16 +0000 (09:06 +0200)
On Thu, Aug 20, 2009 at 10:31:22AM -0700, Doug MacEachern wrote:
> Wanted to bring this up before 4.8..
> When I first started on the couchdb plugin, there were metrics
> specific to couchdb, but ended up making it generic and the metrics
> are all specified in the config.  Since then, I've looked at Dynomite
> which has its own set of metrics exposed the same way:
> http://gist.github.com/137771
> Also noticed Hadoop 0.21 daemons now support: "/metrics?format=json to
> retrieve the data in a structured form.", but haven't had a chance to
> try yet.  I'm sure there's more too.  So I'm wondering if 'couchdb'
> should be renamed to something more generic, 'json' or 'yajl'  maybe?
> And/or pushing the curl/yajl code out to util functions, then add the
> couchdb specific metrics to the couchdb plugin.  Then also use the
> util functions for dynomite, hadoop, etc., specific plugins. Thoughts?

AUTHORS
README
configure.in
src/Makefile.am
src/curl_json.c [moved from src/couchdb.c with 64% similarity]

diff --git a/AUTHORS b/AUTHORS
index be3a83824d1dc59eea96e3c578296ec32e23b3cc..b8969145bc15a5db9d465b157637c247267596e6 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -51,6 +51,7 @@ Doug MacEachern <dougm at hyperic.com>
  - OpenVPN plugin.
  - jcollectd (two-way JMX integration).
  - A few other patches to various plugins.
+ - curl_json plugin.
 
 Edward “Koko” Konetzko <konetzed at quixoticagony.com>
  - fscache plugin.
diff --git a/README b/README
index 1cfa643492cfad182b161270c26dc67e13f59f8a..d5b796c87f79f976e535c8c34254f506a758c535 100644 (file)
--- a/README
+++ b/README
@@ -43,8 +43,9 @@ Features
     - conntrack
       Number of nf_conntrack entries.
 
-    - couchdb
-      Parse statistics from CouchDB JSON documents.
+    - curl_json
+      Retrieves JSON data via cURL and parses it according to user
+      configuration.
 
     - cpu
       CPU utilization: Time spent in the system, user, nice, idle, and related
@@ -549,7 +550,7 @@ Prerequisites
     <http://www.xmms.org/>
 
   * libyajl (optional)
-    Parse JSON data. This is needed for the `couchdb' plugin.
+    Parse JSON data. This is needed for the `curl_json' plugin.
     <http://www.lloydforge.org/projects/yajl/>
 
 Configuring / Compiling / Installing
index 949b6eddff98dfd603c4df99e749c5cf72883797..fbbe48846387a76c2bd1e573dd3ed095c19f300d 100644 (file)
@@ -3436,9 +3436,9 @@ plugin_ascent="no"
 plugin_battery="no"
 plugin_bind="no"
 plugin_conntrack="no"
-plugin_couchdb="no"
 plugin_cpu="no"
 plugin_cpufreq="no"
+plugin_curl_json="no"
 plugin_df="no"
 plugin_disk="no"
 plugin_entropy="no"
@@ -3556,7 +3556,7 @@ fi
 
 if test "x$with_libcurl" = "xyes" && test "x$with_libyajl" = "xyes"
 then
-       plugin_couchdb="yes"
+       plugin_curl_json="yes"
 fi
 
 if test "x$have_processor_info" = "xyes"
@@ -3706,11 +3706,11 @@ AC_PLUGIN([ascent],      [$plugin_ascent],     [AscentEmu player statistics])
 AC_PLUGIN([battery],     [$plugin_battery],    [Battery statistics])
 AC_PLUGIN([bind],        [$plugin_bind],       [ISC Bind nameserver statistics])
 AC_PLUGIN([conntrack],   [$plugin_conntrack],  [nf_conntrack statistics])
-AC_PLUGIN([couchdb],     [$plugin_couchdb],    [CouchDB statistics])
 AC_PLUGIN([cpufreq],     [$plugin_cpufreq],    [CPU frequency statistics])
 AC_PLUGIN([cpu],         [$plugin_cpu],        [CPU usage statistics])
 AC_PLUGIN([csv],         [yes],                [CSV output plugin])
 AC_PLUGIN([curl],        [$with_libcurl],      [CURL generic web statistics])
+AC_PLUGIN([curl_json],   [$plugin_curl_json],    [CouchDB statistics])
 AC_PLUGIN([dbi],         [$with_libdbi],       [General database statistics])
 AC_PLUGIN([df],          [$plugin_df],         [Filesystem usage statistics])
 AC_PLUGIN([disk],        [$plugin_disk],       [Disk usage statistics])
@@ -4004,11 +4004,11 @@ Configuration:
     battery . . . . . . . $enable_battery
     bind  . . . . . . . . $enable_bind
     conntrack . . . . . . $enable_conntrack
-    couchdb . . . . . . . $enable_couchdb
     cpu . . . . . . . . . $enable_cpu
     cpufreq . . . . . . . $enable_cpufreq
     csv . . . . . . . . . $enable_csv
     curl  . . . . . . . . $enable_curl
+    curl_json . . . . . . $enable_curl_json
     dbi . . . . . . . . . $enable_dbi
     df  . . . . . . . . . $enable_df
     disk  . . . . . . . . $enable_disk
index 0ca68095f67f14f47d28d02cfb29f1ebdb251138..beef39a8b4097648774ec6e725b0e78b35bd9d6d 100644 (file)
@@ -173,21 +173,6 @@ collectd_LDADD += "-dlopen" conntrack.la
 collectd_DEPENDENCIES += conntrack.la
 endif
 
-if BUILD_PLUGIN_COUCHDB
-pkglib_LTLIBRARIES += couchdb.la
-couchdb_la_SOURCES = couchdb.c
-couchdb_la_CFLAGS = $(AM_CFLAGS)
-couchdb_la_LDFLAGS = -module -avoid-version $(BUILD_WITH_LIBYAJL_LDFLAGS)
-couchdb_la_CPPFLAGS = $(BUILD_WITH_LIBYAJL_CPPFLAGS)
-couchdb_la_LIBADD = $(BUILD_WITH_LIBYAJL_LIBS)
-if BUILD_WITH_LIBCURL
-couchdb_la_CFLAGS += $(BUILD_WITH_LIBCURL_CFLAGS)
-couchdb_la_LIBADD += $(BUILD_WITH_LIBCURL_LIBS)
-endif
-collectd_LDADD += "-dlopen" couchdb.la
-collectd_DEPENDENCIES += couchdb.la
-endif
-
 if BUILD_PLUGIN_CPU
 pkglib_LTLIBRARIES += cpu.la
 cpu_la_SOURCES = cpu.c
@@ -238,6 +223,21 @@ endif
 collectd_DEPENDENCIES += curl.la
 endif
 
+if BUILD_PLUGIN_CURL_JSON
+pkglib_LTLIBRARIES += curl_json.la
+curl_json_la_SOURCES = curl_json.c
+curl_json_la_CFLAGS = $(AM_CFLAGS)
+curl_json_la_LDFLAGS = -module -avoid-version $(BUILD_WITH_LIBYAJL_LDFLAGS)
+curl_json_la_CPPFLAGS = $(BUILD_WITH_LIBYAJL_CPPFLAGS)
+curl_json_la_LIBADD = $(BUILD_WITH_LIBYAJL_LIBS)
+if BUILD_WITH_LIBCURL
+curl_json_la_CFLAGS += $(BUILD_WITH_LIBCURL_CFLAGS)
+curl_json_la_LIBADD += $(BUILD_WITH_LIBCURL_LIBS)
+endif
+collectd_LDADD += "-dlopen" curl_json.la
+collectd_DEPENDENCIES += curl_json.la
+endif
+
 if BUILD_PLUGIN_DBI
 pkglib_LTLIBRARIES += dbi.la
 dbi_la_SOURCES = dbi.c \
similarity index 64%
rename from src/couchdb.c
rename to src/curl_json.c
index 30f56da7bee0e3bbd6a0a51c3c5778a2f49f121c..53e8abda1bfeeb4aafe8196c202215a6ce8fab71 100644 (file)
@@ -1,5 +1,5 @@
 /**
- * collectd - src/couchdb.c
+ * collectd - src/curl_json.c
  * Copyright (C) 2009       Doug MacEachern
  * Copyright (C) 2006-2009  Florian octo Forster
  *
 #include <curl/curl.h>
 #include <yajl/yajl_parse.h>
 
-#define COUCHDB_DEFAULT_HOST "localhost"
-#define COUCHDB_KEY_MAGIC 0x43484b59UL /* CHKY */
-#define COUCHDB_IS_KEY(key) (key)->magic == COUCHDB_KEY_MAGIC
-#define COUCHDB_ANY "*"
+#define CJ_DEFAULT_HOST "localhost"
+#define CJ_KEY_MAGIC 0x43484b59UL /* CHKY */
+#define CJ_IS_KEY(key) (key)->magic == CJ_KEY_MAGIC
+#define CJ_ANY "*"
 #define COUCH_MIN(x,y) ((x) < (y) ? (x) : (y))
 
-struct couchdb_key_s;
-typedef struct couchdb_key_s couchdb_key_t;
-struct couchdb_key_s /* {{{ */
+struct cj_key_s;
+typedef struct cj_key_s cj_key_t;
+struct cj_key_s /* {{{ */
 {
   char *path;
   char *type;
@@ -47,7 +47,7 @@ struct couchdb_key_s /* {{{ */
 };
 /* }}} */
 
-struct couchdb_s /* {{{ */
+struct cj_s /* {{{ */
 {
   char *instance;
   char *host;
@@ -65,26 +65,26 @@ struct couchdb_s /* {{{ */
 
   yajl_handle yajl;
   c_avl_tree_t *tree;
-  couchdb_key_t *key;
+  cj_key_t *key;
   int depth;
   struct {
     union {
       c_avl_tree_t *tree;
-      couchdb_key_t *key;
+      cj_key_t *key;
     };
     char name[DATA_MAX_NAME_LEN];
   } state[YAJL_MAX_DEPTH];
 };
-typedef struct couchdb_s couchdb_t; /* }}} */
+typedef struct cj_s cj_t; /* }}} */
 
-static int couchdb_read (user_data_t *ud);
-static int couchdb_curl_perform (couchdb_t *db, CURL *curl);
-static void couchdb_submit (couchdb_t *db, couchdb_key_t *key, value_t *value);
+static int cj_read (user_data_t *ud);
+static int cj_curl_perform (cj_t *db, CURL *curl);
+static void cj_submit (cj_t *db, cj_key_t *key, value_t *value);
 
-static size_t couchdb_curl_callback (void *buf, /* {{{ */
+static size_t cj_curl_callback (void *buf, /* {{{ */
     size_t size, size_t nmemb, void *user_data)
 {
-  couchdb_t *db;
+  cj_t *db;
   size_t len;
   yajl_status status;
 
@@ -110,15 +110,15 @@ static size_t couchdb_curl_callback (void *buf, /* {{{ */
   {
     unsigned char *msg =
       yajl_get_error(db->yajl, 1, (unsigned char *)buf, len);
-    ERROR ("couchdb plugin: yajl_parse failed: %s", msg);
+    ERROR ("curl_json plugin: yajl_parse failed: %s", msg);
     yajl_free_error(db->yajl, msg);
     return (0); /* abort write callback */
   }
 
   return (len);
-} /* }}} size_t couchdb_curl_callback */
+} /* }}} size_t cj_curl_callback */
 
-static int couchdb_get_type (couchdb_key_t *key)
+static int cj_get_type (cj_key_t *key)
 {
   const data_set_t *ds;
 
@@ -130,17 +130,17 @@ static int couchdb_get_type (couchdb_key_t *key)
 }
 
 /* yajl callbacks */
-static int couchcb_integer (void *ctx, long val)
+static int cj_cb_integer (void *ctx, long val)
 {
-  couchdb_t *db = (couchdb_t *)ctx;
-  couchdb_key_t *key = db->state[db->depth].key;
+  cj_t *db = (cj_t *)ctx;
+  cj_key_t *key = db->state[db->depth].key;
 
   if (key != NULL)
   {
     value_t vt;
     int type;
 
-    type = couchdb_get_type (key);
+    type = cj_get_type (key);
     if (type == DS_TYPE_COUNTER)
       vt.counter = (counter_t) val;
     else if (type == DS_TYPE_GAUGE)
@@ -152,22 +152,22 @@ static int couchcb_integer (void *ctx, long val)
     else
       return 0;
 
-    couchdb_submit (db, key, &vt);
+    cj_submit (db, key, &vt);
   }
   return 1;
 }
 
-static int couchcb_double (void *ctx, double val)
+static int cj_cb_double (void *ctx, double val)
 {
-  couchdb_t *db = (couchdb_t *)ctx;
-  couchdb_key_t *key = db->state[db->depth].key;
+  cj_t *db = (cj_t *)ctx;
+  cj_key_t *key = db->state[db->depth].key;
 
   if (key != NULL)
   {
     value_t vt;
     int type;
 
-    type = couchdb_get_type (key);
+    type = cj_get_type (key);
     if (type == DS_TYPE_COUNTER)
       vt.counter = (counter_t) val;
     else if (type == DS_TYPE_GAUGE)
@@ -179,22 +179,22 @@ static int couchcb_double (void *ctx, double val)
     else
       return 0;
 
-    couchdb_submit (db, key, &vt);
+    cj_submit (db, key, &vt);
   }
   return 1;
 }
 
-static int couchcb_map_key (void *ctx, const unsigned char *val,
+static int cj_cb_map_key (void *ctx, const unsigned char *val,
                             unsigned int len)
 {
-  couchdb_t *db = (couchdb_t *)ctx;
+  cj_t *db = (cj_t *)ctx;
   c_avl_tree_t *tree;
 
   tree = db->state[db->depth-1].tree;
 
   if (tree != NULL)
   {
-    couchdb_key_t *value;
+    cj_key_t *value;
     char *name;
 
     name = db->state[db->depth].name;
@@ -203,7 +203,7 @@ static int couchcb_map_key (void *ctx, const unsigned char *val,
 
     if (c_avl_get (tree, name, (void *) &value) == 0)
       db->state[db->depth].key = value;
-    else if (c_avl_get (tree, COUCHDB_ANY, (void *) &value) == 0)
+    else if (c_avl_get (tree, CJ_ANY, (void *) &value) == 0)
       db->state[db->depth].key = value;
     else
       db->state[db->depth].key = NULL;
@@ -212,17 +212,17 @@ static int couchcb_map_key (void *ctx, const unsigned char *val,
   return 1;
 }
 
-static int couchcb_string (void *ctx, const unsigned char *val,
+static int cj_cb_string (void *ctx, const unsigned char *val,
                            unsigned int len)
 {
-  couchdb_t *db = (couchdb_t *)ctx;
+  cj_t *db = (cj_t *)ctx;
   c_avl_tree_t *tree;
   char *ptr;
 
   if (db->depth != 1) /* e.g. _all_dbs */
     return 1;
 
-  couchcb_map_key (ctx, val, len); /* same logic */
+  cj_cb_map_key (ctx, val, len); /* same logic */
 
   tree = db->state[db->depth].tree;
 
@@ -239,68 +239,68 @@ static int couchcb_string (void *ctx, const unsigned char *val,
 
     curl = curl_easy_duphandle (db->curl);
     curl_easy_setopt (curl, CURLOPT_URL, url);
-    couchdb_curl_perform (db, curl);
+    cj_curl_perform (db, curl);
     curl_easy_cleanup (curl);
   }
   return 1;
 }
 
-static int couchcb_start (void *ctx)
+static int cj_cb_start (void *ctx)
 {
-  couchdb_t *db = (couchdb_t *)ctx;
+  cj_t *db = (cj_t *)ctx;
   if (++db->depth >= YAJL_MAX_DEPTH)
   {
-    ERROR ("couchdb plugin: %s depth exceeds max, aborting.", db->url);
+    ERROR ("curl_json plugin: %s depth exceeds max, aborting.", db->url);
     return 0;
   }
   return 1;
 }
 
-static int couchcb_end (void *ctx)
+static int cj_cb_end (void *ctx)
 {
-  couchdb_t *db = (couchdb_t *)ctx;
+  cj_t *db = (cj_t *)ctx;
   db->state[db->depth].tree = NULL;
   --db->depth;
   return 1;
 }
 
-static int couchcb_start_map (void *ctx)
+static int cj_cb_start_map (void *ctx)
 {
-  return couchcb_start (ctx);
+  return cj_cb_start (ctx);
 }
 
-static int couchcb_end_map (void *ctx)
+static int cj_cb_end_map (void *ctx)
 {
-  return couchcb_end (ctx);
+  return cj_cb_end (ctx);
 }
 
-static int couchcb_start_array (void * ctx)
+static int cj_cb_start_array (void * ctx)
 {
-  return couchcb_start (ctx);
+  return cj_cb_start (ctx);
 }
 
-static int couchcb_end_array (void * ctx)
+static int cj_cb_end_array (void * ctx)
 {
-  return couchcb_start (ctx);
+  return cj_cb_start (ctx);
 }
 
 static yajl_callbacks ycallbacks = {
   NULL, /* null */
   NULL, /* boolean */
-  couchcb_integer,
-  couchcb_double,
+  cj_cb_integer,
+  cj_cb_double,
   NULL, /* number */
-  couchcb_string,
-  couchcb_start_map,
-  couchcb_map_key,
-  couchcb_end_map,
-  couchcb_start_array,
-  couchcb_end_array
+  cj_cb_string,
+  cj_cb_start_map,
+  cj_cb_map_key,
+  cj_cb_end_map,
+  cj_cb_start_array,
+  cj_cb_end_array
 };
 
 /* end yajl callbacks */
 
-static void couchdb_key_free (couchdb_key_t *key) /* {{{ */
+static void cj_key_free (cj_key_t *key) /* {{{ */
 {
   if (key == NULL)
     return;
@@ -310,35 +310,35 @@ static void couchdb_key_free (couchdb_key_t *key) /* {{{ */
   sfree (key->instance);
 
   sfree (key);
-} /* }}} void couchdb_key_free */
+} /* }}} void cj_key_free */
 
-static void couchdb_tree_free (c_avl_tree_t *tree) /* {{{ */
+static void cj_tree_free (c_avl_tree_t *tree) /* {{{ */
 {
   char *name;
   void *value;
 
   while (c_avl_pick (tree, (void *) &name, (void *) &value) == 0)
   {
-    couchdb_key_t *key = (couchdb_key_t *)value;
+    cj_key_t *key = (cj_key_t *)value;
 
-    if (COUCHDB_IS_KEY(key))
-      couchdb_key_free (key);
+    if (CJ_IS_KEY(key))
+      cj_key_free (key);
     else
-      couchdb_tree_free ((c_avl_tree_t *)value);
+      cj_tree_free ((c_avl_tree_t *)value);
 
     sfree (name);
   }
 
   c_avl_destroy (tree);
-} /* }}} void couchdb_tree_free */
+} /* }}} void cj_tree_free */
 
-static void couchdb_free (void *arg) /* {{{ */
+static void cj_free (void *arg) /* {{{ */
 {
-  couchdb_t *db;
+  cj_t *db;
 
-  DEBUG ("couchdb plugin: couchdb_free (arg = %p);", arg);
+  DEBUG ("curl_json plugin: cj_free (arg = %p);", arg);
 
-  db = (couchdb_t *) arg;
+  db = (cj_t *) arg;
 
   if (db == NULL)
     return;
@@ -348,7 +348,7 @@ static void couchdb_free (void *arg) /* {{{ */
   db->curl = NULL;
 
   if (db->tree != NULL)
-    couchdb_tree_free (db->tree);
+    cj_tree_free (db->tree);
   db->tree = NULL;
 
   sfree (db->instance);
@@ -361,16 +361,16 @@ static void couchdb_free (void *arg) /* {{{ */
   sfree (db->cacert);
 
   sfree (db);
-} /* }}} void couchdb_free */
+} /* }}} void cj_free */
 
 /* Configuration handling functions {{{ */
 
-static int couchdb_config_add_string (const char *name, char **dest, /* {{{ */
+static int cj_config_add_string (const char *name, char **dest, /* {{{ */
                                       oconfig_item_t *ci)
 {
   if ((ci->values_num != 1) || (ci->values[0].type != OCONFIG_TYPE_STRING))
   {
-    WARNING ("couchdb plugin: `%s' needs exactly one string argument.", name);
+    WARNING ("curl_json plugin: `%s' needs exactly one string argument.", name);
     return (-1);
   }
 
@@ -380,54 +380,54 @@ static int couchdb_config_add_string (const char *name, char **dest, /* {{{ */
     return (-1);
 
   return (0);
-} /* }}} int couchdb_config_add_string */
+} /* }}} int cj_config_add_string */
 
-static int couchdb_config_set_boolean (const char *name, int *dest, /* {{{ */
+static int cj_config_set_boolean (const char *name, int *dest, /* {{{ */
                                        oconfig_item_t *ci)
 {
   if ((ci->values_num != 1) || (ci->values[0].type != OCONFIG_TYPE_BOOLEAN))
   {
-    WARNING ("couchdb plugin: `%s' needs exactly one boolean argument.", name);
+    WARNING ("curl_json plugin: `%s' needs exactly one boolean argument.", name);
     return (-1);
   }
 
   *dest = ci->values[0].value.boolean ? 1 : 0;
 
   return (0);
-} /* }}} int couchdb_config_set_boolean */
+} /* }}} int cj_config_set_boolean */
 
-static c_avl_tree_t *couchdb_avl_create(void)
+static c_avl_tree_t *cj_avl_create(void)
 {
   return c_avl_create ((int (*) (const void *, const void *)) strcmp);
 }
 
-static int couchdb_config_add_key (couchdb_t *db, /* {{{ */
+static int cj_config_add_key (cj_t *db, /* {{{ */
                                    oconfig_item_t *ci)
 {
-  couchdb_key_t *key;
+  cj_key_t *key;
   int status;
   int i;
 
   if ((ci->values_num != 1)
       || (ci->values[0].type != OCONFIG_TYPE_STRING))
   {
-    WARNING ("couchdb plugin: The `Key' block "
+    WARNING ("curl_json plugin: The `Key' block "
              "needs exactly one string argument.");
     return (-1);
   }
 
-  key = (couchdb_key_t *) malloc (sizeof (*key));
+  key = (cj_key_t *) malloc (sizeof (*key));
   if (key == NULL)
   {
-    ERROR ("couchdb plugin: malloc failed.");
+    ERROR ("curl_json plugin: malloc failed.");
     return (-1);
   }
   memset (key, 0, sizeof (*key));
-  key->magic = COUCHDB_KEY_MAGIC;
+  key->magic = CJ_KEY_MAGIC;
 
   if (strcasecmp ("Key", ci->key) == 0)
   {
-    status = couchdb_config_add_string ("Key", &key->path, ci);
+    status = cj_config_add_string ("Key", &key->path, ci);
     if (status != 0)
     {
       sfree (key);
@@ -436,7 +436,7 @@ static int couchdb_config_add_key (couchdb_t *db, /* {{{ */
   }
   else
   {
-    ERROR ("couchdb plugin: couchdb_config: "
+    ERROR ("curl_json plugin: cj_config: "
            "Invalid key: %s", ci->key);
     return (-1);
   }
@@ -447,12 +447,12 @@ static int couchdb_config_add_key (couchdb_t *db, /* {{{ */
     oconfig_item_t *child = ci->children + i;
 
     if (strcasecmp ("Type", child->key) == 0)
-      status = couchdb_config_add_string ("Type", &key->type, child);
+      status = cj_config_add_string ("Type", &key->type, child);
     else if (strcasecmp ("Instance", child->key) == 0)
-      status = couchdb_config_add_string ("Instance", &key->instance, child);
+      status = cj_config_add_string ("Instance", &key->instance, child);
     else
     {
-      WARNING ("couchdb plugin: Option `%s' not allowed here.", child->key);
+      WARNING ("curl_json plugin: Option `%s' not allowed here.", child->key);
       status = -1;
     }
 
@@ -464,7 +464,7 @@ static int couchdb_config_add_key (couchdb_t *db, /* {{{ */
   {
     if (key->type == NULL)
     {
-      WARNING ("couchdb plugin: `Type' missing in `Key' block.");
+      WARNING ("curl_json plugin: `Type' missing in `Key' block.");
       status = -1;
     }
 
@@ -484,7 +484,7 @@ static int couchdb_config_add_key (couchdb_t *db, /* {{{ */
     c_avl_tree_t *tree;
 
     if (db->tree == NULL)
-      db->tree = couchdb_avl_create();
+      db->tree = cj_avl_create();
 
     tree = db->tree;
     name = key->path;
@@ -507,7 +507,7 @@ static int couchdb_config_add_key (couchdb_t *db, /* {{{ */
 
         if (c_avl_get (tree, ent, (void *) &value) != 0)
         {
-          value = couchdb_avl_create ();
+          value = cj_avl_create ();
           c_avl_insert (tree, strdup (ent), value);
         }
 
@@ -520,24 +520,24 @@ static int couchdb_config_add_key (couchdb_t *db, /* {{{ */
       c_avl_insert (tree, strdup(name), key);
     else
     {
-      ERROR ("couchdb plugin: invalid key: %s", key->path);
+      ERROR ("curl_json plugin: invalid key: %s", key->path);
       status = -1;
     }
   }
 
   return (status);
-} /* }}} int couchdb_config_add_key */
+} /* }}} int cj_config_add_key */
 
-static int couchdb_init_curl (couchdb_t *db) /* {{{ */
+static int cj_init_curl (cj_t *db) /* {{{ */
 {
   db->curl = curl_easy_init ();
   if (db->curl == NULL)
   {
-    ERROR ("couchdb plugin: curl_easy_init failed.");
+    ERROR ("curl_json plugin: curl_easy_init failed.");
     return (-1);
   }
 
-  curl_easy_setopt (db->curl, CURLOPT_WRITEFUNCTION, couchdb_curl_callback);
+  curl_easy_setopt (db->curl, CURLOPT_WRITEFUNCTION, cj_curl_callback);
   curl_easy_setopt (db->curl, CURLOPT_WRITEDATA, db);
   curl_easy_setopt (db->curl, CURLOPT_USERAGENT,
                     PACKAGE_NAME"/"PACKAGE_VERSION);
@@ -555,7 +555,7 @@ static int couchdb_init_curl (couchdb_t *db) /* {{{ */
     db->credentials = (char *) malloc (credentials_size);
     if (db->credentials == NULL)
     {
-      ERROR ("couchdb plugin: malloc failed.");
+      ERROR ("curl_json plugin: malloc failed.");
       return (-1);
     }
 
@@ -571,33 +571,33 @@ static int couchdb_init_curl (couchdb_t *db) /* {{{ */
     curl_easy_setopt (db->curl, CURLOPT_CAINFO, db->cacert);
 
   return (0);
-} /* }}} int couchdb_init_curl */
+} /* }}} int cj_init_curl */
 
-static int couchdb_config_add_url (oconfig_item_t *ci) /* {{{ */
+static int cj_config_add_url (oconfig_item_t *ci) /* {{{ */
 {
-  couchdb_t *db;
+  cj_t *db;
   int status = 0;
   int i;
 
   if ((ci->values_num != 1)
       || (ci->values[0].type != OCONFIG_TYPE_STRING))
   {
-    WARNING ("couchdb plugin: The `URL' block "
+    WARNING ("curl_json plugin: The `URL' block "
              "needs exactly one string argument.");
     return (-1);
   }
 
-  db = (couchdb_t *) malloc (sizeof (*db));
+  db = (cj_t *) malloc (sizeof (*db));
   if (db == NULL)
   {
-    ERROR ("couchdb plugin: malloc failed.");
+    ERROR ("curl_json plugin: malloc failed.");
     return (-1);
   }
   memset (db, 0, sizeof (*db));
 
   if (strcasecmp ("URL", ci->key) == 0)
   {
-    status = couchdb_config_add_string ("URL", &db->url, ci);
+    status = cj_config_add_string ("URL", &db->url, ci);
     if (status != 0)
     {
       sfree (db);
@@ -606,35 +606,35 @@ static int couchdb_config_add_url (oconfig_item_t *ci) /* {{{ */
   }
   else
   {
-    ERROR ("couchdb plugin: couchdb_config: "
+    ERROR ("curl_json plugin: cj_config: "
            "Invalid key: %s", ci->key);
     return (-1);
   }
 
-  /* Fill the `couchdb_t' structure.. */
+  /* Fill the `cj_t' structure.. */
   for (i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
     if (strcasecmp ("Instance", child->key) == 0)
-      status = couchdb_config_add_string ("Instance", &db->instance, child);
+      status = cj_config_add_string ("Instance", &db->instance, child);
     else if (strcasecmp ("Host", child->key) == 0)
-      status = couchdb_config_add_string ("Host", &db->host, child);
+      status = cj_config_add_string ("Host", &db->host, child);
     else if (strcasecmp ("User", child->key) == 0)
-      status = couchdb_config_add_string ("User", &db->user, child);
+      status = cj_config_add_string ("User", &db->user, child);
     else if (strcasecmp ("Password", child->key) == 0)
-      status = couchdb_config_add_string ("Password", &db->pass, child);
+      status = cj_config_add_string ("Password", &db->pass, child);
     else if (strcasecmp ("VerifyPeer", child->key) == 0)
-      status = couchdb_config_set_boolean ("VerifyPeer", &db->verify_peer, child);
+      status = cj_config_set_boolean ("VerifyPeer", &db->verify_peer, child);
     else if (strcasecmp ("VerifyHost", child->key) == 0)
-      status = couchdb_config_set_boolean ("VerifyHost", &db->verify_host, child);
+      status = cj_config_set_boolean ("VerifyHost", &db->verify_host, child);
     else if (strcasecmp ("CACert", child->key) == 0)
-      status = couchdb_config_add_string ("CACert", &db->cacert, child);
+      status = cj_config_add_string ("CACert", &db->cacert, child);
     else if (strcasecmp ("Key", child->key) == 0)
-      status = couchdb_config_add_key (db, child);
+      status = cj_config_add_key (db, child);
     else
     {
-      WARNING ("couchdb plugin: Option `%s' not allowed here.", child->key);
+      WARNING ("curl_json plugin: Option `%s' not allowed here.", child->key);
       status = -1;
     }
 
@@ -646,12 +646,12 @@ static int couchdb_config_add_url (oconfig_item_t *ci) /* {{{ */
   {
     if (db->tree == NULL)
     {
-      WARNING ("couchdb plugin: No (valid) `Key' block "
+      WARNING ("curl_json plugin: No (valid) `Key' block "
                "within `URL' block `%s'.", db->url);
       status = -1;
     }
     if (status == 0)
-      status = couchdb_init_curl (db);
+      status = cj_init_curl (db);
   }
 
   /* If all went well, register this database for reading */
@@ -663,30 +663,30 @@ static int couchdb_config_add_url (oconfig_item_t *ci) /* {{{ */
     if (db->instance == NULL)
       db->instance = strdup("default");
 
-    DEBUG ("couchdb plugin: Registering new read callback: %s",
+    DEBUG ("curl_json plugin: Registering new read callback: %s",
            db->instance);
 
     memset (&ud, 0, sizeof (ud));
     ud.data = (void *) db;
-    ud.free_func = couchdb_free;
+    ud.free_func = cj_free;
 
-    ssnprintf (cb_name, sizeof (cb_name), "couchdb-%s-%s",
+    ssnprintf (cb_name, sizeof (cb_name), "curl_json-%s-%s",
                db->instance, db->url);
 
-    plugin_register_complex_read (cb_name, couchdb_read,
+    plugin_register_complex_read (cb_name, cj_read,
                                   /* interval = */ NULL, &ud);
   }
   else
   {
-    couchdb_free (db);
+    cj_free (db);
     return (-1);
   }
 
   return (0);
 }
- /* }}} int couchdb_config_add_database */
+ /* }}} int cj_config_add_database */
 
-static int couchdb_config (oconfig_item_t *ci) /* {{{ */
+static int cj_config (oconfig_item_t *ci) /* {{{ */
 {
   int success;
   int errors;
@@ -702,7 +702,7 @@ static int couchdb_config (oconfig_item_t *ci) /* {{{ */
 
     if (strcasecmp ("URL", child->key) == 0)
     {
-      status = couchdb_config_add_url (child);
+      status = cj_config_add_url (child);
       if (status == 0)
         success++;
       else
@@ -710,23 +710,23 @@ static int couchdb_config (oconfig_item_t *ci) /* {{{ */
     }
     else
     {
-      WARNING ("couchdb plugin: Option `%s' not allowed here.", child->key);
+      WARNING ("curl_json plugin: Option `%s' not allowed here.", child->key);
       errors++;
     }
   }
 
   if ((success == 0) && (errors > 0))
   {
-    ERROR ("couchdb plugin: All statements failed.");
+    ERROR ("curl_json plugin: All statements failed.");
     return (-1);
   }
 
   return (0);
-} /* }}} int couchdb_config */
+} /* }}} int cj_config */
 
 /* }}} End of configuration handling functions */
 
-static void couchdb_submit (couchdb_t *db, couchdb_key_t *key, value_t *value) /* {{{ */
+static void cj_submit (cj_t *db, cj_key_t *key, value_t *value) /* {{{ */
 {
   value_list_t vl = VALUE_LIST_INIT;
   char *host;
@@ -736,7 +736,7 @@ static void couchdb_submit (couchdb_t *db, couchdb_key_t *key, value_t *value) /
 
   if ((db->host == NULL)
       || (strcmp ("", db->host) == 0)
-      || (strcmp (COUCHDB_DEFAULT_HOST, db->host) == 0))
+      || (strcmp (CJ_DEFAULT_HOST, db->host) == 0))
     host = hostname_g;
   else
     host = db->host;
@@ -748,14 +748,14 @@ static void couchdb_submit (couchdb_t *db, couchdb_key_t *key, value_t *value) /
     sstrncpy (vl.type_instance, key->instance, sizeof (vl.type_instance));
 
   sstrncpy (vl.host, host, sizeof (vl.host));
-  sstrncpy (vl.plugin, "couchdb", sizeof (vl.plugin));
+  sstrncpy (vl.plugin, "curl_json", sizeof (vl.plugin));
   sstrncpy (vl.plugin_instance, db->instance, sizeof (vl.plugin_instance));
   sstrncpy (vl.type, key->type, sizeof (vl.type));
 
   plugin_dispatch_values (&vl);
-} /* }}} int couchdb_submit */
+} /* }}} int cj_submit */
 
-static int couchdb_curl_perform (couchdb_t *db, CURL *curl) /* {{{ */
+static int cj_curl_perform (cj_t *db, CURL *curl) /* {{{ */
 {
   int status;
   long rc;
@@ -765,7 +765,7 @@ static int couchdb_curl_perform (couchdb_t *db, CURL *curl) /* {{{ */
   db->yajl = yajl_alloc (&ycallbacks, NULL, NULL, (void *)db);
   if (db->yajl == NULL)
   {
-    ERROR ("couchdb plugin: yajl_alloc failed.");
+    ERROR ("curl_json plugin: yajl_alloc failed.");
     return (-1);
   }
 
@@ -779,42 +779,44 @@ static int couchdb_curl_perform (couchdb_t *db, CURL *curl) /* {{{ */
 
   if (rc != 200)
   {
-    ERROR ("couchdb plugin: curl_easy_perform failed with response code %ld (%s)",
+    ERROR ("curl_json plugin: curl_easy_perform failed with response code %ld (%s)",
            rc, url);
     return (-1);
   }
 
   if (status != 0)
   {
-    ERROR ("couchdb plugin: curl_easy_perform failed with status %i: %s (%s)",
+    ERROR ("curl_json plugin: curl_easy_perform failed with status %i: %s (%s)",
            status, db->curl_errbuf, url);
     return (-1);
   }
 
   return (0);
-} /* }}} int couchdb_curl_perform */
+} /* }}} int cj_curl_perform */
 
-static int couchdb_read (user_data_t *ud) /* {{{ */
+static int cj_read (user_data_t *ud) /* {{{ */
 {
-  couchdb_t *db;
+  cj_t *db;
 
   if ((ud == NULL) || (ud->data == NULL))
   {
-    ERROR ("couchdb plugin: couchdb_read: Invalid user data.");
+    ERROR ("curl_json plugin: cj_read: Invalid user data.");
     return (-1);
   }
 
-  db = (couchdb_t *) ud->data;
+  db = (cj_t *) ud->data;
 
   db->depth = 0;
   memset (&db->state, 0, sizeof(db->state));
   db->state[db->depth].tree = db->tree;
   db->key = NULL;
 
-  return couchdb_curl_perform (db, db->curl);
-} /* }}} int couchdb_read */
+  return cj_curl_perform (db, db->curl);
+} /* }}} int cj_read */
 
 void module_register (void)
 {
-  plugin_register_complex_config ("couchdb", couchdb_config);
+  plugin_register_complex_config ("curl_json", cj_config);
 } /* void module_register */
+
+/* vim: set sw=2 sts=2 et fdm=marker : */