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(