diff --git a/include/fluent-bit/flb_input.h b/include/fluent-bit/flb_input.h index 1599c8d52f9..001ab5cda16 100644 --- a/include/fluent-bit/flb_input.h +++ b/include/fluent-bit/flb_input.h @@ -106,6 +106,7 @@ int flb_input_set_collector_event(char *name, int (*cb_collect) (struct flb_config *, void *), int fd, struct flb_config *config); +void flb_input_initialize_all(struct flb_config *config); void flb_input_pre_run_all(struct flb_config *config); #endif diff --git a/src/flb_engine.c b/src/flb_engine.c index 12efaaa6b6d..cb8bd1898b3 100644 --- a/src/flb_engine.c +++ b/src/flb_engine.c @@ -162,6 +162,9 @@ int flb_engine_start(struct flb_config *config) flb_info("starting engine"); + /* Initialize input plugins */ + flb_input_initialize_all(config); + /* Inputs pre-run */ flb_input_pre_run_all(config); diff --git a/src/flb_input.c b/src/flb_input.c index 81930235b34..cb8f25e5e40 100644 --- a/src/flb_input.c +++ b/src/flb_input.c @@ -43,7 +43,6 @@ static struct flb_input_plugin *plugin_lookup(char *name, struct flb_config *con /* Enable an input */ int flb_input_enable(char *name, struct flb_config *config) { - int ret; struct flb_input_plugin *plugin; plugin = plugin_lookup(name, config); @@ -51,21 +50,29 @@ int flb_input_enable(char *name, struct flb_config *config) return -1; } - if (!plugin->cb_init) { - flb_utils_error(FLB_ERR_INPUT_UNSUP); - } plugin->active = FLB_TRUE; - /* Initialize the input */ - if (plugin->cb_init) { - ret = plugin->cb_init(config); - if (ret != 0) { - flb_error("Failed ininitalize Input %s", - plugin->name); + return 0; +} + +/* Initialize all inputs */ +void flb_input_initialize_all(struct flb_config *config) +{ + int ret; + struct mk_list *head; + struct flb_input_plugin *in; + + mk_list_foreach(head, &config->inputs) { + in = mk_list_entry(head, struct flb_input_plugin, _head); + /* Initialize the input */ + if (in->active == FLB_TRUE && in->cb_init) { + ret = in->cb_init(config); + if (ret != 0) { + flb_error("Failed ininitalize input %s", + in->name); + } } } - - return 0; } /* Invoke all pre-run input callbacks */