From 39ee05cf0fac091572a235cb23daed7bb68f5a8f Mon Sep 17 00:00:00 2001 From: Sebastien Douheret Date: Sat, 20 Jul 2019 13:30:50 +0200 Subject: Allow to set host+port using params in config.json Default influxDB host and port can now be set using params field of plugins section of harvester-config.json file. For example : "plugins": [ { "uid": "influxdb", "info": "Plugins that handle influxdb read and write", "libs": "influxdb.ctlso", "params": { "host": "localhost", "port": 8086 } } ], Change-Id: Iff0fffe1d0883304413d887986991a207b840aa7 Signed-off-by: Sebastien Douheret --- src/plugins/influxdb-writer.c | 4 ++-- src/plugins/influxdb.c | 35 +++++++++++++++++++++++++++++++---- 2 files changed, 33 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/plugins/influxdb-writer.c b/src/plugins/influxdb-writer.c index 2ef3813..3838036 100644 --- a/src/plugins/influxdb-writer.c +++ b/src/plugins/influxdb-writer.c @@ -142,13 +142,13 @@ CURL* make_curl_write_post(afb_api_t apiHandle, const char* url, json_object* me /* Check that we just do not broke the for loop before trying preparing CURL request object */ curl = i == lpd ? curl_wrap_prepare_post_unescaped(url, NULL, "\n", (const char* const*)post_data) : NULL; - free(serie); + free(serie); for (i = 0; i < lpd; i++) { if (post_data[i]) { free(post_data[i]); } } - free(post_data); + free(post_data); return curl; } diff --git a/src/plugins/influxdb.c b/src/plugins/influxdb.c index a175c0e..3403eb3 100644 --- a/src/plugins/influxdb.c +++ b/src/plugins/influxdb.c @@ -25,6 +25,9 @@ #include "tsdb.h" #include "wrap-json.h" +static char* default_db_host = DEFAULT_DBHOST; +static char default_db_port[64] = DEFAULT_DBPORT; + CTLP_CAPI_REGISTER("influxdb"); CTLP_ONLOAD(plugin, ret) @@ -32,6 +35,30 @@ CTLP_ONLOAD(plugin, ret) int err = 0; char* result; size_t result_size; + + // Check if default host & port are set in harvester-config.json file + if (plugin->paramsJ) { + const char* host = NULL; + int port = -1; + int ret; + + AFB_API_NOTICE(plugin->api, "params detected to change default host+port : %s", json_object_to_json_string(plugin->paramsJ)); + ret = wrap_json_unpack(plugin->paramsJ, "{ss si}", + "host", &host, "port", &port); + if (ret == 0) { + if (host && strlen(host) > 0) + // SEB do we need strdup ?? + default_db_host = strdup(host); + if (port > 0) { + snprintf(default_db_port, sizeof(default_db_host) - 1, "%d", port); + } + } else { + AFB_API_ERROR(plugin->api, "decoding params : %s", wrap_json_get_error_string(ret)); + } + } + + // + CURL* request = curl_wrap_prepare_get(get_url(NULL, NULL, "/ping"), NULL, NULL); struct reader_args r_args = { NULL, NULL, 1000000 }; @@ -75,8 +102,8 @@ size_t make_url(char* url, size_t l_url, const char* host, const char* port, con bzero(url, l_url); /* Handle default host and port */ - host = host ? host : DEFAULT_DBHOST; - port = port ? port : DEFAULT_DBPORT; + host = host ? host : default_db_host; + port = port ? port : default_db_port; strncat(url, host, l_url - strlen(url) - 1); strcat(url, ":"); @@ -104,8 +131,8 @@ char* get_url(const char* host, const char* port, const char* endpoint) static char* url = NULL; static size_t urlSz = 0; - host = host ? host : DEFAULT_DBHOST; - port = port ? port : DEFAULT_DBPORT; + host = host ? host : default_db_host; + port = port ? port : default_db_port; size_t newSz = strlen(host) + 1 + strlen(port) + 1 + strlen(endpoint) + 1; if (urlSz < newSz) { -- cgit 1.2.3-korg