telemetry: correct json empty dictionaries
Checks
Commit Message
Fix to allow telemetry to handle empty dictionaries correctly.
This patch resolves an issue where empty dictionaries are reported
by telemetry as '[]' rather than '{}'. Initializing the output
buffer based on the container type resolves the issue.
Signed-off-by: Jonathan Erb <jonathan.erb@threater.com>
---
.mailmap | 2 +-
lib/telemetry/telemetry.c | 6 +++++-
2 files changed, 6 insertions(+), 2 deletions(-)
@@ -675,7 +675,7 @@ John Ousterhout <ouster@cs.stanford.edu>
John Romein <romein@astron.nl>
John W. Linville <linville@tuxdriver.com>
Jonas Pfefferle <jpf@zurich.ibm.com> <pepperjo@japf.ch>
-Jonathan Erb <jonathan.erb@threatblockr.com> <jonathan.erb@banduracyber.com>
+Jonathan Erb <jonathan.erb@threater.com>
Jonathan Tsai <jonathan1.tsai@intel.com>
Jon DeVree <nuxi@vault24.org>
Jon Loeliger <jdl@netgate.com>
@@ -169,7 +169,11 @@ container_to_json(const struct rte_tel_data *d, char *out_buf, size_t buf_len)
d->type != TEL_ARRAY_INT && d->type != TEL_ARRAY_STRING)
return snprintf(out_buf, buf_len, "null");
- used = rte_tel_json_empty_array(out_buf, buf_len, 0);
+ if (d->type == RTE_TEL_DICT)
+ used = rte_tel_json_empty_obj(out_buf, buf_len, 0);
+ else
+ used = rte_tel_json_empty_array(out_buf, buf_len, 0);
+
if (d->type == TEL_ARRAY_UINT)
for (i = 0; i < d->data_len; i++)
used = rte_tel_json_add_array_uint(out_buf,