get nodes by tags

This commit is contained in:
fengzero
2026-01-19 06:07:14 +00:00
parent c52fae40c8
commit f6921ee2fb
7 changed files with 22 additions and 9 deletions
+1
View File
@@ -560,6 +560,7 @@ typedef struct neu_req_get_node {
int link;
bool s_delay;
char q_group_name[NEU_GROUP_NAME_LEN];
char q_tags[NEU_NODE_TAGS_LEN];
} query;
} neu_req_get_node_t;
+5
View File
@@ -180,6 +180,7 @@ void handle_get_adapter(nng_aio *aio)
char plugin_name[NEU_PLUGIN_NAME_LEN] = { 0 };
char node_name[NEU_NODE_NAME_LEN] = { 0 };
char group_name[NEU_GROUP_NAME_LEN] = { 0 };
char tags[NEU_NODE_TAGS_LEN] = { 0 };
neu_plugin_t * plugin = neu_rest_get_plugin();
neu_node_type_e node_type = { 0 };
@@ -213,6 +214,10 @@ void handle_get_adapter(nng_aio *aio)
strcpy(cmd.query.q_group_name, group_name);
}
if (neu_http_get_param_str(aio, "tags", tags, sizeof(tags)) > 0) {
strcpy(cmd.query.q_tags, tags);
}
uintmax_t query_state = 0;
if (neu_http_get_param_uintmax(aio, "state", &query_state) == 0) {
if (query_state == 1 || query_state == 2 || query_state == 3 ||
+3 -3
View File
@@ -470,7 +470,7 @@ static int manager_loop(enum neu_event_io_type type, int fd, void *usr_data)
UT_array *nodes = neu_manager_get_nodes(
manager, NEU_NA_TYPE_DRIVER | NEU_NA_TYPE_APP, cmd->plugin, "",
false, false, 0, false, 0, "");
false, false, 0, false, 0, "", "");
if (nodes != NULL) {
if (utarray_len(nodes) > 0) {
@@ -653,7 +653,7 @@ static int manager_loop(enum neu_event_io_type type, int fd, void *usr_data)
UT_array *nodes = neu_manager_get_nodes(
manager, NEU_NA_TYPE_DRIVER | NEU_NA_TYPE_APP, module_name, "",
false, false, 0, false, 0, "");
false, false, 0, false, 0, "", "");
if (nodes != NULL) {
if (utarray_len(nodes) > 0) {
@@ -909,7 +909,7 @@ static int manager_loop(enum neu_event_io_type type, int fd, void *usr_data)
UT_array * nodes = neu_manager_get_nodes(
manager, cmd->type, cmd->plugin, cmd->node, cmd->query.s_delay,
cmd->query.q_state, cmd->query.state, cmd->query.q_link,
cmd->query.link, cmd->query.q_group_name);
cmd->query.link, cmd->query.q_group_name, cmd->query.q_tags);
neu_resp_get_node_t resp = { .nodes = nodes };
header->type = NEU_RESP_GET_NODE;
+3 -2
View File
@@ -117,11 +117,12 @@ int neu_manager_del_node(neu_manager_t *manager, const char *node_name)
UT_array *neu_manager_get_nodes(neu_manager_t *manager, int type,
const char *plugin, const char *node,
bool sort_delay, bool q_state, int state,
bool q_link, int link, const char *q_group_name)
bool q_link, int link, const char *q_group_name,
const char *q_tags)
{
return neu_node_manager_filter(manager->node_manager, type, plugin, node,
sort_delay, q_state, state, q_link, link,
q_group_name);
q_group_name, q_tags);
}
int neu_manager_update_node_name(neu_manager_t *manager, const char *node,
+2 -2
View File
@@ -59,8 +59,8 @@ int neu_manager_del_node(neu_manager_t *manager, const char *node_name);
UT_array *neu_manager_get_nodes(neu_manager_t *manager, int type,
const char *plugin, const char *node,
bool sort_delay, bool q_state, int state,
bool q_link, int link,
const char *q_group_name);
bool q_link, int link, const char *q_group_name,
const char *q_tags);
int neu_manager_update_node_name(neu_manager_t *manager, const char *node,
const char *new_name);
int neu_manager_update_group_name(neu_manager_t *manager, const char *driver,
+7 -1
View File
@@ -254,7 +254,7 @@ UT_array *neu_node_manager_filter(neu_node_manager_t *mgr, int type,
const char *plugin, const char *node,
bool sort_delay, bool q_state, int state,
bool q_link, int link,
const char *q_group_name)
const char *q_group_name, const char *q_tags)
{
UT_array * array = NULL;
UT_icd icd = { sizeof(neu_resp_node_info_t), NULL, NULL, NULL };
@@ -303,6 +303,12 @@ UT_array *neu_node_manager_filter(neu_node_manager_t *mgr, int type,
}
}
if (strlen(q_tags) > 0) {
if (el->tags == NULL || strstr(el->tags, q_tags) == NULL) {
continue;
}
}
neu_resp_node_info_t info = { 0 };
strcpy(info.node, el->adapter->name);
strcpy(info.tags, el->tags ? el->tags : "");
+1 -1
View File
@@ -55,7 +55,7 @@ UT_array *neu_node_manager_filter(neu_node_manager_t *mgr, int type,
const char *plugin, const char *node,
bool sort_delay, bool q_state, int state,
bool q_link, int link,
const char *q_group_name);
const char *q_group_name, const char *q_tags);
UT_array *neu_node_manager_get_all(neu_node_manager_t *mgr);
// neu_adapter_t array