summaryrefslogtreecommitdiffstats
path: root/aclk
diff options
context:
space:
mode:
authorEmmanuel Vasilakis <mrzammler@mm.st>2022-07-07 21:50:44 +0300
committerGitHub <noreply@github.com>2022-07-07 21:50:44 +0300
commit19d9a0030db7d8ff6e43f2ff76cea7f9761c6cd7 (patch)
treef73fba6588c8e8628a3bf5993f3af0d4c62566ff /aclk
parent151a6038b63e8739bfed9d62c63165c17426a403 (diff)
UpdateNodeCollectors message (#13330)
* add new aclk-schemas. remove services related * add updatenodecollectors message * build with --disable-cloud
Diffstat (limited to 'aclk')
m---------aclk/aclk-schemas0
-rw-r--r--aclk/aclk_charts_api.c9
-rw-r--r--aclk/aclk_charts_api.h2
-rw-r--r--aclk/aclk_query.c1
-rw-r--r--aclk/aclk_query_queue.c1
-rw-r--r--aclk/aclk_query_queue.h1
-rw-r--r--aclk/aclk_util.c2
-rw-r--r--aclk/aclk_util.h3
-rw-r--r--aclk/schema-wrappers/node_info.cc27
-rw-r--r--aclk/schema-wrappers/node_info.h16
10 files changed, 55 insertions, 7 deletions
diff --git a/aclk/aclk-schemas b/aclk/aclk-schemas
-Subproject d8342ee6d932c152a78c9fe886281fe28170a6c
+Subproject fa46ccca237a9bdb613b3b1f2809a25b7b45c7c
diff --git a/aclk/aclk_charts_api.c b/aclk/aclk_charts_api.c
index 4e1c466e87..51d8dad58c 100644
--- a/aclk/aclk_charts_api.c
+++ b/aclk/aclk_charts_api.c
@@ -66,3 +66,12 @@ void aclk_update_node_info(struct update_node_info *info)
query->data.bin_payload.msg_name = "UpdateNodeInfo";
QUEUE_IF_PAYLOAD_PRESENT(query);
}
+
+void aclk_update_node_collectors(struct update_node_collectors *collectors)
+{
+ aclk_query_t query = aclk_query_new(UPDATE_NODE_COLLECTORS);
+ query->data.bin_payload.topic = ACLK_TOPICID_NODE_COLLECTORS;
+ query->data.bin_payload.payload = generate_update_node_collectors_message(&query->data.bin_payload.size, collectors);
+ query->data.bin_payload.msg_name = "UpdateNodeCollectors";
+ QUEUE_IF_PAYLOAD_PRESENT(query);
+}
diff --git a/aclk/aclk_charts_api.h b/aclk/aclk_charts_api.h
index 305fe4f74f..71f07dd338 100644
--- a/aclk/aclk_charts_api.h
+++ b/aclk/aclk_charts_api.h
@@ -17,4 +17,6 @@ void aclk_retention_updated(struct retention_updated *data);
void aclk_update_node_info(struct update_node_info *info);
+void aclk_update_node_collectors(struct update_node_collectors *collectors);
+
#endif /* ACLK_CHARTS_H */
diff --git a/aclk/aclk_query.c b/aclk/aclk_query.c
index f722551b0c..84dcc111a8 100644
--- a/aclk/aclk_query.c
+++ b/aclk/aclk_query.c
@@ -277,6 +277,7 @@ const char *aclk_query_get_name(aclk_query_type_t qt)
case ALARM_LOG_HEALTH: return "alarm_log_health";
case ALARM_PROVIDE_CFG: return "provide_alarm_config";
case ALARM_SNAPSHOT: return "alarm_snapshot";
+ case UPDATE_NODE_COLLECTORS: return "update_node_collectors";
default:
error_report("Unknown query type used %d", (int) qt);
return "unknown";
diff --git a/aclk/aclk_query_queue.c b/aclk/aclk_query_queue.c
index 8ac14305d6..61484288e9 100644
--- a/aclk/aclk_query_queue.c
+++ b/aclk/aclk_query_queue.c
@@ -121,6 +121,7 @@ void aclk_query_free(aclk_query_t query)
case ALARM_LOG_HEALTH:
case ALARM_PROVIDE_CFG:
case ALARM_SNAPSHOT:
+ case UPDATE_NODE_COLLECTORS:
if (!use_mqtt_5)
freez(query->data.bin_payload.payload);
break;
diff --git a/aclk/aclk_query_queue.h b/aclk/aclk_query_queue.h
index 523841c919..1f03d54fd7 100644
--- a/aclk/aclk_query_queue.h
+++ b/aclk/aclk_query_queue.h
@@ -22,6 +22,7 @@ typedef enum {
ALARM_LOG_HEALTH,
ALARM_PROVIDE_CFG,
ALARM_SNAPSHOT,
+ UPDATE_NODE_COLLECTORS,
ACLK_QUERY_TYPE_COUNT // always keep this as last
} aclk_query_type_t;
diff --git a/aclk/aclk_util.c b/aclk/aclk_util.c
index 9809620c74..6412fcd0a2 100644
--- a/aclk/aclk_util.c
+++ b/aclk/aclk_util.c
@@ -123,6 +123,7 @@ struct topic_name {
{ .id = ACLK_TOPICID_ALARM_HEALTH, .name = "alarm-health" },
{ .id = ACLK_TOPICID_ALARM_CONFIG, .name = "alarm-config" },
{ .id = ACLK_TOPICID_ALARM_SNAPSHOT, .name = "alarm-snapshot" },
+ { .id = ACLK_TOPICID_NODE_COLLECTORS, .name = "node-instance-collectors" },
{ .id = ACLK_TOPICID_UNKNOWN, .name = NULL }
};
@@ -145,6 +146,7 @@ enum aclk_topics compulsory_topics[] = {
ACLK_TOPICID_ALARM_HEALTH,
ACLK_TOPICID_ALARM_CONFIG,
ACLK_TOPICID_ALARM_SNAPSHOT,
+ ACLK_TOPICID_NODE_COLLECTORS,
ACLK_TOPICID_UNKNOWN
};
diff --git a/aclk/aclk_util.h b/aclk/aclk_util.h
index a23c8fbd67..186abd8a08 100644
--- a/aclk/aclk_util.h
+++ b/aclk/aclk_util.h
@@ -87,7 +87,8 @@ enum aclk_topics {
ACLK_TOPICID_ALARM_LOG = 14,
ACLK_TOPICID_ALARM_HEALTH = 15,
ACLK_TOPICID_ALARM_CONFIG = 16,
- ACLK_TOPICID_ALARM_SNAPSHOT = 17
+ ACLK_TOPICID_ALARM_SNAPSHOT = 17,
+ ACLK_TOPICID_NODE_COLLECTORS = 18
};
const char *aclk_get_topic(enum aclk_topics topic);
diff --git a/aclk/schema-wrappers/node_info.cc b/aclk/schema-wrappers/node_info.cc
index e0d6d34f01..2a05ddaba7 100644
--- a/aclk/schema-wrappers/node_info.cc
+++ b/aclk/schema-wrappers/node_info.cc
@@ -55,9 +55,6 @@ static int generate_node_info(nodeinstance::info::v1::NodeInfo *info, struct acl
if (data->custom_info)
info->set_custom_info(data->custom_info);
- for (size_t i = 0; i < data->service_count; i++)
- info->add_services(data->services[i]);
-
if (data->machine_guid)
info->set_machine_guid(data->machine_guid);
@@ -113,3 +110,27 @@ char *generate_update_node_info_message(size_t *len, struct update_node_info *in
return bin;
}
+
+char *generate_update_node_collectors_message(size_t *len, struct update_node_collectors *upd_node_collectors)
+{
+ nodeinstance::info::v1::UpdateNodeCollectors msg;
+
+ msg.set_node_id(upd_node_collectors->node_id);
+ msg.set_claim_id(upd_node_collectors->claim_id);
+
+ void *colls;
+ dfe_start_read(upd_node_collectors->node_collectors, colls) {
+ struct collector_info *c =(struct collector_info *)colls;
+ nodeinstance::info::v1::CollectorInfo *col = msg.add_collectors();
+ col->set_plugin(c->plugin);
+ col->set_module(c->module);
+ }
+ dfe_done(colls);
+
+ *len = PROTO_COMPAT_MSG_SIZE(msg);
+ char *bin = (char*)malloc(*len);
+ if (bin)
+ msg.SerializeToArray(bin, *len);
+
+ return bin;
+}
diff --git a/aclk/schema-wrappers/node_info.h b/aclk/schema-wrappers/node_info.h
index d585f3f2d0..e8ac2d7c60 100644
--- a/aclk/schema-wrappers/node_info.h
+++ b/aclk/schema-wrappers/node_info.h
@@ -50,9 +50,6 @@ struct aclk_node_info {
char *custom_info;
- char **services;
- size_t service_count;
-
char *machine_guid;
DICTIONARY *host_labels_ptr;
@@ -74,8 +71,21 @@ struct update_node_info {
struct capability *node_instance_capabilities;
};
+struct collector_info {
+ char *module;
+ char *plugin;
+};
+
+struct update_node_collectors {
+ char *claim_id;
+ char *node_id;
+ DICTIONARY *node_collectors;
+};
+
char *generate_update_node_info_message(size_t *len, struct update_node_info *info);
+char *generate_update_node_collectors_message(size_t *len, struct update_node_collectors *collectors);
+
#ifdef __cplusplus
}
#endif