// sends the current chart definition static inline void send_chart_definition(RRDSET *st) { rrdset_flag_set(st, RRDSET_FLAG_EXPOSED_UPSTREAM); buffer_sprintf(st->rrdhost->rrdpush_buffer, "CHART \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" %ld %d \"%s %s %s\"\n" , st->id , st->name , st->title , st->units , st->family , st->context , rrdset_type_name(st->chart_type) , st->priority , st->update_every , rrdset_flag_check(st, RRDSET_FLAG_OBSOLETE)?"obsolete":"" , rrdset_flag_check(st, RRDSET_FLAG_DETAIL)?"detail":"" , rrdset_flag_check(st, RRDSET_FLAG_STORE_FIRST)?"store_first":"" ); RRDDIM *rd; rrddim_foreach_read(rd, st) { buffer_sprintf(st->rrdhost->rrdpush_buffer, "DIMENSION \"%s\" \"%s\" \"%s\" " COLLECTED_NUMBER_FORMAT " " COLLECTED_NUMBER_FORMAT " \"%s %s\"\n" , rd->id , rd->name , rrd_algorithm_name(rd->algorithm) , rd->multiplier , rd->divisor , rrddim_flag_check(rd, RRDDIM_FLAG_HIDDEN)?"hidden":"" , rrddim_flag_check(rd, RRDDIM_FLAG_DONT_DETECT_RESETS_OR_OVERFLOWS)?"noreset":"" ); rd->exposed = 1; }
unsigned long rrdset_info2json_api_old(RRDSET *st, char *options, BUFFER *wb) { time_t now = now_realtime_sec(); rrdset_rdlock(st); st->last_accessed_time = now; buffer_sprintf(wb, "\t\t{\n" "\t\t\t\"id\": \"%s\",\n" "\t\t\t\"name\": \"%s\",\n" "\t\t\t\"type\": \"%s\",\n" "\t\t\t\"family\": \"%s\",\n" "\t\t\t\"context\": \"%s\",\n" "\t\t\t\"title\": \"%s\",\n" "\t\t\t\"priority\": %ld,\n" "\t\t\t\"enabled\": %d,\n" "\t\t\t\"units\": \"%s\",\n" "\t\t\t\"url\": \"/data/%s/%s\",\n" "\t\t\t\"chart_type\": \"%s\",\n" "\t\t\t\"counter\": %lu,\n" "\t\t\t\"entries\": %ld,\n" "\t\t\t\"first_entry_t\": %ld,\n" "\t\t\t\"last_entry\": %lu,\n" "\t\t\t\"last_entry_t\": %ld,\n" "\t\t\t\"last_entry_secs_ago\": %ld,\n" "\t\t\t\"update_every\": %d,\n" "\t\t\t\"isdetail\": %d,\n" "\t\t\t\"usec_since_last_update\": %llu,\n" "\t\t\t\"collected_total\": " TOTAL_NUMBER_FORMAT ",\n" "\t\t\t\"last_collected_total\": " TOTAL_NUMBER_FORMAT ",\n" "\t\t\t\"dimensions\": [\n" , st->id , st->name , st->type , st->family , st->context , st->title , st->priority , rrdset_flag_check(st, RRDSET_FLAG_ENABLED)?1:0 , st->units , st->name, options?options:"" , rrdset_type_name(st->chart_type) , st->counter , st->entries , rrdset_first_entry_t(st) , rrdset_last_slot(st) , rrdset_last_entry_t(st) , (now < rrdset_last_entry_t(st)) ? (time_t)0 : now - rrdset_last_entry_t(st) , st->update_every , rrdset_flag_check(st, RRDSET_FLAG_DETAIL)?1:0 , st->usec_since_last_update , st->collected_total , st->last_collected_total ); unsigned long memory = st->memsize; RRDDIM *rd; rrddim_foreach_read(rd, st) { memory += rd->memsize; buffer_sprintf(wb, "\t\t\t\t{\n" "\t\t\t\t\t\"id\": \"%s\",\n" "\t\t\t\t\t\"name\": \"%s\",\n" "\t\t\t\t\t\"entries\": %ld,\n" "\t\t\t\t\t\"isHidden\": %d,\n" "\t\t\t\t\t\"algorithm\": \"%s\",\n" "\t\t\t\t\t\"multiplier\": " COLLECTED_NUMBER_FORMAT ",\n" "\t\t\t\t\t\"divisor\": " COLLECTED_NUMBER_FORMAT ",\n" "\t\t\t\t\t\"last_entry_t\": %ld,\n" "\t\t\t\t\t\"collected_value\": " COLLECTED_NUMBER_FORMAT ",\n" "\t\t\t\t\t\"calculated_value\": " CALCULATED_NUMBER_FORMAT ",\n" "\t\t\t\t\t\"last_collected_value\": " COLLECTED_NUMBER_FORMAT ",\n" "\t\t\t\t\t\"last_calculated_value\": " CALCULATED_NUMBER_FORMAT ",\n" "\t\t\t\t\t\"memory\": %lu\n" "\t\t\t\t}%s\n" , rd->id , rd->name , rd->entries , rrddim_flag_check(rd, RRDDIM_FLAG_HIDDEN)?1:0 , rrd_algorithm_name(rd->algorithm) , rd->multiplier , rd->divisor , rd->last_collected_time.tv_sec , rd->collected_value , rd->calculated_value , rd->last_collected_value , rd->last_calculated_value , rd->memsize , rd->next?",":"" ); }