#include "string.h"
#include "time.h"
#include "util.h"
+#include "graphs/graph.h"
// When the daemon starts up, we should not collect everything straight away to
// avoid any usage peaks. Therefore we will stagger all sources randomly across
static int td_source_render_add_DEF(td_source* self,
td_args* args, const char* path, const td_rrd_ds* ds, const char* object) {
- char field[NAME_MAX];
int r;
- // Append the object to the field name so that we can load multiple RRD of the same source
- if (object) {
- r = td_string_format(field, "%s_%s", ds->field, object);
- if (r < 0)
- return r;
- } else {
- r = td_string_set(field, ds->field);
- if (r < 0)
- return r;
- }
-
// Add the classic DEF line
- r = td_args_push(args, "DEF:%s=%s:%s:AVERAGE", field, path, ds->field);
- if (r < 0)
- return r;
-
- // Add VDEF for LAST
- r = td_args_push(args, "VDEF:%s_cur=%s,LAST", field, field);
+ r = td_args_push(args, "DEF:" FIELD "=%s:%s:AVERAGE",
+ FIELD_AND_OBJECT(ds->field, object), path, ds->field);
if (r < 0)
return r;
- // Add VDEF for AVERAGE
- r = td_args_push(args, "VDEF:%s_avg=%s,AVERAGE", field, field);
- if (r < 0)
- return r;
-
- // Add VDEF for MAXIMUM
- r = td_args_push(args, "VDEF:%s_max=%s,MAXIMUM", field, field);
- if (r < 0)
- return r;
-
- // Add VDEF for MINIMUM
- r = td_args_push(args, "VDEF:%s_min=%s,MINIMUM", field, field);
- if (r < 0)
- return r;
+ // Add all values
+ VALUE_ALL(args, ds->field, object);
return 0;
}