@cryptotaxi247 / netdata-1 / commits / 81f4c3640

log2journal: added missing yaml elements (#16488)

added missing yaml elements

Costa Tsaousis committed Nov 28, 2023 at 02:23 UTC 81f4c364013985d2418257c64bcb0c03ec475c56
1 file changed +112
collectors/log2journal/log2journal-yaml.c
+112
@@ -221,6 +221,22 @@ static size_t yaml_parse_filename_injection(yaml_parser_t *parser, struct log_jo
221 return errors;
222 }
223
224 +static size_t yaml_parse_prefix(yaml_parser_t *parser, struct log_job *jb) {
225 + yaml_event_t event;
226 + size_t errors = 0;
227 +
228 + if (!yaml_parse(parser, &event))
229 + return 1;
230 +
231 + if (event.type == YAML_SCALAR_EVENT) {
232 + if(!log_job_add_key_prefix(jb, (char *)event.data.scalar.value, event.data.scalar.length))
233 + errors++;
234 + }
235 +
236 + yaml_event_delete(&event);
237 + return errors;
238 +}
239 +
240 static size_t yaml_parse_duplicates_injection(yaml_parser_t *parser, struct log_job *jb) {
241 if (!yaml_parse_expect_event(parser, YAML_SEQUENCE_START_EVENT))
242 return 1;
@@ -560,6 +576,96 @@ static size_t yaml_parse_rewrites(yaml_parser_t *parser, struct log_job *jb) {
576 return errors;
577 }
578
579 +static size_t yaml_parse_renames(yaml_parser_t *parser, struct log_job *jb) {
580 + size_t errors = 0;
581 +
582 + if (!yaml_parse_expect_event(parser, YAML_SEQUENCE_START_EVENT))
583 + return 1;
584 +
585 + bool finished = false;
586 + while (!errors && !finished) {
587 + yaml_event_t event;
588 + if (!yaml_parse(parser, &event)) {
589 + errors++;
590 + continue;
591 + }
592 +
593 + switch (event.type) {
594 + case YAML_MAPPING_START_EVENT:
595 + {
596 + struct key_rename rn = {0};
597 +
598 + bool mapping_finished = false;
599 + while (!errors && !mapping_finished) {
600 + yaml_event_t sub_event;
601 + if (!yaml_parse(parser, &sub_event)) {
602 + errors++;
603 + continue;
604 + }
605 +
606 + switch (sub_event.type) {
607 + case YAML_SCALAR_EVENT:
608 + if (yaml_scalar_matches(&sub_event, "new_key", strlen("new_key"))) {
609 + if (!yaml_parse(parser, &sub_event) || sub_event.type != YAML_SCALAR_EVENT) {
610 + yaml_error(parser, &sub_event, "Expected scalar for rename new_key");
611 + errors++;
612 + } else {
613 + rn.new_key = strndupz((char *)sub_event.data.scalar.value, sub_event.data.scalar.length);
614 + yaml_event_delete(&sub_event);
615 + }
616 + } else if (yaml_scalar_matches(&sub_event, "old_key", strlen("old_key"))) {
617 + if (!yaml_parse(parser, &sub_event) || sub_event.type != YAML_SCALAR_EVENT) {
618 + yaml_error(parser, &sub_event, "Expected scalar for rename old_key");
619 + errors++;
620 + } else {
621 + rn.old_key = strndupz((char *)sub_event.data.scalar.value, sub_event.data.scalar.length);
622 + yaml_event_delete(&sub_event);
623 + }
624 + } else {
625 + yaml_error(parser, &sub_event, "Unexpected scalar in rewrite mapping");
626 + errors++;
627 + }
628 + break;
629 +
630 + case YAML_MAPPING_END_EVENT:
631 + if(rn.old_key && rn.new_key) {
632 + if (!log_job_add_rename(jb, rn.new_key, strlen(rn.new_key), rn.old_key, strlen(rn.old_key)))
633 + errors++;
634 + }
635 + freez(rn.new_key);
636 + freez(rn.old_key);
637 + memset(&rn, 0, sizeof(rn));
638 +
639 + mapping_finished = true;
640 + break;
641 +
642 + default:
643 + yaml_error(parser, &sub_event, "Unexpected event in rewrite mapping");
644 + errors++;
645 + break;
646 + }
647 +
648 + yaml_event_delete(&sub_event);
649 + }
650 + }
651 + break;
652 +
653 + case YAML_SEQUENCE_END_EVENT:
654 + finished = true;
655 + break;
656 +
657 + default:
658 + yaml_error(parser, &event, "Unexpected event in rewrites sequence");
659 + errors++;
660 + break;
661 + }
662 +
663 + yaml_event_delete(&event);
664 + }
665 +
666 + return errors;
667 +}
668 +
669 static size_t yaml_parse_pattern(yaml_parser_t *parser, struct log_job *jb) {
670 yaml_event_t event;
671 size_t errors = 0;
@@ -618,6 +724,9 @@ static size_t yaml_parse_initialized(yaml_parser_t *parser, struct log_job *jb)
724 if (yaml_scalar_matches(&event, "pattern", strlen("pattern")))
725 errors += yaml_parse_pattern(parser, jb);
726
727 + else if (yaml_scalar_matches(&event, "prefix", strlen("prefix")))
728 + errors += yaml_parse_prefix(parser, jb);
729 +
730 else if (yaml_scalar_matches(&event, "filename", strlen("filename")))
731 errors += yaml_parse_filename_injection(parser, jb);
732
@@ -633,6 +742,9 @@ static size_t yaml_parse_initialized(yaml_parser_t *parser, struct log_job *jb)
742 else if (yaml_scalar_matches(&event, "rewrite", strlen("rewrite")))
743 errors += yaml_parse_rewrites(parser, jb);
744
745 + else if (yaml_scalar_matches(&event, "rename", strlen("rename")))
746 + errors += yaml_parse_renames(parser, jb);
747 +
748 else {
749 yaml_error(parser, &event, "unexpected scalar");
750 errors++;