summaryrefslogtreecommitdiffstats
path: root/web
diff options
context:
space:
mode:
authorStelios Fragkakis <52996999+stelfrag@users.noreply.github.com>2020-11-24 20:00:02 +0200
committerGitHub <noreply@github.com>2020-11-24 20:00:02 +0200
commite9d59e37d98db379fcbeeffeb6046af0f9cb2d2f (patch)
treec3021cf3e74efe8c47f63a39ad581347604bc404 /web
parentab3b4c6ff82f2cbbcaf5816b9d599abce5ac2160 (diff)
Migrate metadata log to SQLite (#10139)
Diffstat (limited to 'web')
-rw-r--r--web/api/formatters/charts2json.c2
-rw-r--r--web/api/formatters/charts2json.h1
-rw-r--r--web/api/tests/valid_urls.c5
-rw-r--r--web/api/tests/web_api.c6
-rw-r--r--web/api/web_api_v1.c7
-rw-r--r--web/server/web_client.c27
6 files changed, 44 insertions, 4 deletions
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 <setjmp.h>
#include <cmocka.h>
#include <stdbool.h>
+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 <cmocka.h>
#include <stdbool.h>
+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);