projects
/
collectd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
collectd-tg: Fix unintentional cast from double to time_t.
[collectd.git]
/
src
/
redis.c
diff --git
a/src/redis.c
b/src/redis.c
index
ea997ac
..
7864ead
100644
(file)
--- a/
src/redis.c
+++ b/
src/redis.c
@@
-124,44
+124,50
@@
static int redis_node_add (const redis_node_t *rn) /* {{{ */
static redis_query_t *redis_config_query (oconfig_item_t *ci) /* {{{ */
{
static redis_query_t *redis_config_query (oconfig_item_t *ci) /* {{{ */
{
- redis_query_t *r
c
;
+ redis_query_t *r
q
;
int status;
int i;
int status;
int i;
- r
c = calloc(1, sizeof(*rc
));
- if (r
c
== NULL) {
+ r
q = calloc(1, sizeof(*rq
));
+ if (r
q
== NULL) {
ERROR("redis plugin: calloca failed adding redis_query.");
return NULL;
}
ERROR("redis plugin: calloca failed adding redis_query.");
return NULL;
}
- status = cf_util_get_string_buffer(ci, r
c->type, sizeof(rc->type
));
+ status = cf_util_get_string_buffer(ci, r
q->query, sizeof(rq->query
));
if (status != 0)
goto err;
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;
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, r
c->query, sizeof(rc->query
));
+ if (strcasecmp("
Type
", option->key) == 0) {
+ status = cf_util_get_string_buffer(option, r
q->type, sizeof(rq->type
));
} else if (strcasecmp("Instance", option->key) == 0) {
} else if (strcasecmp("Instance", option->key) == 0) {
- status = cf_util_get_string_buffer(option, rc->instance, sizeof(rc->instance));
+ 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 (status != 0)
goto err;
}
- if (strlen(rc->query) == 0) {
- WARNING("redis plugin: invalid query definition for: %s", rc->type);
- goto err;
- }
- return rc;
+ return rq;
err:
err:
- free(r
c
);
+ free(r
q
);
return NULL;
} /* }}} */
static int redis_config_node (oconfig_item_t *ci) /* {{{ */
{
redis_node_t rn;
return NULL;
} /* }}} */
static int redis_config_node (oconfig_item_t *ci) /* {{{ */
{
redis_node_t rn;
- redis_query_t *r
c
;
+ redis_query_t *r
q
;
int i;
int status;
int timeout;
int i;
int status;
int timeout;
@@
-193,12
+199,12
@@
static int redis_config_node (oconfig_item_t *ci) /* {{{ */
}
else if (strcasecmp ("Query", option->key) == 0)
{
}
else if (strcasecmp ("Query", option->key) == 0)
{
- r
c
= redis_config_query(option);
- if (r
c
== NULL) {
+ r
q
= redis_config_query(option);
+ if (r
q
== NULL) {
status =1;
} else {
status =1;
} else {
- r
c
->next = rn.queries;
- rn.queries = r
c
;
+ r
q
->next = rn.queries;
+ rn.queries = r
q
;
}
}
else if (strcasecmp ("Timeout", option->key) == 0)
}
}
else if (strcasecmp ("Timeout", option->key) == 0)
@@
-315,25
+321,25
@@
int redis_handle_info (char *node, char const *info_line, char const *type, char
} /* }}} int redis_handle_info */
} /* }}} int redis_handle_info */
-int redis_handle_query (redisContext *rh, redis_node_t *rn, redis_query_t *r
c
) /* {{{ */
+int redis_handle_query (redisContext *rh, redis_node_t *rn, redis_query_t *r
q
) /* {{{ */
{
redisReply *rr;
const data_set_t *ds;
value_t val;
{
redisReply *rr;
const data_set_t *ds;
value_t val;
- ds = plugin_get_ds (r
c
->type);
+ ds = plugin_get_ds (r
q
->type);
if (!ds) {
if (!ds) {
- ERROR ("redis plugin: DataSet `%s' not defined.", r
c
->type);
+ ERROR ("redis plugin: DataSet `%s' not defined.", r
q
->type);
return (-1);
}
if (ds->ds_num != 1) {
return (-1);
}
if (ds->ds_num != 1) {
- ERROR ("redis plugin: DS `%s' has too many types.", r
c
->type);
+ ERROR ("redis plugin: DS `%s' has too many types.", r
q
->type);
return (-1);
}
return (-1);
}
- if ((rr = redisCommand(rh, r
c
->query)) == NULL) {
- WARNING("redis plugin: unable to carry out query `%s'.", r
c
->query);
+ if ((rr = redisCommand(rh, r
q
->query)) == NULL) {
+ WARNING("redis plugin: unable to carry out query `%s'.", r
q
->query);
return (-1);
}
return (-1);
}
@@
-356,7
+362,7
@@
int redis_handle_query (redisContext *rh, redis_node_t *rn, redis_query_t *rc) /
break;
case REDIS_REPLY_STRING:
if (parse_value (rr->str, &val, ds->ds[0].type) == -1) {
break;
case REDIS_REPLY_STRING:
if (parse_value (rr->str, &val, ds->ds[0].type) == -1) {
- WARNING("redis plugin: Unable to parse field `%s'.", r
c
->type);
+ WARNING("redis plugin: Unable to parse field `%s'.", r
q
->type);
freeReplyObject (rr);
return (-1);
}
freeReplyObject (rr);
return (-1);
}
@@
-367,7
+373,7
@@
int redis_handle_query (redisContext *rh, redis_node_t *rn, redis_query_t *rc) /
return (-1);
}
return (-1);
}
- redis_submit(rn->name, r
c->type, (strlen(rc->instance) >0)?rc
->instance:NULL, val);
+ redis_submit(rn->name, r
q->type, (strlen(rq->instance) >0)?rq
->instance:NULL, val);
freeReplyObject (rr);
return 0;
} /* }}} int redis_handle_info */
freeReplyObject (rr);
return 0;
} /* }}} int redis_handle_info */
@@
-375,7
+381,7
@@
int redis_handle_query (redisContext *rh, redis_node_t *rn, redis_query_t *rc) /
static int redis_read (void) /* {{{ */
{
redis_node_t *rn;
static int redis_read (void) /* {{{ */
{
redis_node_t *rn;
- redis_query_t *r
c
;
+ redis_query_t *r
q
;
for (rn = nodes_head; rn != NULL; rn = rn->next)
{
for (rn = nodes_head; rn != NULL; rn = rn->next)
{
@@
-430,8
+436,8
@@
static int redis_read (void) /* {{{ */
freeReplyObject (rr);
freeReplyObject (rr);
- for (r
c = rn->queries; rc != NULL; rc = rc
->next)
- redis_handle_query(rh, rn, r
c
);
+ for (r
q = rn->queries; rq != NULL; rq = rq
->next)
+ redis_handle_query(rh, rn, r
q
);
redisFree (rh);
}
redisFree (rh);
}