diff --git a/Makefile.am b/Makefile.am index 9f1e7868ed..32a7894e38 100644 --- a/Makefile.am +++ b/Makefile.am @@ -469,14 +469,18 @@ BACKENDS_PLUGIN_FILES = \ backends/prometheus/backend_prometheus.h \ $(NULL) -CLAIM_PLUGIN_FILES = \ +CLAIM_FILES = \ claim/claim.c \ claim/claim.h \ $(NULL) -ACLK_PLUGIN_FILES = \ +ACLK_FILES = \ aclk/aclk_common.c \ aclk/aclk_common.h \ + $(NULL) + +if ENABLE_ACLK +ACLK_FILES += \ aclk/agent_cloud_link.c \ aclk/agent_cloud_link.h \ aclk/mqtt.c \ @@ -486,6 +490,9 @@ ACLK_PLUGIN_FILES = \ aclk/aclk_lws_https_client.c \ aclk/aclk_lws_https_client.h \ $(NULL) +endif + + EXPORTING_ENGINE_FILES = \ exporting/exporting_engine.c \ @@ -575,15 +582,10 @@ NETDATA_FILES = \ $(STREAMING_PLUGIN_FILES) \ $(STATSD_PLUGIN_FILES) \ $(WEB_PLUGIN_FILES) \ - $(CLAIM_PLUGIN_FILES) \ + $(CLAIM_FILES) \ + $(ACLK_FILES) \ $(NULL) -if ENABLE_ACLK - NETDATA_FILES += \ - $(ACLK_PLUGIN_FILES) \ - $(NULL) -endif - if FREEBSD NETDATA_FILES += \ $(FREEBSD_PLUGIN_FILES) \ diff --git a/aclk/agent_cloud_link.c b/aclk/agent_cloud_link.c index 39e07a309c..a4e2896e4f 100644 --- a/aclk/agent_cloud_link.c +++ b/aclk/agent_cloud_link.c @@ -1309,6 +1309,10 @@ void *aclk_main(void *ptr) struct netdata_static_thread *query_thread; netdata_thread_cleanup_push(aclk_main_cleanup, ptr); + if (!netdata_cloud_setting) { + info("Killing ACLK thread -> cloud functionality has been disabled"); + return NULL; + } info("Waiting for netdata to be ready"); while (!netdata_ready) { @@ -1755,6 +1759,9 @@ int aclk_update_chart(RRDHOST *host, char *chart_name, ACLK_CMD aclk_cmd) UNUSED(chart_name); return 0; #else + if (!netdata_cloud_setting) + return 0; + if (host != localhost) return 0; diff --git a/claim/claim.c b/claim/claim.c index aabcc18a23..6e14cea658 100644 --- a/claim/claim.c +++ b/claim/claim.c @@ -41,11 +41,12 @@ extern struct registry registry; /* rrd_init() must have been called before this function */ void claim_agent(char *claiming_arguments) { -#ifndef ENABLE_CLOUD - info("The claiming feature has been disabled"); - return; -#endif + if (!netdata_cloud_setting) { + error("Refusing to claim agent -> cloud functionality has been disabled"); + return; + } +#ifndef DISABLE_CLOUD int exit_code; pid_t command_pid; char command_buffer[CLAIMING_COMMAND_LENGTH + 1]; @@ -106,6 +107,7 @@ void claim_agent(char *claiming_arguments) } error("Agent failed to be claimed with the following error message:"); error("\"%s\"", claiming_errors[exit_code]); +#endif } void load_claiming_state(void) diff --git a/configure.ac b/configure.ac index edad9f425e..06d8b81717 100644 --- a/configure.ac +++ b/configure.ac @@ -169,19 +169,18 @@ AC_ARG_ENABLE( [cloud], [AS_HELP_STRING([--disable-cloud], [Disables all cloud functionality])], - [], - [enable_cloud="no"] + [ enable_cloud="$enableval" ], + [ enable_cloud="yes" ] ) AC_MSG_CHECKING([if cloud functionality should be enabled]) -if test "${enable_cloud}" != "no"; then - AC_DEFINE([ENABLE_CLOUD], [1], [netdata cloud functionality]) - aclk_required="detect" -else +if test "${enable_cloud}" = "no"; then + AC_DEFINE([DISABLE_CLOUD], [1], [disable netdata cloud functionality]) aclk_required="no" +else + aclk_required="detect" fi AC_MSG_RESULT([${enable_cloud}]) -AM_CONDITIONAL([ENABLE_CLOUD], [test "${enable_cloud}" = "yes"]) # ----------------------------------------------------------------------------- # netdata required checks @@ -557,9 +556,16 @@ AM_CONDITIONAL([ENABLE_CAPABILITY], [test "${with_libcap}" = "yes"]) # ACLK if test "$enable_cloud" = "yes"; then - AC_MSG_CHECKING([if libmosquitto static lib is present]) + AC_MSG_CHECKING([if libmosquitto static lib is present (and builds)]) if test -f "externaldeps/mosquitto/libmosquitto.a"; then - HAVE_libmosquitto_a="yes" + LIBS_SAVES="$LIBS" + LIBS="externaldeps/mosquitto/libmosquitto.a" + AC_LINK_IFELSE([AC_LANG_SOURCE([[int main (int argc, char **argv)) { + int m,mm,r; + mosquitto_lib_version(&m, &mm, &r); + }]]), + [HAVE_libmosquitto_a="yes"], + [HAVE_libmosquitto_a="no"]]) else HAVE_libmosquitto_a="no" AC_DEFINE([ACLK_NO_LIBMOSQ], [1], [Libmosquitto.a was not found during build.]) diff --git a/daemon/commands.c b/daemon/commands.c index e4a33c91bc..295972e6fe 100644 --- a/daemon/commands.c +++ b/daemon/commands.c @@ -186,7 +186,7 @@ static cmd_status_t cmd_reload_claiming_state_execute(char *args, char **message (void)args; (void)message; -#ifndef ENABLE_CLOUD +#ifdef DISABLE_CLOUD info("The claiming feature has been disabled"); return CMD_STATUS_FAILURE; #endif @@ -194,6 +194,10 @@ static cmd_status_t cmd_reload_claiming_state_execute(char *args, char **message info("Cloud functionality is not enabled because of missing dependencies at build-time."); return CMD_STATUS_FAILURE; #endif + if (!netdata_cloud_setting) { + error("Cannot reload claiming status -> cloud functionality has been disabled"); + return CMD_STATUS_FAILURE; + } error_log_limit_unlimited(); info("COMMAND: Reloading Agent Claiming configuration."); diff --git a/daemon/common.c b/daemon/common.c index 67497a4e93..7061040445 100644 --- a/daemon/common.c +++ b/daemon/common.c @@ -14,3 +14,5 @@ char *netdata_configured_home_dir = CACHE_DIR; char *netdata_configured_host_prefix = NULL; char *netdata_configured_timezone = NULL; int netdata_ready; +int netdata_cloud_setting; + diff --git a/daemon/common.h b/daemon/common.h index ffe4145b51..fe799efe09 100644 --- a/daemon/common.h +++ b/daemon/common.h @@ -88,5 +88,6 @@ extern int netdata_zero_metrics_enabled; extern int netdata_anonymous_statistics_enabled; extern int netdata_ready; +extern int netdata_cloud_setting; #endif /* NETDATA_COMMON_H */ diff --git a/daemon/main.c b/daemon/main.c index e64f040ece..38c831f1e7 100644 --- a/daemon/main.c +++ b/daemon/main.c @@ -575,6 +575,21 @@ static void get_netdata_configured_variables() { get_system_HZ(); get_system_cpus(); get_system_pid_max(); + + // -------------------------------------------------------------------- + // Check if the cloud is enabled +#ifdef DISABLE_CLOUD + netdata_cloud_setting = 0; +#else + char *cloud = config_get(CONFIG_SECTION_GLOBAL, "netdata cloud", "coming soon"); + if (!strcmp(cloud, "coming soon")) { + netdata_cloud_setting = 0; // Note: this flips to 1 after the release + } else if (!strcmp(cloud, "enable")) { + netdata_cloud_setting = 1; + } else if (!strcmp(cloud, "disable")) { + netdata_cloud_setting = 0; + } +#endif } static void get_system_timezone(void) { diff --git a/database/rrddim.c b/database/rrddim.c index 11f43ab321..3e94021e78 100644 --- a/database/rrddim.c +++ b/database/rrddim.c @@ -184,7 +184,8 @@ void rrdcalc_link_to_rrddim(RRDDIM *rd, RRDSET *st, RRDHOST *host) { } } #ifdef ENABLE_ACLK - aclk_update_chart(st->rrdhost, st->id, ACLK_CMD_CHART); + if (netdata_cloud_setting) + aclk_update_chart(st->rrdhost, st->id, ACLK_CMD_CHART); #endif } @@ -428,7 +429,8 @@ RRDDIM *rrddim_add_custom(RRDSET *st, const char *id, const char *name, collecte } rrdset_unlock(st); #ifdef ENABLE_ACLK - aclk_update_chart(host, st->id, ACLK_CMD_CHART); + if (netdata_cloud_setting) + aclk_update_chart(host, st->id, ACLK_CMD_CHART); #endif return(rd); } @@ -484,7 +486,8 @@ void rrddim_free(RRDSET *st, RRDDIM *rd) break; } #ifdef ENABLE_ACLK - aclk_update_chart(st->rrdhost, st->id, ACLK_CMD_CHART); + if (netdata_cloud_setting) + aclk_update_chart(st->rrdhost, st->id, ACLK_CMD_CHART); #endif } @@ -505,7 +508,8 @@ int rrddim_hide(RRDSET *st, const char *id) { rrddim_flag_set(rd, RRDDIM_FLAG_HIDDEN); #ifdef ENABLE_ACLK - aclk_update_chart(st->rrdhost, st->id, ACLK_CMD_CHART); + if (netdata_cloud_setting) + aclk_update_chart(st->rrdhost, st->id, ACLK_CMD_CHART); #endif return 0; } @@ -522,7 +526,8 @@ int rrddim_unhide(RRDSET *st, const char *id) { rrddim_flag_clear(rd, RRDDIM_FLAG_HIDDEN); #ifdef ENABLE_ACLK - aclk_update_chart(st->rrdhost, st->id, ACLK_CMD_CHART); + if (netdata_cloud_setting) + aclk_update_chart(st->rrdhost, st->id, ACLK_CMD_CHART); #endif return 0; } @@ -533,7 +538,8 @@ inline void rrddim_is_obsolete(RRDSET *st, RRDDIM *rd) { rrddim_flag_set(rd, RRDDIM_FLAG_OBSOLETE); rrdset_flag_set(st, RRDSET_FLAG_OBSOLETE_DIMENSIONS); #ifdef ENABLE_ACLK - aclk_update_chart(st->rrdhost, st->id, ACLK_CMD_CHART); + if (netdata_cloud_setting) + aclk_update_chart(st->rrdhost, st->id, ACLK_CMD_CHART); #endif } @@ -542,7 +548,8 @@ inline void rrddim_isnot_obsolete(RRDSET *st __maybe_unused, RRDDIM *rd) { rrddim_flag_clear(rd, RRDDIM_FLAG_OBSOLETE); #ifdef ENABLE_ACLK - aclk_update_chart(st->rrdhost, st->id, ACLK_CMD_CHART); + if (netdata_cloud_setting) + aclk_update_chart(st->rrdhost, st->id, ACLK_CMD_CHART); #endif } diff --git a/database/rrdset.c b/database/rrdset.c index ced1021ac7..d0554f0f30 100644 --- a/database/rrdset.c +++ b/database/rrdset.c @@ -425,8 +425,10 @@ void rrdset_delete(RRDSET *st) { recursively_delete_dir(st->cache_dir, "left-over chart"); #ifdef ENABLE_ACLK - aclk_del_collector(st->rrdhost->hostname, st->plugin_name, st->module_name); - aclk_update_chart(st->rrdhost, st->id, ACLK_CMD_CHARTDEL); + if (netdata_cloud_setting) { + aclk_del_collector(st->rrdhost->hostname, st->plugin_name, st->module_name); + aclk_update_chart(st->rrdhost, st->id, ACLK_CMD_CHARTDEL); + } #endif } @@ -768,8 +770,10 @@ RRDSET *rrdset_create_custom( rrdhost_unlock(host); #ifdef ENABLE_ACLK - aclk_add_collector(host->hostname, plugin, module); - aclk_update_chart(host, st->id, ACLK_CMD_CHART); + if (netdata_cloud_setting) { + aclk_add_collector(host->hostname, plugin, module); + aclk_update_chart(host, st->id, ACLK_CMD_CHART); + } #endif return(st); } diff --git a/health/health.c b/health/health.c index d3e01faf1c..cbc7554cb4 100644 --- a/health/health.c +++ b/health/health.c @@ -180,7 +180,8 @@ void health_reload_host(RRDHOST *host) { */ void health_reload(void) { #ifdef ENABLE_ACLK - aclk_single_update_disable(); + if (netdata_cloud_setting) + aclk_single_update_disable(); #endif rrd_rdlock(); @@ -190,8 +191,10 @@ void health_reload(void) { rrd_unlock(); #ifdef ENABLE_ACLK - aclk_single_update_enable(); - aclk_alarm_reload(); + if (netdata_cloud_setting) { + aclk_single_update_enable(); + aclk_alarm_reload(); + } #endif } diff --git a/health/health_log.c b/health/health_log.c index 802923d492..b9ea52a4f0 100644 --- a/health/health_log.c +++ b/health/health_log.c @@ -153,7 +153,8 @@ inline void health_alarm_log_save(RRDHOST *host, ALARM_ENTRY *ae) { } } #ifdef ENABLE_ACLK - aclk_update_alarm(host, ae); + if (netdata_cloud_setting) + aclk_update_alarm(host, ae); #endif } diff --git a/netdata-installer.sh b/netdata-installer.sh index 3676cb7d76..6e8137ed16 100755 --- a/netdata-installer.sh +++ b/netdata-installer.sh @@ -283,10 +283,6 @@ while [ -n "${1}" ]; do NETDATA_DISABLE_CLOUD=1 NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS//--disable-cloud/} --disable-cloud" ;; - "--cloud-testing") # Temporary, until we flip the feature flag. Internal use only - unset NETDATA_DISABLE_CLOUD - NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS//--disable-cloud/} --enable-cloud" - ;; "--install") NETDATA_PREFIX="${2}/netdata" shift 1 diff --git a/web/api/web_api_v1.c b/web/api/web_api_v1.c index d0dd0cd014..2d8c7a8147 100644 --- a/web/api/web_api_v1.c +++ b/web/api/web_api_v1.c @@ -862,10 +862,13 @@ inline int web_client_api_request_v1_info_fill_buffer(RRDHOST *host, BUFFER *wb) chartcollectors2json(host, wb); buffer_strcat(wb, "\n\t],\n"); -#ifdef ENABLE_CLOUD - buffer_strcat(wb, "\t\"cloud-enabled\": true,\n"); -#else +#ifdef DISABLE_CLOUD buffer_strcat(wb, "\t\"cloud-enabled\": false,\n"); +#else + if (netdata_cloud_setting) + buffer_strcat(wb, "\t\"cloud-enabled\": true,\n"); + else + buffer_strcat(wb, "\t\"cloud-enabled\": false,\n"); #endif #ifdef ENABLE_ACLK buffer_strcat(wb, "\t\"cloud-available\": true,\n");