From e9d59e37d98db379fcbeeffeb6046af0f9cb2d2f Mon Sep 17 00:00:00 2001 From: Stelios Fragkakis <52996999+stelfrag@users.noreply.github.com> Date: Tue, 24 Nov 2020 20:00:02 +0200 Subject: Migrate metadata log to SQLite (#10139) --- web/api/formatters/charts2json.c | 2 +- web/api/formatters/charts2json.h | 1 + web/api/tests/valid_urls.c | 5 +++++ web/api/tests/web_api.c | 6 ++++++ web/api/web_api_v1.c | 7 +++++-- web/server/web_client.c | 27 ++++++++++++++++++++++++++- 6 files changed, 44 insertions(+), 4 deletions(-) (limited to 'web') diff --git a/web/api/formatters/charts2json.c b/web/api/formatters/charts2json.c index 747612e3e0..856ffb5eb6 100644 --- a/web/api/formatters/charts2json.c +++ b/web/api/formatters/charts2json.c @@ -4,7 +4,7 @@ // generate JSON for the /api/v1/charts API call -static inline const char* get_release_channel() { +const char* get_release_channel() { static int use_stable = -1; if (use_stable == -1) { diff --git a/web/api/formatters/charts2json.h b/web/api/formatters/charts2json.h index 8e3ff1ab42..2d8cce3108 100644 --- a/web/api/formatters/charts2json.h +++ b/web/api/formatters/charts2json.h @@ -7,5 +7,6 @@ extern void charts2json(RRDHOST *host, BUFFER *wb, int skip_volatile, int show_archived); extern void chartcollectors2json(RRDHOST *host, BUFFER *wb); +extern const char* get_release_channel(); #endif //NETDATA_API_FORMATTER_CHARTS2JSON_H diff --git a/web/api/tests/valid_urls.c b/web/api/tests/valid_urls.c index cde982f847..4a53c2f43f 100644 --- a/web/api/tests/valid_urls.c +++ b/web/api/tests/valid_urls.c @@ -7,6 +7,11 @@ #include #include #include +RRDHOST *__wrap_sql_create_host_by_uuid(char *hostname) +{ + (void) hostname; + return NULL; +} void repr(char *result, int result_size, char const *buf, int size) { diff --git a/web/api/tests/web_api.c b/web/api/tests/web_api.c index 4a1c58a824..f8681b7d3e 100644 --- a/web/api/tests/web_api.c +++ b/web/api/tests/web_api.c @@ -8,6 +8,12 @@ #include #include +RRDHOST *__wrap_sql_create_host_by_uuid(char *hostname) +{ + (void) hostname; + return NULL; +} + void repr(char *result, int result_size, char const *buf, int size) { int n; diff --git a/web/api/web_api_v1.c b/web/api/web_api_v1.c index de5773b7e4..8e8f631377 100644 --- a/web/api/web_api_v1.c +++ b/web/api/web_api_v1.c @@ -354,12 +354,15 @@ inline int web_client_api_request_v1_charts(RRDHOST *host, struct web_client *w, return HTTP_RESP_OK; } -inline int web_client_api_request_v1_archivedcharts(RRDHOST *host, struct web_client *w, char *url) { +inline int web_client_api_request_v1_archivedcharts(RRDHOST *host __maybe_unused, struct web_client *w, char *url) { (void)url; buffer_flush(w->response.data); w->response.data->contenttype = CT_APPLICATION_JSON; - charts2json(host, w->response.data, 0, 1); +#ifdef ENABLE_DBENGINE + if (host->rrd_memory_mode == RRD_MEMORY_MODE_DBENGINE) + sql_rrdset2json(host, w->response.data); +#endif return HTTP_RESP_OK; } diff --git a/web/server/web_client.c b/web/server/web_client.c index 9f4a0f43b8..c16d8c711e 100644 --- a/web/server/web_client.c +++ b/web/server/web_client.c @@ -1376,7 +1376,32 @@ static inline int web_client_switch_host(RRDHOST *host, struct web_client *w, ch host = rrdhost_find_by_hostname(tok, hash); if(!host) host = rrdhost_find_by_guid(tok, hash); - if(host) return web_client_process_url(host, w, url); +#ifdef ENABLE_DBENGINE + int release_host = 0; + if (!host) { + host = sql_create_host_by_uuid(tok); + if (likely(host)) { + rrdhost_flag_set(host, RRDHOST_FLAG_ARCHIVED); + release_host = 1; + } + } + if(host) { + int rc = web_client_process_url(host, w, url); + if (release_host) { + freez(host->hostname); + freez((char *) host->os); + freez((char *) host->tags); + freez((char *) host->timezone); + freez(host->program_name); + freez(host->program_version); + freez(host->registry_hostname); + freez(host); + } + return rc; + } +#else + if (host) return web_client_process_url(host, w, url); +#endif } buffer_flush(w->response.data); -- cgit v1.2.3