Skip to content

Commit

Permalink
config: support env variable in parser files
Browse files Browse the repository at this point in the history
Signed-off-by: scuzhanglei <greatzhanglei@gmail.com>
  • Loading branch information
scuzhanglei committed Jan 22, 2019
1 parent 94fe8a4 commit 13316a7
Showing 1 changed file with 63 additions and 1 deletion.
64 changes: 63 additions & 1 deletion src/flb_parser.c
Expand Up @@ -28,6 +28,8 @@
#include <fluent-bit/flb_error.h>
#include <fluent-bit/flb_utils.h>
#include <fluent-bit/flb_config.h>
#include <fluent-bit/flb_env.h>
#include <fluent-bit/flb_str.h>

#include <sys/types.h>
#include <sys/stat.h>
Expand Down Expand Up @@ -406,6 +408,7 @@ int flb_parser_conf_file(char *file, struct flb_config *config)
struct stat st;
struct flb_parser_types *types;
struct mk_list *decoders;
char *tmp_str;

#ifndef FLB_HAVE_STATIC_CONF
ret = stat(file, &st);
Expand Down Expand Up @@ -443,6 +446,7 @@ int flb_parser_conf_file(char *file, struct flb_config *config)
time_key = NULL;
time_offset = NULL;
types_str = NULL;
tmp_str = NULL;

section = mk_list_entry(head, struct mk_rconf_section, _head);
if (strcasecmp(section->name, "PARSER") != 0) {
Expand All @@ -456,33 +460,77 @@ int flb_parser_conf_file(char *file, struct flb_config *config)
goto fconf_error;
}

tmp_str = flb_env_var_translate(config->env, name);
if(tmp_str){
name = flb_strdup(tmp_str);
mk_mem_free(tmp_str);
tmp_str = NULL;
}

/* Format */
format = mk_rconf_section_get_key(section, "Format", MK_RCONF_STR);
if (!format) {
flb_error("[parser] no parser 'format' found for '%s' in file '%s'", name, cfg);
goto fconf_error;
}

tmp_str = flb_env_var_translate(config->env, format);
if(tmp_str) {
format = flb_strdup(tmp_str);
mk_mem_free(tmp_str);
tmp_str = NULL;
}

/* Regex (if format is regex) */
regex = mk_rconf_section_get_key(section, "Regex", MK_RCONF_STR);
if (!regex && strcmp(format, "regex") == 0) {
flb_error("[parser] no parser 'regex' found for '%s' in file '%s", name, cfg);
goto fconf_error;
}

tmp_str = flb_env_var_translate(config->env, regex);
if(tmp_str) {
regex = flb_strdup(tmp_str);
mk_mem_free(tmp_str);
tmp_str = NULL;
}

/* Time_Format */
time_fmt = mk_rconf_section_get_key(section, "Time_Format",
MK_RCONF_STR);
if(false) {
tmp_str = flb_env_var_translate(config->env, time_fmt);
if(tmp_str) {
time_fmt = flb_strdup(tmp_str);
mk_mem_free(tmp_str);
tmp_str = NULL;
}
}

/* Time_Key */
time_key = mk_rconf_section_get_key(section, "Time_Key",
MK_RCONF_STR);
if(time_key) {
tmp_str =flb_env_var_translate(config->env, time_key);
if(tmp_str) {
time_key = flb_strdup(tmp_str);
mk_mem_free(tmp_str);
tmp_str = NULL;
}
}

/* Time_Keep */
str = mk_rconf_section_get_key(section, "Time_Keep",
MK_RCONF_STR);
if (str) {
time_keep = flb_utils_bool(str);
tmp_str = flb_env_var_translate(config->env, str);
if(tmp_str){
time_keep = flb_utils_bool(tmp_str);
mk_mem_free(tmp_str);
tmp_str = NULL;
}else{
time_keep = flb_utils_bool(str);
}
flb_free(str);
}
else {
Expand All @@ -493,10 +541,24 @@ int flb_parser_conf_file(char *file, struct flb_config *config)
time_offset = mk_rconf_section_get_key(section, "Time_Offset",
MK_RCONF_STR);

if(time_offset){
tmp_str = flb_env_var_translate(config->env, time_offset);
if(tmp_str){
time_offset = flb_strdup(tmp_str);
mk_mem_free(tmp_str);
tmp_str = NULL;
}
}
/* Types */
types_str = mk_rconf_section_get_key(section, "Types",
MK_RCONF_STR);
if (types_str != NULL) {
tmp_str = flb_env_var_translate(config->env, types_str);
if(tmp_str){
types_str = flb_strdup(tmp_str);
mk_mem_free(tmp_str);
tmp_str = NULL;
}
types_len = proc_types_str(types_str, &types);
}
else {
Expand Down

0 comments on commit 13316a7

Please sign in to comment.