master
c 43 lines 1.82 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 #include "jsonwrap.h"
4 #include "jsonwrap-internal.h"
5
6 void jsonwrap_query_metric_plan(BUFFER *wb, QUERY_METRIC *qm, RRDR_OPTIONS options) {
7 buffer_json_member_add_array(wb, "plans");
8 for (size_t p = 0; p < qm->plan.used; p++) {
9 QUERY_PLAN_ENTRY *qp = &qm->plan.array[p];
10
11 buffer_json_add_array_item_object(wb);
12 buffer_json_member_add_uint64(wb, JSKEY(tier), qp->tier);
13 buffer_json_member_add_time_t_formatted(wb, JSKEY(after), qp->after, options & RRDR_OPTION_RFC3339);
14 buffer_json_member_add_time_t_formatted(wb, JSKEY(before), qp->before, options & RRDR_OPTION_RFC3339);
15 buffer_json_object_close(wb);
16 }
17 buffer_json_array_close(wb);
18
19 buffer_json_member_add_array(wb, "tiers");
20 for (size_t tier = 0; tier < nd_profile.storage_tiers; tier++) {
21 buffer_json_add_array_item_object(wb);
22 buffer_json_member_add_uint64(wb, JSKEY(tier), tier);
23 buffer_json_member_add_time_t_formatted(wb, JSKEY(first_entry), qm->tiers[tier].db_first_time_s, options & RRDR_OPTION_RFC3339);
24 buffer_json_member_add_time_t_formatted(wb, JSKEY(last_entry), qm->tiers[tier].db_last_time_s, options & RRDR_OPTION_RFC3339);
25 buffer_json_member_add_int64(wb, JSKEY(weight), qm->tiers[tier].weight);
26 buffer_json_object_close(wb);
27 }
28 buffer_json_array_close(wb);
29 }
30
31 void jsonwrap_query_plan(RRDR *r, BUFFER *wb, RRDR_OPTIONS options) {
32 QUERY_TARGET *qt = r->internal.qt;
33
34 buffer_json_member_add_object(wb, "query_plan");
35 for(size_t m = 0; m < qt->query.used; m++) {
36 QUERY_METRIC *qm = query_metric(qt, m);
37 buffer_json_member_add_object(wb, query_metric_id(qt, qm));
38 jsonwrap_query_metric_plan(wb, qm, options);
39 buffer_json_object_close(wb);
40 }
41 buffer_json_object_close(wb);
42 }
43