summaryrefslogtreecommitdiffstats
path: root/src/rrd.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/rrd.c')
-rwxr-xr-xsrc/rrd.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/rrd.c b/src/rrd.c
index 1115eac002..2dce02e669 100755
--- a/src/rrd.c
+++ b/src/rrd.c
@@ -335,8 +335,13 @@ void rrdset_reset(RRDSET *st)
}
}
-RRDSET *rrdset_create(const char *type, const char *id, const char *name, const char *family, const char *title, const char *units, long priority, int update_every, int chart_type)
+RRDSET *rrdset_create(const char *type, const char *id, const char *name, const char *family, const char *context, const char *title, const char *units, long priority, int update_every, int chart_type)
{
+ if(!type || !type[0]) {
+ fatal("Cannot create rrd stats without a type.");
+ return NULL;
+ }
+
if(!id || !id[0]) {
fatal("Cannot create rrd stats without an id.");
return NULL;
@@ -348,6 +353,12 @@ RRDSET *rrdset_create(const char *type, const char *id, const char *name, const
snprintf(fullid, RRD_ID_LENGTH_MAX, "%s.%s", type, id);
+ st = rrdset_find(fullid);
+ if(st) {
+ error("Cannot create rrd stats for '%s', it already exists.", fullid);
+ return st;
+ }
+
long entries = config_get_number(fullid, "history", rrd_default_history_entries);
if(entries < 5) entries = config_set_number(fullid, "history", 5);
if(entries > RRD_HISTORY_ENTRIES_MAX) entries = config_set_number(fullid, "history", RRD_HISTORY_ENTRIES_MAX);
@@ -396,6 +407,7 @@ RRDSET *rrdset_create(const char *type, const char *id, const char *name, const
st->name = NULL;
st->type = NULL;
st->family = NULL;
+ st->context = NULL;
st->title = NULL;
st->units = NULL;
st->dimensions = NULL;
@@ -422,10 +434,11 @@ RRDSET *rrdset_create(const char *type, const char *id, const char *name, const
st->cache_dir = cache_dir;
- st->family = config_get(st->id, "family", family?family:st->id);
- st->units = config_get(st->id, "units", units?units:"");
- st->type = config_get(st->id, "type", type);
st->chart_type = rrdset_type_id(config_get(st->id, "chart type", rrdset_type_name(chart_type)));
+ st->type = config_get(st->id, "type", type);
+ st->family = config_get(st->id, "family", family?family:st->type);
+ st->context = config_get(st->id, "context", context?context:st->id);
+ st->units = config_get(st->id, "units", units?units:"");
st->priority = config_get_number(st->id, "priority", priority);
st->enabled = enabled;