@cryptotaxi247 / netdata-1 / commits / f3e8c077c

adds install method to /api/v1/info as label (#12040)

* install_type to rrdhost_system_info and as labels

Timotej S committed Feb 18, 2022 at 12:35 UTC f3e8c077cfdaebd8073927803a2a4707a302d26a
6 files changed +41 -34
daemon/analytics.c
+4 -10
@@ -362,21 +362,15 @@ void analytics_alarms_notifications(void)
362
363 void analytics_get_install_type(void)
364 {
365 - struct install_type_info t = get_install_type();
366 -
367 - if (t.install_type == NULL) {
365 + if (localhost->system_info->install_type == NULL) {
366 analytics_set_data_str(&analytics_data.netdata_install_type, "unknown");
367 } else {
370 - analytics_set_data_str(&analytics_data.netdata_install_type, t.install_type);
368 + analytics_set_data_str(&analytics_data.netdata_install_type, localhost->system_info->install_type);
369 }
370
373 - if (t.prebuilt_distro != NULL) {
374 - analytics_set_data_str(&analytics_data.netdata_prebuilt_distro, t.prebuilt_distro);
371 + if (localhost->system_info->prebuilt_dist != NULL) {
372 + analytics_set_data_str(&analytics_data.netdata_prebuilt_distro, localhost->system_info->prebuilt_dist);
373 }
376 -
377 - freez(t.prebuilt_arch);
378 - freez(t.prebuilt_distro);
379 - freez(t.install_type);
374 }
375
376 /*
daemon/buildinfo.c
+17 -17
@@ -217,9 +217,8 @@ char *get_value_from_key(char *buffer, char *key) {
217 return s;
218 }
219
220 -struct install_type_info get_install_type() {
220 +void get_install_type(char **install_type, char **prebuilt_arch, char **prebuilt_dist) {
221 char *install_type_filename;
222 - struct install_type_info ret = {.install_type = NULL, .prebuilt_arch = NULL, .prebuilt_distro = NULL};
222
223 int install_type_filename_len = (strlen(netdata_configured_user_config_dir) + strlen(".install-type") + 3);
224 install_type_filename = mallocz(sizeof(char) * install_type_filename_len);
@@ -232,41 +231,42 @@ struct install_type_info get_install_type() {
231
232 while ((s = fgets_trim_len(buf, 256, fp, &len))) {
233 if (!strncmp(buf, "INSTALL_TYPE='", 14))
235 - ret.install_type = strdupz((char *)get_value_from_key(buf, "INSTALL_TYPE"));
234 + *install_type = strdupz((char *)get_value_from_key(buf, "INSTALL_TYPE"));
235 else if (!strncmp(buf, "PREBUILT_ARCH='", 15))
237 - ret.prebuilt_arch = strdupz((char *)get_value_from_key(buf, "PREBUILT_ARCH"));
236 + *prebuilt_arch = strdupz((char *)get_value_from_key(buf, "PREBUILT_ARCH"));
237 else if (!strncmp(buf, "PREBUILT_DISTRO='", 17))
239 - ret.prebuilt_distro = strdupz((char *)get_value_from_key(buf, "PREBUILT_DISTRO"));
238 + *prebuilt_dist = strdupz((char *)get_value_from_key(buf, "PREBUILT_DISTRO"));
239 }
240 fclose(fp);
241 }
242 freez(install_type_filename);
244 -
245 - return ret;
243 }
244
245 void print_build_info(void) {
249 - struct install_type_info t = get_install_type();
246 + char *install_type = NULL;
247 + char *prebuilt_arch = NULL;
248 + char *prebuilt_distro = NULL;
249 + get_install_type(&install_type, &prebuilt_arch, &prebuilt_distro);
250
251 printf("Configure options: %s\n", CONFIGURE_COMMAND);
252
253 - if (t.install_type == NULL) {
253 + if (install_type == NULL) {
254 printf("Install type: unknown\n");
255 } else {
256 - printf("Install type: %s\n", t.install_type);
256 + printf("Install type: %s\n", install_type);
257 }
258
259 - if (t.prebuilt_arch != NULL) {
260 - printf(" Binary architecture: %s\n", t.prebuilt_arch);
259 + if (prebuilt_arch != NULL) {
260 + printf(" Binary architecture: %s\n", prebuilt_arch);
261 }
262
263 - if (t.prebuilt_distro != NULL) {
264 - printf(" Packaging distro: %s\n", t.prebuilt_distro);
263 + if (prebuilt_distro != NULL) {
264 + printf(" Packaging distro: %s\n", prebuilt_distro);
265 }
266
267 - freez(t.install_type);
268 - freez(t.prebuilt_arch);
269 - freez(t.prebuilt_distro);
267 + freez(install_type);
268 + freez(prebuilt_arch);
269 + freez(prebuilt_distro);
270
271 printf("Features:\n");
272 printf(" dbengine: %s\n", FEAT_YES_NO(FEAT_DBENGINE));
daemon/buildinfo.h
+1 -7
@@ -3,18 +3,12 @@
3 #ifndef NETDATA_BUILDINFO_H
4 #define NETDATA_BUILDINFO_H 1
5
6 -struct install_type_info {
7 - char *install_type;
8 - char *prebuilt_arch;
9 - char *prebuilt_distro;
10 -};
11 -
6 extern void print_build_info(void);
7
8 extern void print_build_info_json(void);
9
10 extern char *get_value_from_key(char *buffer, char *key);
11
18 -extern struct install_type_info get_install_type();
12 +extern void get_install_type(char **install_type, char **prebuilt_arch, char **prebuilt_dist);
13
14 #endif // NETDATA_BUILDINFO_H
daemon/main.c
+1
@@ -1232,6 +1232,7 @@ int main(int argc, char **argv) {
1232 struct rrdhost_system_info *system_info = calloc(1, sizeof(struct rrdhost_system_info));
1233 get_system_info(system_info);
1234 system_info->hops = 0;
1235 + get_install_type(&system_info->install_type, &system_info->prebuilt_arch, &system_info->prebuilt_dist);
1236
1237 if(rrd_init(netdata_configured_hostname, system_info))
1238 fatal("Cannot initialize localhost instance with name '%s'.", netdata_configured_hostname);
database/rrd.h
+3
@@ -756,6 +756,9 @@ struct rrdhost_system_info {
756 uint16_t hops;
757 bool ml_capable;
758 bool ml_enabled;
759 + char *install_type;
760 + char *prebuilt_arch;
761 + char *prebuilt_dist;
762 };
763
764 struct rrdhost {
database/rrdhost.c
+15
@@ -834,6 +834,9 @@ void rrdhost_system_info_free(struct rrdhost_system_info *system_info) {
834 freez(system_info->container);
835 freez(system_info->container_detection);
836 freez(system_info->is_k8s_node);
837 + freez(system_info->install_type);
838 + freez(system_info->prebuilt_arch);
839 + freez(system_info->prebuilt_dist);
840 freez(system_info);
841 }
842 }
@@ -1071,6 +1074,18 @@ static struct label *rrdhost_load_auto_labels(void)
1074 label_list =
1075 add_label_to_list(label_list, "_is_k8s_node", localhost->system_info->is_k8s_node, LABEL_SOURCE_AUTO);
1076
1077 + if (localhost->system_info->install_type)
1078 + label_list =
1079 + add_label_to_list(label_list, "_install_type", localhost->system_info->install_type, LABEL_SOURCE_AUTO);
1080 +
1081 + if (localhost->system_info->prebuilt_arch)
1082 + label_list =
1083 + add_label_to_list(label_list, "_prebuilt_arch", localhost->system_info->prebuilt_arch, LABEL_SOURCE_AUTO);
1084 +
1085 + if (localhost->system_info->prebuilt_dist)
1086 + label_list =
1087 + add_label_to_list(label_list, "_prebuilt_dist", localhost->system_info->prebuilt_dist, LABEL_SOURCE_AUTO);
1088 +
1089 label_list = add_aclk_host_labels(label_list);
1090
1091 label_list = add_label_to_list(