| 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 |