@cryptotaxi247 / netdata-1 / commits / b812d23e3

Minor fixes around plugin_directories initialization (#5536)

* Daemon minor cleanups: 1) pull in plugin directories logic, inside the pluginsd where it belongs and call a method from the daemon to do so, 2) Magic numbers are evil, give a meaningful definition for that plugin directories retrieval * Rename netdata_configured_plugins_dir -> netdata_configured_primary_plugins_dir. We allow multiple plugin directories and this is actually the primary (or stock?) directory, just make it clear to avoid confusion * In this new wrapper, just return whatever the string splitter would return * Reduce the scope - consider moving this to somewhere else in a common place if needed by other modules later

Paul Katsoulakis committed Mar 5, 2019 at 10:10 UTC b812d23e32c858e5ef9cb1b4965e49aee8a97a74
8 files changed +37 -30
collectors/cgroups.plugin/sys_fs_cgroup.c
+2 -2
@@ -210,10 +210,10 @@ void read_cgroup_plugin_configuration() {
210 " * "
211 ), NULL, SIMPLE_PATTERN_EXACT);
212
213 - snprintfz(filename, FILENAME_MAX, "%s/cgroup-name.sh", netdata_configured_plugins_dir);
213 + snprintfz(filename, FILENAME_MAX, "%s/cgroup-name.sh", netdata_configured_primary_plugins_dir);
214 cgroups_rename_script = config_get("plugin:cgroups", "script to get cgroup names", filename);
215
216 - snprintfz(filename, FILENAME_MAX, "%s/cgroup-network", netdata_configured_plugins_dir);
216 + snprintfz(filename, FILENAME_MAX, "%s/cgroup-network", netdata_configured_primary_plugins_dir);
217 cgroups_network_interface_script = config_get("plugin:cgroups", "script to get cgroup network interfaces", filename);
218
219 enabled_cgroup_renames = simple_pattern_create(
collectors/plugins.d/plugins_d.c
+13 -3
@@ -3,8 +3,6 @@
3 #include "plugins_d.h"
4
5 char *plugin_directories[PLUGINSD_MAX_DIRECTORIES] = { NULL };
6 -char *netdata_configured_plugins_dir_base;
7 -
6 struct plugind *pluginsd_root = NULL;
7
8 static inline int pluginsd_space(char c) {
@@ -36,7 +34,7 @@ inline int config_isspace(char c) {
34 }
35
36 // split a text into words, respecting quotes
39 -inline int quoted_strings_splitter(char *str, char **words, int max_words, int (*custom_isspace)(char)) {
37 +static inline int quoted_strings_splitter(char *str, char **words, int max_words, int (*custom_isspace)(char)) {
38 char *s = str, quote = 0;
39 int i = 0, j;
40
@@ -101,6 +99,18 @@ inline int quoted_strings_splitter(char *str, char **words, int max_words, int (
99 return i;
100 }
101
102 +inline int pluginsd_initialize_plugin_directories() {
103 + char plugins_dirs[(FILENAME_MAX * 2) + 1];
104 + char *plugins_dir_list = NULL;
105 +
106 + // Get the configuration entry
107 + snprintfz(plugins_dirs, FILENAME_MAX * 2, "\"%s\" \"%s/custom-plugins.d\"", PLUGINS_DIR, CONFIG_DIR);
108 + plugins_dir_list = strdupz(config_get(CONFIG_SECTION_GLOBAL, "plugins directory", plugins_dirs));
109 +
110 + // Parse it and store it to plugin directories
111 + return quoted_strings_splitter(plugins_dir_list, plugin_directories, PLUGINSD_MAX_DIRECTORIES, config_isspace);
112 +}
113 +
114 inline int pluginsd_split_words(char *str, char **words, int max_words) {
115 return quoted_strings_splitter(str, words, max_words, pluginsd_space);
116 }
collectors/plugins.d/plugins_d.h
+3 -1
@@ -20,6 +20,7 @@
20 #define PLUGINSD_FILE_SUFFIX ".plugin"
21 #define PLUGINSD_FILE_SUFFIX_LEN strlen(PLUGINSD_FILE_SUFFIX)
22 #define PLUGINSD_CMD_MAX (FILENAME_MAX*2)
23 +#define PLUGINSD_STOCK_PLUGINS_DIRECTORY_PATH 0
24
25 #define PLUGINSD_KEYWORD_CHART "CHART"
26 #define PLUGINSD_KEYWORD_DIMENSION "DIMENSION"
@@ -67,7 +68,8 @@ extern void *pluginsd_main(void *ptr);
68 extern size_t pluginsd_process(RRDHOST *host, struct plugind *cd, FILE *fp, int trust_durations);
69 extern int pluginsd_split_words(char *str, char **words, int max_words);
70
70 -extern int quoted_strings_splitter(char *str, char **words, int max_words, int (*custom_isspace)(char));
71 +extern int pluginsd_initialize_plugin_directories();
72 +
73 extern int config_isspace(char c);
74
75 #endif /* NETDATA_PLUGINS_D_H */
collectors/tc.plugin/plugin_tc.c
+1 -1
@@ -879,7 +879,7 @@ void *tc_main(void *ptr) {
879 #endif
880 uint32_t first_hash;
881
882 - snprintfz(command, TC_LINE_MAX, "%s/tc-qos-helper.sh", netdata_configured_plugins_dir);
882 + snprintfz(command, TC_LINE_MAX, "%s/tc-qos-helper.sh", netdata_configured_primary_plugins_dir);
883 char *tc_script = config_get("plugin:tc", "script to run to get tc values", command);
884
885 while(!netdata_exit) {
daemon/common.c
+11 -11
@@ -2,15 +2,15 @@
2
3 #include "common.h"
4
5 -char *netdata_configured_hostname = NULL;
6 -char *netdata_configured_user_config_dir = CONFIG_DIR;
7 -char *netdata_configured_stock_config_dir = LIBCONFIG_DIR;
8 -char *netdata_configured_log_dir = LOG_DIR;
9 -char *netdata_configured_plugins_dir = NULL;
10 -char *netdata_configured_web_dir = WEB_DIR;
11 -char *netdata_configured_cache_dir = CACHE_DIR;
12 -char *netdata_configured_varlib_dir = VARLIB_DIR;
13 -char *netdata_configured_home_dir = CACHE_DIR;
14 -char *netdata_configured_host_prefix = NULL;
15 -char *netdata_configured_timezone = NULL;
5 +char *netdata_configured_hostname = NULL;
6 +char *netdata_configured_user_config_dir = CONFIG_DIR;
7 +char *netdata_configured_stock_config_dir = LIBCONFIG_DIR;
8 +char *netdata_configured_log_dir = LOG_DIR;
9 +char *netdata_configured_primary_plugins_dir = NULL;
10 +char *netdata_configured_web_dir = WEB_DIR;
11 +char *netdata_configured_cache_dir = CACHE_DIR;
12 +char *netdata_configured_varlib_dir = VARLIB_DIR;
13 +char *netdata_configured_home_dir = CACHE_DIR;
14 +char *netdata_configured_host_prefix = NULL;
15 +char *netdata_configured_timezone = NULL;
16
daemon/common.h
+1 -2
@@ -70,8 +70,7 @@ extern char *netdata_configured_hostname;
70 extern char *netdata_configured_user_config_dir;
71 extern char *netdata_configured_stock_config_dir;
72 extern char *netdata_configured_log_dir;
73 -extern char *netdata_configured_plugins_dir_base;
74 -extern char *netdata_configured_plugins_dir;
73 +extern char *netdata_configured_primary_plugins_dir;
74 extern char *netdata_configured_web_dir;
75 extern char *netdata_configured_cache_dir;
76 extern char *netdata_configured_varlib_dir;
daemon/main.c
+5 -9
@@ -458,12 +458,8 @@ static void get_netdata_configured_variables() {
458 netdata_configured_home_dir = config_get(CONFIG_SECTION_GLOBAL, "home directory", netdata_configured_home_dir);
459
460 {
461 - char plugins_dirs[(FILENAME_MAX * 2) + 1];
462 - snprintfz(plugins_dirs, FILENAME_MAX * 2, "\"%s\" \"%s/custom-plugins.d\"", PLUGINS_DIR, CONFIG_DIR);
463 - netdata_configured_plugins_dir_base = strdupz(config_get(CONFIG_SECTION_GLOBAL, "plugins directory", plugins_dirs));
464 - quoted_strings_splitter(netdata_configured_plugins_dir_base, plugin_directories, PLUGINSD_MAX_DIRECTORIES, config_isspace);
465 - netdata_configured_plugins_dir = plugin_directories[0];
466 -
461 + pluginsd_initialize_plugin_directories();
462 + netdata_configured_primary_plugins_dir = plugin_directories[PLUGINSD_STOCK_PLUGINS_DIRECTORY_PATH];
463 }
464
465 // ------------------------------------------------------------------------
@@ -592,7 +588,7 @@ void set_global_environment() {
588 setenv("NETDATA_CONFIG_DIR" , verify_required_directory(netdata_configured_user_config_dir), 1);
589 setenv("NETDATA_USER_CONFIG_DIR" , verify_required_directory(netdata_configured_user_config_dir), 1);
590 setenv("NETDATA_STOCK_CONFIG_DIR" , verify_required_directory(netdata_configured_stock_config_dir), 1);
595 - setenv("NETDATA_PLUGINS_DIR" , verify_required_directory(netdata_configured_plugins_dir), 1);
591 + setenv("NETDATA_PLUGINS_DIR" , verify_required_directory(netdata_configured_primary_plugins_dir), 1);
592 setenv("NETDATA_WEB_DIR" , verify_required_directory(netdata_configured_web_dir), 1);
593 setenv("NETDATA_CACHE_DIR" , verify_required_directory(netdata_configured_cache_dir), 1);
594 setenv("NETDATA_LIB_DIR" , verify_required_directory(netdata_configured_varlib_dir), 1);
@@ -657,8 +653,8 @@ void send_statistics( const char *action, const char *action_result, const char
653 char *optout_file = mallocz(sizeof(char) * (strlen(netdata_configured_user_config_dir) +strlen(".opt-out-from-anonymous-statistics") + 2));
654 sprintf(optout_file, "%s/%s", netdata_configured_user_config_dir, ".opt-out-from-anonymous-statistics");
655 if (likely(access(optout_file, R_OK) != 0)) {
660 - as_script = mallocz(sizeof(char) * (strlen(netdata_configured_plugins_dir) + strlen("anonymous-statistics.sh") + 2));
661 - sprintf(as_script, "%s/%s", netdata_configured_plugins_dir, "anonymous-statistics.sh");
656 + as_script = mallocz(sizeof(char) * (strlen(netdata_configured_primary_plugins_dir) + strlen("anonymous-statistics.sh") + 2));
657 + sprintf(as_script, "%s/%s", netdata_configured_primary_plugins_dir, "anonymous-statistics.sh");
658 if (unlikely(access(as_script, R_OK) != 0)) {
659 netdata_anonymous_statistics_enabled=0;
660 info("Anonymous statistics script %s not found.",as_script);
database/rrdhost.c
+1 -1
@@ -229,7 +229,7 @@ RRDHOST *rrdhost_create(const char *hostname,
229 snprintfz(filename, FILENAME_MAX, "%s/health/health-log.db", host->varlib_dir);
230 host->health_log_filename = strdupz(filename);
231
232 - snprintfz(filename, FILENAME_MAX, "%s/alarm-notify.sh", netdata_configured_plugins_dir);
232 + snprintfz(filename, FILENAME_MAX, "%s/alarm-notify.sh", netdata_configured_primary_plugins_dir);
233 host->health_default_exec = strdupz(config_get(CONFIG_SECTION_HEALTH, "script to execute on alarm", filename));
234 host->health_default_recipient = strdupz("root");
235