Provide sensible default for configuration values
authorPierre-Yves Ritschard <pyr@spootnik.org>
Thu, 20 Nov 2014 12:24:35 +0000 (13:24 +0100)
committerPierre-Yves Ritschard <pyr@spootnik.org>
Thu, 20 Nov 2014 12:24:35 +0000 (13:24 +0100)
This reorders arguments a bit:

- The query is expected to be the block argument
- The type instance is inferred from the query if unsupplied
- The type will default to gauge if not supplied

src/redis.c

index 2ce1f96..7864ead 100644 (file)
@@ -133,25 +133,31 @@ static redis_query_t *redis_config_query (oconfig_item_t *ci) /* {{{ */
         ERROR("redis plugin: calloca failed adding redis_query.");
         return NULL;
     }
-    status = cf_util_get_string_buffer(ci, rq->type, sizeof(rq->type));
+    status = cf_util_get_string_buffer(ci, rq->query, sizeof(rq->query));
     if (status != 0)
         goto err;
 
+    /*
+     * Default to a gauge type.
+     */
+    (void)strncpy(rq->type, "gauge", sizeof(rq->type));
+    (void)strncpy(rq->instance, rq->query, sizeof(rq->instance));
+    replace_special(rq->instance, sizeof(rq->instance));
+
     for (i = 0; i < ci->children_num; i++) {
         oconfig_item_t *option = ci->children + i;
 
-        if (strcasecmp("Exec", option->key) == 0) {
-            status = cf_util_get_string_buffer(option, rq->query, sizeof(rq->query));
+        if (strcasecmp("Type", option->key) == 0) {
+            status = cf_util_get_string_buffer(option, rq->type, sizeof(rq->type));
         } else if (strcasecmp("Instance", option->key) == 0) {
             status = cf_util_get_string_buffer(option, rq->instance, sizeof(rq->instance));
+        } else {
+            WARNING("redis plugin: unknown configuration option: %s", option->key);
+            status = -1;
         }
         if (status != 0)
             goto err;
     }
-    if (strlen(rq->query) == 0) {
-        WARNING("redis plugin: invalid query definition for: %s", rq->type);
-        goto err;
-    }
     return rq;
  err:
     free(rq);